diff --git a/server/src/main/java/com/cloud/server/ManagementServerImpl.java b/server/src/main/java/com/cloud/server/ManagementServerImpl.java index 7c900a7e62e..4082b52b2f8 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.HashMap; 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 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe 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 3bee5df955d..bad3806e892 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 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic 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]; diff --git a/test/integration/smoke/test_service_offerings.py b/test/integration/smoke/test_service_offerings.py index 1f171913b47..f266616a601 100644 --- a/test/integration/smoke/test_service_offerings.py +++ b/test/integration/smoke/test_service_offerings.py @@ -25,8 +25,10 @@ from marvin.lib.utils import (isAlmostEqual, 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, @@ -715,6 +717,16 @@ class TestServiceOfferings(cloudstackTestCase): if self.hypervisor.lower() == "lxc": self.skipTest("Skipping this test for {} due to bug CS-38153".format(self.hypervisor)) + 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', @@ -811,8 +823,37 @@ class TestServiceOfferings(cloudstackTestCase): "Check service offering of the VM" ) + if self.hypervisor.lower() == "vmware": + self.updateVmwareCreateFullCloneSetting(True) + return + def updateVmwareCreateFullCloneSetting(self, tearDown): + if not tearDown: + Configurations.update(self.apiclient, + "vmware.create.full.clone", + "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 + ) + for pool in allStoragePools: + Configurations.update(self.apiclient, + storageid=pool.id, + name="vmware.create.full.clone", + value=self.storeCloneValues[pool.id]) + class TestCpuCapServiceOfferings(cloudstackTestCase): def setUp(self):