private void verifyNoSnapshotsOnManagedStorageVolumes(Map<VolumeInfo, DataStore> volumeToPool) { for (Map.Entry<VolumeInfo, DataStore> entry : volumeToPool.entrySet()) { VolumeInfo volumeInfo = entry.getKey(); StoragePool storagePool = storagePoolDao.findById(volumeInfo.getPoolId()); if (storagePool.isManaged()) { List<SnapshotVO> snapshots = getNonDestroyedSnapshots(volumeInfo.getId()); if (snapshots != null && snapshots.size() > 0) { throw new CloudRuntimeException("Cannot perform this action on a volume with one or more snapshots"); } } } }
private boolean checkUsagedSpace(StoragePool pool) { if (pool.isManaged()) { return true;
if (pool.isManaged() && !storageUtil.managedStoragePoolCanScale(pool, plan.getClusterId(), plan.getHostId())) { return false;
private void handleManagedVolumesAfterFailedMigration(Map<VolumeInfo, DataStore> volumeToPool, Host destHost) { for (Map.Entry<VolumeInfo, DataStore> entry : volumeToPool.entrySet()) { VolumeInfo volumeInfo = entry.getKey(); StoragePool storagePool = storagePoolDao.findById(volumeInfo.getPoolId()); if (storagePool.isManaged()) { final Map<String, String> details = new HashMap<>(); details.put(DeleteStoragePoolCommand.DATASTORE_NAME, getBasicIqn(volumeInfo.getId())); final DeleteStoragePoolCommand cmd = new DeleteStoragePoolCommand(); cmd.setDetails(details); cmd.setRemoveDatastore(true); final Answer answer = agentMgr.easySend(destHost.getId(), cmd); if (answer == null || !answer.getResult()) { String errMsg = "Error interacting with host (related to handleManagedVolumesAfterFailedMigration)" + (StringUtils.isNotBlank(answer.getDetails()) ? ": " + answer.getDetails() : ""); s_logger.error(errMsg); // no need to throw an exception here as the calling code is responsible for doing so // regardless of the success or lack thereof concerning this method return; } final PrimaryDataStoreDriver pdsd = (PrimaryDataStoreDriver)volumeInfo.getDataStore().getDriver(); VolumeDetailVO volumeDetailVo = new VolumeDetailVO(volumeInfo.getId(), PrimaryDataStoreDriver.BASIC_REVOKE_ACCESS, Boolean.TRUE.toString(), false); volumeDetailsDao.persist(volumeDetailVo); pdsd.revokeAccess(volumeInfo, destHost, volumeInfo.getDataStore()); volumeDetailVo = new VolumeDetailVO(volumeInfo.getId(), PrimaryDataStoreDriver.BASIC_DELETE_FAILURE, Boolean.TRUE.toString(), false); volumeDetailsDao.persist(volumeDetailVo); pdsd.deleteAsync(volumeInfo.getDataStore(), volumeInfo, null); } } }
if (storagePool.isManaged()) { handleManagedVolumePostMigration(volumeInfo, srcHost, volumeTo);
VolumeTO volumeTo = new VolumeTO(volumeInfo, storagePool); if (storagePool.isManaged()) { String iqn = handleManagedVolumePreMigration(volumeInfo, storagePool, destHost);
if (pool.isManaged()) { Host lastHost = _hostDao.findById(vm.getVirtualMachine().getLastHostId()); Host host = _hostDao.findById(vm.getVirtualMachine().getHostId());
poolResponse.setCapacityIops(pool.getCapacityIops()); if (storagePool.isManaged()) { DataStore store = dataStoreMgr.getDataStore(pool.getId(), DataStoreRole.Primary); PrimaryDataStoreDriver driver = (PrimaryDataStoreDriver) store.getDriver();