Merge "Drop swift check for volume backup"
This commit is contained in:
@@ -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)
|
||||
|
||||
|
@@ -383,10 +383,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)
|
||||
|
||||
@@ -400,10 +396,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):
|
||||
@@ -418,10 +410,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)
|
||||
|
||||
@@ -435,10 +423,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):
|
||||
@@ -454,10 +438,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)
|
||||
|
||||
@@ -472,10 +452,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)
|
||||
|
||||
@@ -530,29 +506,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):
|
||||
|
@@ -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')
|
||||
|
@@ -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
|
||||
|
||||
|
||||
@@ -197,16 +196,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')
|
||||
|
Reference in New Issue
Block a user