Fix backup metadata management and update
max_microversion on the backup resource was missed causing no microversion to be enabled at all for it. This leads to server refusing managing metadata of the backup. Fix this and add corresponding test with attempting to set metadata. Since this change sets microversion we also need to ensure we add all attributes of this version - encryption_key_id is the one added last. Change-Id: I2c161ca30524bf230104958b8afdd8cf0b682a89
This commit is contained in:
@@ -50,6 +50,8 @@ class Backup(resource.Resource):
|
||||
data_timestamp = resource.Body('data_timestamp')
|
||||
#: backup description
|
||||
description = resource.Body("description")
|
||||
#: The UUID of the encryption key. Only included for encrypted volumes.
|
||||
encryption_key_id = resource.Body("encryption_key_id")
|
||||
#: Backup fail reason
|
||||
fail_reason = resource.Body("fail_reason")
|
||||
#: Force backup
|
||||
@@ -86,6 +88,8 @@ class Backup(resource.Resource):
|
||||
#: The UUID of the volume.
|
||||
volume_id = resource.Body("volume_id")
|
||||
|
||||
_max_microversion = "3.64"
|
||||
|
||||
def create(self, session, prepend_key=True, base_path=None, **params):
|
||||
"""Create a remote resource based on this instance.
|
||||
|
||||
|
@@ -69,6 +69,21 @@ class TestBackup(base.BaseBlockStorageTest):
|
||||
self.assertEqual(self.BACKUP_NAME, sot.name)
|
||||
self.assertEqual(False, sot.is_incremental)
|
||||
|
||||
def test_create_metadata(self):
|
||||
metadata_backup = self.user_cloud.block_storage.create_backup(
|
||||
name=self.getUniqueString(),
|
||||
volume_id=self.VOLUME_ID,
|
||||
metadata=dict(foo="bar"))
|
||||
self.user_cloud.block_storage.wait_for_status(
|
||||
metadata_backup,
|
||||
status='available',
|
||||
failures=['error'],
|
||||
interval=5,
|
||||
wait=self._wait_for_timeout)
|
||||
self.user_cloud.block_storage.delete_backup(
|
||||
metadata_backup.id,
|
||||
ignore_missing=False)
|
||||
|
||||
def test_create_incremental(self):
|
||||
incremental_backup = self.user_cloud.block_storage.create_backup(
|
||||
name=self.getUniqueString(),
|
||||
|
@@ -27,6 +27,7 @@ BACKUP = {
|
||||
"created_at": "2018-04-02T10:35:27.000000",
|
||||
"updated_at": "2018-04-03T10:35:27.000000",
|
||||
"description": 'description',
|
||||
"encryption_key_id": "fake_encry_id",
|
||||
"fail_reason": 'fail reason',
|
||||
"id": FAKE_ID,
|
||||
"name": "backup001",
|
||||
@@ -55,7 +56,7 @@ class TestBackup(base.TestCase):
|
||||
self.sess = mock.Mock(spec=adapter.Adapter)
|
||||
self.sess.get = mock.Mock()
|
||||
self.sess.post = mock.Mock(return_value=self.resp)
|
||||
self.sess.default_microversion = None
|
||||
self.sess.default_microversion = "3.64"
|
||||
|
||||
def test_basic(self):
|
||||
sot = backup.Backup(BACKUP)
|
||||
@@ -67,6 +68,7 @@ class TestBackup(base.TestCase):
|
||||
self.assertTrue(sot.allow_list)
|
||||
self.assertTrue(sot.allow_get)
|
||||
self.assertTrue(sot.allow_fetch)
|
||||
self.assertIsNotNone(sot._max_microversion)
|
||||
|
||||
self.assertDictEqual(
|
||||
{
|
||||
@@ -104,6 +106,7 @@ class TestBackup(base.TestCase):
|
||||
sot.project_id)
|
||||
self.assertEqual(BACKUP['metadata'], sot.metadata)
|
||||
self.assertEqual(BACKUP['user_id'], sot.user_id)
|
||||
self.assertEqual(BACKUP['encryption_key_id'], sot.encryption_key_id)
|
||||
|
||||
def test_create_incremental(self):
|
||||
sot = backup.Backup(is_incremental=True)
|
||||
@@ -124,7 +127,7 @@ class TestBackup(base.TestCase):
|
||||
'incremental': True,
|
||||
}
|
||||
},
|
||||
microversion=None,
|
||||
microversion="3.64",
|
||||
params={}
|
||||
)
|
||||
|
||||
@@ -137,7 +140,7 @@ class TestBackup(base.TestCase):
|
||||
'incremental': False,
|
||||
}
|
||||
},
|
||||
microversion=None,
|
||||
microversion="3.64",
|
||||
params={}
|
||||
)
|
||||
|
||||
|
Reference in New Issue
Block a user