Omer Frenkel has uploaded a new change for review.

Change subject: core: validate storage pool on add vm
......................................................................

core: validate storage pool on add vm

Change-Id: I9ee714ebbfc3addb57a7a6a00ac1f0be3087629a
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1144833
Signed-off-by: Omer Frenkel <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmCommandTest.java
2 files changed, 33 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/66/34166/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
index 9f96d83..c4182ba 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
@@ -448,6 +448,10 @@
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_TEMPLATE_IS_DISABLED);
         }
 
+        if (getStoragePool() == null) {
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_POOL_NOT_EXIST);
+        }
+
         if (!isTemplateInValidDc()) {
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_TEMPLATE_NOT_EXISTS_IN_CURRENT_DC);
         }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmCommandTest.java
index 069dfda..48f178e 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/AddVmCommandTest.java
@@ -48,6 +48,7 @@
 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.StoragePool;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VmDynamic;
@@ -86,6 +87,7 @@
     private static final Guid STORAGE_POOL_ID = Guid.newGuid();
     private VmTemplate vmTemplate = null;
     private VDSGroup vdsGroup = null;
+    private StoragePool storagePool = null;
     protected StorageDomainValidator storageDomainValidator;
 
     private static final Map<String, String> migrationMap = new HashMap<>();
@@ -148,6 +150,7 @@
         mockStorageDomainDaoGetAllStoragesForPool(AVAILABLE_SPACE_GB);
         mockUninterestingMethods(cmd);
         mockGetAllSnapshots(cmd);
+        doReturn(createStoragePool()).when(cmd).getStoragePool();
         assertFalse("If the disk is too big, canDoAction should fail", 
cmd.canDoAction());
         assertTrue("canDoAction failed for the wrong reason",
                 cmd.getReturnValue()
@@ -228,6 +231,7 @@
         doReturn(true).when(cmd).checkCpuSockets();
 
         doReturn(vdsGroup).when(cmd).getVdsGroup();
+        doReturn(createStoragePool()).when(cmd).getStoragePool();
         cmd.getParameters().setVirtioScsiEnabled(true);
         
when(osRepository.getArchitectureFromOS(any(Integer.class))).thenReturn(ArchitectureType.x86_64);
         when(osRepository.getDiskInterfaces(any(Integer.class), 
any(Version.class))).thenReturn(
@@ -299,6 +303,7 @@
         mockUninterestingMethods(cmd);
         mockGetAllSnapshots(cmd);
         
when(osRepository.getArchitectureFromOS(0)).thenReturn(ArchitectureType.x86_64);
+        doReturn(createStoragePool()).when(cmd).getStoragePool();
 
         // prepare the mock values
         HashMap<Pair<Integer, Version>, Set<String>> unsupported = new 
HashMap<>();
@@ -414,6 +419,7 @@
         AddVmCommand<AddVmParameters> cmd = createCommand(vm);
         initCommandMethods(cmd);
         doReturn(createVmTemplate()).when(cmd).getVmTemplate();
+        doReturn(createStoragePool()).when(cmd).getStoragePool();
         return cmd;
     }
 
@@ -504,6 +510,15 @@
 
         return vdsGroup;
     }
+
+    private StoragePool createStoragePool() {
+        if (storagePool == null) {
+            storagePool = new StoragePool();
+            storagePool.setId(STORAGE_POOL_ID);
+        }
+        return storagePool;
+    }
+
 
     private static DiskImage createDiskImageTemplate() {
         DiskImage i = new DiskImage();
@@ -702,4 +717,18 @@
                 .getCanDoActionMessages()
                 
.contains(VdcBllMessages.BALLOON_REQUESTED_ON_NOT_SUPPORTED_ARCH.toString()));
     }
+
+    @Test
+    public void testStoragePoolDoesntExist() {
+        final int domainSizeGB = 20;
+        final int sizeRequired = 5;
+        AddVmCommand<AddVmParameters> cmd = setupCanAddVmTests(domainSizeGB, 
sizeRequired);
+
+        doReturn(null).when(cmd).getStoragePool();
+
+        assertFalse(cmd.canDoAction());
+        assertTrue(cmd.getReturnValue()
+                .getCanDoActionMessages()
+                
.contains(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_POOL_NOT_EXIST.toString()));
+    }
 }


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

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

Reply via email to