Wait for CG to be available before creating volume in the CG

The test cases should wait for CG to be available first before moving to
create volume in the CG.

Change-Id: Iac0aefff7a2277e1d3a36d8943e285a226a6830f
Closes-Bug: #1897532
diff --git a/cinder_tempest_plugin/api/volume/admin/test_consistencygroups.py b/cinder_tempest_plugin/api/volume/admin/test_consistencygroups.py
index 15d19dc..7dff494 100644
--- a/cinder_tempest_plugin/api/volume/admin/test_consistencygroups.py
+++ b/cinder_tempest_plugin/api/volume/admin/test_consistencygroups.py
@@ -78,20 +78,20 @@
             self.consistencygroups_adm_client.create_consistencygroup)
         cg = create_consistencygroup(volume_type['id'],
                                      name=cg_name)['consistencygroup']
+        self.consistencygroups_adm_client.wait_for_consistencygroup_status(
+            cg['id'], 'available')
+        self.assertEqual(cg_name, cg['name'])
+
+        # Create volume
         vol_name = data_utils.rand_name("volume")
         params = {'name': vol_name,
                   'volume_type': volume_type['id'],
                   'consistencygroup_id': cg['id'],
                   'size': CONF.volume.volume_size}
 
-        # Create volume
         volume = self.admin_volume_client.create_volume(**params)['volume']
-
         waiters.wait_for_volume_resource_status(self.admin_volume_client,
                                                 volume['id'], 'available')
-        self.consistencygroups_adm_client.wait_for_consistencygroup_status(
-            cg['id'], 'available')
-        self.assertEqual(cg_name, cg['name'])
 
         # Get a given CG
         cg = self.consistencygroups_adm_client.show_consistencygroup(
@@ -122,19 +122,19 @@
             self.consistencygroups_adm_client.create_consistencygroup)
         cg = create_consistencygroup(volume_type['id'],
                                      name=cg_name)['consistencygroup']
+        self.consistencygroups_adm_client.wait_for_consistencygroup_status(
+            cg['id'], 'available')
+        self.assertEqual(cg_name, cg['name'])
+
+        # Create volume
         vol_name = data_utils.rand_name("volume")
         params = {'name': vol_name,
                   'volume_type': volume_type['id'],
                   'consistencygroup_id': cg['id'],
                   'size': CONF.volume.volume_size}
-
-        # Create volume
         volume = self.admin_volume_client.create_volume(**params)['volume']
         waiters.wait_for_volume_resource_status(self.admin_volume_client,
                                                 volume['id'], 'available')
-        self.consistencygroups_adm_client.wait_for_consistencygroup_status(
-            cg['id'], 'available')
-        self.assertEqual(cg_name, cg['name'])
 
         # Create cgsnapshot
         cgsnapshot_name = data_utils.rand_name('cgsnapshot')
@@ -142,6 +142,9 @@
             self.consistencygroups_adm_client.create_cgsnapshot)
         cgsnapshot = create_cgsnapshot(cg['id'],
                                        name=cgsnapshot_name)['cgsnapshot']
+        self.consistencygroups_adm_client.wait_for_cgsnapshot_status(
+            cgsnapshot['id'], 'available')
+        self.assertEqual(cgsnapshot_name, cgsnapshot['name'])
         snapshots = self.os_admin.snapshots_v2_client.list_snapshots(
             detail=True)['snapshots']
         for snap in snapshots:
@@ -149,9 +152,6 @@
                 waiters.wait_for_volume_resource_status(
                     self.os_admin.snapshots_v2_client,
                     snap['id'], 'available')
-        self.consistencygroups_adm_client.wait_for_cgsnapshot_status(
-            cgsnapshot['id'], 'available')
-        self.assertEqual(cgsnapshot_name, cgsnapshot['name'])
 
         # Get a given CG snapshot
         cgsnapshot = self.consistencygroups_adm_client.show_cgsnapshot(
@@ -182,19 +182,19 @@
             self.consistencygroups_adm_client.create_consistencygroup)
         cg = create_consistencygroup(volume_type['id'],
                                      name=cg_name)['consistencygroup']
+        self.consistencygroups_adm_client.wait_for_consistencygroup_status(
+            cg['id'], 'available')
+        self.assertEqual(cg_name, cg['name'])
+
+        # Create volume
         vol_name = data_utils.rand_name("volume")
         params = {'name': vol_name,
                   'volume_type': volume_type['id'],
                   'consistencygroup_id': cg['id'],
                   'size': CONF.volume.volume_size}
