@Override protected Object getAgentResource(ProcessState state, ProcessInstance process, Object dataResource) { Volume v = (Volume)state.getResource(); return objectManager.loadResource(Host.class, v.getHostId()); }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Volume volume = (Volume) state.getResource(); String driver = DataAccessor.fieldString(volume, VolumeConstants.FIELD_VOLUME_DRIVER); Long driverId = volume.getStorageDriverId(); Integer deviceNum = volume.getDeviceNumber(); StorageDriver storageDriver = objectManager.loadResource(StorageDriver.class, driverId); if (storageDriver == null && StringUtils.isNotBlank(driver)) { storageDriver = objectManager.findAny(StorageDriver.class, STORAGE_DRIVER.ACCOUNT_ID, volume.getAccountId(), STORAGE_DRIVER.REMOVED, null, STORAGE_DRIVER.NAME, driver); } if (storageDriver != null) { driver = storageDriver.getName(); driverId = storageDriver.getId(); deviceNum = -1; } HandlerResult result = new HandlerResult(VolumeConstants.FIELD_VOLUME_DRIVER, driver, VOLUME.DEVICE_NUMBER, deviceNum, VOLUME.STORAGE_DRIVER_ID, driverId); Long hostId = volume.getHostId(); if (storageDriver != null && hostId != null) { if (storagePoolDao.associateVolumeToPool(volume.getId(), storageDriver.getId(), hostId) != null) { result.withShouldContinue(false) .withChainProcessName(objectProcessManager.getStandardProcessName(StandardProcess.DEACTIVATE, volume)); } } return result; }
@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Volume volume = (Volume)state.getResource(); deallocate(volume, state.getData()); boolean maps = false; boolean mounts = false; for (VolumeStoragePoolMap map : mapDao.findToRemove(VolumeStoragePoolMap.class, Volume.class, volume.getId())) { maps = true; deactivateThenScheduleRemove(map, null); } for (Mount mount : mapDao.findToRemove(Mount.class, Volume.class, volume.getId())) { mounts = true; deactivateThenRemove(mount, null); } Image image = objectManager.loadResource(Image.class, volume.getImageId()); if (image != null) { remove(image, null); } if (maps && !mounts && volume.getHostId() != null) { /* HostId != null means this volume was created from a host, but no mounts also means it won't be deleted, * so we delete. */ return super.handle(state, process); } return new HandlerResult(); }
setExternalId(from.getExternalId()); setAccessMode(from.getAccessMode()); setHostId(from.getHostId()); setDeploymentUnitId(from.getDeploymentUnitId()); setStackId(from.getStackId());