summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorBrian Waldon <brian.waldon@rackspace.com>2011-07-26 16:53:00 -0400
committerBrian Waldon <brian.waldon@rackspace.com>2011-07-26 16:53:00 -0400
commitc8b1a357c9bd5fe4bc54e6472f9667123d91c02a (patch)
tree196a432ebc2c7daf5d778f0d50732fa02bfd60fa /nova/api
parent241a926ed682cb6154ff8f37c4940e7b5885b6fe (diff)
downloadnova-c8b1a357c9bd5fe4bc54e6472f9667123d91c02a.tar.gz
nova-c8b1a357c9bd5fe4bc54e6472f9667123d91c02a.tar.xz
nova-c8b1a357c9bd5fe4bc54e6472f9667123d91c02a.zip
adding xml deserialization for createImage action
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/create_instance_helper.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/nova/api/openstack/create_instance_helper.py b/nova/api/openstack/create_instance_helper.py
index f8317565e..eb556ae8b 100644
--- a/nova/api/openstack/create_instance_helper.py
+++ b/nova/api/openstack/create_instance_helper.py
@@ -293,6 +293,30 @@ class ServerXMLDeserializer(wsgi.MetadataXMLDeserializer):
and personality attributes
"""
+ def action(self, string):
+ dom = minidom.parseString(string)
+ action_node = dom.childNodes[0]
+ action_name = action_node.tagName
+
+ action_deserializer = {
+ 'createImage': self._action_create_image,
+ }.get(action_name, self.default)
+
+ action_data = action_deserializer(action_node)
+
+ return {'body': {action_name: action_data}}
+
+ def _action_create_image(self, node):
+ data = {}
+ attributes = ['name', 'image_type', 'backup_type', 'rotation']
+ for attribute in attributes:
+ value = node.getAttribute(attribute)
+ if value:
+ data[attribute] = value
+ metadata_node = self.find_first_child_named(node, 'metadata')
+ data['metadata'] = self.extract_metadata(metadata_node)
+ return data
+
def create(self, string):
"""Deserialize an xml-formatted server create request"""
dom = minidom.parseString(string)