From c629b241c1380424805cd909b1e839cc50502c6f Mon Sep 17 00:00:00 2001 From: Steve Baker Date: Thu, 25 Oct 2012 13:31:52 +1300 Subject: [PATCH] Format stack_identity as id *and* links. Here the id is defined as {stack_id} Change-Id: Ieadda61d608e2d3e7125b42758cf80588178c042 --- heat/api/openstack/v1/stacks.py | 24 +++++++++++++++++------- heat/tests/test_api_openstack_v1.py | 8 ++++++-- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/heat/api/openstack/v1/stacks.py b/heat/api/openstack/v1/stacks.py index 59e42672f1..d32ccf83e5 100644 --- a/heat/api/openstack/v1/stacks.py +++ b/heat/api/openstack/v1/stacks.py @@ -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 not include_key(key): + return + 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) + 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 key, value - - return dict(transform(k, v) for k, v in stack.items() if include_key(k)) + return dict(itertools.chain.from_iterable( + transform(k, v) for k, v in stack.items())) class StackController(object): diff --git a/heat/tests/test_api_openstack_v1.py b/heat/tests/test_api_openstack_v1.py index 0c81a3267f..c5b0387855 100644 --- a/heat/tests/test_api_openstack_v1.py +++ b/heat/tests/test_api_openstack_v1.py @@ -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,