Arik Hadas has uploaded a new change for review. Change subject: core: move VmCommand#removeVmInSpm method ......................................................................
core: move VmCommand#removeVmInSpm method Move VmCommand#removeVmInSpm method to RemoveVmFromImportExportCommand class as it is the only place where this method is called from. The code which is related to disk images removal is extracted from the execute method of RemoveVmFromImportExportCommand to separate method. In addition, minor refactoring is made in the canDoAction method of RemoveVmFromImportExportCommand. Change-Id: Id3945268925fb5f1541fa29c9ef24e97fc243228 Signed-off-by: Arik Hadas <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmFromImportExportCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java 2 files changed, 26 insertions(+), 20 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/09/16709/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmFromImportExportCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmFromImportExportCommand.java index cea23d0..95b2f4c 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmFromImportExportCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmFromImportExportCommand.java @@ -22,6 +22,8 @@ import org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.common.vdscommands.RemoveVMVDSCommandParameters; +import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; @@ -40,45 +42,45 @@ @Override protected boolean canDoAction() { - addCanDoActionMessage(VdcBllMessages.VAR__ACTION__REMOVE); - addCanDoActionMessage(VdcBllMessages.VAR__TYPE__VM); StorageDomain storage = DbFacade.getInstance().getStorageDomainDao().getForStoragePool( getParameters().getStorageDomainId(), getParameters().getStoragePoolId()); if (storage == null) { - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_NOT_EXIST); - return false; + return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_NOT_EXIST); } if (storage.getStatus() == null || storage.getStatus() != StorageDomainStatus.Active) { - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_STATUS_ILLEGAL); - return false; + return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_STATUS_ILLEGAL); } if (storage.getStorageDomainType() != StorageDomainType.ImportExport) { - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_ILLEGAL); - return false; + return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_ILLEGAL); } // getVm() is the vm from the export domain if (getVm() == null) { - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_FOUND_ON_EXPORT_DOMAIN); - return false; + return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_FOUND_ON_EXPORT_DOMAIN); } // not using getVm() since its overridden to get vm from export domain VM vm = getVmDAO().get(getVmId()); if (vm != null && vm.getStatus() == VMStatus.ImageLocked) { if (AsyncTaskManager.getInstance().hasTasksForEntityIdAndAction(vm.getId(), VdcActionType.ExportVm)) { - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_DURING_EXPORT); - return false; + return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_DURING_EXPORT); } } + return true; } @Override protected void executeVmCommand() { - removeVmInSpm(getParameters().getStoragePoolId(), getVmId(), getParameters().getStorageDomainId()); + removeVmInSpm(); + removeDiskImages(); + + setSucceeded(true); + } + + private void removeDiskImages() { List<DiskImage> images = ImagesHandler.filterImageDisks(getVm().getDiskMap().values(), true, false); for (DiskImage image : images) { @@ -86,8 +88,18 @@ image.setStoragePoolId(getParameters().getStoragePoolId()); } removeVmImages(images); + } - setSucceeded(true); + private boolean removeVmInSpm() { + return runVdsCommand(VDSCommandType.RemoveVM, buildRemoveVmParameters()) + .getSucceeded(); + } + + private RemoveVMVDSCommandParameters buildRemoveVmParameters() { + return new RemoveVMVDSCommandParameters( + getParameters().getStoragePoolId(), + getVmId(), + getParameters().getStorageDomainId()); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java index fe79806..3c683ed 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCommand.java @@ -29,7 +29,6 @@ import org.ovirt.engine.core.common.utils.SimpleDependecyInjector; import org.ovirt.engine.core.common.utils.VmDeviceType; import org.ovirt.engine.core.common.vdscommands.DeleteImageGroupVDSCommandParameters; -import org.ovirt.engine.core.common.vdscommands.RemoveVMVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.compat.Guid; @@ -159,11 +158,6 @@ messages.add(VdcBllMessages.ACTION_TYPE_FAILED_EXCEEDED_MAX_IDE_SLOTS.name()); } return result; - } - - protected boolean removeVmInSpm(Guid storagePoolId, Guid vmID, Guid storageDomainId) { - return runVdsCommand(VDSCommandType.RemoveVM, - new RemoveVMVDSCommandParameters(storagePoolId, vmID, storageDomainId)).getSucceeded(); } protected void removeVmStatic() { -- To view, visit http://gerrit.ovirt.org/16709 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id3945268925fb5f1541fa29c9ef24e97fc243228 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Arik Hadas <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
