Gilad Chaplik has uploaded a new change for review. Change subject: core: RunVmCommand.canDoAction clean-up (9) ......................................................................
core: RunVmCommand.canDoAction clean-up (9) vmDuringInitialization. Change-Id: I2b595b419ac6f4c6b42eecef9f8f8f62b11d0eaf Signed-off-by: Gilad Chaplik <gchap...@redhat.com> --- 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/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 M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java 5 files changed, 58 insertions(+), 29 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/03/13403/1 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 629e86a..ea4d4d5 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 @@ -697,6 +697,7 @@ validate(getRunVmValidator().validateIsoPath(vm.isAutoStartup(), vm.getStoragePoolId(), getParameters().getDiskPath(), getParameters().getFloppyPath())) && + validate(getRunVmValidator().vmDuringInitialization(vm)) && canRunVm(vm) && validateNetworkInterfaces(); if (!canDoAction) { 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 index 24cc402..1a5dbdb 100644 --- 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 @@ -24,8 +24,6 @@ import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; -import org.ovirt.engine.core.common.vdscommands.IsVmDuringInitiatingVDSCommandParameters; -import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.VdcBllMessages; import org.ovirt.engine.core.dal.dbbroker.DbFacade; @@ -58,15 +56,7 @@ List<Disk> vmDisks = getDiskDao().getAllForVm(vm.getId(), true); if (retValue) { - boolean isVmDuringInit = ((Boolean) getBackend() - .getResourceManager() - .RunVdsCommand(VDSCommandType.IsVmDuringInitiating, - new IsVmDuringInitiatingVDSCommandParameters(vm.getId())) - .getReturnValue()).booleanValue(); - if (vm.isRunning() || (vm.getStatus() == VMStatus.NotResponding) || isVmDuringInit) { - retValue = false; - message.add(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_RUNNING.toString()); - } else if (vm.getStatus() == VMStatus.Paused && vm.getRunOnVds() != null) { + if (vm.getStatus() == VMStatus.Paused && vm.getRunOnVds() != null) { VDS vds = DbFacade.getInstance().getVdsDao().get( new Guid(vm.getRunOnVds().toString())); if (vds.getStatus() != VDSStatus.Up) { 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 541abe0..32de5e8 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 @@ -17,10 +17,13 @@ import org.ovirt.engine.core.common.businessentities.ImageType; import org.ovirt.engine.core.common.businessentities.RepoFileMetaData; import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.storage_pool; import org.ovirt.engine.core.common.queries.GetImagesListParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.common.vdscommands.IsVmDuringInitiatingVDSCommandParameters; +import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.VdcBllMessages; import org.ovirt.engine.core.dal.dbbroker.DbFacade; @@ -144,7 +147,19 @@ return ValidationResult.VALID; } - private BackendInternal getBackend() { + public ValidationResult vmDuringInitialization(VM vm) { + boolean isVmDuringInit = ((Boolean) getBackend() + .getResourceManager() + .RunVdsCommand(VDSCommandType.IsVmDuringInitiating, + new IsVmDuringInitiatingVDSCommandParameters(vm.getId())) + .getReturnValue()).booleanValue(); + if (vm.isRunning() || (vm.getStatus() == VMStatus.NotResponding) || isVmDuringInit) { + return new ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_RUNNING); + } + return ValidationResult.VALID; + } + + protected BackendInternal getBackend() { return Backend.getInstance(); } @@ -203,6 +218,11 @@ return false; } } + result = vmDuringInitialization(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 f4fb61c..3fad90e 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 @@ -1,7 +1,6 @@ package org.ovirt.engine.core.bll; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyBoolean; @@ -353,22 +352,6 @@ assertTrue(command.getReturnValue().getCanDoActionMessages().isEmpty()); } - @Test - public void canRunVmFailVmRunning() { - final ArrayList<Disk> disks = new ArrayList<Disk>(); - final DiskImage diskImage = createImage(); - disks.add(diskImage); - initDAOMocks(disks); - final VM vm = new VM(); - vm.setStatus(VMStatus.Up); - vm.setStoragePoolId(Guid.NewGuid()); - doReturn(new VdsSelector(vm, new NGuid(), true, new VdsFreeMemoryChecker(command))).when(command) - .getVdsSelector(); - - assertFalse(command.canRunVm(vm)); - assertTrue(command.getReturnValue().getCanDoActionMessages().contains("ACTION_TYPE_FAILED_VM_IS_RUNNING")); - } - private void canRunStatelessVmTest(boolean autoStartUp, boolean isVmStateless, Boolean isStatelessParam, @@ -467,6 +450,7 @@ when(spDao.get(any(Guid.class))).thenReturn(sp); doReturn(spDao).when(command).getStoragePoolDAO(); when(runVmValidator.validateIsoPath(anyBoolean(), any(Guid.class), any(String.class), any(String.class))).thenReturn(ValidationResult.VALID); + when(runVmValidator.vmDuringInitialization(any(VM.class))).thenReturn(ValidationResult.VALID); doReturn(runVmValidator).when(command).getRunVmValidator(); return runVmValidator; } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java index aebc9b9..0a0f3ce 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java @@ -12,13 +12,20 @@ import org.junit.Before; import org.junit.Test; +import org.ovirt.engine.core.bll.Backend; import org.ovirt.engine.core.bll.IsoDomainListSyncronizer; +import org.ovirt.engine.core.bll.VDSBrokerFrontendImpl; import org.ovirt.engine.core.bll.ValidationResult; import org.ovirt.engine.core.common.businessentities.BootSequence; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.VM; +import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend; +import org.ovirt.engine.core.common.vdscommands.VDSCommandType; +import org.ovirt.engine.core.common.vdscommands.VDSParametersBase; +import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.Version; import org.ovirt.engine.core.dal.VdcBllMessages; @@ -56,6 +63,24 @@ @Override public java.util.List<VmNetworkInterface> getAllForVm(Guid id) { return new ArrayList<VmNetworkInterface>(); + }; + }; + }; + + @Override + protected Backend getBackend() { + return new Backend() { + @Override + public VDSBrokerFrontend getResourceManager() { + return new VDSBrokerFrontendImpl() { + @Override + public VDSReturnValue RunVdsCommand(VDSCommandType commandType, + VDSParametersBase parameters) { + VDSReturnValue value = new VDSReturnValue(); + value.setReturnValue(false); + return value; + }; + }; }; }; }; @@ -161,6 +186,15 @@ VdcBllMessages.VM_CANNOT_RUN_FROM_NETWORK_WITHOUT_NETWORK); } + @Test + public void canRunVmFailVmRunning() { + final VM vm = new VM(); + vm.setStatus(VMStatus.Up); + validateResult(runVmValidator.vmDuringInitialization(vm), + false, + VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_RUNNING); + } + private VmPropertiesUtils mockVmPropertiesUtils() { VmPropertiesUtils utils = new VmPropertiesUtils() { @Override -- To view, visit http://gerrit.ovirt.org/13403 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2b595b419ac6f4c6b42eecef9f8f8f62b11d0eaf 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