Merge "volume: Add backup metadata helpers"
This commit is contained in:
commit
1519ba0ec7
@ -42,7 +42,6 @@ class Backup(resource.Resource):
|
||||
allow_create = True
|
||||
allow_delete = True
|
||||
allow_list = True
|
||||
allow_get = True
|
||||
|
||||
#: Properties
|
||||
#: backup availability zone
|
||||
|
@ -1395,6 +1395,63 @@ class Proxy(proxy.Proxy):
|
||||
backup = self._get_resource(_backup.Backup, backup)
|
||||
backup.force_delete(self)
|
||||
|
||||
def update_backup(self, backup, **attrs):
|
||||
"""Update a backup
|
||||
|
||||
:param backup: Either the ID of a backup or a
|
||||
:class:`~openstack.block_storage.v3.backup.Backup`.
|
||||
:param dict attrs: The attributes to update on the volume.
|
||||
|
||||
:returns: The updated backup
|
||||
:rtype: :class:`~openstack.block_storage.v3.backup.Backup`
|
||||
"""
|
||||
return self._update(_backup.Backup, backup, **attrs)
|
||||
|
||||
def get_backup_metadata(self, backup):
|
||||
"""Return a dictionary of metadata for a backup
|
||||
|
||||
:param backup: Either the ID of a backup or a
|
||||
:class:`~openstack.block_storage.v3.backup.Backup`.
|
||||
|
||||
:returns: A :class:`~openstack.block_storage.v3.backup.Backup` with the
|
||||
backup's metadata.
|
||||
:rtype: :class:`~openstack.block_storage.v3.backup.Backup`
|
||||
"""
|
||||
backup = self._get_resource(_backup.Backup, backup)
|
||||
return backup.fetch_metadata(self)
|
||||
|
||||
def set_backup_metadata(self, backup, **metadata):
|
||||
"""Update metadata for a backup
|
||||
|
||||
:param backup: Either the ID of a backup or a
|
||||
:class:`~openstack.block_storage.v3.backup.Backup`.
|
||||
:param metadata: Key/value pairs to be updated in the backup's
|
||||
metadata. No other metadata is modified by this call.
|
||||
|
||||
:returns: A :class:`~openstack.block_storage.v3.backup.Backup` with the
|
||||
backup's metadata.
|
||||
:rtype: :class:`~openstack.block_storage.v3.backup.Backup`
|
||||
"""
|
||||
backup = self._get_resource(_backup.Backup, backup)
|
||||
return backup.set_metadata(self, metadata=metadata)
|
||||
|
||||
def delete_backup_metadata(self, backup, keys=None):
|
||||
"""Delete metadata for a backup
|
||||
|
||||
:param backup: Either the ID of a backup or a
|
||||
:class:`~openstack.block_storage.v3.backup.Backup`.
|
||||
:param list keys: The keys to delete. If left empty complete
|
||||
metadata will be removed.
|
||||
|
||||
:rtype: ``None``
|
||||
"""
|
||||
backup = self._get_resource(_backup.Backup, backup)
|
||||
if keys is not None:
|
||||
for key in keys:
|
||||
backup.delete_metadata_item(self, key)
|
||||
else:
|
||||
backup.delete_metadata(self)
|
||||
|
||||
# ====== BACKUP ACTIONS ======
|
||||
def restore_backup(self, backup, volume_id=None, name=None):
|
||||
"""Restore a Backup to volume
|
||||
|
@ -27,7 +27,6 @@ class Attachment(resource.Resource):
|
||||
allow_delete = True
|
||||
allow_commit = True
|
||||
allow_list = True
|
||||
allow_get = True
|
||||
allow_fetch = True
|
||||
|
||||
_max_microversion = "3.54"
|
||||
|
@ -12,13 +12,14 @@
|
||||
|
||||
import warnings
|
||||
|
||||
from openstack.common import metadata
|
||||
from openstack import exceptions
|
||||
from openstack import resource
|
||||
from openstack import utils
|
||||
from openstack import warnings as os_warnings
|
||||
|
||||
|
||||
class Backup(resource.Resource):
|
||||
class Backup(resource.Resource, metadata.MetadataMixin):
|
||||
"""Volume Backup"""
|
||||
|
||||
resource_key = "backup"
|
||||
@ -46,8 +47,8 @@ class Backup(resource.Resource):
|
||||
allow_fetch = True
|
||||
allow_create = True
|
||||
allow_delete = True
|
||||
allow_commit = True
|
||||
allow_list = True
|
||||
allow_get = True
|
||||
|
||||
#: Properties
|
||||
#: backup availability zone
|
||||
|
@ -25,7 +25,6 @@ class Transfer(resource.Resource):
|
||||
allow_delete = True
|
||||
allow_fetch = True
|
||||
allow_list = True
|
||||
allow_get = True
|
||||
|
||||
# Properties
|
||||
#: UUID of the transfer.
|
||||
|
@ -61,7 +61,6 @@ class TestBackup(base.TestCase):
|
||||
self.assertTrue(sot.allow_create)
|
||||
self.assertTrue(sot.allow_delete)
|
||||
self.assertTrue(sot.allow_list)
|
||||
self.assertTrue(sot.allow_get)
|
||||
self.assertTrue(sot.allow_fetch)
|
||||
|
||||
self.assertDictEqual(
|
||||
|
@ -90,7 +90,6 @@ class TestAttachment(base.TestCase):
|
||||
self.assertTrue(sot.allow_create)
|
||||
self.assertTrue(sot.allow_delete)
|
||||
self.assertTrue(sot.allow_list)
|
||||
self.assertTrue(sot.allow_get)
|
||||
self.assertTrue(sot.allow_commit)
|
||||
self.assertIsNotNone(sot._max_microversion)
|
||||
|
||||
|
@ -65,8 +65,8 @@ class TestBackup(base.TestCase):
|
||||
self.assertTrue(sot.allow_create)
|
||||
self.assertTrue(sot.allow_delete)
|
||||
self.assertTrue(sot.allow_list)
|
||||
self.assertTrue(sot.allow_get)
|
||||
self.assertTrue(sot.allow_fetch)
|
||||
self.assertTrue(sot.allow_commit)
|
||||
self.assertIsNotNone(sot._max_microversion)
|
||||
|
||||
self.assertDictEqual(
|
||||
|
@ -117,6 +117,9 @@ class TestVolume(TestVolumeProxy):
|
||||
expected_kwargs={"params": {"cascade": False, "force": True}},
|
||||
)
|
||||
|
||||
def test_volume_update(self):
|
||||
self.verify_update(self.proxy.update_volume, volume.Volume)
|
||||
|
||||
def test_get_volume_metadata(self):
|
||||
self._verify(
|
||||
"openstack.block_storage.v3.volume.Volume.fetch_metadata",
|
||||
@ -745,6 +748,9 @@ class TestBackup(TestVolumeProxy):
|
||||
expected_args=[self.proxy],
|
||||
)
|
||||
|
||||
def test_backup_update(self):
|
||||
self.verify_update(self.proxy.update_backup, backup.Backup)
|
||||
|
||||
def test_backup_create_attrs(self):
|
||||
# NOTE: mock has_service
|
||||
self.proxy._connection = mock.Mock()
|
||||
@ -772,6 +778,38 @@ class TestBackup(TestVolumeProxy):
|
||||
expected_args=[self.proxy, "new_status"],
|
||||
)
|
||||
|
||||
def test_backup_get_metadata(self):
|
||||
self._verify(
|
||||
"openstack.block_storage.v3.backup.Backup.fetch_metadata",
|
||||
self.proxy.get_backup_metadata,
|
||||
method_args=["value"],
|
||||
expected_args=[self.proxy],
|
||||
expected_result=volume.Volume(id="value", metadata={}),
|
||||
)
|
||||
|
||||
def test_backup_set_metadata(self):
|
||||
kwargs = {"a": "1", "b": "2"}
|
||||
id = "an_id"
|
||||
self._verify(
|
||||
"openstack.block_storage.v3.backup.Backup.set_metadata",
|
||||
self.proxy.set_backup_metadata,
|
||||
method_args=[id],
|
||||
method_kwargs=kwargs,
|
||||
method_result=volume.Volume.existing(id=id, metadata=kwargs),
|
||||
expected_args=[self.proxy],
|
||||
expected_kwargs={'metadata': kwargs},
|
||||
expected_result=volume.Volume.existing(id=id, metadata=kwargs),
|
||||
)
|
||||
|
||||
def test_backup_delete_metadata(self):
|
||||
self._verify(
|
||||
"openstack.block_storage.v3.backup.Backup.delete_metadata_item",
|
||||
self.proxy.delete_backup_metadata,
|
||||
expected_result=None,
|
||||
method_args=["value", ["key"]],
|
||||
expected_args=[self.proxy, "key"],
|
||||
)
|
||||
|
||||
|
||||
class TestSnapshot(TestVolumeProxy):
|
||||
def test_snapshot_get(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user