Allon Mureinik has uploaded a new change for review.

Change subject: mapping games
......................................................................

mapping games

<core | restapi | tools | history | engine | userportal | webadmin>: short 
summary under 50 chars

Longer description using lines' length under 72 chars.

With multiple paragraphs if necessary.

Change-Id: Ifd25f1e51fbafd7b4f7194ba886a17bac02af8c2
Bug-Url: https://bugzilla.redhat.com/??????
Signed-off-by: Allon Mureinik <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
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/RemoveSnapshotCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TryBackToAllSnapshotsOfVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/MultipleStorageDomainsValidator.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveSnapshotCommandTest.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/MultipleStorageDomainsValidatorTest.java
12 files changed, 102 insertions(+), 26 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/36/12136/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
index ec548c2..ece1a37 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java
@@ -16,6 +16,7 @@
 import org.ovirt.engine.core.bll.storage.StoragePoolValidator;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.bll.utils.VmDeviceUtils;
+import org.ovirt.engine.core.bll.validator.MultipleStorageDomainsValidator;
 import org.ovirt.engine.core.bll.validator.StorageDomainValidator;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
@@ -25,6 +26,7 @@
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
 import org.ovirt.engine.core.common.businessentities.VMStatus;
@@ -33,7 +35,6 @@
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.VmTemplateStatus;
 import org.ovirt.engine.core.common.businessentities.permissions;
-import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
 import org.ovirt.engine.core.common.errors.VdcBLLException;
@@ -202,6 +203,12 @@
             return false;
         }
 
+        MultipleStorageDomainsValidator storageDomainsValidator =
+                new MultipleStorageDomainsValidator(getStoragePoolId(), 
sourceImageDomainsImageMap.keySet());
+        if (!validate(storageDomainsValidator.allDomainsExistAndActive())) {
+            return false;
+        }
+
         for (Guid srcStorageDomainId : sourceImageDomainsImageMap.keySet()) {
             boolean checkIsValid = true;
             if (!ImagesHandler.PerformImagesChecks(
@@ -212,7 +219,7 @@
                     true,
                     true,
                     true,
-                    true,
+                    false,
                     checkIsValid,
                     sourceImageDomainsImageMap.get(srcStorageDomainId))) {
                 return false;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
index 50741c5..0b30402 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java
@@ -13,6 +13,7 @@
 import org.ovirt.engine.core.bll.snapshots.SnapshotsManager;
 import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator;
 import org.ovirt.engine.core.bll.storage.StoragePoolValidator;
+import org.ovirt.engine.core.bll.validator.MultipleStorageDomainsValidator;
 import org.ovirt.engine.core.bll.validator.VmValidator;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
@@ -287,6 +288,9 @@
         if (result && disksList.size() > 0) {
             StoragePoolValidator spValidator = new 
StoragePoolValidator(getStoragePool());
             SnapshotsValidator snapshotValidator = new SnapshotsValidator();
+            MultipleStorageDomainsValidator sdValidator =
+                    new 
MultipleStorageDomainsValidator(getVm().getStoragePoolId(),
+                            
ImagesHandler.getAllStorageIdsForImageIds(disksList));
             result = validate(spValidator.isUp())
                     && 
validate(snapshotValidator.vmNotDuringSnapshot(getVmId()))
                     && validate(snapshotValidator.vmNotInPreview(getVmId()))
@@ -297,14 +301,16 @@
                             getReturnValue().getCanDoActionMessages(),
                             getVm().getStoragePoolId(),
                             Guid.Empty,
+                            false,
                             true,
                             true,
                             true,
-                            true,
-                            true,
+                            false,
                             true,
                             disksList)
-                    && validate(vmValidator.vmNotLocked());
+                    && validate(vmValidator.vmNotLocked())
+                    && validate(sdValidator.allDomainsExistAndActive())
+                    && validate(sdValidator.allDomainsWithinThresholds());
         }
 
         return result;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
index 99f271b..6fde7b4 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmCommand.java
@@ -13,6 +13,7 @@
 import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator;
 import org.ovirt.engine.core.bll.storage.StoragePoolValidator;
 import org.ovirt.engine.core.bll.utils.VmDeviceUtils;
+import org.ovirt.engine.core.bll.validator.MultipleStorageDomainsValidator;
 import org.ovirt.engine.core.bll.validator.StorageDomainValidator;
 import org.ovirt.engine.core.bll.validator.VmValidator;
 import org.ovirt.engine.core.common.AuditLogType;
@@ -27,12 +28,12 @@
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.Snapshot;
 import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
 import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMapId;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.VolumeFormat;
-import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
 import org.ovirt.engine.core.common.errors.VdcBLLException;
 import org.ovirt.engine.core.common.queries.DiskImageList;
@@ -157,6 +158,8 @@
                 && validate(snapshotValidator.vmNotDuringSnapshot(getVmId()))
                 && validate(snapshotValidator.vmNotInPreview(getVmId()))
                 && validate(new VmValidator(getVm()).vmDown())
+                && validate(new 
MultipleStorageDomainsValidator(getVm().getStoragePoolId(),
+                        
ImagesHandler.getAllStorageIdsForImageIds(getDisksBasedOnImage())).allDomainsExistAndActive())
                 && ImagesHandler.PerformImagesChecks(
                         getReturnValue().getCanDoActionMessages(),
                         getVm().getStoragePoolId(),
@@ -165,7 +168,7 @@
                         true,
                         false,
                         false,
-                        true,
+                        false,
                         true,
                         getDisksBasedOnImage()))) {
             return false;
@@ -174,6 +177,7 @@
         return true;
     }
 