-
-        # Create volume
         volume = self.admin_volume_client.create_volume(**params)['volume']
         waiters.wait_for_volume_resource_status(self.admin_volume_client,
                                                 volume['id'], 'available')
-        self.consistencygroups_adm_client.wait_for_consistencygroup_status(
-            cg['id'], 'available')
-        self.assertEqual(cg_name, cg['name'])
 
         # Create cgsnapshot
         cgsnapshot_name = data_utils.rand_name('cgsnapshot')
@@ -202,15 +202,15 @@
             self.consistencygroups_adm_client.create_cgsnapshot)
         cgsnapshot = create_cgsnapshot(cg['id'],
                                        name=cgsnapshot_name)['cgsnapshot']
+        self.consistencygroups_adm_client.wait_for_cgsnapshot_status(
+            cgsnapshot['id'], 'available')
+        self.assertEqual(cgsnapshot_name, cgsnapshot['name'])
         snapshots = self.snapshots_client.list_snapshots(
             detail=True)['snapshots']
         for snap in snapshots:
             if volume['id'] == snap['volume_id']:
                 waiters.wait_for_volume_resource_status(
                     self.os_admin.snapshots_v2_client, snap['id'], 'available')
-        self.consistencygroups_adm_client.wait_for_cgsnapshot_status(
-            cgsnapshot['id'], 'available')
-        self.assertEqual(cgsnapshot_name, cgsnapshot['name'])
 
         # Create CG from CG snapshot
         cg_name2 = data_utils.rand_name('CG_from_snap')
@@ -218,15 +218,15 @@
             self.consistencygroups_adm_client.create_consistencygroup_from_src)
         cg2 = create_consistencygroup2(cgsnapshot_id=cgsnapshot['id'],
                                        name=cg_name2)['consistencygroup']
+        self.consistencygroups_adm_client.wait_for_consistencygroup_status(
+            cg2['id'], 'available')
+        self.assertEqual(cg_name2, cg2['name'])
         vols = self.admin_volume_client.list_volumes(
             detail=True)['volumes']
         for vol in vols:
             if vol['consistencygroup_id'] == cg2['id']:
                 waiters.wait_for_volume_resource_status(
                     self.admin_volume_client, vol['id'], 'available')
-        self.consistencygroups_adm_client.wait_for_consistencygroup_status(
-            cg2['id'], 'available')
-        self.assertEqual(cg_name2, cg2['name'])
 
         # Clean up
         self._delete_consistencygroup(cg2['id'])
@@ -247,19 +247,19 @@
             self.consistencygroups_adm_client.create_consistencygroup)
         cg = create_consistencygroup(volume_type['id'],
                                      name=cg_name)['consistencygroup']
+        self.consistencygroups_adm_client.wait_for_consistencygroup_status(
+            cg['id'], 'available')
+        self.assertEqual(cg_name, cg['name'])
+
+        # Create volume
         vol_name = data_utils.rand_name("volume")
         params = {'name': vol_name,
                   'volume_type': volume_type['id'],
                   'consistencygroup_id': cg['id'],
                   'size': CONF.volume.volume_size}
-
-        # Create volume
         volume = self.admin_volume_client.create_volume(**params)['volume']
         waiters.wait_for_volume_resource_status(self.admin_volume_client,
                                                 volume['id'], 'available')
-        self.consistencygroups_adm_client.wait_for_consistencygroup_status(
-            cg['id'], 'available')
-        self.assertEqual(cg_name, cg['name'])
 
         # Create CG from CG
         cg_name2 = data_utils.rand_name('CG_from_cg')
@@ -267,15 +267,15 @@
             self.consistencygroups_adm_client.create_consistencygroup_from_src)
         cg2 = create_consistencygroup2(source_cgid=cg['id'],
                                        name=cg_name2)['consistencygroup']
+        self.consistencygroups_adm_client.wait_for_consistencygroup_status(
+            cg2['id'], 'available')
+        self.assertEqual(cg_name2, cg2['name'])
         vols = self.admin_volume_client.list_volumes(
             detail=True)['volumes']
         for vol in vols:
             if vol['consistencygroup_id'] == cg2['id']:
                 waiters.wait_for_volume_resource_status(
                     self.admin_volume_client, vol['id'], 'available')
-        self.consistencygroups_adm_client.wait_for_consistencygroup_status(
-            cg2['id'], 'available')
-        self.assertEqual(cg_name2, cg2['name'])
 
         # Clean up
         self._delete_consistencygroup(cg2['id'])