Merge "Shares Metadata follow-up patch"

This commit is contained in:
Zuul 2022-04-18 20:31:10 +00:00 committed by Gerrit Code Review
commit 563466f173
5 changed files with 33 additions and 29 deletions

View File

@ -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):

View File

@ -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)

View File

@ -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'}})

View File

@ -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

View File

@ -0,0 +1,7 @@
---
fixes:
- |
Fixes regression for show_metadata and the response dictionary. The
correct response is: {meta: {'key': 'value}}.