From 8939c3e5241c731b010cae4113f63221b19fa5c5 Mon Sep 17 00:00:00 2001 From: Steve Baker Date: Fri, 8 Mar 2013 13:08:04 +1300 Subject: [PATCH] Recognise arn: for REST stack lookup. Note that the Routes mapper does brittle regexp fu to map parameters, hence using \x3A for matching a colon Fixes: Bug #1131759 Change-Id: I063bf9057782c1c0a3f809d4f8068e2594be264d --- heat/api/openstack/v1/__init__.py | 5 +++++ heat/tests/test_api_openstack_v1.py | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/heat/api/openstack/v1/__init__.py b/heat/api/openstack/v1/__init__.py index b819ecce33..c4792ae5c0 100644 --- a/heat/api/openstack/v1/__init__.py +++ b/heat/api/openstack/v1/__init__.py @@ -66,6 +66,11 @@ class API(wsgi.Router): stack_mapper.connect("stack_lookup", "/stacks/{stack_name}", action="lookup") + # \x3A matches on a colon. + # Routes treats : specially in its regexp + stack_mapper.connect("stack_lookup", + r"/stacks/{stack_name:arn\x3A.*}", + action="lookup") subpaths = ['resources', 'events'] path = "{path:%s}" % '|'.join(subpaths) stack_mapper.connect("stack_lookup_subpath", diff --git a/heat/tests/test_api_openstack_v1.py b/heat/tests/test_api_openstack_v1.py index fb313d258d..dc28d0baca 100644 --- a/heat/tests/test_api_openstack_v1.py +++ b/heat/tests/test_api_openstack_v1.py @@ -1678,6 +1678,20 @@ class RoutesTest(unittest.TestCase): 'tenant_id': 'aaaa', 'stack_name': 'teststack' }) + self.assertRoute( + self.m, + '/aaaa/stacks/arn:openstack:heat::6548ab64fbda49deb188851a3b7d8c8b' + ':stacks/stack-1411-06/1c5d9bb2-3464-45e2-a728-26dfa4e1d34a', + 'GET', + 'lookup', + 'StackController', + { + 'tenant_id': 'aaaa', + 'stack_name': 'arn:openstack:heat:' + ':6548ab64fbda49deb188851a3b7d8c8b:stacks/stack-1411-06/' + '1c5d9bb2-3464-45e2-a728-26dfa4e1d34a' + }) + self.assertRoute( self.m, '/aaaa/stacks/teststack/resources',