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

Reply via email to