Maor Lipchuk has uploaded a new change for review.

Change subject: core: Validate MSD when importing a VM from configuration
......................................................................

core: Validate MSD when importing a VM from configuration

Using validation for active storage domain on all the Storage Domains
which the images are based on.

Change-Id: I067b6186c2a2b7d77394e9cb0a4e8f023c168e4b
Signed-off-by: Maor Lipchuk <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyTemplateCommand.java
3 files changed, 34 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/38/28538/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
index cb53fa2..a2bc666 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java
@@ -247,11 +247,12 @@
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_IMPORT_UNREGISTERED_NOT_COLLAPSED);
         }
 
-        setSourceDomainId(getParameters().getSourceDomainId());
-        StorageDomainValidator validator = new 
StorageDomainValidator(getSourceDomain());
-        if (validator.isDomainExistAndActive().isValid() && 
!isImagesAlreadyOnTarget()
-                && getSourceDomain().getStorageDomainType() != 
StorageDomainType.ImportExport) {
-            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_ILLEGAL);
+        if (!isImagesAlreadyOnTarget()) {
+            setSourceDomainId(getParameters().getSourceDomainId());
+            StorageDomainValidator validator = new 
StorageDomainValidator(getSourceDomain());
+            if (validator.isDomainExistAndActive().isValid() && 
getSourceDomain().getStorageDomainType() != StorageDomainType.ImportExport) {
+                return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_ILLEGAL);
+            }
         }
 
         List<VM> vms = getVmsFromExportDomain();
@@ -309,7 +310,7 @@
                 // work properly.
                 // we fix it to DestDomainId in
                 // MoveOrCopyAllImageGroups();
-                image.setStorageIds(new 
ArrayList<Guid>(Arrays.asList(getParameters().getSourceDomainId())));
+                image.setStorageIds(new 
ArrayList<Guid>(Arrays.asList(getSourceDomainId(image))));
             }
 
             Map<Guid, List<DiskImage>> images = 
ImagesHandler.getImagesLeaf(getVm().getImages());
@@ -620,12 +621,16 @@
         return true;
     }
 
+    protected Guid getSourceDomainId(DiskImage image) {
+        return getParameters().getSourceDomainId();
+    }
+
     protected boolean checkImagesGUIDsLegal() {
         for (DiskImage image : getVm().getImages()) {
             Guid imageGUID = image.getImageId();
             Guid storagePoolId = image.getStoragePoolId() != null ? 
image.getStoragePoolId()
                     : Guid.Empty;
-            Guid storageDomainId = getParameters().getSourceDomainId();
+            Guid storageDomainId = getSourceDomainId(image);
             Guid imageGroupId = image.getId() != null ? image.getId() : 
Guid.Empty;
 
             VDSReturnValue retValue = Backend
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
index 67010ea..a1e2b8b 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmFromConfigurationCommand.java
@@ -12,6 +12,7 @@
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
 import org.ovirt.engine.core.common.businessentities.Disk;
+import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.OvfEntityData;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.compat.Guid;
@@ -127,4 +128,18 @@
         return AuditLogType.VM_IMPORT_FROM_CONFIGURATION_EXECUTED_SUCCESSFULLY;
     }
 
+    protected Guid getSourceDomainId(DiskImage image) {
+        return image.getStorageIds().get(0);
+    }
+
+    protected void ensureDomainMap(Collection<DiskImage> images, Guid 
defaultDomainId) {
+        super.ensureDomainMap(images, defaultDomainId);
+        if (isImagesAlreadyOnTarget()) {
+            for (DiskImage image : images) {
+                imageToDestinationDomainMap.put(image.getId(), 
image.getStorageIds().get(0));
+            }
+        }
+    }
+
+
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyTemplateCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyTemplateCommand.java
index dcad577..cd3823e 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyTemplateCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MoveOrCopyTemplateCommand.java
@@ -157,10 +157,14 @@
             
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_OVF_CONFIGURATION_NOT_SUPPORTED);
             return false;
         }
-        setStorageDomainId(ovfEntityData.getStorageDomainId());
-        if (!validate(new 
StorageDomainValidator(getStorageDomain()).isDomainExistAndActive())) {
-            return false;
+
+        for (DiskImage image : getVm().getImages()) {
+            setStorageDomainId(image.getStorageIds().get(0));
+            if (!validate(new 
StorageDomainValidator(getStorageDomain()).isDomainExistAndActive())) {
+                return false;
+            }
         }
+
         setImagesWithStoragePoolId(getStorageDomain().getStoragePoolId(), 
getVm().getImages());
         if (!getStorageDomain().getStorageDomainType().isDataDomain()) {
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_TYPE_UNSUPPORTED,


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I067b6186c2a2b7d77394e9cb0a4e8f023c168e4b
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Maor Lipchuk <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to