diff --git a/marconi/queues/transport/wsgi/v1_1/metadata.py b/marconi/queues/transport/wsgi/v1_1/metadata.py index 608edf1b3..15407c30c 100644 --- a/marconi/queues/transport/wsgi/v1_1/metadata.py +++ b/marconi/queues/transport/wsgi/v1_1/metadata.py @@ -14,15 +14,12 @@ # limitations under the License. import falcon -import six from marconi.openstack.common.gettextutils import _ import marconi.openstack.common.log as logging from marconi.queues.storage import errors as storage_errors from marconi.queues.transport import utils -from marconi.queues.transport import validation from marconi.queues.transport.wsgi import errors as wsgi_errors -from marconi.queues.transport.wsgi import utils as wsgi_utils LOG = logging.getLogger(__name__) @@ -63,34 +60,8 @@ class Resource(object): u'project: %(project)s', {'queue': queue_name, 'project': project_id}) - try: - # Place JSON size restriction before parsing - self._validate.queue_metadata_length(req.content_length) - except validation.ValidationFailed as ex: - LOG.debug(ex) - raise wsgi_errors.HTTPBadRequestAPI(six.text_type(ex)) - - # Deserialize queue metadata - metadata, = wsgi_utils.filter_stream(req.stream, - req.content_length, - spec=None) - - try: - self.queue_ctrl.set_metadata(queue_name, - metadata=metadata, - project=project_id) - - except validation.ValidationFailed as ex: - LOG.debug(ex) - raise wsgi_errors.HTTPBadRequestAPI(six.text_type(ex)) - - except storage_errors.QueueDoesNotExist: - raise falcon.HTTPNotFound() - - except Exception as ex: - LOG.exception(ex) - description = _(u'Metadata could not be updated.') - raise wsgi_errors.HTTPServiceUnavailable(description) - - resp.status = falcon.HTTP_204 + resp.status = falcon.HTTP_405 resp.location = req.path + resp.body = ("Queue's metadata has been deprecated. " + "It will be removed completely in the next " + "version of the API.") diff --git a/marconi/tests/queues/transport/wsgi/test_queue_lifecycle.py b/marconi/tests/queues/transport/wsgi/test_queue_lifecycle.py index 0c947d5b1..a2d8855d8 100644 --- a/marconi/tests/queues/transport/wsgi/test_queue_lifecycle.py +++ b/marconi/tests/queues/transport/wsgi/test_queue_lifecycle.py @@ -27,6 +27,15 @@ class QueueLifecycleBaseTest(base.TestBase): config_file = None + # NOTE(flaper87): This is temporary. Ideally, each version + # of the API should have its own lifecycle tests. The v1.1 + # of our API removes the support for the API. Although most of + # the test methods were overwritten in the test definition, there + # are some that need to be disabled in-lieu for other tests to be + # excuted. Also, ddt plays dirty and makes it impossible to override + # a test case. + metadata_support = True + def setUp(self): super(QueueLifecycleBaseTest, self).setUp() @@ -73,17 +82,18 @@ class QueueLifecycleBaseTest(base.TestBase): self.assertEqual(self.srmock.status, falcon.HTTP_204) # Add metadata - doc = '{"messages": {"ttl": 600}}' - self.simulate_put(gumshoe_queue_path_metadata, - project_id, body=doc) - self.assertEqual(self.srmock.status, falcon.HTTP_204) + if self.metadata_support: + doc = '{"messages": {"ttl": 600}}' + self.simulate_put(gumshoe_queue_path_metadata, + project_id, body=doc) + self.assertEqual(self.srmock.status, falcon.HTTP_204) - # Fetch metadata - result = self.simulate_get(gumshoe_queue_path_metadata, - project_id) - result_doc = json.loads(result[0]) - self.assertEqual(self.srmock.status, falcon.HTTP_200) - self.assertEqual(result_doc, json.loads(doc)) + # Fetch metadata + result = self.simulate_get(gumshoe_queue_path_metadata, + project_id) + result_doc = json.loads(result[0]) + self.assertEqual(self.srmock.status, falcon.HTTP_200) + self.assertEqual(result_doc, json.loads(doc)) # Stats empty queue self.simulate_get(gumshoe_queue_path_stats, project_id) @@ -102,8 +112,9 @@ class QueueLifecycleBaseTest(base.TestBase): self.assertEqual(self.srmock.status, falcon.HTTP_404) # Get non-existent metadata - self.simulate_get(gumshoe_queue_path_metadata, project_id) - self.assertEqual(self.srmock.status, falcon.HTTP_404) + if self.metadata_support: + self.simulate_get(gumshoe_queue_path_metadata, project_id) + self.assertEqual(self.srmock.status, falcon.HTTP_404) def test_name_restrictions(self): self.simulate_put(self.queue_path + '/Nice-Boat_2') @@ -158,6 +169,9 @@ class QueueLifecycleBaseTest(base.TestBase): @ddt.data('{', '[]', '.', ' ', '') def test_bad_metadata(self, document): + if not self.metadata_support: + return + self.simulate_put(self.fizbat_queue_path, '7e55e1a7e') self.assertEqual(self.srmock.status, falcon.HTTP_201) @@ -261,7 +275,8 @@ class QueueLifecycleBaseTest(base.TestBase): def create_queue(name, project_id, body): uri = self.queue_path + '/' + name self.simulate_put(uri, project_id) - self.simulate_put(uri + '/metadata', project_id, body=body) + if self.metadata_support: + self.simulate_put(uri + '/metadata', project_id, body=body) create_queue('g1', None, '{"answer": 42}') create_queue('g2', None, '{"answer": 42}') @@ -280,8 +295,9 @@ class QueueLifecycleBaseTest(base.TestBase): queues = result_doc['queues'] self.assertEqual(len(queues), 2) - for queue in queues: - self.assertEqual(queue['metadata'], {'answer': 42}) + if self.metadata_support: + for queue in queues: + self.assertEqual(queue['metadata'], {'answer': 42}) # List (limit) result = self.simulate_get(self.queue_path, project_id, @@ -322,11 +338,12 @@ class QueueLifecycleBaseTest(base.TestBase): result_doc = json.loads(result[0]) [target, params] = result_doc['links'][0]['href'].split('?') - queue = result_doc['queues'][0] - result = self.simulate_get(queue['href'] + '/metadata', project_id) - result_doc = json.loads(result[0]) - self.assertEqual(result_doc, queue['metadata']) - self.assertEqual(result_doc, {'node': 31}) + if self.metadata_support: + queue = result_doc['queues'][0] + result = self.simulate_get(queue['href'] + '/metadata', project_id) + result_doc = json.loads(result[0]) + self.assertEqual(result_doc, queue['metadata']) + self.assertEqual(result_doc, {'node': 31}) # List tail self.simulate_get(target, project_id, query_string=params) diff --git a/tests/unit/queues/transport/wsgi/test_v1_1.py b/tests/unit/queues/transport/wsgi/test_v1_1.py index df8656687..ac49ce60b 100644 --- a/tests/unit/queues/transport/wsgi/test_v1_1.py +++ b/tests/unit/queues/transport/wsgi/test_v1_1.py @@ -76,10 +76,42 @@ class TestQueueFaultyDriver(wsgi.TestQueueFaultyDriver): # sort of a pain; is there a better way? class TestQueueLifecycleMongoDB(wsgi.TestQueueLifecycleMongoDB): url_prefix = URL_PREFIX + metadata_support = False + + def test_no_metadata(self): + """Metadata deprecated.""" + + def test_too_much_metadata(self): + """Metadata deprecated.""" + + def test_way_too_much_metadata(self): + """Metadata deprecated.""" + + def test_custom_metadata(self): + """Metadata deprecated.""" + + def test_update_metadata(self): + """Metadata deprecated.""" class TestQueueLifecycleSqlalchemy(wsgi.TestQueueLifecycleSqlalchemy): url_prefix = URL_PREFIX + metadata_support = False + + def test_no_metadata(self): + """Metadata deprecated.""" + + def test_too_much_metadata(self): + """Metadata deprecated.""" + + def test_way_too_much_metadata(self): + """Metadata deprecated.""" + + def test_custom_metadata(self): + """Metadata deprecated.""" + + def test_update_metadata(self): + """Metadata deprecated.""" class TestShardsMongoDB(wsgi.TestShardsMongoDB):