@Override public void removeStoragePoolFromCluster(long hostId, String iScsiName, StoragePool storagePool) { final Map<String, String> details = new HashMap<>(); details.put(DeleteStoragePoolCommand.DATASTORE_NAME, iScsiName); details.put(DeleteStoragePoolCommand.IQN, iScsiName); details.put(DeleteStoragePoolCommand.STORAGE_HOST, storagePool.getHostAddress()); details.put(DeleteStoragePoolCommand.STORAGE_PORT, String.valueOf(storagePool.getPort())); final DeleteStoragePoolCommand cmd = new DeleteStoragePoolCommand(); cmd.setDetails(details); cmd.setRemoveDatastore(true); final Answer answer = _agentMgr.easySend(hostId, cmd); if (answer == null || !answer.getResult()) { String errMsg = "Error interacting with host (related to DeleteStoragePoolCommand)" + (StringUtils.isNotBlank(answer.getDetails()) ? ": " + answer.getDetails() : ""); s_logger.error(errMsg); throw new CloudRuntimeException(errMsg); } }
@Override public Answer execute(final DeleteStoragePoolCommand command, final CitrixResourceBase citrixResourceBase) { final Connection conn = citrixResourceBase.getConnection(); final StorageFilerTO poolTO = command.getPool(); if (command.getRemoveDatastore()) { Map<String, String> details = command.getDetails();
@Override public Answer execute(final DeleteStoragePoolCommand command, final LibvirtComputingResource libvirtComputingResource) { try { // if getRemoveDatastore() is true, then we are dealing with managed storage and can skip the delete logic here if (!command.getRemoveDatastore()) { final StorageFilerTO pool = command.getPool(); final KVMStoragePoolManager storagePoolMgr = libvirtComputingResource.getStoragePoolMgr(); storagePoolMgr.deleteStoragePool(pool.getType(), pool.getUuid()); } return new Answer(command); } catch (final CloudRuntimeException e) { return new Answer(command, false, e.toString()); } } }
DeleteStoragePoolCommand deleteCmd = new DeleteStoragePoolCommand(pool); final Answer answer = agentMgr.easySend(host.getHostId(), deleteCmd);
protected Answer execute(DeleteStoragePoolCommand cmd) { try { OvmStoragePool.delete(_conn, cmd.getPool().getUuid()); } catch (Exception e) { s_logger.debug("Delete storage pool on host " + _ip + " failed, however, we leave to user for cleanup and tell managment server it succeeded", e); } return new Answer(cmd); }
DeleteStoragePoolCommand deleteCmd = new DeleteStoragePoolCommand(pool); final Answer answer = agentMgr.easySend(host.getHostId(), deleteCmd);
/** * Get a host out of a pool/cluster, this should unmount all FSs though. * * @param cmd * @return */ public Answer execute(DeleteStoragePoolCommand cmd) { try { Pool pool = new Pool(c); pool.leaveServerPool(cmd.getPool().getUuid()); /* also connect to the master and update the pool list ? */ } catch (Ovm3ResourceException e) { LOGGER.debug( "Delete storage pool on host " + config.getAgentHostname() + " failed, however, we leave to user for cleanup and tell managment server it succeeded", e); } return new Answer(cmd); }
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); } } }
@Test public final void testModifyStoragePoolCommand2() { // Should return existing pool // Create dummy folder String folderName = "." + File.separator + "Dummy"; File folder = new File(folderName); if (!folder.exists()) { if (!folder.mkdir()) { Assert.assertTrue(false); } } // Use same spec for pool s_logger.info("Createing pool at : " + folderName); StoragePoolVO pool = new StoragePoolVO(StoragePoolType.Filesystem, "127.0.0.1", -1, folderName); pool.setUuid(s_testLocalStoreUUID); ModifyStoragePoolCommand cmd = new ModifyStoragePoolCommand(true, pool, folderName); Answer ans = s_hypervresource.executeRequest(cmd); Assert.assertTrue(ans.getResult()); DeleteStoragePoolCommand delCmd = new DeleteStoragePoolCommand(pool, folderName); Answer ans2 = s_hypervresource.executeRequest(delCmd); Assert.assertTrue(ans2.getResult()); }
private void handleManagedVolumePostMigration(VolumeInfo volumeInfo, Host srcHost, VolumeObjectTO volumeTO) { final Map<String, String> details = new HashMap<>(); details.put(DeleteStoragePoolCommand.DATASTORE_NAME, volumeInfo.get_iScsiName()); final DeleteStoragePoolCommand cmd = new DeleteStoragePoolCommand(); cmd.setDetails(details); cmd.setRemoveDatastore(true); final Answer answer = agentMgr.easySend(srcHost.getId(), cmd); if (answer == null || !answer.getResult()) { String errMsg = "Error interacting with host (related to DeleteStoragePoolCommand)" + (StringUtils.isNotBlank(answer.getDetails()) ? ": " + answer.getDetails() : ""); s_logger.error(errMsg); throw new CloudRuntimeException(errMsg); } final PrimaryDataStoreDriver pdsd = (PrimaryDataStoreDriver)volumeInfo.getDataStore().getDriver(); pdsd.revokeAccess(volumeInfo, srcHost, volumeInfo.getDataStore()); VolumeDetailVO volumeDetailVo = new VolumeDetailVO(volumeInfo.getId(), PrimaryDataStoreDriver.BASIC_DELETE, Boolean.TRUE.toString(), false); volumeDetailsDao.persist(volumeDetailVo); pdsd.deleteAsync(volumeInfo.getDataStore(), volumeInfo, null); VolumeVO volumeVO = volDao.findById(volumeInfo.getId()); volumeVO.setPath(volumeTO.getPath()); volDao.update(volumeVO.getId(), volumeVO); }
@Test public final void testModifyStoragePoolCommand() { // Create dummy folder String folderName = "." + File.separator + "Dummy"; StoragePoolVO pool = createTestStoragePoolVO(folderName); ModifyStoragePoolCommand cmd = new ModifyStoragePoolCommand(true, pool, folderName); Answer ans = s_hypervresource.executeRequest(cmd); Assert.assertTrue(ans.getResult()); DeleteStoragePoolCommand delCmd = new DeleteStoragePoolCommand(pool, folderName); Answer ans2 = s_hypervresource.executeRequest(delCmd); Assert.assertTrue(ans2.getResult()); }
DeleteStoragePoolCommand deleteCmd = new DeleteStoragePoolCommand(storagePool); deleteCmd.setRemoveDatastore(true); deleteCmd.setDetails(details);