"""
import httplib
+import itertools
import json
import os
import socket
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):
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',
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,