Moti Asayag has uploaded a new change for review.

Change subject: engine: Ensure vm disks are set at initialization
......................................................................

engine: Ensure vm disks are set at initialization

Ensures the disks and their target destination are
set before the command is instantiated.

Change-Id: I60273d948086465e637d6eec34445468b7acc0a7
Signed-off-by: Moti Asayag <masa...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommandTest.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommandTestAbstract.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVmPoolWithVmsCommandTest.java
4 files changed, 24 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/47/38347/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java
index a59ce4d..66aa914 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java
@@ -7,6 +7,7 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.commons.collections.MapUtils;
 import org.ovirt.engine.core.bll.context.CommandContext;
 import org.ovirt.engine.core.bll.job.ExecutionContext;
 import org.ovirt.engine.core.bll.job.ExecutionHandler;
@@ -100,11 +101,7 @@
 
         setVmTemplateId(templateIdToUse);
         initTemplate();
-        diskInfoDestinationMap = getParameters().getDiskInfoDestinationMap();
-        if (diskInfoDestinationMap == null) {
-            diskInfoDestinationMap = new HashMap<>();
-        }
-
+        ensureDestinationImageMap();
 
         nameForVmInPoolGenerator = new 
NameForVmInPoolGenerator(getParameters().getVmPool().getName());
     }
@@ -280,11 +277,13 @@
             return false;
         }
 
-        if (!ensureDestinationImageMap()) {
+        if (getVmTemplate().getDiskTemplateMap().values().size() != 
diskInfoDestinationMap.size()) {
+            log.error("Can not found any default active domain for one of the 
disks of template with id '{}'",
+                    getVmTemplate().getId());
+            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_MISSED_STORAGES_FOR_SOME_DISKS);
             return false;
         }
-        storageToDisksMap = 
ImagesHandler.buildStorageToDiskMap(getVmTemplate().getDiskTemplateMap().values(),
-                diskInfoDestinationMap);
+
         List<Guid> storageIds = new ArrayList<Guid>();
         for (DiskImage diskImage : diskInfoDestinationMap.values()) {
             Guid storageId = diskImage.getStorageIds().get(0);
@@ -340,12 +339,17 @@
                 storageToDisksMap.get(storageId));
     }
 
-    private boolean ensureDestinationImageMap() {
-        if (diskInfoDestinationMap.isEmpty()) {
-            if (getParameters().getStorageDomainId() != null
-                    && 
!Guid.Empty.equals(getParameters().getStorageDomainId())) {
+    private void ensureDestinationImageMap() {
+        if (MapUtils.isEmpty(getParameters().getDiskInfoDestinationMap())) {
+            diskInfoDestinationMap = new HashMap<>();
+
+            if (getVmTemplate() == null) {
+                return;
+            }
+
+            if (!Guid.isNullOrEmpty(getParameters().getStorageDomainId())) {
                 Guid storageId = getParameters().getStorageDomainId();
-                ArrayList<Guid> storageIds = new ArrayList<Guid>();
+                ArrayList<Guid> storageIds = new ArrayList<>();
                 storageIds.add(storageId);
                 for (DiskImage image : 
getVmTemplate().getDiskTemplateMap().values()) {
                     image.setStorageIds(storageIds);
@@ -356,14 +360,13 @@
                         diskInfoDestinationMap,
                         destStorages);
             }
+        } else {
+            diskInfoDestinationMap = 
getParameters().getDiskInfoDestinationMap();
         }
-        if (getVmTemplate().getDiskTemplateMap().values().size() != 
diskInfoDestinationMap.size()) {
-            log.error("Can not found any default active domain for one of the 
disks of template with id '{}'",
-                    getVmTemplate().getId());
-            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_MISSED_STORAGES_FOR_SOME_DISKS);
-            return false;
-        }
-        return true;
+
+        storageToDisksMap =
+                
ImagesHandler.buildStorageToDiskMap(getVmTemplate().getDiskTemplateMap().values(),
+                        diskInfoDestinationMap);
     }
 
     public boolean checkDestDomains() {
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommandTest.java
index d894e92..d0121a9 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmPoolWithVmsCommandTest.java
@@ -28,7 +28,6 @@
                 // do nothing - is done here and not with mockito since it's 
called in the ctor
             }
         });
-        command.postConstruct();
         return command;
     }
 
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommandTestAbstract.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommandTestAbstract.java
index 6224a43..9216dc6 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommandTestAbstract.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommandTestAbstract.java
@@ -170,6 +170,7 @@
         setUpCommand();
         mockVds();
         mockDbDAO();
+        command.postConstruct();
     }
 
     protected void setUpCommand() {
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVmPoolWithVmsCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVmPoolWithVmsCommandTest.java
index 29b11cc..7f17b64 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVmPoolWithVmsCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVmPoolWithVmsCommandTest.java
@@ -21,7 +21,6 @@
                 // do nothing - is done here and not with mockito since it's 
called in the ctor
             }
         });
-        command.postConstruct();
         return command;
     }
 


-- 
To view, visit https://gerrit.ovirt.org/38347
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I60273d948086465e637d6eec34445468b7acc0a7
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Moti Asayag <masa...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to