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
Sam Wan
5 years ago
| 77 | 77 | self.consistencygroups_adm_client.create_consistencygroup) |
| 78 | 78 | cg = create_consistencygroup(volume_type['id'], |
| 79 | 79 | name=cg_name)['consistencygroup'] |
| 80 | vol_name = data_utils.rand_name("volume") | |
| 81 | params = {'name': vol_name, | |
| 82 | 'volume_type': volume_type['id'], | |
| 83 | 'consistencygroup_id': cg['id'], | |
| 84 | 'size': CONF.volume.volume_size} | |
| 85 | ||
| 86 | # Create volume | |
| 87 | volume = self.admin_volume_client.create_volume(**params)['volume'] | |
| 88 | ||
| 89 | waiters.wait_for_volume_resource_status(self.admin_volume_client, | |
| 90 | volume['id'], 'available') | |
| 91 | self.consistencygroups_adm_client.wait_for_consistencygroup_status( | |
| 92 | cg['id'], 'available') | |
| 93 | self.assertEqual(cg_name, cg['name']) | |
| 80 | self.consistencygroups_adm_client.wait_for_consistencygroup_status( | |
| 81 | cg['id'], 'available') | |
| 82 | self.assertEqual(cg_name, cg['name']) | |
| 83 | ||
| 84 | # Create volume | |
| 85 | vol_name = data_utils.rand_name("volume") | |
| 86 | params = {'name': vol_name, | |
| 87 | 'volume_type': volume_type['id'], | |
| 88 | 'consistencygroup_id': cg['id'], | |
| 89 | 'size': CONF.volume.volume_size} | |
| 90 | ||
| 91 | volume = self.admin_volume_client.create_volume(**params)['volume'] | |
| 92 | waiters.wait_for_volume_resource_status(self.admin_volume_client, | |
| 93 | volume['id'], 'available') | |
| 94 | 94 | |
| 95 | 95 | # Get a given CG |
| 96 | 96 | cg = self.consistencygroups_adm_client.show_consistencygroup( |
| 121 | 121 | self.consistencygroups_adm_client.create_consistencygroup) |
| 122 | 122 | cg = create_consistencygroup(volume_type['id'], |
| 123 | 123 | name=cg_name)['consistencygroup'] |
| 124 | vol_name = data_utils.rand_name("volume") | |
| 125 | params = {'name': vol_name, | |
| 126 | 'volume_type': volume_type['id'], | |
| 127 | 'consistencygroup_id': cg['id'], | |
| 128 | 'size': CONF.volume.volume_size} | |
| 129 | ||
| 130 | # Create volume | |
| 131 | volume = self.admin_volume_client.create_volume(**params)['volume'] | |
| 132 | waiters.wait_for_volume_resource_status(self.admin_volume_client, | |
| 133 | volume['id'], 'available') | |
| 134 | self.consistencygroups_adm_client.wait_for_consistencygroup_status( | |
| 135 | cg['id'], 'available') | |
| 136 | self.assertEqual(cg_name, cg['name']) | |
| 124 | self.consistencygroups_adm_client.wait_for_consistencygroup_status( | |
| 125 | cg['id'], 'available') | |
| 126 | self.assertEqual(cg_name, cg['name']) | |
| 127 | ||
| 128 | # Create volume | |
| 129 | vol_name = data_utils.rand_name("volume") | |
| 130 | params = {'name': vol_name, | |
| 131 | 'volume_type': volume_type['id'], | |
| 132 | 'consistencygroup_id': cg['id'], | |
| 133 | 'size': CONF.volume.volume_size} | |
| 134 | volume = self.admin_volume_client.create_volume(**params)['volume'] | |
| 135 | waiters.wait_for_volume_resource_status(self.admin_volume_client, | |
| 136 | volume['id'], 'available') | |
| 137 | 137 | |
| 138 | 138 | # Create cgsnapshot |
| 139 | 139 | cgsnapshot_name = data_utils.rand_name('cgsnapshot') |
| 141 | 141 | self.consistencygroups_adm_client.create_cgsnapshot) |
| 142 | 142 | cgsnapshot = create_cgsnapshot(cg['id'], |
| 143 | 143 | name=cgsnapshot_name)['cgsnapshot'] |
| 144 | self.consistencygroups_adm_client.wait_for_cgsnapshot_status( | |
| 145 | cgsnapshot['id'], 'available') | |
| 146 | self.assertEqual(cgsnapshot_name, cgsnapshot['name']) | |
| 144 | 147 | snapshots = self.os_admin.snapshots_v2_client.list_snapshots( |
| 145 | 148 | detail=True)['snapshots'] |
| 146 | 149 | for snap in snapshots: |
| 148 | 151 | waiters.wait_for_volume_resource_status( |
| 149 | 152 | self.os_admin.snapshots_v2_client, |
| 150 | 153 | snap['id'], 'available') |
| 151 | self.consistencygroups_adm_client.wait_for_cgsnapshot_status( | |
| 152 | cgsnapshot['id'], 'available') | |
| 153 | self.assertEqual(cgsnapshot_name, cgsnapshot['name']) | |
| 154 | 154 | |
| 155 | 155 | # Get a given CG snapshot |
| 156 | 156 | cgsnapshot = self.consistencygroups_adm_client.show_cgsnapshot( |
| 181 | 181 | self.consistencygroups_adm_client.create_consistencygroup) |
| 182 | 182 | cg = create_consistencygroup(volume_type['id'], |
| 183 | 183 | name=cg_name)['consistencygroup'] |
| 184 | vol_name = data_utils.rand_name("volume") | |
| 185 | params = {'name': vol_name, | |
| 186 | 'volume_type': volume_type['id'], | |
| 187 | 'consistencygroup_id': cg['id'], | |
| 188 | 'size': CONF.volume.volume_size} | |
| 189 | ||
| 190 | # Create volume | |
| 191 | volume = self.admin_volume_client.create_volume(**params)['volume'] | |
| 192 | waiters.wait_for_volume_resource_status(self.admin_volume_client, | |
| 193 | volume['id'], 'available') | |
| 194 | self.consistencygroups_adm_client.wait_for_consistencygroup_status( | |
| 195 | cg['id'], 'available') | |
| 196 | self.assertEqual(cg_name, cg['name']) | |
| 184 | self.consistencygroups_adm_client.wait_for_consistencygroup_status( | |
| 185 | cg['id'], 'available') | |
| 186 | self.assertEqual(cg_name, cg['name']) | |
| 187 | ||
| 188 | # Create volume | |
| 189 | vol_name = data_utils.rand_name("volume") | |
| 190 | params = {'name': vol_name, | |
| 191 | 'volume_type': volume_type['id'], | |
| 192 | 'consistencygroup_id': cg['id'], | |
| 193 | 'size': CONF.volume.volume_size} | |
| 194 | volume = self.admin_volume_client.create_volume(**params)['volume'] | |
| 195 | waiters.wait_for_volume_resource_status(self.admin_volume_client, | |
| 196 | volume['id'], 'available') | |
| 197 | 197 | |
| 198 | 198 | # Create cgsnapshot |
| 199 | 199 | cgsnapshot_name = data_utils.rand_name('cgsnapshot') |
| 201 | 201 | self.consistencygroups_adm_client.create_cgsnapshot) |
| 202 | 202 | cgsnapshot = create_cgsnapshot(cg['id'], |
| 203 | 203 | name=cgsnapshot_name)['cgsnapshot'] |
| 204 | self.consistencygroups_adm_client.wait_for_cgsnapshot_status( | |
| 205 | cgsnapshot['id'], 'available') | |
| 206 | self.assertEqual(cgsnapshot_name, cgsnapshot['name']) | |
| 204 | 207 | snapshots = self.snapshots_client.list_snapshots( |
| 205 | 208 | detail=True)['snapshots'] |
| 206 | 209 | for snap in snapshots: |
| 207 | 210 | if volume['id'] == snap['volume_id']: |
| 208 | 211 | waiters.wait_for_volume_resource_status( |
| 209 | 212 | self.os_admin.snapshots_v2_client, snap['id'], 'available') |
| 210 | self.consistencygroups_adm_client.wait_for_cgsnapshot_status( | |
| 211 | cgsnapshot['id'], 'available') | |
| 212 | self.assertEqual(cgsnapshot_name, cgsnapshot['name']) | |
| 213 | 213 | |
| 214 | 214 | # Create CG from CG snapshot |
| 215 | 215 | cg_name2 = data_utils.rand_name('CG_from_snap') |
| 217 | 217 | self.consistencygroups_adm_client.create_consistencygroup_from_src) |
| 218 | 218 | cg2 = create_consistencygroup2(cgsnapshot_id=cgsnapshot['id'], |
| 219 | 219 | name=cg_name2)['consistencygroup'] |
| 220 | self.consistencygroups_adm_client.wait_for_consistencygroup_status( | |
| 221 | cg2['id'], 'available') | |
| 222 | self.assertEqual(cg_name2, cg2['name']) | |
| 220 | 223 | vols = self.admin_volume_client.list_volumes( |
| 221 | 224 | detail=True)['volumes'] |
| 222 | 225 | for vol in vols: |
| 223 | 226 | if vol['consistencygroup_id'] == cg2['id']: |
| 224 | 227 | waiters.wait_for_volume_resource_status( |
| 225 | 228 | self.admin_volume_client, vol['id'], 'available') |
| 226 | self.consistencygroups_adm_client.wait_for_consistencygroup_status( | |
| 227 | cg2['id'], 'available') | |
| 228 | self.assertEqual(cg_name2, cg2['name']) | |
| 229 | 229 | |
| 230 | 230 | # Clean up |
| 231 | 231 | self._delete_consistencygroup(cg2['id']) |
| 246 | 246 | self.consistencygroups_adm_client.create_consistencygroup) |
| 247 | 247 | cg = create_consistencygroup(volume_type['id'], |
| 248 | 248 | name=cg_name)['consistencygroup'] |
| 249 | vol_name = data_utils.rand_name("volume") | |
| 250 | params = {'name': vol_name, | |
| 251 | 'volume_type': volume_type['id'], | |
| 252 | 'consistencygroup_id': cg['id'], | |
| 253 | 'size': CONF.volume.volume_size} | |
| 254 | ||
| 255 | # Create volume | |
| 256 | volume = self.admin_volume_client.create_volume(**params)['volume'] | |
| 257 | waiters.wait_for_volume_resource_status(self.admin_volume_client, | |
| 258 | volume['id'], 'available') | |
| 259 | self.consistencygroups_adm_client.wait_for_consistencygroup_status( | |
| 260 | cg['id'], 'available') | |
| 261 | self.assertEqual(cg_name, cg['name']) | |
| 249 | self.consistencygroups_adm_client.wait_for_consistencygroup_status( | |
| 250 | cg['id'], 'available') | |
| 251 | self.assertEqual(cg_name, cg['name']) | |
| 252 | ||
| 253 | # Create volume | |
| 254 | vol_name = data_utils.rand_name("volume") | |
| 255 | params = {'name': vol_name, | |
| 256 | 'volume_type': volume_type['id'], | |
| 257 | 'consistencygroup_id': cg['id'], | |
| 258 | 'size': CONF.volume.volume_size} | |
| 259 | volume = self.admin_volume_client.create_volume(**params)['volume'] | |
| 260 | waiters.wait_for_volume_resource_status(self.admin_volume_client, | |
| 261 | volume['id'], 'available') | |
| 262 | 262 | |
| 263 | 263 | # Create CG from CG |
| 264 | 264 | cg_name2 = data_utils.rand_name('CG_from_cg') |
| 266 | 266 | self.consistencygroups_adm_client.create_consistencygroup_from_src) |
| 267 | 267 | cg2 = create_consistencygroup2(source_cgid=cg['id'], |
| 268 | 268 | name=cg_name2)['consistencygroup'] |
| 269 | self.consistencygroups_adm_client.wait_for_consistencygroup_status( | |
| 270 | cg2['id'], 'available') | |
| 271 | self.assertEqual(cg_name2, cg2['name']) | |
| 269 | 272 | vols = self.admin_volume_client.list_volumes( |
| 270 | 273 | detail=True)['volumes'] |
| 271 | 274 | for vol in vols: |
| 272 | 275 | if vol['consistencygroup_id'] == cg2['id']: |
| 273 | 276 | waiters.wait_for_volume_resource_status( |
| 274 | 277 | self.admin_volume_client, vol['id'], 'available') |
| 275 | self.consistencygroups_adm_client.wait_for_consistencygroup_status( | |
| 276 | cg2['id'], 'available') | |
| 277 | self.assertEqual(cg_name2, cg2['name']) | |
| 278 | 278 | |
| 279 | 279 | # Clean up |
| 280 | 280 | self._delete_consistencygroup(cg2['id']) |