Daniel Erez has uploaded a new change for review. Change subject: core: LiveMigrateVmDisks validation for stateless VMs ......................................................................
core: LiveMigrateVmDisks validation for stateless VMs LiveMigrateVmDisksCommand - added validation for stateless VMs (i.e. disks cannot be live migrated when the VM is running stateless). Change-Id: Ie6dcf182de6fbea71e043f207c2fdee526df912b Bug-Url: https://bugzilla.redhat.com/926959 Signed-off-by: Daniel Erez <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommandTest.java 2 files changed, 37 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/80/15480/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java index 79c2eb3..27a4be0 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommand.java @@ -21,6 +21,7 @@ import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.bll.validator.DiskImagesValidator; import org.ovirt.engine.core.bll.validator.StorageDomainValidator; +import org.ovirt.engine.core.bll.validator.VmValidator; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.LiveMigrateDiskParameters; import org.ovirt.engine.core.common.action.LiveMigrateVmDisksParameters; @@ -195,7 +196,8 @@ protected boolean canDoAction() { setStoragePoolId(getVm().getStoragePoolId()); - if (!isValidParametersList() || !checkImagesStatus() || !isValidSpaceRequirements()) { + if (!isValidParametersList() || !checkImagesStatus() || !isValidSpaceRequirements() + || !isVmNotRunningStateless()) { return false; } @@ -313,4 +315,12 @@ protected boolean doesStorageDomainhaveSpaceForRequest(StorageDomain storageDomain, long totalImagesSize) { return validate(new StorageDomainValidator(storageDomain).isDomainHasSpaceForRequest(totalImagesSize)); } + + private boolean isVmNotRunningStateless() { + return validate(createVmValidator().vmNotRunningStateless()); + } + + protected VmValidator createVmValidator() { + return new VmValidator(getVm()); + } } diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommandTest.java index 4a5b83d..4bb72e0 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/lsm/LiveMigrateVmDisksCommandTest.java @@ -17,6 +17,8 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; +import org.ovirt.engine.core.bll.ValidationResult; +import org.ovirt.engine.core.bll.validator.VmValidator; import org.ovirt.engine.core.common.action.LiveMigrateDiskParameters; import org.ovirt.engine.core.common.action.LiveMigrateVmDisksParameters; import org.ovirt.engine.core.common.businessentities.DiskImage; @@ -57,6 +59,9 @@ @Mock private VmDAO vmDao; + + @Mock + private VmValidator vmValidator; /** * The command under test @@ -163,6 +168,21 @@ .contains(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_ILLEGAL.toString())); } + @Test + public void canDoActionVmRunningStateless() { + createParameters(); + initDiskImage(diskImageId); + initVm(VMStatus.Up, Guid.NewGuid(), diskImageId); + + doReturn(new ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_VM_RUNNING_STATELESS)).when(vmValidator) + .vmNotRunningStateless(); + + assertFalse(command.canDoAction()); + assertTrue(command.getReturnValue() + .getCanDoActionMessages() + .contains(VdcBllMessages.ACTION_TYPE_FAILED_VM_RUNNING_STATELESS.name())); + } + /** Initialize Entities */ private void initVm(VMStatus vmStatus, NGuid runOnVds, Guid diskImageId) { @@ -214,6 +234,7 @@ mockDiskImageDao(); mockStorageDomainDao(); mockStoragePoolDao(); + mockValidators(); } private void mockVmDao() { @@ -231,4 +252,9 @@ private void mockStoragePoolDao() { doReturn(storagePoolDao).when(command).getStoragePoolDAO(); } + + private void mockValidators() { + doReturn(vmValidator).when(command).createVmValidator(); + doReturn(ValidationResult.VALID).when(vmValidator).vmNotRunningStateless(); + } } -- To view, visit http://gerrit.ovirt.org/15480 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie6dcf182de6fbea71e043f207c2fdee526df912b Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Daniel Erez <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
