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

Reply via email to