summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
Diffstat (limited to 'nova')
-rw-r--r--nova/api/openstack/compute/servers.py13
-rw-r--r--nova/tests/api/openstack/compute/test_servers.py63
2 files changed, 74 insertions, 2 deletions
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py
index c21599300..2ef154329 100644
--- a/nova/api/openstack/compute/servers.py
+++ b/nova/api/openstack/compute/servers.py
@@ -357,7 +357,12 @@ class ActionDeserializer(CommonDeserializer):
rebuild['name'] = name
if node.hasAttribute("auto_disk_config"):
- rebuild['auto_disk_config'] = node.getAttribute("auto_disk_config")
+ rebuild['OS-DCF:diskConfig'] = node.getAttribute(
+ "auto_disk_config")
+
+ if node.hasAttribute("OS-DCF:diskConfig"):
+ rebuild['OS-DCF:diskConfig'] = node.getAttribute(
+ "OS-DCF:diskConfig")
metadata_node = self.find_first_child_named(node, "metadata")
if metadata_node is not None:
@@ -391,7 +396,11 @@ class ActionDeserializer(CommonDeserializer):
raise AttributeError("No flavorRef was specified in request")
if node.hasAttribute("auto_disk_config"):
- resize['auto_disk_config'] = node.getAttribute("auto_disk_config")
+ resize['OS-DCF:diskConfig'] = node.getAttribute("auto_disk_config")
+
+ if node.hasAttribute("OS-DCF:diskConfig"):
+ resize['OS-DCF:diskConfig'] = node.getAttribute(
+ "OS-DCF:diskConfig")
return resize
diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py
index da653c980..e706f5046 100644
--- a/nova/tests/api/openstack/compute/test_servers.py
+++ b/nova/tests/api/openstack/compute/test_servers.py
@@ -3844,6 +3844,69 @@ class TestServerCreateRequestXMLDeserializer(test.TestCase):
self.assertEquals(request['body'], expected)
+class TestServerActionRequestXMLDeserializer(test.TestCase):
+
+ def setUp(self):
+ super(TestServerActionRequestXMLDeserializer, self).setUp()
+ self.deserializer = servers.ActionDeserializer()
+
+ def test_rebuild_request(self):
+ serial_request = """
+<rebuild xmlns="http://docs.openstack.org/compute/api/v1.1"
+ xmlns:OS-DCF="http://docs.openstack.org/compute/ext/disk_config/api/v1.1"
+ OS-DCF:diskConfig="MANUAL" imageRef="1"/>"""
+ request = self.deserializer.deserialize(serial_request)
+ expected = {
+ "rebuild": {
+ "imageRef": "1",
+ "OS-DCF:diskConfig": "MANUAL",
+ },
+ }
+ self.assertEquals(request['body'], expected)
+
+ def test_rebuild_request_auto_disk_config_compat(self):
+ serial_request = """
+<rebuild xmlns="http://docs.openstack.org/compute/api/v1.1"
+ xmlns:OS-DCF="http://docs.openstack.org/compute/ext/disk_config/api/v1.1"
+ auto_disk_config="MANUAL" imageRef="1"/>"""
+ request = self.deserializer.deserialize(serial_request)
+ expected = {
+ "rebuild": {
+ "imageRef": "1",
+ "OS-DCF:diskConfig": "MANUAL",
+ },
+ }
+ self.assertEquals(request['body'], expected)
+
+ def test_resize_request(self):
+ serial_request = """
+<resize xmlns="http://docs.openstack.org/compute/api/v1.1"
+ xmlns:OS-DCF="http://docs.openstack.org/compute/ext/disk_config/api/v1.1"
+ OS-DCF:diskConfig="MANUAL" flavorRef="1"/>"""
+ request = self.deserializer.deserialize(serial_request)
+ expected = {
+ "resize": {
+ "flavorRef": "1",
+ "OS-DCF:diskConfig": "MANUAL",
+ },
+ }
+ self.assertEquals(request['body'], expected)
+
+ def test_resize_request_auto_disk_config_compat(self):
+ serial_request = """
+<resize xmlns="http://docs.openstack.org/compute/api/v1.1"
+ xmlns:OS-DCF="http://docs.openstack.org/compute/ext/disk_config/api/v1.1"
+ auto_disk_config="MANUAL" flavorRef="1"/>"""
+ request = self.deserializer.deserialize(serial_request)
+ expected = {
+ "resize": {
+ "flavorRef": "1",
+ "OS-DCF:diskConfig": "MANUAL",
+ },
+ }
+ self.assertEquals(request['body'], expected)
+
+
class TestAddressesXMLSerialization(test.TestCase):
index_serializer = ips.AddressesTemplate()