]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Add Metadata to detailed Resource output
authorZane Bitter <zbitter@redhat.com>
Tue, 3 Jul 2012 13:04:39 +0000 (15:04 +0200)
committerZane Bitter <zbitter@redhat.com>
Wed, 4 Jul 2012 15:20:39 +0000 (17:20 +0200)
Change-Id: I492b9a0a190a905ca5c8597c7236ad1d130a5b77
Signed-off-by: Zane Bitter <zbitter@redhat.com>
heat/common/wsgi.py
heat/engine/manager.py

index 83db2216faabf7b0f1084e75a1f565d126632bb4..f2e68f48284ba06aedb7854cb20a997aa2e2f0f2 100644 (file)
@@ -438,6 +438,11 @@ class JSONResponseSerializer(object):
         response.body = self.to_json(result)
 
 
+# Escape XML serialization for these keys, as the AWS API defines them as
+# JSON inside XML when the response format is XML.
+JSON_ONLY_KEYS = ('TemplateBody', 'Metadata')
+
+
 class XMLResponseSerializer(object):
 
     def object_to_element(self, obj, element):
@@ -448,11 +453,9 @@ class XMLResponseSerializer(object):
         elif isinstance(obj, dict):
             for key, value in obj.items():
                 subelement = etree.SubElement(element, key)
-                if key == "TemplateBody":
-                    # Escape serialization for TemplateBody key, as
-                    # AWS api defines JSON-template-inside-XML format
-                    # ref to GetTemplate AWS CFN API docs
-                    subelement.text = str(value)
+                if key in JSON_ONLY_KEYS:
+                    if value:
+                        subelement.text = str(value)
                 else:
                     self.object_to_element(value, subelement)
         else:
index f96b98789dda7e2abaf0fab554fba78f772e3950..bd9d25069787e6e4507f0ee52d907801766647ef 100644 (file)
@@ -368,6 +368,7 @@ class EngineManager(manager.Manager):
             # this API call uses Timestamp instead of LastUpdatedTimestamp
             formatted['Timestamp'] = formatted['LastUpdatedTimestamp']
             del formatted['LastUpdatedTimestamp']
+            del formatted['Metadata']
             resources.append(formatted)
 
         return resources
@@ -525,6 +526,7 @@ def format_stack_resource(resource):
         'PhysicalResourceId': resource.instance_id or '',
         'ResourceType': resource.t['Type'],
         'LastUpdatedTimestamp': heat_utils.strtime(last_updated_time),
+        'Metadata': rs.rsrc_metadata,
         'ResourceStatus': rs.state,
         'ResourceStatusReason': rs.state_description,
     }