Arik Hadas has uploaded a new change for review.

Change subject: core: fetch disks internally in RunVmValidator
......................................................................

core: fetch disks internally in RunVmValidator

RunVmValidator was used to get the disks of the VM which is going to be
run from outside, as a parameter of the canRunVm method. This patch
changes this, such that the disks are no longer passed from outside,
they are now fetched internally.

Change-Id: I0c06577a1fab8c3c912f91a78a4303f83c8edcc0
Signed-off-by: Arik Hadas <aha...@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/VmPoolCommandBase.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, 19 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/41/18241/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 1b98f29..d5b3af3 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
@@ -760,7 +760,6 @@
 
         if (!runVmValidator.canRunVm(
                 getReturnValue().getCanDoActionMessages(),
-                getDiskDao().getAllForVm(vm.getId(), true),
                 getStoragePool(),
                 getRunVdssList(),
                 getDestinationVds() != null ? getDestinationVds().getId() : 
null,
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
index 21efc28..0b44cc8 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
@@ -30,7 +30,6 @@
 import org.ovirt.engine.core.common.utils.SimpleDependecyInjector;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
-import org.ovirt.engine.core.dao.DiskDao;
 import org.ovirt.engine.core.dao.VmPoolDAO;
 
 public abstract class VmPoolCommandBase<T extends VmPoolParametersBase> 
extends CommandBase<T> {
@@ -228,15 +227,10 @@
 
         return new RunVmValidator(vm, runVmParams, false).canRunVm(
                 messages,
-                getDiskDao().getAllForVm(vm.getId(), true),
                 fetchStoragePool(vm.getStoragePoolId()),
                 Collections.<Guid>emptyList(),
                 null,
                 
DbFacade.getInstance().getVdsGroupDao().get(vm.getVdsGroupId()));
-    }
-
-    private static DiskDao getDiskDao() {
-        return DbFacade.getInstance().getDiskDao();
     }
 
     private static StoragePool fetchStoragePool(Guid storagePoolId) {
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 8d5a925..742ed25 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
@@ -46,6 +46,7 @@
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.DiskDao;
 import org.ovirt.engine.core.dao.StorageDomainDAO;
 import org.ovirt.engine.core.dao.VdsDAO;
 import org.ovirt.engine.core.dao.network.NetworkDao;
@@ -59,6 +60,8 @@
     private VM vm;
     private RunVmParams runVmParam;
     private boolean isInternalExecution;
+
+    private List<Disk> cachedVmDisks;
 
     public RunVmValidator(VM vm, RunVmParams rumVmParam, boolean 
isInternalExecution) {
         this.vm = vm;
@@ -83,22 +86,22 @@
      * @param vdsGroup
      * @return
      */
-    public boolean canRunVm(List<String> messages, List<Disk> vmDisks,
-            StoragePool storagePool, List<Guid> vdsBlackList, Guid destVds, 
VDSGroup vdsGroup) {
+    public boolean canRunVm(List<String> messages, StoragePool storagePool,
+            List<Guid> vdsBlackList, Guid destVds, VDSGroup vdsGroup) {
 
         if (!validateVmProperties(vm, messages) ||
-                !validate(validateBootSequence(vm, 
runVmParam.getBootSequence(), vmDisks), messages) ||
+                !validate(validateBootSequence(vm, 
runVmParam.getBootSequence(), getVmDisks()), messages) ||
                 !validate(new VmValidator(vm).vmNotLocked(), messages) ||
                 
!validate(getSnapshotValidator().vmNotDuringSnapshot(vm.getId()), messages) ||
                 !validate(validateVmStatusUsingMatrix(vm), messages) ||
                 !validate(validateIsoPath(vm, runVmParam.getDiskPath(), 
runVmParam.getFloppyPath()), messages)  ||
                 !validate(vmDuringInitialization(vm), messages) ||
                 !validate(validateVdsStatus(vm), messages) ||
-                !validate(validateStatelessVm(vm, vmDisks, 
runVmParam.getRunAsStateless()), messages)) {
+                !validate(validateStatelessVm(vm, getVmDisks(), 
runVmParam.getRunAsStateless()), messages)) {
             return false;
         }
 
-        List<DiskImage> images = ImagesHandler.filterImageDisks(vmDisks, true, 
false);
+        List<DiskImage> images = ImagesHandler.filterImageDisks(getVmDisks(), 
true, false);
         if (!images.isEmpty() && (
                 !validate(validateStoragePoolUp(vm, storagePool), messages) ||
                 !validate(validateStorageDomains(vm, isInternalExecution, 
images), messages) ||
@@ -436,6 +439,10 @@
         return VmPropertiesUtils.getInstance();
     }
 
+    protected DiskDao getDiskDao() {
+        return DbFacade.getInstance().getDiskDao();
+    }
+
     @SuppressWarnings("unchecked")
     private boolean isRepoImageExists(String repoImagePath, Guid 
storageDomainId, ImageFileType imageFileType) {
         VdcQueryReturnValue ret = getBackend().runInternalQuery(
@@ -480,4 +487,11 @@
         }
         return map;
     }
+
+    private List<Disk> getVmDisks() {
+        if (cachedVmDisks == null) {
+            cachedVmDisks = getDiskDao().getAllForVm(vm.getId(), true);
+        }
+        return cachedVmDisks;
+    }
 }
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 48f0c52..ebcaace 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
@@ -351,7 +351,6 @@
         RunVmValidator runVmValidator = mock(RunVmValidator.class);
         when(runVmValidator.canRunVm(
                 Matchers.anyListOf(String.class),
-                Matchers.anyListOf(Disk.class),
                 any(StoragePool.class),
                 Matchers.anyListOf(Guid.class),
                 any(Guid.class),


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0c06577a1fab8c3c912f91a78a4303f83c8edcc0
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Arik Hadas <aha...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to