]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Recognise arn: for REST stack lookup.
authorSteve Baker <sbaker@redhat.com>
Fri, 8 Mar 2013 00:08:04 +0000 (13:08 +1300)
committerSteve Baker <sbaker@redhat.com>
Sun, 10 Mar 2013 20:11:06 +0000 (09:11 +1300)
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
heat/tests/test_api_openstack_v1.py

index b819ecce33eee6a77ba4c21a8ed20f40fc2ab410..c4792ae5c07db793af68b569167c373dd3d9b5d9 100644 (file)
@@ -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",
index fb313d258de04194034f245e6fdca33ca34a2084..dc28d0bacad700b643f465cb552af52485afe130 100644 (file)
@@ -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',