From 213ff35355a9de30aa15cebfa2b724b2f6a67dca Mon Sep 17 00:00:00 2001 From: Anton Sidelnikov Date: Fri, 4 Dec 2020 18:47:00 +0000 Subject: [PATCH] Drop swift check for volume backup Skipped object-store check, because Cinder also supporting other drivers not related to swift Change-Id: I7349b0bf37b3d296f59f4ee3547dd98a142e1ec7 --- openstack/block_storage/v2/_proxy.py | 21 ------ openstack/block_storage/v3/_proxy.py | 65 ++++++------------- .../tests/unit/block_storage/v2/test_proxy.py | 14 ---- .../tests/unit/block_storage/v3/test_proxy.py | 14 ---- 4 files changed, 19 insertions(+), 95 deletions(-) diff --git a/openstack/block_storage/v2/_proxy.py b/openstack/block_storage/v2/_proxy.py index 653366d2a..fb2eb0ded 100644 --- a/openstack/block_storage/v2/_proxy.py +++ b/openstack/block_storage/v2/_proxy.py @@ -16,7 +16,6 @@ from openstack.block_storage.v2 import snapshot as _snapshot from openstack.block_storage.v2 import stats as _stats from openstack.block_storage.v2 import type as _type from openstack.block_storage.v2 import volume as _volume -from openstack import exceptions from openstack import resource @@ -231,10 +230,6 @@ class Proxy(_base_proxy.BaseBlockStorageProxy): :returns: A generator of backup objects. """ - if not self._connection.has_service('object-store'): - raise exceptions.SDKException( - 'Object-store service is required for block-store backups' - ) base_path = '/backups/detail' if details else None return self._list(_backup.Backup, base_path=base_path, **query) @@ -248,10 +243,6 @@ class Proxy(_base_proxy.BaseBlockStorageProxy): :returns: Backup instance :rtype: :class:`~openstack.block_storage.v2.backup.Backup` """ - if not self._connection.has_service('object-store'): - raise exceptions.SDKException( - 'Object-store service is required for block-store backups' - ) return self._get(_backup.Backup, backup) def create_backup(self, **attrs): @@ -264,10 +255,6 @@ class Proxy(_base_proxy.BaseBlockStorageProxy): :returns: The results of Backup creation :rtype: :class:`~openstack.block_storage.v2.backup.Backup` """ - if not self._connection.has_service('object-store'): - raise exceptions.SDKException( - 'Object-store service is required for block-store backups' - ) return self._create(_backup.Backup, **attrs) def delete_backup(self, backup, ignore_missing=True): @@ -283,10 +270,6 @@ class Proxy(_base_proxy.BaseBlockStorageProxy): :returns: ``None`` """ - if not self._connection.has_service('object-store'): - raise exceptions.SDKException( - 'Object-store service is required for block-store backups' - ) self._delete(_backup.Backup, backup, ignore_missing=ignore_missing) @@ -301,10 +284,6 @@ class Proxy(_base_proxy.BaseBlockStorageProxy): :returns: Updated backup instance :rtype: :class:`~openstack.block_storage.v2.backup.Backup` """ - if not self._connection.has_service('object-store'): - raise exceptions.SDKException( - 'Object-store service is required for block-store backups' - ) backup = self._get_resource(_backup.Backup, backup) return backup.restore(self, volume_id=volume_id, name=name) diff --git a/openstack/block_storage/v3/_proxy.py b/openstack/block_storage/v3/_proxy.py index 6314329a7..5714bcbdb 100644 --- a/openstack/block_storage/v3/_proxy.py +++ b/openstack/block_storage/v3/_proxy.py @@ -290,10 +290,6 @@ class Proxy(_base_proxy.BaseBlockStorageProxy): :returns: A generator of backup objects. """ - if not self._connection.has_service('object-store'): - raise exceptions.SDKException( - 'Object-store service is required for block-store backups' - ) base_path = '/backups/detail' if details else None return self._list(_backup.Backup, base_path=base_path, **query) @@ -307,10 +303,6 @@ class Proxy(_base_proxy.BaseBlockStorageProxy): :returns: Backup instance :rtype: :class:`~openstack.block_storage.v3.backup.Backup` """ - if not self._connection.has_service('object-store'): - raise exceptions.SDKException( - 'Object-store service is required for block-store backups' - ) return self._get(_backup.Backup, backup) def find_backup(self, name_or_id, ignore_missing=True, **attrs): @@ -325,10 +317,6 @@ class Proxy(_base_proxy.BaseBlockStorageProxy): :raises: :class:`~openstack.exceptions.ResourceNotFound` when no resource can be found. """ - if not self._connection.has_service('object-store'): - raise exceptions.SDKException( - 'Object-store service is required for block-store backups' - ) return self._find(_backup.Backup, name_or_id, ignore_missing=ignore_missing) @@ -342,10 +330,6 @@ class Proxy(_base_proxy.BaseBlockStorageProxy): :returns: The results of Backup creation :rtype: :class:`~openstack.block_storage.v3.backup.Backup` """ - if not self._connection.has_service('object-store'): - raise exceptions.SDKException( - 'Object-store service is required for block-store backups' - ) return self._create(_backup.Backup, **attrs) def delete_backup(self, backup, ignore_missing=True): @@ -361,10 +345,6 @@ class Proxy(_base_proxy.BaseBlockStorageProxy): :returns: ``None`` """ - if not self._connection.has_service('object-store'): - raise exceptions.SDKException( - 'Object-store service is required for block-store backups' - ) self._delete(_backup.Backup, backup, ignore_missing=ignore_missing) @@ -379,10 +359,6 @@ class Proxy(_base_proxy.BaseBlockStorageProxy): :returns: Updated backup instance :rtype: :class:`~openstack.block_storage.v3.backup.Backup` """ - if not self._connection.has_service('object-store'): - raise exceptions.SDKException( - 'Object-store service is required for block-store backups' - ) backup = self._get_resource(_backup.Backup, backup) return backup.restore(self, volume_id=volume_id, name=name) @@ -437,29 +413,26 @@ class Proxy(_base_proxy.BaseBlockStorageProxy): def _service_cleanup(self, dry_run=True, client_status_queue=None, identified_resources=None, filters=None, resource_evaluation_fn=None): - if self._connection.has_service('object-store'): - # Volume backups require object-store to be available, even for - # listing - backups = [] - for obj in self.backups(details=False): - need_delete = self._service_cleanup_del_res( - self.delete_backup, - obj, - dry_run=dry_run, - client_status_queue=client_status_queue, - identified_resources=identified_resources, - filters=filters, - resource_evaluation_fn=resource_evaluation_fn) - if not dry_run and need_delete: - backups.append(obj) + backups = [] + for obj in self.backups(details=False): + need_delete = self._service_cleanup_del_res( + self.delete_backup, + obj, + dry_run=dry_run, + client_status_queue=client_status_queue, + identified_resources=identified_resources, + filters=filters, + resource_evaluation_fn=resource_evaluation_fn) + if not dry_run and need_delete: + backups.append(obj) - # Before deleting snapshots need to wait for backups to be deleted - for obj in backups: - try: - self.wait_for_delete(obj) - except exceptions.SDKException: - # Well, did our best, still try further - pass + # Before deleting snapshots need to wait for backups to be deleted + for obj in backups: + try: + self.wait_for_delete(obj) + except exceptions.SDKException: + # Well, did our best, still try further + pass snapshots = [] for obj in self.snapshots(details=False): diff --git a/openstack/tests/unit/block_storage/v2/test_proxy.py b/openstack/tests/unit/block_storage/v2/test_proxy.py index 2c6a1aa6e..8f89a6d27 100644 --- a/openstack/tests/unit/block_storage/v2/test_proxy.py +++ b/openstack/tests/unit/block_storage/v2/test_proxy.py @@ -17,7 +17,6 @@ from openstack.block_storage.v2 import snapshot from openstack.block_storage.v2 import stats from openstack.block_storage.v2 import type from openstack.block_storage.v2 import volume -from openstack import exceptions from openstack.tests.unit import test_proxy_base @@ -150,16 +149,3 @@ class TestVolumeProxy(test_proxy_base.TestProxyBase): expected_args=[self.proxy], expected_kwargs={'volume_id': 'vol_id', 'name': 'name'} ) - - def test_backup_no_swift(self): - """Ensure proxy method raises exception if swift is not available - """ - # NOTE: mock has_service - self.proxy._connection = mock.Mock() - self.proxy._connection.has_service = mock.Mock(return_value=False) - self.assertRaises( - exceptions.SDKException, - self.proxy.restore_backup, - 'backup', - 'volume_id', - 'name') diff --git a/openstack/tests/unit/block_storage/v3/test_proxy.py b/openstack/tests/unit/block_storage/v3/test_proxy.py index c3e9cbc53..b690371b2 100644 --- a/openstack/tests/unit/block_storage/v3/test_proxy.py +++ b/openstack/tests/unit/block_storage/v3/test_proxy.py @@ -17,7 +17,6 @@ from openstack.block_storage.v3 import snapshot from openstack.block_storage.v3 import stats from openstack.block_storage.v3 import type from openstack.block_storage.v3 import volume -from openstack import exceptions from openstack.tests.unit import test_proxy_base @@ -169,16 +168,3 @@ class TestVolumeProxy(test_proxy_base.TestProxyBase): expected_args=[self.proxy], expected_kwargs={'volume_id': 'vol_id', 'name': 'name'} ) - - def test_backup_no_swift(self): - """Ensure proxy method raises exception if swift is not available - """ - # NOTE: mock has_service - self.proxy._connection = mock.Mock() - self.proxy._connection.has_service = mock.Mock(return_value=False) - self.assertRaises( - exceptions.SDKException, - self.proxy.restore_backup, - 'backup', - 'volume_id', - 'name')