summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/create_instance_helper.py79
-rw-r--r--nova/api/openstack/wsgi.py9
2 files changed, 19 insertions, 69 deletions
diff --git a/nova/api/openstack/create_instance_helper.py b/nova/api/openstack/create_instance_helper.py
index 03272443a..b717b8ac0 100644
--- a/nova/api/openstack/create_instance_helper.py
+++ b/nova/api/openstack/create_instance_helper.py
@@ -303,79 +303,30 @@ class ServerXMLDeserializer(wsgi.MetadataXMLDeserializer):
"""Marshal the server attribute of a parsed request"""
server = {}
server_node = self.find_first_child_named(node, 'server')
- for attr in ["name", "imageId", "flavorId"]:
+
+ attributes = ["name", "imageId", "flavorId", "imageRef",
+ "flavorRef", "adminPass"]
+ for attr in attributes:
if server_node.getAttribute(attr):
server[attr] = server_node.getAttribute(attr)
- image = self._extract_image(server_node)
- if image is not None:
- server["image"] = image
- flavor = self._extract_flavor(server_node)
- if flavor is not None:
- server["flavor"] = flavor
- metadata_node = self.find_first_child_named(server_node, "metadata")
- metadata = self.extract_metadata(metadata_node)
- if metadata is not None:
- server["metadata"] = metadata
- personality = self._extract_personality(server_node)
- if personality is not None:
- server["personality"] = personality
- return server
-
- def _extract_image(self, server_node):
- """Retrieve an image entity from the server node"""
- image_node = self.find_first_child_named(server_node, "image")
- if image_node is None:
- return None
-
- image = {}
- image_id = image_node.getAttribute('id')
- if image_id is not None:
- image['id'] = image_id
-
- image['links'] = self._extract_links_from_node(image_node)
-
- return image
- def _extract_flavor(self, server_node):
- """Retrieve a flavor entity from the server node"""
- flavor_node = self.find_first_child_named(server_node, "flavor")
- if flavor_node is None:
- return None
-
- flavor = {}
- flavor_id = flavor_node.getAttribute('id')
- if flavor_id:
- flavor['id'] = flavor_id
-
- flavor['links'] = self._extract_links_from_node(flavor_node)
-
- return flavor
-
- def _extract_links_from_node(self, parent_node):
- """Retrieve link entities from a links container provided node"""
- links = []
+ metadata_node = self.find_first_child_named(server_node, "metadata")
+ server["metadata"] = self.extract_metadata(metadata_node)
- for link_node in self.find_children_named(parent_node, 'atom:link'):
- link = {
- 'rel': link_node.getAttribute('rel'),
- 'href': link_node.getAttribute('href'),
- }
- if link['rel'] is not None and link['href'] is not None:
- links.append(link)
+ server["personality"] = self._extract_personality(server_node)
- return links
+ return server
def _extract_personality(self, server_node):
"""Marshal the personality attribute of a parsed request"""
personality_node = \
self.find_first_child_named(server_node, "personality")
- if personality_node is None:
- return None
personality = []
- for file_node in self.find_children_named(personality_node, "file"):
- item = {}
- if file_node.hasAttribute("path"):
- item["path"] = file_node.getAttribute("path")
- item["contents"] = self.extract_text(file_node)
- personality.append(item)
+ if personality_node is not None:
+ for file_node in self.find_children_named(personality_node, "file"):
+ item = {}
+ if file_node.hasAttribute("path"):
+ item["path"] = file_node.getAttribute("path")
+ item["contents"] = self.extract_text(file_node)
+ personality.append(item)
return personality
diff --git a/nova/api/openstack/wsgi.py b/nova/api/openstack/wsgi.py
index a28443d12..53dab22e8 100644
--- a/nova/api/openstack/wsgi.py
+++ b/nova/api/openstack/wsgi.py
@@ -165,12 +165,11 @@ class MetadataXMLDeserializer(XMLDeserializer):
def extract_metadata(self, metadata_node):
"""Marshal the metadata attribute of a parsed request"""
- if metadata_node is None:
- return None
metadata = {}
- for meta_node in self.find_children_named(metadata_node, "meta"):
- key = meta_node.getAttribute("key")
- metadata[key] = self.extract_text(meta_node)
+ if metadata_node is not None:
+ for meta_node in self.find_children_named(metadata_node, "meta"):
+ key = meta_node.getAttribute("key")
+ metadata[key] = self.extract_text(meta_node)
return metadata