Shares Metadata follow-up patch
Addresses some comments from initial patch here [1]. Also addresses a regression regarding get_metadata_item or show_metadata and the response keys as shown in this bug [2]. [1]: https://review.opendev.org/c/openstack/manila/+/824648 [2]: https://bugs.launchpad.net/manila/+bug/1968069 Closes-Bug: #1968069 Change-Id: Ib5a62599b84ba55617071f8bcd8e2a1a11b2537b
This commit is contained in:
parent
c33da8bbb5
commit
2c1456b3f2
|
@ -199,7 +199,7 @@ class MetadataController(object):
|
|||
db, self.resource_metadata_get_item[self.resource_name])
|
||||
item = get_metadata_item_method(context, resource_id, key)
|
||||
|
||||
return {'metadata': {key: item}}
|
||||
return {'meta': {key: item[key]}}
|
||||
|
||||
@wsgi.response(200)
|
||||
def _delete_metadata(self, req, resource_id, key, parent_id=None):
|
||||
|
|
|
@ -221,10 +221,7 @@ class API(base.Base):
|
|||
az_request_multiple_subnet_support_map=None):
|
||||
"""Create new share."""
|
||||
|
||||
try:
|
||||
api_common._check_metadata_properties(metadata)
|
||||
except (exception.InvalidMetadata, exception.InvalidMetadataSize):
|
||||
raise
|
||||
api_common._check_metadata_properties(metadata)
|
||||
|
||||
if snapshot_id is not None:
|
||||
snapshot = self.get_snapshot(context, snapshot_id)
|
||||
|
@ -2091,10 +2088,7 @@ class API(base.Base):
|
|||
msg = _("Invalid share access level: %s.") % access_level
|
||||
raise exception.InvalidShareAccess(reason=msg)
|
||||
|
||||
try:
|
||||
api_common._check_metadata_properties(metadata)
|
||||
except (exception.InvalidMetadata, exception.InvalidMetadataSize):
|
||||
raise
|
||||
api_common._check_metadata_properties(metadata)
|
||||
access_exists = self.db.share_access_check_for_existing_access(
|
||||
ctx, share['id'], access_type, access_to)
|
||||
|
||||
|
|
|
@ -39,7 +39,6 @@ class MetadataAPITest(test.TestCase):
|
|||
metadata.MetadataController())
|
||||
self.controller.resource_name = 'share'
|
||||
self.admin_context = context.RequestContext('admin', 'fake', True)
|
||||
self.member_context = context.RequestContext('fake', 'fake')
|
||||
self.mock_policy_check = self.mock_object(
|
||||
policy, 'check_policy', mock.Mock(return_value=True))
|
||||
self.resource = db_utils.create_share(size=1)
|
||||
|
@ -59,7 +58,7 @@ class MetadataAPITest(test.TestCase):
|
|||
({'metadata': {'test_key1': 'test_v1'}}, 'test_key1'),
|
||||
({'metadata': {'key1': 'v2'}}, 'key1'))
|
||||
@ddt.unpack
|
||||
def test_update_metadata_item(self, body, key):
|
||||
def test_update_get_metadata_item(self, body, key):
|
||||
url = self._get_request()
|
||||
update = self.controller._update_metadata_item(
|
||||
url, self.resource['id'], body=body, key=key)
|
||||
|
@ -70,6 +69,10 @@ class MetadataAPITest(test.TestCase):
|
|||
self.assertEqual(1, len(get))
|
||||
self.assertEqual(body['metadata'], get['metadata'])
|
||||
|
||||
get_item = self.controller._show_metadata(url, self.resource['id'],
|
||||
key=key)
|
||||
self.assertEqual({'meta': body['metadata']}, get_item)
|
||||
|
||||
@ddt.data({'metadata': {'key1': 'v1', 'key2': 'v2'}},
|
||||
{'metadata': {'test_key1': 'test_v1'}},
|
||||
{'metadata': {'key1': 'v2'}})
|
||||
|
|
|
@ -1122,71 +1122,71 @@ class ShareDatabaseAPITestCase(test.TestCase):
|
|||
def test_share_metadata_get(self):
|
||||
metadata = {'a': 'b', 'c': 'd'}
|
||||
|
||||
self.share_1 = db_utils.create_share(size=1)
|
||||
share_1 = db_utils.create_share(size=1)
|
||||
db_api.share_metadata_update(
|
||||
self.ctxt, share_id=self.share_1['id'],
|
||||
self.ctxt, share_id=share_1['id'],
|
||||
metadata=metadata, delete=False)
|
||||
self.assertEqual(
|
||||
metadata, db_api.share_metadata_get(
|
||||
self.ctxt, share_id=self.share_1['id']))
|
||||
self.ctxt, share_id=share_1['id']))
|
||||
|
||||
def test_share_metadata_get_item(self):
|
||||
metadata = {'a': 'b', 'c': 'd'}
|
||||
key = 'a'
|
||||
shouldbe = {'a': 'b'}
|
||||
self.share_1 = db_utils.create_share(size=1)
|
||||
share_1 = db_utils.create_share(size=1)
|
||||
db_api.share_metadata_update(
|
||||
self.ctxt, share_id=self.share_1['id'],
|
||||
self.ctxt, share_id=share_1['id'],
|
||||
metadata=metadata, delete=False)
|
||||
self.assertEqual(
|
||||
shouldbe, db_api.share_metadata_get_item(
|
||||
self.ctxt, share_id=self.share_1['id'],
|
||||
self.ctxt, share_id=share_1['id'],
|
||||
key=key))
|
||||
|
||||
def test_share_metadata_update(self):
|
||||
metadata1 = {'a': '1', 'c': '2'}
|
||||
metadata2 = {'a': '3', 'd': '5'}
|
||||
should_be = {'a': '3', 'c': '2', 'd': '5'}
|
||||
self.share_1 = db_utils.create_share(size=1)
|
||||
share_1 = db_utils.create_share(size=1)
|
||||
db_api.share_metadata_update(
|
||||
self.ctxt, share_id=self.share_1['id'],
|
||||
self.ctxt, share_id=share_1['id'],
|
||||
metadata=metadata1, delete=False)
|
||||
db_api.share_metadata_update(
|
||||
self.ctxt, share_id=self.share_1['id'],
|
||||
self.ctxt, share_id=share_1['id'],
|
||||
metadata=metadata2, delete=False)
|
||||
self.assertEqual(
|
||||
should_be, db_api.share_metadata_get(
|
||||
self.ctxt, share_id=self.share_1['id']))
|
||||
self.ctxt, share_id=share_1['id']))
|
||||
|
||||
def test_share_metadata_update_item(self):
|
||||
metadata1 = {'a': '1', 'c': '2'}
|
||||
metadata2 = {'a': '3'}
|
||||
should_be = {'a': '3', 'c': '2'}
|
||||
self.share_1 = db_utils.create_share(size=1)
|
||||
share_1 = db_utils.create_share(size=1)
|
||||
db_api.share_metadata_update(
|
||||
self.ctxt, share_id=self.share_1['id'],
|
||||
self.ctxt, share_id=share_1['id'],
|
||||
metadata=metadata1, delete=False)
|
||||
db_api.share_metadata_update_item(
|
||||
self.ctxt, share_id=self.share_1['id'],
|
||||
self.ctxt, share_id=share_1['id'],
|
||||
item=metadata2)
|
||||
self.assertEqual(
|
||||
should_be, db_api.share_metadata_get(
|
||||
self.ctxt, share_id=self.share_1['id']))
|
||||
self.ctxt, share_id=share_1['id']))
|
||||
|
||||
def test_share_metadata_delete(self):
|
||||
key = 'a'
|
||||
metadata = {'a': '1', 'c': '2'}
|
||||
should_be = {'c': '2'}
|
||||
self.share_1 = db_utils.create_share(size=1)
|
||||
share_1 = db_utils.create_share(size=1)
|
||||
db_api.share_metadata_update(
|
||||
self.ctxt, share_id=self.share_1['id'],
|
||||
self.ctxt, share_id=share_1['id'],
|
||||
metadata=metadata, delete=False)
|
||||
db_api.share_metadata_delete(
|
||||
self.ctxt, share_id=self.share_1['id'],
|
||||
self.ctxt, share_id=share_1['id'],
|
||||
key=key)
|
||||
self.assertEqual(
|
||||
should_be, db_api.share_metadata_get(
|
||||
self.ctxt, share_id=self.share_1['id']))
|
||||
self.ctxt, share_id=share_1['id']))
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
|
||||
fixes:
|
||||
- |
|
||||
Fixes regression for show_metadata and the response dictionary. The
|
||||
correct response is: {meta: {'key': 'value}}.
|
||||
|
Loading…
Reference in New Issue