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

Reply via email to