+    @Override
     protected boolean doesStorageDomainhaveSpaceForRequest(StorageDomain 
storageDomain, long sizeRequested) {
         return validate(new 
StorageDomainValidator(storageDomain).isDomainHasSpaceForRequest(sizeRequested));
     }
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 4c38b49..1cb00af4 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
@@ -23,6 +23,7 @@
 import org.ovirt.engine.core.common.businessentities.ImageStatus;
 import org.ovirt.engine.core.common.businessentities.LUNs;
 import org.ovirt.engine.core.common.businessentities.LunDisk;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 import org.ovirt.engine.core.common.businessentities.StorageServerConnections;
 import org.ovirt.engine.core.common.businessentities.StorageType;
@@ -32,7 +33,6 @@
 import org.ovirt.engine.core.common.businessentities.VolumeFormat;
 import org.ovirt.engine.core.common.businessentities.VolumeType;
 import org.ovirt.engine.core.common.businessentities.image_storage_domain_map;
-import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.errors.VdcBLLException;
 import org.ovirt.engine.core.common.errors.VdcBllErrors;
 import org.ovirt.engine.core.common.utils.ListUtils;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
index 81395b9..ef8d3de 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveSnapshotCommand.java
@@ -4,6 +4,7 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.job.ExecutionHandler;
@@ -12,6 +13,7 @@
 import org.ovirt.engine.core.bll.quota.QuotaStorageDependent;
 import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator;
 import org.ovirt.engine.core.bll.storage.StoragePoolValidator;
+import org.ovirt.engine.core.bll.validator.MultipleStorageDomainsValidator;
 import org.ovirt.engine.core.bll.validator.VmValidator;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
@@ -19,6 +21,7 @@
 import org.ovirt.engine.core.common.action.RemoveSnapshotParameters;
 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.Snapshot;
 import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotStatus;
