Vered Volansky has uploaded a new change for review.

Change subject: core: [WIP] ImportVm storageAllocations
......................................................................

core: [WIP] ImportVm storageAllocations

Change-Id: Ifbb1d985f9afa476452d1d2b78be1fd18c128c8f
Bug-Url: https://bugzilla.redhat.com/1053746
Signed-off-by: Vered Volansky <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
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/MoveOrCopyTemplateCommand.java
3 files changed, 31 insertions(+), 16 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/58/32258/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
index a3026da..6719636 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
@@ -816,4 +816,11 @@
         }
         return snapshot;
     }
+
+    public static DiskImage createDummyDiskImage(DiskImage diskImage, Guid 
sdId) {
+        DiskImage dummy = DiskImage.copyOf(diskImage);
+        dummy.setStorageIds(new 
ArrayList<Guid>(Collections.singletonList(sdId)));
+        
dummy.getSnapshots().addAll(ImagesHandler.getAllImageSnapshots(dummy.getImageId()));
+        return dummy;
+    }
 }
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 a8b28cf..ecb31db 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
@@ -418,19 +418,8 @@
         }
 
         if (!isImagesAlreadyOnTarget()) {
-
-            //This gets a map of sizes with the DESTINATION(!) domain
-            Map<StorageDomain, Integer> domainMap = 
getSpaceRequirementsForStorageDomains(imageList);
-
-            //Here storage domain for memory volumes is set and stored in the 
snapshot
-            if (!updateDomainsForMemoryImages()) {
+            if (!handleDestStorageDomains()) {
                 return false;
-            }
-
-            for (Map.Entry<StorageDomain, Integer> entry : 
domainMap.entrySet()) {
-                if (!doesStorageDomainhaveSpaceForRequest(entry.getKey(), 
entry.getValue())) {
-                    return false;
-                }
             }
         }
 
@@ -461,13 +450,22 @@
         return true;
     }
 
+    protected boolean handleDestStorageDomains() {
+        List<DiskImage> dummiesDisksList = new ArrayList<>();
+        if (!updateDomainsForMemoryImages(dummiesDisksList)) {
+            return false;
+        }
+        createDiskDummiesForSpaceValidations(imageList, dummiesDisksList);
+        return validateSpaceRequirements(dummiesDisksList);
+    }
+
     /**
      * For each snapshot that has memory volume, this method updates the 
memory volume with
      * the storage pool and storage domain it's going to be imported to.
      *
      * @return true if we managed to assign storage domain for every memory 
volume, false otherwise
      */
-    private boolean updateDomainsForMemoryImages() {
+    private boolean updateDomainsForMemoryImages(List<DiskImage> disksList) {
         Map<String, String> handledMemoryVolumes = new HashMap<String, 
String>();
         for (Snapshot snapshot : getVm().getSnapshots()) {
             String memoryVolume = snapshot.getMemoryVolume();
@@ -481,7 +479,7 @@
                 continue;
             }
 
-            StorageDomain storageDomain = 
getStorageDomainForMemoryVolumes(snapshot);
+            StorageDomain storageDomain = 
updateStorageDomainForMemoryVolumes(snapshot, disksList);
             if (storageDomain == null) {
                 return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_NO_SUITABLE_DOMAIN_FOUND);
             }
@@ -495,10 +493,12 @@
         return true;
     }
 
-    private StorageDomain getStorageDomainForMemoryVolumes(Snapshot snapshot) {
+    private StorageDomain updateStorageDomainForMemoryVolumes(Snapshot 
snapshot, List<DiskImage> disksList) {
         VM vm = getVmFromSnapshot(snapshot);
         List<DiskImage> memoryDisksList = 
MemoryUtils.createDiskDummies(vm.getTotalMemorySizeInBytes(), 
MemoryUtils.META_DATA_SIZE_IN_BYTES);
-        return 
VmHandler.findStorageDomainForMemory(getParameters().getStoragePoolId(), 
memoryDisksList);
+        StorageDomain storageDomain = 
VmHandler.findStorageDomainForMemory(getParameters().getStoragePoolId(), 
memoryDisksList);
+        disksList.addAll(memoryDisksList);
+        return storageDomain;
     }
 
     /**
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 f13841e..865af8a 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
@@ -356,6 +356,14 @@
         return 
StorageDomainValidator.getSpaceRequirementsForStorageDomains(spaceMap);
     }
 
+    protected void createDiskDummiesForSpaceValidations(List<DiskImage> 
disksList, List<DiskImage> dummies) {
+        for (DiskImage image : disksList) {
+            Guid targetSdId = imageToDestinationDomainMap.get(image.getId());
+            DiskImage dummy = ImagesHandler.createDummyDiskImage(image, 
targetSdId);
+            dummies.add(dummy);
+        }
+    }
+
     protected boolean validateSpaceRequirements(List<DiskImage> disksList) {
         MultipleStorageDomainsValidator sdValidator = 
createMultipleStorageDomainsValidator(disksList);
         return validate(sdValidator.allDomainsExistAndActive())


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

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

Reply via email to