From a96bc13a25480f223dafc3adc4a4b5d93c8aa37a Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Mon, 14 Feb 2022 13:16:09 +0530 Subject: [PATCH 1/4] [marvin, VMware] Fix test_06_disk_offering_strictness_false observed on 'main' branch --- .../smoke/test_service_offerings.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/integration/smoke/test_service_offerings.py b/test/integration/smoke/test_service_offerings.py index 1f171913b474..93edde8e06a4 100644 --- a/test/integration/smoke/test_service_offerings.py +++ b/test/integration/smoke/test_service_offerings.py @@ -25,8 +25,10 @@ cleanup_resources, random_gen) from marvin.lib.base import (ServiceOffering, + Configurations, DiskOffering, Account, + StoragePool, VirtualMachine) from marvin.lib.common import (list_service_offering, list_virtual_machines, @@ -716,6 +718,8 @@ def test_06_disk_offering_strictness_false(self): if self.hypervisor.lower() == "lxc": self.skipTest("Skipping this test for {} due to bug CS-38153".format(self.hypervisor)) + self.updateVmwareSettings(False) + offering_data = { 'displaytext': 'TestDiskOfferingStrictnessFalse', 'cpuspeed': 512, @@ -811,8 +815,27 @@ def test_06_disk_offering_strictness_false(self): "Check service offering of the VM" ) + self.updateVmwareSettings(True) + return + def updateVmwareSettings(self, tearDown): + value = "false" + if not tearDown: + value = "true" + if self.hypervisor.lower() == 'vmware': + Configurations.update(self.apiclient, + "vmware.create.full.clone", + value) + allStoragePools = StoragePool.list( + self.apiclient + ) + for pool in allStoragePools: + Configurations.update(self.apiclient, + storageid=pool.id, + name="vmware.create.full.clone", + value=value) + class TestCpuCapServiceOfferings(cloudstackTestCase): def setUp(self): From 73fb70788f0fcd005322bc9d401cb1b5763627b9 Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Mon, 14 Feb 2022 17:57:29 +0530 Subject: [PATCH 2/4] Fix test --- .../main/java/com/cloud/server/ManagementServerImpl.java | 3 ++- .../main/java/com/cloud/storage/VolumeApiServiceImpl.java | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java b/server/src/main/java/com/cloud/server/ManagementServerImpl.java index 2780a0dd7a37..6731bed8102b 100644 --- a/server/src/main/java/com/cloud/server/ManagementServerImpl.java +++ b/server/src/main/java/com/cloud/server/ManagementServerImpl.java @@ -27,6 +27,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.TimeZone; @@ -1685,7 +1686,7 @@ private List findAllSuitableStoragePoolsForVm(final VolumeVO volume DiskOfferingVO diskOffering = _diskOfferingDao.findById(diskOfferingId); DiskProfile diskProfile = new DiskProfile(volume, diskOffering, hypervisorType); - if (volume.getDiskOfferingId() != diskOfferingId) { + if (!Objects.equals(volume.getDiskOfferingId(), diskOfferingId)) { diskProfile.setSize(newSize); diskProfile.setMinIops(newMinIops); diskProfile.setMaxIops(newMaxIops); diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java index e42ea4349c08..04ba9b5b2013 100644 --- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java @@ -1697,10 +1697,10 @@ private Volume changeDiskOfferingForVolumeInternal(VolumeVO volume, Long newDisk boolean volumeResizeRequired = false; // VALIDATIONS - Long updateNewSize[] = {newSize}; - Long updateNewMinIops[] = {newMinIops}; - Long updateNewMaxIops[] = {newMaxIops}; - Integer updateNewHypervisorSnapshotReserve[] = {newHypervisorSnapshotReserve}; + Long[] updateNewSize = {newSize}; + Long[] updateNewMinIops = {newMinIops}; + Long[] updateNewMaxIops = {newMaxIops}; + Integer[] updateNewHypervisorSnapshotReserve = {newHypervisorSnapshotReserve}; validateVolumeResizeWithNewDiskOfferingAndLoad(volume, existingDiskOffering, newDiskOffering, updateNewSize, updateNewMinIops, updateNewMaxIops, updateNewHypervisorSnapshotReserve); newSize = updateNewSize[0]; newMinIops = updateNewMinIops[0]; From 3ad83165ddc91aff777c10a33eef690504774f28 Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Tue, 15 Feb 2022 12:21:38 +0530 Subject: [PATCH 3/4] update config only if false --- test/integration/smoke/test_service_offerings.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/test/integration/smoke/test_service_offerings.py b/test/integration/smoke/test_service_offerings.py index 93edde8e06a4..fc05299b2d4f 100644 --- a/test/integration/smoke/test_service_offerings.py +++ b/test/integration/smoke/test_service_offerings.py @@ -717,8 +717,10 @@ def test_06_disk_offering_strictness_false(self): if self.hypervisor.lower() == "lxc": self.skipTest("Skipping this test for {} due to bug CS-38153".format(self.hypervisor)) - - self.updateVmwareSettings(False) + fullClone = Configurations.list(self.apiclient, name="vmware.create.full.clone") + assert isinstance(fullClone, list), "Config list not retrieved for vmware.create.full.clone" + if fullClone[0].value.lower() == "false": + self.updateVmwareSettings(False) offering_data = { 'displaytext': 'TestDiskOfferingStrictnessFalse', @@ -815,7 +817,8 @@ def test_06_disk_offering_strictness_false(self): "Check service offering of the VM" ) - self.updateVmwareSettings(True) + if fullClone[0].value.lower() == "false": + self.updateVmwareSettings(True) return From 71e7b0110151e0a9aa63cf7534712cb497418269 Mon Sep 17 00:00:00 2001 From: Pearl Dsilva Date: Tue, 15 Feb 2022 17:02:05 +0530 Subject: [PATCH 4/4] reset full clone setting to original values --- .../smoke/test_service_offerings.py | 39 +++++++++++++------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/test/integration/smoke/test_service_offerings.py b/test/integration/smoke/test_service_offerings.py index fc05299b2d4f..f266616a601c 100644 --- a/test/integration/smoke/test_service_offerings.py +++ b/test/integration/smoke/test_service_offerings.py @@ -717,10 +717,16 @@ def test_06_disk_offering_strictness_false(self): if self.hypervisor.lower() == "lxc": self.skipTest("Skipping this test for {} due to bug CS-38153".format(self.hypervisor)) - fullClone = Configurations.list(self.apiclient, name="vmware.create.full.clone") - assert isinstance(fullClone, list), "Config list not retrieved for vmware.create.full.clone" - if fullClone[0].value.lower() == "false": - self.updateVmwareSettings(False) + self.storeCloneValues = {} + if self.hypervisor.lower() == "vmware": + self.fullClone = Configurations.list(self.apiclient, name="vmware.create.full.clone") + assert isinstance(self.fullClone, list), "Config list not retrieved for vmware.create.full.clone" + allStoragePools = StoragePool.list( + self.apiclient + ) + for pool in allStoragePools: + self.storeCloneValues[pool.id] = Configurations.list(self.apiclient, name="vmware.create.full.clone", storageid=pool.id)[0].value.lower() + self.updateVmwareCreateFullCloneSetting(False) offering_data = { 'displaytext': 'TestDiskOfferingStrictnessFalse', @@ -817,19 +823,28 @@ def test_06_disk_offering_strictness_false(self): "Check service offering of the VM" ) - if fullClone[0].value.lower() == "false": - self.updateVmwareSettings(True) + if self.hypervisor.lower() == "vmware": + self.updateVmwareCreateFullCloneSetting(True) return - def updateVmwareSettings(self, tearDown): - value = "false" + def updateVmwareCreateFullCloneSetting(self, tearDown): if not tearDown: - value = "true" - if self.hypervisor.lower() == 'vmware': Configurations.update(self.apiclient, "vmware.create.full.clone", - value) + "true") + allStoragePools = StoragePool.list( + self.apiclient + ) + for pool in allStoragePools: + Configurations.update(self.apiclient, + storageid=pool.id, + name="vmware.create.full.clone", + value="true") + else: + Configurations.update(self.apiclient, + "vmware.create.full.clone", + self.fullClone[0].value.lower()) allStoragePools = StoragePool.list( self.apiclient ) @@ -837,7 +852,7 @@ def updateVmwareSettings(self, tearDown): Configurations.update(self.apiclient, storageid=pool.id, name="vmware.create.full.clone", - value=value) + value=self.storeCloneValues[pool.id]) class TestCpuCapServiceOfferings(cloudstackTestCase):