@@ -172,10 +175,17 @@
         }
 
         if (hasImages()) {
+            List<Disk> vmDisks = getDiskDao().getAllForVm(getVmId());
+            List<DiskImage> vmImages = ImagesHandler.filterImageDisks(vmDisks, 
true, false);
+
             // Check the VM's images
-            if (!validateImages()) {
+            if (!validateImages(vmImages)) {
                 return false;
             }
+
+            Set<Guid> storageIds = 
ImagesHandler.getAllStorageIdsForImageIds(vmImages);
+            MultipleStorageDomainsValidator storageValidator =
+                    new MultipleStorageDomainsValidator(getStoragePoolId(), 
storageIds);
 
             // check that we are not deleting the template
             if (!validateImageNotInTemplate()) {
@@ -209,10 +219,10 @@
         return validate(createSnapshotValidator().snapshotExists(getVmId(), 
getParameters().getSnapshotId()));
     }
 
-    protected boolean validateImages() {
+    protected boolean validateImages(List<DiskImage> imagesToCheck) {
         return 
ImagesHandler.PerformImagesChecks(getReturnValue().getCanDoActionMessages(),
                 getVm().getStoragePoolId(), Guid.Empty,
-                true, true, true, true, true, true, imagesToCheck);
+                true /* SHOULD CHECK!!! */, true, true, true, true/* SHOULD 
CHECK!!! */, true, imagesToCheck);
     }
 
     protected boolean validateImageNotInTemplate() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
index 3ef7b00..a17499d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveVmCommand.java
@@ -160,7 +160,7 @@
                 !getParameters().getForce(),
                 false,
                 false,
-                !getVm().getDiskMap().values().isEmpty(),
+                !getVm().getDiskMap().values().isEmpty(), // SHOULD CHECK!!!
                 true,
                 getVm().getDiskMap().values())) {
             return false;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
index 28a832a..7f4bc06 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestoreAllSnapshotsCommand.java
@@ -332,11 +332,11 @@
                 (getReturnValue().getCanDoActionMessages(),
                         getVm().getStoragePoolId(),
                         Guid.Empty,
-                        true,
+                        true,// SHOULD CHECK!!!
                         true,
                         false,
                         false,
-                        true,
+                        true,// SHOULD CHECK!!!
                         true,
                         getImagesList());
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TryBackToAllSnapshotsOfVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TryBackToAllSnapshotsOfVmCommand.java
index de7073b..34ba62c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TryBackToAllSnapshotsOfVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/TryBackToAllSnapshotsOfVmCommand.java
@@ -220,11 +220,11 @@
                                     getReturnValue().getCanDoActionMessages(),
                                     getVm().getStoragePoolId(),
                                     Guid.Empty,
-                                    true,
+                            true,// SHOULD CHECK!!!
                                     true,
                                     false,
                                     false,
-                                    true,
+                            true,// SHOULD CHECK!!!
                                     true,
                                     diskImages)) {
               return false;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java
index d853b76..0e76ea2 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmRunHandler.java
@@ -20,6 +20,7 @@
 import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.RepoFileMetaData;
+import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
 import org.ovirt.engine.core.common.businessentities.VDS;
@@ -27,7 +28,6 @@
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VMStatus;
 import org.ovirt.engine.core.common.businessentities.VmDevice;
-import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.storage_pool;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
@@ -247,9 +247,9 @@
     protected boolean performImageChecksForRunningVm
             (VM vm, List<String> message, RunVmParams runParams, List<Disk> 
vmDisks) {
         return ImagesHandler.PerformImagesChecks(message,
-                vm.getStoragePoolId(), Guid.Empty, !vm.isAutoStartup(),
+                vm.getStoragePoolId(), Guid.Empty, !vm.isAutoStartup() /* 
SHOULD CHECK!!!*/,
                 true, false, false,
-                !vm.isAutoStartup() || !runParams.getIsInternal() && 
vm.isAutoStartup(),
+                !vm.isAutoStartup() || !runParams.getIsInternal() && 
vm.isAutoStartup(), // SHOULD CHECK!!!
                 !vm.isAutoStartup() || !runParams.getIsInternal() && 
vm.isAutoStartup(),
                 vmDisks);
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/MultipleStorageDomainsValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/MultipleStorageDomainsValidator.java
index 6444542..fd7b226 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/MultipleStorageDomainsValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/MultipleStorageDomainsValidator.java
@@ -6,6 +6,7 @@
 
 import org.ovirt.engine.core.bll.ValidationResult;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.compat.NGuid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dao.StorageDomainDAO;
 
@@ -21,6 +22,9 @@
  */
 public class MultipleStorageDomainsValidator {
 
+    /** The ID of the storage pool all the domains belong to */
+    private NGuid spId;
+
     /** A map from the ids of each domain being validated to its validator */
     private Map<Guid, StorageDomainValidator> domainValidators;
 
@@ -28,7 +32,8 @@
      * Constructor from Guids
      * @param sdIds A {@link Collection} of storage domain IDs to be validated
      */
-    public MultipleStorageDomainsValidator(Collection<Guid> sdIds) {
+    public MultipleStorageDomainsValidator(NGuid spId, Collection<Guid> sdIds) 
{
+        this.spId = spId;
         domainValidators = new HashMap<Guid, 
StorageDomainValidator>(sdIds.size());
         for (Guid id : sdIds) {
             domainValidators.put(id, null);
@@ -48,10 +53,23 @@
         });
     }
 
+    /**
+     * Validates that all the domains are withing free disk space threshold.
+     * @return {@link ValidationResult#VALID} if all the domains are OK, or a 
{@link ValidationResult} with the first low space domain encountered.
+     */
+    public ValidationResult allDomainsWithinThresholds() {
+        return validOrFirstFailure(new ValidatorPredicate() {
+            @Override
+            public ValidationResult evaluate(StorageDomainValidator validator) 
{
+                return validator.isDomainWithinThresholds();
+            }
+        });
+    }
+
     /** @return The lazy-loaded validator for the given map entry */
     private StorageDomainValidator getStorageDomainValidator(Map.Entry<Guid, 
StorageDomainValidator> entry) {
         if (entry.getValue() == null) {
-            entry.setValue(new 
StorageDomainValidator(getStorageDomainDAO().get(entry.getKey())));
+            entry.setValue(new 
StorageDomainValidator(getStorageDomainDAO().getForStoragePool(entry.getKey(), 
spId)));
         }
 
         return entry.getValue();
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveSnapshotCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveSnapshotCommandTest.java
index c65da56..30395aa 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveSnapshotCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveSnapshotCommandTest.java
@@ -8,6 +8,7 @@
 import static org.mockito.Mockito.when;
 
 import java.util.Collections;
+import java.util.List;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -100,7 +101,7 @@
         
doReturn(ValidationResult.VALID).when(snapshotValidator).vmNotDuringSnapshot(any(Guid.class));
         
doReturn(ValidationResult.VALID).when(snapshotValidator).vmNotInPreview(any(Guid.class));
         
doReturn(ValidationResult.VALID).when(snapshotValidator).snapshotExists(any(Guid.class),
 any(Guid.class));
-        doReturn(true).when(cmd).validateImages();
+        doReturn(true).when(cmd).validateImages(any(List.class));
         doReturn(vm).when(cmd).getVm();
         doReturn(sp).when(spDao).get(spId);
         doReturn(Collections.emptyList()).when(cmd).getSourceImages();
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/MultipleStorageDomainsValidatorTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/MultipleStorageDomainsValidatorTest.java
index 350ad2e..2f551f7 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/MultipleStorageDomainsValidatorTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/MultipleStorageDomainsValidatorTest.java
@@ -6,10 +6,12 @@
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
+import static org.ovirt.engine.core.utils.MockConfigRule.mockConfig;
 
 import java.util.Arrays;
 
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -17,15 +19,23 @@
 import org.ovirt.engine.core.bll.ValidationResult;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
+import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
 import org.ovirt.engine.core.dao.StorageDomainDAO;
+import org.ovirt.engine.core.utils.MockConfigRule;
 
 /** A test class for the {@link MultipleStorageDomainsValidator} class. */
 @RunWith(MockitoJUnitRunner.class)
 public class MultipleStorageDomainsValidatorTest {
+
+    @ClassRule
+    public static MockConfigRule mcr = new 
MockConfigRule(mockConfig(ConfigValues.FreeSpaceCriticalLowInGB, 10));
+
     @Mock
     private StorageDomainDAO dao;
+
+    private Guid spId;
 
     private Guid sdId1;
     private Guid sdId2;
@@ -37,6 +47,8 @@
 
     @Before
     public void setUp() {
+        spId = Guid.NewGuid();
+
         sdId1 = Guid.NewGuid();
         sdId2 = Guid.NewGuid();
 
@@ -46,10 +58,10 @@
         domain2 = new StorageDomain();
         domain2.setId(sdId2);
 
-        when(dao.get(sdId1)).thenReturn(domain1);
-        when(dao.get(sdId2)).thenReturn(domain2);
+        when(dao.getForStoragePool(sdId1, spId)).thenReturn(domain1);
+        when(dao.getForStoragePool(sdId2, spId)).thenReturn(domain2);
 
-        validator = spy(new 
MultipleStorageDomainsValidator(Arrays.asList(sdId1, sdId2)));
+        validator = spy(new MultipleStorageDomainsValidator(spId, 
Arrays.asList(sdId1, sdId2)));
         doReturn(dao).when(validator).getStorageDomainDAO();
     }
 
@@ -65,9 +77,27 @@
         domain1.setStatus(StorageDomainStatus.Active);
         domain2.setStatus(StorageDomainStatus.InActive);
         ValidationResult result = validator.allDomainsExistAndActive();
-        assertFalse("Both domains should be active", result.isValid());
+        assertFalse("Both domains should not be active", result.isValid());
         assertEquals("Wrong validation error",
                 
VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_STATUS_ILLEGAL,
                 result.getMessage());
     }
+
+    @Test
+    public void testAllDomainsWithinThresholdAllOk() {
+        domain1.getStorageDynamicData().setAvailableDiskSize(15);
+        domain2.getStorageDynamicData().setAvailableDiskSize(15);
+        assertTrue("Both domains should be withing space threshold", 
validator.allDomainsWithinThresholds().isValid());
+    }
+
+    @Test
+    public void testAllDomainsWithinThresholdsOneLacking() {
+        domain1.getStorageDynamicData().setAvailableDiskSize(15);
+        domain2.getStorageDynamicData().setAvailableDiskSize(7);
+        ValidationResult result = validator.allDomainsWithinThresholds();
+        assertFalse("Both domains should not be withing thresholds", 
result.isValid());
+        assertEquals("Wrong validation error",
+                
VdcBllMessages.ACTION_TYPE_FAILED_DISK_SPACE_LOW_ON_TARGET_STORAGE_DOMAIN,
+                result.getMessage());
+    }
 }


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

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

Reply via email to