Gilad Chaplik has uploaded a new change for review. Change subject: core: runVmCommand.canDoAction clean up (13) ......................................................................
core: runVmCommand.canDoAction clean up (13) - Vm status validtion - Removal of RunVmHandler Change-Id: I6e2ca6ca3d1410f857591956a6e2b50dde3153dc Signed-off-by: Gilad Chaplik <gchap...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java D backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/RunVmValidator.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java 7 files changed, 23 insertions(+), 161 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/13407/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java index a2df4ad..b787548 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java @@ -228,6 +228,10 @@ ImagesHandler.filterImageDisks(pluggedDisks, false, true))); return null; } + + private List<Disk> getPluggedDisks(VM vm) { + return null; + } }); } catch (VdcBLLException e) { handleVdsLiveSnapshotFailure(e); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java index f5deb9e..847ac5b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java @@ -704,7 +704,7 @@ getParameters().getRunAsStateless())) && getVdsSelector().canFindVdsToRunOn(messages, false) && - canRunVm(vm) && + validate(getRunVmValidator().validateVmStatusUsingMatrix(vm)) && validateNetworkInterfaces(); if (!canDoAction) { return false; @@ -735,14 +735,6 @@ protected RunVmValidator getRunVmValidator() { return runVmValidator; - } - - protected boolean canRunVm(VM vm) { - return getVmRunHandler().canRunVm(vm, - getReturnValue().getCanDoActionMessages(), - getParameters(), - getVdsSelector(), - getSnapshotsValidator()); } @Override @@ -917,10 +909,6 @@ ActionGroup.CHANGE_VM_CUSTOM_PROPERTIES)); } return permissionList; - } - - protected VmRunHandler getVmRunHandler() { - return VmRunHandler.getInstance(); } private static final Log log = LogFactory.getLog(RunVmCommand.class); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java index bdfb32a..5712e0b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java @@ -78,10 +78,6 @@ return snapshotsValidator; } - public void setSnapshotsValidator(SnapshotsValidator snapshotsValidator) { - this.snapshotsValidator = snapshotsValidator; - } - /** * List on all vdss, vm run on. In the case of problem to run vm will be more then one */ diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java index e464631..e4e3ef6 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java @@ -276,13 +276,7 @@ runVmParams.getDiskPath(), runVmParams.getFloppyPath(), runVmParams.getRunAsStateless(), - vdsSelector) - && - VmRunHandler.getInstance().canRunVm(vm, - messages, - runVmParams, - vdsSelector, - new SnapshotsValidator()); + vdsSelector); } private static DiskDao getDiskDao() { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java deleted file mode 100644 index 34a908c..0000000 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java +++ /dev/null @@ -1,112 +0,0 @@ -package org.ovirt.engine.core.bll; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.ovirt.engine.core.bll.interfaces.BackendInternal; -import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator; -import org.ovirt.engine.core.common.VdcActionUtils; -import org.ovirt.engine.core.common.action.RunVmParams; -import org.ovirt.engine.core.common.action.VdcActionType; -import org.ovirt.engine.core.common.businessentities.DiskImage; -import org.ovirt.engine.core.common.businessentities.StorageDomain; -import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; -import org.ovirt.engine.core.common.businessentities.StorageDomainType; -import org.ovirt.engine.core.common.businessentities.VM; -import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.dal.VdcBllMessages; -import org.ovirt.engine.core.dal.dbbroker.DbFacade; -import org.ovirt.engine.core.dao.DiskDao; -import org.ovirt.engine.core.dao.StorageDomainDAO; -import org.ovirt.engine.core.dao.StoragePoolDAO; - -/** A utility class for verifying running a vm*/ -public class VmRunHandler { - private static final VmRunHandler instance = new VmRunHandler(); - - public static VmRunHandler getInstance() { - return instance; - } - - /** - * This method checks whether the given VM is capable to run. - * - * @param vm not null {@link VM} - * @param message - * @param runParams - * @param vdsSelector - * @param snapshotsValidator - * @param vmPropsUtils - * @return true if the given VM can run with the given properties, false otherwise - */ - public boolean canRunVm(VM vm, ArrayList<String> message, RunVmParams runParams, - VdsSelector vdsSelector, SnapshotsValidator snapshotsValidator) { - boolean retValue = true; - - /** - * only if can do action ok then check with actions matrix that status is valid for this action - */ - if (retValue - && !VdcActionUtils.CanExecute(Arrays.asList(vm), VM.class, - VdcActionType.RunVm)) { - retValue = false; - message.add(VdcBllMessages.ACTION_TYPE_FAILED_VM_STATUS_ILLEGAL.toString()); - } - return retValue; - } - - protected IsoDomainListSyncronizer getIsoDomainListSyncronizer() { - return IsoDomainListSyncronizer.getInstance(); - } - - protected boolean performImageChecksForRunningVm - (VM vm, List<String> message, RunVmParams runParams, List<DiskImage> vmDisks) { - return ImagesHandler.PerformImagesChecks(message, - vm.getStoragePoolId(), Guid.Empty, !vm.isAutoStartup(), - true, false, false, - !vm.isAutoStartup() || !runParams.getIsInternal(), - !vm.isAutoStartup() || !runParams.getIsInternal(), - vmDisks); - } - - /** - * Checks if there is an active ISO domain in the storage pool. If so returns the Iso Guid, otherwise returns null. - * - * @param storagePoolId - * The storage pool id. - * @return Iso Guid of active Iso, and null if not. - */ - public Guid findActiveISODomain(Guid storagePoolId) { - Guid isoGuid = null; - List<StorageDomain> domains = getStorageDomainDAO().getAllForStoragePool( - storagePoolId); - for (StorageDomain domain : domains) { - if (domain.getStorageDomainType() == StorageDomainType.ISO) { - StorageDomain sd = getStorageDomainDAO().getForStoragePool(domain.getId(), - storagePoolId); - if (sd != null && sd.getStatus() == StorageDomainStatus.Active) { - isoGuid = sd.getId(); - break; - } - } - } - return isoGuid; - } - - protected BackendInternal getBackend() { - return Backend.getInstance(); - } - - protected DiskDao getDiskDao() { - return DbFacade.getInstance().getDiskDao(); - } - - protected StorageDomainDAO getStorageDomainDAO() { - return DbFacade.getInstance().getStorageDomainDao(); - } - - protected StoragePoolDAO getStoragePoolDAO() { - return DbFacade.getInstance().getStoragePoolDao(); - } -} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/RunVmValidator.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/RunVmValidator.java index 92bfeb0..b9dfab1 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/RunVmValidator.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/RunVmValidator.java @@ -1,5 +1,6 @@ package org.ovirt.engine.core.bll.validator; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -15,6 +16,8 @@ import org.ovirt.engine.core.bll.interfaces.BackendInternal; import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator; import org.ovirt.engine.core.bll.storage.StoragePoolValidator; +import org.ovirt.engine.core.common.VdcActionUtils; +import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.BootSequence; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.DiskImage; @@ -206,6 +209,14 @@ return ValidationResult.VALID; } + public ValidationResult validateVmStatusUsingMatrix(VM vm) { + if (!VdcActionUtils.CanExecute(Arrays.asList(vm), VM.class, + VdcActionType.RunVm)) { + return new ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_VM_STATUS_ILLEGAL); + } + return ValidationResult.VALID; + } + protected SnapshotsValidator getSnapshotValidator() { return new SnapshotsValidator(); } @@ -329,6 +340,11 @@ if (!vdsSelector.canFindVdsToRunOn(messages, false)) { return false; } + result = validateVmStatusUsingMatrix(vm); + if (!result.isValid()) { + messages.add(result.getMessage().toString()); + return false; + } return true; } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java index 9d26ff9..e8a8d24 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java @@ -4,7 +4,6 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyBoolean; -import static org.mockito.Matchers.anyListOf; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doAnswer; @@ -25,7 +24,6 @@ import org.junit.runner.RunWith; import org.mockito.Matchers; import org.mockito.Mock; -import org.mockito.Spy; import org.mockito.invocation.InvocationOnMock; import org.mockito.runners.MockitoJUnitRunner; import org.mockito.stubbing.Answer; @@ -79,12 +77,6 @@ @Mock private StoragePoolDAO spDao; - @Spy - private final VmRunHandler vmRunHandler = VmRunHandler.getInstance(); - - @Mock - private RunVmValidator runVmValidator; - @Mock private BackendInternal backend; @@ -98,7 +90,6 @@ public void mockBackend() { doReturn(backend).when(command).getBackend(); - doReturn(backend).when(vmRunHandler).getBackend(); VDSReturnValue vdsReturnValue = new VDSReturnValue(); vdsReturnValue.setReturnValue(true); @@ -310,7 +301,6 @@ RunVmParams param = new RunVmParams(Guid.NewGuid()); command = spy(new RunVmCommand<RunVmParams>(param)); mockIsoDomainListSyncronizer(); - mockVmRunHandler(); mockSuccessfulRunVmValidator(); mockSuccessfulSnapshotValidator(); mockBackend(); @@ -319,18 +309,6 @@ private void mockIsoDomainListSyncronizer() { doNothing().when(isoDomainListSyncronizer).init(); doReturn(isoDomainListSyncronizer).when(command).getIsoDomainListSyncronizer(); - } - - protected void mockVmRunHandler() { - doReturn(vmRunHandler).when(command).getVmRunHandler(); - - doNothing().when(isoDomainListSyncronizer).init(); - doReturn(isoDomainListSyncronizer).when(vmRunHandler).getIsoDomainListSyncronizer(); - - doReturn(true).when(vmRunHandler).performImageChecksForRunningVm(any(VM.class), - anyListOf(String.class), - any(RunVmParams.class), - anyListOf(DiskImage.class)); } @Test @@ -346,7 +324,6 @@ doReturn(true).when(vdsSelector).canFindVdsToRunOn(Matchers.anyList(), anyBoolean()); doReturn(vdsSelector).when(command).getVdsSelector(); doReturn(vm).when(command).getVm(); - doReturn(true).when(command).canRunVm(vm); doReturn(true).when(command).validateNetworkInterfaces(); assertTrue(command.canDoAction()); assertTrue(command.getReturnValue().getCanDoActionMessages().isEmpty()); @@ -360,13 +337,11 @@ final DiskDao diskDao = mock(DiskDao.class); when(diskDao.getAllForVm(Guid.Empty, true)).thenReturn(disks); doReturn(diskDao).when(command).getDiskDao(); - doReturn(diskDao).when(vmRunHandler).getDiskDao(); final StorageDomainDAO storageDomainDAO = mock(StorageDomainDAO.class); when(storageDomainDAO.getAllForStoragePool(Guid.Empty)) .thenReturn(new ArrayList<StorageDomain>()); doReturn(storageDomainDAO).when(command).getStorageDomainDAO(); - doReturn(storageDomainDAO).when(vmRunHandler).getStorageDomainDAO(); } private SnapshotsValidator mockSuccessfulSnapshotValidator() { @@ -393,6 +368,7 @@ when(runVmValidator.vmDuringInitialization(any(VM.class))).thenReturn(ValidationResult.VALID); when(runVmValidator.validateVdsStatus(any(VM.class), Matchers.anyListOf(String.class))).thenReturn(true); when(runVmValidator.validateStatelessVm(any(VM.class), Matchers.anyListOf(Disk.class), anyBoolean())).thenReturn(ValidationResult.VALID); + when(runVmValidator.validateVmStatusUsingMatrix(any(VM.class))).thenReturn(ValidationResult.VALID); doReturn(runVmValidator).when(command).getRunVmValidator(); return runVmValidator; } -- To view, visit http://gerrit.ovirt.org/13407 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6e2ca6ca3d1410f857591956a6e2b50dde3153dc Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Gilad Chaplik <gchap...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches