Use queue_creation to send queue's metadata
Since v1.1, the queue metadata is part of the queue endpoint. It has to be set/updated by using the queue endpoint. The old set_metadata and get_metadata endpoitns have been removed. Partially-Implements blueprint: api-v1.1 Change-Id: I7b5b50529c4591701c62a1fa92dddbae9add6265
This commit is contained in:
parent
75b8ca3b71
commit
9336a4d59e
@ -242,6 +242,7 @@ class V1(api.Api):
|
||||
|
||||
class V1_1(V1):
|
||||
label = 'v1.1'
|
||||
schema = V1.schema.copy()
|
||||
|
||||
|
||||
V1_1.schema.update({
|
||||
@ -255,3 +256,6 @@ V1_1.schema.update({
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
del V1_1.schema['queue_get_metadata']
|
||||
del V1_1.schema['queue_set_metadata']
|
||||
|
@ -56,10 +56,30 @@ def _common_queue_ops(operation, transport, request, name, callback=None):
|
||||
return resp.deserialized_content
|
||||
|
||||
|
||||
def queue_create(transport, request, name, callback=None):
|
||||
"""Creates a queue."""
|
||||
return _common_queue_ops('queue_create', transport,
|
||||
request, name, callback=callback)
|
||||
def queue_create(transport, request, name,
|
||||
metadata=None, callback=None):
|
||||
"""Creates a queue
|
||||
|
||||
:param transport: Transport instance to use
|
||||
:type transport: `transport.base.Transport`
|
||||
:param request: Request instance ready to be sent.
|
||||
:type request: `transport.request.Request`
|
||||
:param name: Queue reference name.
|
||||
:type name: `six.text_type`
|
||||
:param metadata: Queue's metadata object. (>=v1.1)
|
||||
:type metadata: `dict`
|
||||
:param callback: Optional callable to use as callback.
|
||||
If specified, this request will be sent asynchronously.
|
||||
(IGNORED UNTIL ASYNC SUPPORT IS COMPLETE)
|
||||
:type callback: Callable object.
|
||||
"""
|
||||
|
||||
request.operation = 'queue_create'
|
||||
request.params['queue_name'] = name
|
||||
request.content = metadata and json.dumps(metadata)
|
||||
|
||||
resp = transport.send(request)
|
||||
return resp.deserialized_content
|
||||
|
||||
|
||||
def queue_exists(transport, request, name, callback=None):
|
||||
|
@ -67,7 +67,10 @@ class Queue(object):
|
||||
# NOTE(jeffrey4l): Ensure that metadata is cleared when the new_meta
|
||||
# is a empty dict.
|
||||
if new_meta is not None:
|
||||
core.queue_set_metadata(trans, req, self._name, new_meta)
|
||||
if req.api.is_supported('queue_set_metadata'):
|
||||
core.queue_set_metadata(trans, req, self._name, new_meta)
|
||||
else:
|
||||
core.queue_create(trans, req, self._name, metadata=new_meta)
|
||||
self._metadata = new_meta
|
||||
|
||||
# TODO(flaper87): Cache with timeout
|
||||
|
@ -33,9 +33,25 @@ class QueuesV1QueueUnitTest(base.QueuesTestBase):
|
||||
resp = response.Response(None, json.dumps(test_metadata))
|
||||
send_method.return_value = resp
|
||||
|
||||
metadata = self.queue.metadata()
|
||||
metadata = self.queue.metadata(test_metadata)
|
||||
self.assertEqual(metadata, test_metadata)
|
||||
|
||||
def test_queue_metadata_update(self):
|
||||
test_metadata = {'type': 'Bank Accounts'}
|
||||
new_meta = {'flavor': 'test'}
|
||||
|
||||
with mock.patch.object(self.transport, 'send',
|
||||
autospec=True) as send_method:
|
||||
|
||||
resp = response.Response(None, json.dumps(test_metadata))
|
||||
send_method.return_value = resp
|
||||
|
||||
metadata = self.queue.metadata(test_metadata)
|
||||
self.assertEqual(metadata, test_metadata)
|
||||
|
||||
metadata = self.queue.metadata(new_meta)
|
||||
self.assertEqual(metadata, new_meta)
|
||||
|
||||
def test_queue_create(self):
|
||||
with mock.patch.object(self.transport, 'send',
|
||||
autospec=True) as send_method:
|
||||
|
@ -25,6 +25,16 @@ class Api(object):
|
||||
label = None
|
||||
validators = {}
|
||||
|
||||
def is_supported(self, operation):
|
||||
"""Returns `True` if `operation` is supported
|
||||
|
||||
:param operation: The operation to check on.
|
||||
:type operation: `six.text_type`
|
||||
|
||||
:rtype: bool
|
||||
"""
|
||||
return operation in self.schema
|
||||
|
||||
def get_schema(self, operation):
|
||||
"""Returns the schema for an operation
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user