Daniel Erez has uploaded a new change for review. Change subject: core: LSM - validate identical source and dest SDs ......................................................................
core: LSM - validate identical source and dest SDs LiveMigrateVmDisksCommand: Added a canDo validation for identical source and destination storage domain IDs. Change-Id: I75fbc21b654a10cd1207a70b437df75df971717e Bug-Url: https://bugzilla.redhat.com/1103499 Signed-off-by: Daniel Erez <de...@redhat.com> --- 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/00/28300/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 97a95a5..853dd61 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 @@ -279,7 +279,8 @@ getReturnValue().setCanDoAction(isDiskNotShareable(parameters.getImageId()) && isDiskSnapshotNotPluggedToOtherVmsThatAreNotDown(parameters.getImageId()) && isTemplateInDestStorageDomain(parameters.getImageId(), parameters.getStorageDomainId()) - && performStorageDomainsChecks(parameters)); + && performStorageDomainsChecks(parameters) + && isSameSourceAndDest(parameters)); if (!getReturnValue().getCanDoAction()) { return false; @@ -325,6 +326,16 @@ return validate(diskImagesValidator.diskImagesNotLocked()); } + private boolean isSameSourceAndDest(LiveMigrateDiskParameters parameters) { + StorageDomain sourceDomain = getImageSourceDomain(parameters.getImageId()); + + if (sourceDomain.getId().equals(parameters.getStorageDomainId())) { + return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_SOURCE_AND_TARGET_SAME); + } + + return true; + } + private boolean isDiskNotShareable(Guid imageId) { DiskImage diskImage = getDiskImageByImageId(imageId); 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 d56118a..5bce1de 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 @@ -105,8 +105,17 @@ return Arrays.asList(new LiveMigrateDiskParameters(diskImageId, srcStorageId, dstStorageId, vmId, quotaId, diskImageGroupId)); } + private List<LiveMigrateDiskParameters> createLiveMigrateVmDisksParameters(Guid srcStorageId, Guid dstStorageId) { + return Arrays.asList(new LiveMigrateDiskParameters(diskImageId, srcStorageId, dstStorageId, vmId, quotaId, diskImageGroupId)); + } + private void createParameters() { command.getParameters().setParametersList(createLiveMigrateVmDisksParameters()); + command.getParameters().setVmId(vmId); + } + + private void createParameters(Guid srcStorageId, Guid dstStorageId) { + command.getParameters().setParametersList(createLiveMigrateVmDisksParameters(srcStorageId, dstStorageId)); command.getParameters().setVmId(vmId); } @@ -188,6 +197,22 @@ } @Test + public void canDoActionSameSourceAndDest() throws Exception { + createParameters(srcStorageId, srcStorageId); + + StorageDomain srcStorageDomain = initStorageDomain(srcStorageId); + srcStorageDomain.setStatus(StorageDomainStatus.Active); + + initDiskImage(diskImageGroupId, diskImageId); + initVm(VMStatus.Up, Guid.newGuid(), diskImageGroupId); + + assertFalse(command.canDoAction()); + assertTrue(command.getReturnValue() + .getCanDoActionMessages() + .contains(VdcBllMessages.ACTION_TYPE_FAILED_SOURCE_AND_TARGET_SAME.name())); + } + + @Test public void canDoActionInvalidDestinationAndSourceDomainOfDifferentStorageSubtypes() { createParameters(); -- To view, visit http://gerrit.ovirt.org/28300 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I75fbc21b654a10cd1207a70b437df75df971717e Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.4 Gerrit-Owner: Daniel Erez <de...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches