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
