From 8f321d8b4a7681e6176030bd0b21a25c22a3d3d2 Mon Sep 17 00:00:00 2001 From: lkuchlan Date: Tue, 6 Sep 2016 10:06:30 +0300 Subject: [PATCH] Move wait_for_backup_status function to common.waiters Currently, wait_for_backup_status function resides on services/volume/base/base_backups_client.py. I think we should move it to common.waiters module as other waiters functions. Partially implements blueprint consistent-service-method-names Change-Id: Ie1d416e32c583d8e48140c4046df989cc209b84f --- .../api/volume/admin/test_volumes_backup.py | 20 ++++++++-------- tempest/api/volume/test_volumes_backup.py | 12 +++++----- tempest/common/waiters.py | 21 +++++++++++++++++ .../volume/base/base_backups_client.py | 23 ------------------- 4 files changed, 37 insertions(+), 39 deletions(-) diff --git a/tempest/api/volume/admin/test_volumes_backup.py b/tempest/api/volume/admin/test_volumes_backup.py index a26052c4be..73f1f8f66b 100755 --- a/tempest/api/volume/admin/test_volumes_backup.py +++ b/tempest/api/volume/admin/test_volumes_backup.py @@ -68,8 +68,8 @@ class VolumesBackupsAdminV2Test(base.BaseVolumeAdminTest): volume_id=self.volume['id'], name=backup_name)['backup']) self.addCleanup(self._delete_backup, backup['id']) self.assertEqual(backup_name, backup['name']) - self.admin_backups_client.wait_for_backup_status(backup['id'], - 'available') + waiters.wait_for_backup_status(self.admin_backups_client, + backup['id'], 'available') # Export Backup export_backup = (self.admin_backups_client.export_backup(backup['id']) @@ -101,8 +101,8 @@ class VolumesBackupsAdminV2Test(base.BaseVolumeAdminTest): self.addCleanup(self._delete_backup, new_id) self.assertIn("id", import_backup) self.assertEqual(new_id, import_backup['id']) - self.admin_backups_client.wait_for_backup_status(import_backup['id'], - 'available') + waiters.wait_for_backup_status(self.admin_backups_client, + import_backup['id'], 'available') # Verify Import Backup backups = self.admin_backups_client.list_backups( @@ -121,8 +121,8 @@ class VolumesBackupsAdminV2Test(base.BaseVolumeAdminTest): # Verify if restored volume is there in volume list volumes = self.admin_volume_client.list_volumes()['volumes'] self.assertIn(restore['volume_id'], [v['id'] for v in volumes]) - self.admin_backups_client.wait_for_backup_status(import_backup['id'], - 'available') + waiters.wait_for_backup_status(self.admin_backups_client, + import_backup['id'], 'available') @test.idempotent_id('47a35425-a891-4e13-961c-c45deea21e94') def test_volume_backup_reset_status(self): @@ -134,13 +134,13 @@ class VolumesBackupsAdminV2Test(base.BaseVolumeAdminTest): self.addCleanup(self.admin_backups_client.delete_backup, backup['id']) self.assertEqual(backup_name, backup['name']) - self.admin_backups_client.wait_for_backup_status(backup['id'], - 'available') + waiters.wait_for_backup_status(self.admin_backups_client, + backup['id'], 'available') # Reset backup status to error self.admin_backups_client.reset_backup_status(backup_id=backup['id'], status="error") - self.admin_backups_client.wait_for_backup_status(backup['id'], - 'error') + waiters.wait_for_backup_status(self.admin_backups_client, + backup['id'], 'error') class VolumesBackupsAdminV1Test(VolumesBackupsAdminV2Test): diff --git a/tempest/api/volume/test_volumes_backup.py b/tempest/api/volume/test_volumes_backup.py index 86076b7bec..867e520cf3 100755 --- a/tempest/api/volume/test_volumes_backup.py +++ b/tempest/api/volume/test_volumes_backup.py @@ -46,8 +46,8 @@ class VolumesBackupsV2Test(base.BaseVolumeTest): self.assertEqual(backup_name, backup['name']) waiters.wait_for_volume_status(self.volumes_client, volume['id'], 'available') - self.backups_client.wait_for_backup_status(backup['id'], - 'available') + waiters.wait_for_backup_status(self.backups_client, + backup['id'], 'available') # Get a given backup backup = self.backups_client.show_backup(backup['id'])['backup'] @@ -67,8 +67,8 @@ class VolumesBackupsV2Test(base.BaseVolumeTest): self.addCleanup(self.volumes_client.delete_volume, restore['volume_id']) self.assertEqual(backup['id'], restore['backup_id']) - self.backups_client.wait_for_backup_status(backup['id'], - 'available') + waiters.wait_for_backup_status(self.backups_client, + backup['id'], 'available') waiters.wait_for_volume_status(self.volumes_client, restore['volume_id'], 'available') @@ -103,8 +103,8 @@ class VolumesBackupsV2Test(base.BaseVolumeTest): volume_id=volume['id'], name=backup_name, force=True)['backup'] self.addCleanup(self.backups_client.delete_backup, backup['id']) - self.backups_client.wait_for_backup_status(backup['id'], - 'available') + waiters.wait_for_backup_status(self.backups_client, + backup['id'], 'available') self.assertEqual(backup_name, backup['name']) diff --git a/tempest/common/waiters.py b/tempest/common/waiters.py index 9d307ee5d9..57769b9eaf 100644 --- a/tempest/common/waiters.py +++ b/tempest/common/waiters.py @@ -210,6 +210,27 @@ def wait_for_snapshot_status(client, snapshot_id, status): raise exceptions.TimeoutException(message) +def wait_for_backup_status(client, backup_id, status): + """Waits for a Backup to reach a given status.""" + body = client.show_backup(backup_id)['backup'] + backup_status = body['status'] + start = int(time.time()) + + while backup_status != status: + time.sleep(client.build_interval) + body = client.show_backup(backup_id)['backup'] + backup_status = body['status'] + if backup_status == 'error' and backup_status != status: + raise exceptions.VolumeBackupException(backup_id=backup_id) + + if int(time.time()) - start >= client.build_timeout: + message = ('Volume backup %s failed to reach %s status ' + '(current %s) within the required time (%s s).' % + (backup_id, status, backup_status, + client.build_timeout)) + raise exceptions.TimeoutException(message) + + def wait_for_bm_node_status(client, node_id, attr, status): """Waits for a baremetal node attribute to reach given status. diff --git a/tempest/services/volume/base/base_backups_client.py b/tempest/services/volume/base/base_backups_client.py index a57e628066..1b35febf16 100644 --- a/tempest/services/volume/base/base_backups_client.py +++ b/tempest/services/volume/base/base_backups_client.py @@ -13,11 +13,8 @@ # License for the specific language governing permissions and limitations # under the License. -import time - from oslo_serialization import jsonutils as json -from tempest import exceptions from tempest.lib.common import rest_client from tempest.lib import exceptions as lib_exc @@ -96,26 +93,6 @@ class BaseBackupsClient(rest_client.RestClient): self.expected_success(202, resp.status) return rest_client.ResponseBody(resp, body) - def wait_for_backup_status(self, backup_id, status): - """Waits for a Backup to reach a given status.""" - body = self.show_backup(backup_id)['backup'] - backup_status = body['status'] - start = int(time.time()) - - while backup_status != status: - time.sleep(self.build_interval) - body = self.show_backup(backup_id)['backup'] - backup_status = body['status'] - if backup_status == 'error' and backup_status != status: - raise exceptions.VolumeBackupException(backup_id=backup_id) - - if int(time.time()) - start >= self.build_timeout: - message = ('Volume backup %s failed to reach %s status ' - '(current %s) within the required time (%s s).' % - (backup_id, status, backup_status, - self.build_timeout)) - raise exceptions.TimeoutException(message) - def is_resource_deleted(self, id): try: self.show_backup(id)