This is an automated email from the ASF dual-hosted git repository.

nvazquez pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/main by this push:
     new ee947e1  [marvin, VMware] Fix repeated test failures observed on 
'main' branch (#5992)
ee947e1 is described below

commit ee947e13100b4878233f45d68b84cb2c8226c4d4
Author: Pearl Dsilva <[email protected]>
AuthorDate: Wed Feb 16 22:16:03 2022 +0530

    [marvin, VMware] Fix repeated test failures observed on 'main' branch 
(#5992)
    
    * [marvin, VMware] Fix test_06_disk_offering_strictness_false observed on 
'main' branch
    
    * Fix test
    
    * update config only if false
    
    * reset full clone setting to original values
---
 .../com/cloud/server/ManagementServerImpl.java     |  3 +-
 .../com/cloud/storage/VolumeApiServiceImpl.java    |  8 ++---
 test/integration/smoke/test_service_offerings.py   | 41 ++++++++++++++++++++++
 3 files changed, 47 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 7c900a7..4082b52 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 3bee5df..bad3806 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 1f17191..f266616 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):

Reply via email to