]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Format stack_identity as id *and* links.
authorSteve Baker <sbaker@redhat.com>
Thu, 25 Oct 2012 00:31:52 +0000 (13:31 +1300)
committerSteve Baker <sbaker@redhat.com>
Thu, 25 Oct 2012 20:42:21 +0000 (09:42 +1300)
Here the id is defined as {stack_id}

Change-Id: Ieadda61d608e2d3e7125b42758cf80588178c042

heat/api/openstack/v1/stacks.py
heat/tests/test_api_openstack_v1.py

index 59e42672f1351d496aa0667d8d1d3caef8d37520..d32ccf83e54aca7ed32425037617bd64069adf3b 100644 (file)
@@ -18,6 +18,7 @@ Stack endpoint for Heat v1 ReST API.
 """
 
 import httplib
+import itertools
 import json
 import os
 import socket
@@ -170,19 +171,28 @@ def stack_url(req, identity):
     return req.relative_url(stack_identity.url_path(), True)
 
 
+def make_link(req, identity):
+    return {"href": stack_url(req, identity), "rel": "self"}
+
+
 def format_stack(req, stack, keys=[]):
     include_key = lambda k: k in keys if keys else True
 
     def transform(key, value):
-        if key == engine_api.STACK_ID:
-            return 'URL', stack_url(req, value)
-        # TODO(zaneb): ensure parameters can be formatted for XML
-        #elif key == engine_api.STACK_PARAMETERS:
-        #    return key, json.dumps(value)
+        if not include_key(key):
+            return
 
-        return key, value
-
-    return dict(transform(k, v) for k, v in stack.items() if include_key(k))
+        if key == engine_api.STACK_ID:
+            yield ('id', value['stack_id'])
+            yield ('links', [make_link(req, value)])
+        else:
+            # TODO(zaneb): ensure parameters can be formatted for XML
+            #elif key == engine_api.STACK_PARAMETERS:
+            #    return key, json.dumps(value)
+            yield (key, value)
+
+    return dict(itertools.chain.from_iterable(
+        transform(k, v) for k, v in stack.items()))
 
 
 class StackController(object):
index 0c81a3267f312d7d2ccaba9682ad71d68da6c3e4..c5b0387855c91c4ebcd55a305ffd8476a68e130a 100644 (file)
@@ -246,7 +246,9 @@ class StackControllerTest(unittest.TestCase):
         expected = {
             'stacks': [
                 {
-                    'URL': self._url(identity),
+                    'links': [{"href": self._url(identity),
+                               "rel": "self"}],
+                    'id': '1',
                     u'updated_time': u'2012-07-09T09:13:11Z',
                     u'description': u'blah',
                     u'stack_status_reason': u'Stack successfully created',
@@ -470,7 +472,9 @@ class StackControllerTest(unittest.TestCase):
 
         expected = {
             'stack': {
-                'URL': self._url(identity),
+                'links': [{"href": self._url(identity),
+                           "rel": "self"}],
+                'id': '6',
                 u'updated_time': u'2012-07-09T09:13:11Z',
                 u'parameters': parameters,
                 u'outputs': outputs,