summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Meade <alex.meade@rackspace.com>2012-04-18 17:39:58 -0400
committerAlex Meade <alex.meade@rackspace.com>2012-04-18 17:39:58 -0400
commit98b8001407ef06e1cdb8434571288dc56dba7bc0 (patch)
treee0e9f84ca3afd5ea5b59d1eca86f99a8040719c0
parentab7e5907ff0fdad759d5e00a351c757c1e5de452 (diff)
Make rebuilds with an emtpy name raise BadRequest.
Fixes bug 973591 Change-Id: I87f189175c55a6922e7277857b85d526b9bfa6e1
-rw-r--r--nova/api/openstack/compute/servers.py5
-rw-r--r--nova/tests/api/openstack/compute/test_server_actions.py11
2 files changed, 15 insertions, 1 deletions
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py
index 2e7b184c4..26c3b020a 100644
--- a/nova/api/openstack/compute/servers.py
+++ b/nova/api/openstack/compute/servers.py
@@ -271,7 +271,10 @@ class ActionDeserializer(CommonDeserializer):
def _action_rebuild(self, node):
rebuild = {}
if node.hasAttribute("name"):
- rebuild['name'] = node.getAttribute("name")
+ name = node.getAttribute("name")
+ if not name:
+ raise AttributeError("Name cannot be blank")
+ rebuild['name'] = name
if node.hasAttribute("auto_disk_config"):
rebuild['auto_disk_config'] = node.getAttribute("auto_disk_config")
diff --git a/nova/tests/api/openstack/compute/test_server_actions.py b/nova/tests/api/openstack/compute/test_server_actions.py
index fd9b5eaef..9e7d3ffc4 100644
--- a/nova/tests/api/openstack/compute/test_server_actions.py
+++ b/nova/tests/api/openstack/compute/test_server_actions.py
@@ -877,3 +877,14 @@ class TestServerActionXMLDeserializer(test.TestCase):
self.deserializer.deserialize,
serial_request,
'action')
+
+ def test_rebuild_blank_name(self):
+ serial_request = """<?xml version="1.0" encoding="UTF-8"?>
+ <rebuild
+ xmlns="http://docs.openstack.org/compute/api/v1.1"
+ imageRef="http://localhost/images/1"
+ name=""/>"""
+ self.assertRaises(AttributeError,
+ self.deserializer.deserialize,
+ serial_request,
+ 'action')