@Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Volume v = (Volume)state.getResource(); String driver = DataAccessor.fieldString(v, VolumeConstants.FIELD_VOLUME_DRIVER); if (StringUtils.isEmpty(driver) || VolumeConstants.LOCAL_DRIVER.equals(driver)) { return null; } List<? extends StoragePool> pools = storagePoolDao.findStoragePoolByDriverName(v.getAccountId(), driver); if (pools.size() == 0) { return null; } StoragePool sp = pools.get(0); Map<String, Object> data = new HashMap<>(); List<String> volumeCap = DataAccessor.fieldStringList(sp, StoragePoolConstants.FIELD_VOLUME_CAPABILITIES); if (volumeCap != null && volumeCap.size() > 0) { data.put(ObjectMetaDataManager.CAPABILITIES_FIELD, volumeCap); } return new HandlerResult(data); } }
String driver = DataAccessor.fieldString(v, VolumeConstants.FIELD_VOLUME_DRIVER); if (StringUtils.isNotEmpty(driver) && !VolumeConstants.LOCAL_DRIVER.equals(driver)) { List<? extends StoragePool> pools = storagePoolDao.findStoragePoolByDriverName(v.getAccountId(), driver); if (pools.size() == 0) { continue;
restrictToUnmanagedPool = true; if (StringUtils.isNotEmpty(driver) && !VolumeConstants.LOCAL_DRIVER.equals(driver)) { List<? extends StoragePool> pools = storagePoolDao.findStoragePoolByDriverName(volume.getAccountId(), driver); if (pools.size() > 0) { Set<Long> poolIds = new HashSet<>();
@Override public Object perform(String name, Object obj, ApiRequest request) { if (!(obj instanceof Volume)) { return null; } Volume volume = (Volume)obj; Snapshot snapshot = objectManager.newRecord(Snapshot.class); snapshot.setKind(SnapshotConstants.TYPE); snapshot.setAccountId(volume.getAccountId()); snapshot.setVolumeId(volume.getId()); String snapshotName = DataAccessor.fromMap(request.getRequestObject()).withKey("name").as(String.class); if (StringUtils.isNotBlank(snapshotName)) { snapshot.setName(snapshotName); } snapshot = objectManager.create(snapshot); processManager.scheduleStandardProcess(StandardProcess.CREATE, snapshot, null); return objectManager.reload(snapshot); } }
@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; }
setId(from.getId()); setName(from.getName()); setAccountId(from.getAccountId()); setKind(from.getKind()); setUuid(from.getUuid());