Gilad Chaplik has uploaded a new change for review.

Change subject: core: RunVmCommand.canDoAction clean-up (10)
......................................................................

core: RunVmCommand.canDoAction clean-up (10)

vdsStatus (vm.status = paused + vds.status != up)

Change-Id: I7b3273a88e9d5da2aad4aeafb99a6f414560085e
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
4 files changed, 25 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/04/13404/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 ea4d4d5..f6acd1c 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
@@ -698,6 +698,7 @@
                                     getParameters().getDiskPath(),
                                     getParameters().getFloppyPath())) &&
                             
validate(getRunVmValidator().vmDuringInitialization(vm)) &&
+                            getRunVmValidator().validateVdsStatus(vm, 
messages) &&
                             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 1a5dbdb..f1ccf73 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
@@ -18,10 +18,7 @@
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
-import org.ovirt.engine.core.common.businessentities.VDS;
-import org.ovirt.engine.core.common.businessentities.VDSStatus;
 import org.ovirt.engine.core.common.businessentities.VM;
-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.compat.Guid;
@@ -56,16 +53,6 @@
 
         List<Disk> vmDisks = getDiskDao().getAllForVm(vm.getId(), true);
         if (retValue) {
-            if (vm.getStatus() == VMStatus.Paused && vm.getRunOnVds() != null) 
{
-                VDS vds = DbFacade.getInstance().getVdsDao().get(
-                        new Guid(vm.getRunOnVds().toString()));
-                if (vds.getStatus() != VDSStatus.Up) {
-                    retValue = false;
-                    
message.add(VdcBllMessages.VAR__HOST_STATUS__UP.toString());
-                    
message.add(VdcBllMessages.ACTION_TYPE_FAILED_VDS_STATUS_ILLEGAL.toString());
-                }
-            }
-
             boolean isStatelessVm = shouldVmRunAsStateless(runParams, vm);
 
             if (retValue && isStatelessVm && 
!snapshotsValidator.vmNotInPreview(vm.getId()).isValid()) {
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 32de5e8..d576368 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
@@ -16,6 +16,8 @@
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.ImageType;
 import org.ovirt.engine.core.common.businessentities.RepoFileMetaData;
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VDSStatus;
 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;
@@ -27,6 +29,7 @@
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.VdsDAO;
 import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao;
 import org.ovirt.engine.core.utils.vmproperties.VmPropertiesUtils;
 
@@ -159,8 +162,25 @@
         return ValidationResult.VALID;
     }
 
+    public boolean validateVdsStatus(VM vm, List<String> messages) {
+        if (vm.getStatus() == VMStatus.Paused && vm.getRunOnVds() != null) {
+            VDS vds = getVdsDao().get(
+                    new Guid(vm.getRunOnVds().toString()));
+            if (vds.getStatus() != VDSStatus.Up) {
+                messages.add(VdcBllMessages.VAR__HOST_STATUS__UP.toString());
+                
messages.add(VdcBllMessages.ACTION_TYPE_FAILED_VDS_STATUS_ILLEGAL.toString());
+                return false;
+            }
+        }
+        return true;
+    }
+
     protected BackendInternal getBackend() {
         return Backend.getInstance();
+    }
+
+    protected VdsDAO getVdsDao() {
+        return DbFacade.getInstance().getVdsDao();
     }
 
     protected VmNetworkInterfaceDao getVmNetworkInterfaceDao() {
@@ -223,6 +243,9 @@
             messages.add(result.getMessage().toString());
             return false;
         }
+        if (!validateVdsStatus(vm, messages)) {
+            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 3fad90e..923114a 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
@@ -451,6 +451,7 @@
         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);
+        when(runVmValidator.validateVdsStatus(any(VM.class), 
Matchers.anyListOf(String.class))).thenReturn(true);
         doReturn(runVmValidator).when(command).getRunVmValidator();
         return runVmValidator;
     }


--
To view, visit http://gerrit.ovirt.org/13404
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7b3273a88e9d5da2aad4aeafb99a6f414560085e
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

Reply via email to