Gilad Chaplik has uploaded a new change for review.

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

core: RunVmCommand.canDoAction clean-up (9)

vmDuringInitialization.

Change-Id: I2b595b419ac6f4c6b42eecef9f8f8f62b11d0eaf
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
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java
5 files changed, 58 insertions(+), 29 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/03/13403/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 629e86a..ea4d4d5 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
@@ -697,6 +697,7 @@
                             
validate(getRunVmValidator().validateIsoPath(vm.isAutoStartup(), 
vm.getStoragePoolId(),
                                     getParameters().getDiskPath(),
                                     getParameters().getFloppyPath())) &&
+                            
validate(getRunVmValidator().vmDuringInitialization(vm)) &&
                             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 24cc402..1a5dbdb 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
@@ -24,8 +24,6 @@
 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.common.vdscommands.IsVmDuringInitiatingVDSCommandParameters;
-import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
@@ -58,15 +56,7 @@
 
         List<Disk> vmDisks = getDiskDao().getAllForVm(vm.getId(), true);
         if (retValue) {
-            boolean isVmDuringInit = ((Boolean) getBackend()
-                    .getResourceManager()
-                    .RunVdsCommand(VDSCommandType.IsVmDuringInitiating,
-                            new 
IsVmDuringInitiatingVDSCommandParameters(vm.getId()))
-                    .getReturnValue()).booleanValue();
-            if (vm.isRunning() || (vm.getStatus() == VMStatus.NotResponding) 
|| isVmDuringInit) {
-                retValue = false;
-                
message.add(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_RUNNING.toString());
-            } else if (vm.getStatus() == VMStatus.Paused && vm.getRunOnVds() 
!= null) {
+            if (vm.getStatus() == VMStatus.Paused && vm.getRunOnVds() != null) 
{
                 VDS vds = DbFacade.getInstance().getVdsDao().get(
                         new Guid(vm.getRunOnVds().toString()));
                 if (vds.getStatus() != VDSStatus.Up) {
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 541abe0..32de5e8 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
@@ -17,10 +17,13 @@
 import org.ovirt.engine.core.common.businessentities.ImageType;
 import org.ovirt.engine.core.common.businessentities.RepoFileMetaData;
 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;
 import org.ovirt.engine.core.common.queries.GetImagesListParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
+import 
org.ovirt.engine.core.common.vdscommands.IsVmDuringInitiatingVDSCommandParameters;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
@@ -144,7 +147,19 @@
         return ValidationResult.VALID;
     }
 
-    private BackendInternal getBackend() {
+    public ValidationResult vmDuringInitialization(VM vm) {
+        boolean isVmDuringInit = ((Boolean) getBackend()
+                .getResourceManager()
+                .RunVdsCommand(VDSCommandType.IsVmDuringInitiating,
+                        new 
IsVmDuringInitiatingVDSCommandParameters(vm.getId()))
+                .getReturnValue()).booleanValue();
+        if (vm.isRunning() || (vm.getStatus() == VMStatus.NotResponding) || 
isVmDuringInit) {
+            return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_RUNNING);
+        }
+        return ValidationResult.VALID;
+    }
+
+    protected BackendInternal getBackend() {
         return Backend.getInstance();
     }
 
@@ -203,6 +218,11 @@
                 return false;
             }
         }
+        result = vmDuringInitialization(vm);
+        if (!result.isValid()) {
+            messages.add(result.getMessage().toString());
+            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 f4fb61c..3fad90e 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
@@ -1,7 +1,6 @@
 package org.ovirt.engine.core.bll;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyBoolean;
@@ -353,22 +352,6 @@
         
assertTrue(command.getReturnValue().getCanDoActionMessages().isEmpty());
     }
 
-    @Test
-    public void canRunVmFailVmRunning() {
-        final ArrayList<Disk> disks = new ArrayList<Disk>();
-        final DiskImage diskImage = createImage();
-        disks.add(diskImage);
-        initDAOMocks(disks);
-        final VM vm = new VM();
-        vm.setStatus(VMStatus.Up);
-        vm.setStoragePoolId(Guid.NewGuid());
-        doReturn(new VdsSelector(vm, new NGuid(), true, new 
VdsFreeMemoryChecker(command))).when(command)
-                .getVdsSelector();
-
-        assertFalse(command.canRunVm(vm));
-        
assertTrue(command.getReturnValue().getCanDoActionMessages().contains("ACTION_TYPE_FAILED_VM_IS_RUNNING"));
-    }
-
     private void canRunStatelessVmTest(boolean autoStartUp,
             boolean isVmStateless,
             Boolean isStatelessParam,
@@ -467,6 +450,7 @@
         when(spDao.get(any(Guid.class))).thenReturn(sp);
         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);
         doReturn(runVmValidator).when(command).getRunVmValidator();
         return runVmValidator;
     }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java
index aebc9b9..0a0f3ce 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/RunVmValidatorTest.java
@@ -12,13 +12,20 @@
 
 import org.junit.Before;
 import org.junit.Test;
+import org.ovirt.engine.core.bll.Backend;
 import org.ovirt.engine.core.bll.IsoDomainListSyncronizer;
+import org.ovirt.engine.core.bll.VDSBrokerFrontendImpl;
 import org.ovirt.engine.core.bll.ValidationResult;
 import org.ovirt.engine.core.common.businessentities.BootSequence;
 import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.common.businessentities.VMStatus;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
+import org.ovirt.engine.core.common.interfaces.VDSBrokerFrontend;
+import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSParametersBase;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.Version;
 import org.ovirt.engine.core.dal.VdcBllMessages;
@@ -56,6 +63,24 @@
                 @Override
                 public java.util.List<VmNetworkInterface> getAllForVm(Guid id) 
{
                     return new ArrayList<VmNetworkInterface>();
+                };
+            };
+        };
+
+        @Override
+        protected Backend getBackend() {
+            return new Backend() {
+                @Override
+                public VDSBrokerFrontend getResourceManager() {
+                    return new VDSBrokerFrontendImpl() {
+                        @Override
+                        public VDSReturnValue RunVdsCommand(VDSCommandType 
commandType,
+                                VDSParametersBase parameters) {
+                            VDSReturnValue value = new VDSReturnValue();
+                            value.setReturnValue(false);
+                            return value;
+                        };
+                    };
                 };
             };
         };
@@ -161,6 +186,15 @@
                 VdcBllMessages.VM_CANNOT_RUN_FROM_NETWORK_WITHOUT_NETWORK);
     }
 
+    @Test
+    public void canRunVmFailVmRunning() {
+        final VM vm = new VM();
+        vm.setStatus(VMStatus.Up);
+        validateResult(runVmValidator.vmDuringInitialization(vm),
+                false,
+                VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_RUNNING);
+    }
+
     private VmPropertiesUtils mockVmPropertiesUtils() {
         VmPropertiesUtils utils = new VmPropertiesUtils() {
             @Override


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

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