Arik Hadas has uploaded a new change for review. Change subject: core: simplified iso path validation on run vm ......................................................................
core: simplified iso path validation on run vm Change-Id: I7c1734497fdb22093ec507243ef1ae6bc5006220 Signed-off-by: Arik Hadas <aha...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/RunVmValidator.java 1 file changed, 41 insertions(+), 48 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/37/17937/1 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 e581a60..44569e8 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 @@ -134,62 +134,55 @@ return new DiskImagesValidator(vmDisks).diskImagesNotLocked(); } - @SuppressWarnings("unchecked") - public ValidationResult validateIsoPath(boolean isAutoStartup, Guid storagePoolId, - String diskPath, String floppyPath) { - if (isAutoStartup) { + public ValidationResult validateIsoPath(VM vm, String diskPath, String floppyPath) { + if (vm.isAutoStartup() || (StringUtils.isEmpty(diskPath) && StringUtils.isEmpty(floppyPath))) { return ValidationResult.VALID; } - Guid storageDomainId = getIsoDomainListSyncronizer().findActiveISODomain(storagePoolId); - - if (!StringUtils.isEmpty(diskPath)) { - if (storageDomainId == null) { - return new ValidationResult(VdcBllMessages.VM_CANNOT_RUN_FROM_CD_WITHOUT_ACTIVE_STORAGE_DOMAIN_ISO); - } - boolean retValForIso = false; - VdcQueryReturnValue ret = - getBackend().runInternalQuery(VdcQueryType.GetImagesList, - new GetImagesListParameters(storageDomainId, ImageFileType.ISO)); - if (ret != null && ret.getReturnValue() != null && ret.getSucceeded()) { - List<RepoImage> repoFileNameList = (List<RepoImage>) ret.getReturnValue(); - if (repoFileNameList != null) { - for (RepoImage isoFileMetaData : (List<RepoImage>) ret.getReturnValue()) { - if (isoFileMetaData.getRepoImageId().equals(diskPath)) { - retValForIso = true; - break; - } - } - } - } - if (!retValForIso) { - return new ValidationResult(VdcBllMessages.ERROR_CANNOT_FIND_ISO_IMAGE_PATH); - } + Guid storageDomainId = getIsoDomainListSyncronizer().findActiveISODomain(vm.getStoragePoolId()); + if (storageDomainId == null) { + return new ValidationResult(VdcBllMessages.VM_CANNOT_RUN_FROM_CD_WITHOUT_ACTIVE_STORAGE_DOMAIN_ISO); } - if (!StringUtils.isEmpty(floppyPath)) { - boolean retValForFloppy = false; - VdcQueryReturnValue ret = - getBackend().runInternalQuery(VdcQueryType.GetImagesList, - new GetImagesListParameters(storageDomainId, ImageFileType.Floppy)); - if (ret != null && ret.getReturnValue() != null && ret.getSucceeded()) { - List<RepoImage> repoFileNameList = (List<RepoImage>) ret.getReturnValue(); - if (repoFileNameList != null) { + if (!StringUtils.isEmpty(diskPath) && !isDiskPathImageExists(diskPath, storageDomainId)) { + return new ValidationResult(VdcBllMessages.ERROR_CANNOT_FIND_ISO_IMAGE_PATH); + } - for (RepoImage isoFileMetaData : (List<RepoImage>) ret.getReturnValue()) { - if (isoFileMetaData.getRepoImageId().equals(floppyPath)) { - retValForFloppy = true; - break; - } - } - } - } - if (!retValForFloppy) { - return new ValidationResult(VdcBllMessages.ERROR_CANNOT_FIND_FLOPPY_IMAGE_PATH); - } + if (!StringUtils.isEmpty(floppyPath) && !isFloppyPathImageExists(floppyPath, storageDomainId)) { + return new ValidationResult(VdcBllMessages.ERROR_CANNOT_FIND_FLOPPY_IMAGE_PATH); } return ValidationResult.VALID; + } + + @SuppressWarnings("unchecked") + private boolean isDiskPathImageExists(String diskPath, Guid storageDomainId) { + VdcQueryReturnValue ret = + getBackend().runInternalQuery(VdcQueryType.GetImagesList, + new GetImagesListParameters(storageDomainId, ImageFileType.ISO)); + if (ret != null && ret.getReturnValue() != null && ret.getSucceeded()) { + for (RepoImage isoFileMetaData : (List<RepoImage>) ret.getReturnValue()) { + if (diskPath.equals(isoFileMetaData.getRepoImageId())) { + return true; + } + } + } + return false; + } + + @SuppressWarnings("unchecked") + private boolean isFloppyPathImageExists(String floppyPath, Guid storageDomainId) { + VdcQueryReturnValue ret = + getBackend().runInternalQuery(VdcQueryType.GetImagesList, + new GetImagesListParameters(storageDomainId, ImageFileType.Floppy)); + if (ret != null && ret.getReturnValue() != null && ret.getSucceeded()) { + for (RepoImage isoFileMetaData : (List<RepoImage>) ret.getReturnValue()) { + if (floppyPath.equals(isoFileMetaData.getRepoImageId())) { + return true; + } + } + } + return false; } public ValidationResult vmDuringInitialization(VM vm) { @@ -361,7 +354,7 @@ !validate(getSnapshotValidator().vmNotDuringSnapshot(vm.getId()), messages) || !validate(validateVmStatusUsingMatrix(vm), messages) || !validate(new StoragePoolValidator(storagePool).isUp(), messages) || - !validate(validateIsoPath(vm.isAutoStartup(), vm.getStoragePoolId(), diskPath, floppyPath), messages) || + !validate(validateIsoPath(vm, diskPath, floppyPath), messages) || !validate(vmDuringInitialization(vm), messages) || !validate(validateVdsStatus(vm), messages) || !validate(validateStatelessVm(vm, vmDisks, runAsStateless), messages)) { -- To view, visit http://gerrit.ovirt.org/17937 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7c1734497fdb22093ec507243ef1ae6bc5006220 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