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