Skip to content

Commit 117642f

Browse files
committed
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
1 parent 57fbb72 commit 117642f

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed

openstack/block_storage/v3/backup.py

+4
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ class Backup(resource.Resource):
5050
data_timestamp = resource.Body('data_timestamp')
5151
#: backup description
5252
description = resource.Body("description")
53+
#: The UUID of the encryption key. Only included for encrypted volumes.
54+
encryption_key_id = resource.Body("encryption_key_id")
5355
#: Backup fail reason
5456
fail_reason = resource.Body("fail_reason")
5557
#: Force backup
@@ -86,6 +88,8 @@ class Backup(resource.Resource):
8688
#: The UUID of the volume.
8789
volume_id = resource.Body("volume_id")
8890

91+
_max_microversion = "3.64"
92+
8993
def create(self, session, prepend_key=True, base_path=None, **params):
9094
"""Create a remote resource based on this instance.
9195

openstack/tests/functional/block_storage/v3/test_backup.py

+15
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,21 @@ def test_get(self):
6969
self.assertEqual(self.BACKUP_NAME, sot.name)
7070
self.assertEqual(False, sot.is_incremental)
7171

72+
def test_create_metadata(self):
73+
metadata_backup = self.user_cloud.block_storage.create_backup(
74+
name=self.getUniqueString(),
75+
volume_id=self.VOLUME_ID,
76+
metadata=dict(foo="bar"))
77+
self.user_cloud.block_storage.wait_for_status(
78+
metadata_backup,
79+
status='available',
80+
failures=['error'],
81+
interval=5,
82+
wait=self._wait_for_timeout)
83+
self.user_cloud.block_storage.delete_backup(
84+
metadata_backup.id,
85+
ignore_missing=False)
86+
7287
def test_create_incremental(self):
7388
incremental_backup = self.user_cloud.block_storage.create_backup(
7489
name=self.getUniqueString(),

openstack/tests/unit/block_storage/v3/test_backup.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"created_at": "2018-04-02T10:35:27.000000",
2828
"updated_at": "2018-04-03T10:35:27.000000",
2929
"description": 'description',
30+
"encryption_key_id": "fake_encry_id",
3031
"fail_reason": 'fail reason',
3132
"id": FAKE_ID,
3233
"name": "backup001",
@@ -55,7 +56,7 @@ def setUp(self):
5556
self.sess = mock.Mock(spec=adapter.Adapter)
5657
self.sess.get = mock.Mock()
5758
self.sess.post = mock.Mock(return_value=self.resp)
58-
self.sess.default_microversion = None
59+
self.sess.default_microversion = "3.64"
5960

6061
def test_basic(self):
6162
sot = backup.Backup(BACKUP)
@@ -67,6 +68,7 @@ def test_basic(self):
6768
self.assertTrue(sot.allow_list)
6869
self.assertTrue(sot.allow_get)
6970
self.assertTrue(sot.allow_fetch)
71+
self.assertIsNotNone(sot._max_microversion)
7072

7173
self.assertDictEqual(
7274
{
@@ -104,6 +106,7 @@ def test_create(self):
104106
sot.project_id)
105107
self.assertEqual(BACKUP['metadata'], sot.metadata)
106108
self.assertEqual(BACKUP['user_id'], sot.user_id)
109+
self.assertEqual(BACKUP['encryption_key_id'], sot.encryption_key_id)
107110

108111
def test_create_incremental(self):
109112
sot = backup.Backup(is_incremental=True)
@@ -124,7 +127,7 @@ def test_create_incremental(self):
124127
'incremental': True,
125128
}
126129
},
127-
microversion=None,
130+
microversion="3.64",
128131
params={}
129132
)
130133

@@ -137,7 +140,7 @@ def test_create_incremental(self):
137140
'incremental': False,
138141
}
139142
},
140-
microversion=None,
143+
microversion="3.64",
141144
params={}
142145
)
143146

0 commit comments

Comments
 (0)