summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Kölker <jason@koelker.net>2012-07-05 11:21:13 -0500
committerJason Kölker <jason@koelker.net>2012-07-05 12:01:54 -0500
commitdd0e0ad5942743a434adf36bb91d107ac4e484e9 (patch)
tree6f4df1dc22ff8fdb23ed72f0a75acd160ee4570c
parent8c9539d88fd53cb150dbe41da485ef0bc919b66a (diff)
Allow network_uuids that begin with a prefix
* If the bare network_uuid is not uuid-like, attempt to validate with the first 'prefix-' stripped off * Fix LP1021370 Change-Id: I4914d4ffcb633aef1c5b7f8abfa0b48eaf4f0cc9
-rw-r--r--nova/api/openstack/compute/servers.py9
-rw-r--r--nova/tests/api/openstack/compute/test_servers.py6
2 files changed, 12 insertions, 3 deletions
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py
index ca87f3d4a..1b0ad9463 100644
--- a/nova/api/openstack/compute/servers.py
+++ b/nova/api/openstack/compute/servers.py
@@ -524,9 +524,12 @@ class Controller(wsgi.Controller):
network_uuid = network['uuid']
if not utils.is_uuid_like(network_uuid):
- msg = _("Bad networks format: network uuid is not in"
- " proper format (%s)") % network_uuid
- raise exc.HTTPBadRequest(explanation=msg)
+ br_uuid = network_uuid.split('-', 1)[-1]
+ if not utils.is_uuid_like(br_uuid):
+ msg = _("Bad networks format: network uuid is "
+ "not in proper format "
+ "(%s)") % network_uuid
+ raise exc.HTTPBadRequest(explanation=msg)
#fixed IP address is optional
#if the fixed IP address is not provided then
diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py
index ca5efe6c3..5b9fdc3d2 100644
--- a/nova/tests/api/openstack/compute/test_servers.py
+++ b/nova/tests/api/openstack/compute/test_servers.py
@@ -119,6 +119,12 @@ class ServersControllerTest(test.TestCase):
fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs,
spectacular=True)
+ def test_requested_networks_prefix(self):
+ uuid = 'br-00000000-0000-0000-0000-000000000000'
+ requested_networks = [{'uuid': uuid}]
+ res = self.controller._get_requested_networks(requested_networks)
+ self.assertTrue((uuid, None) in res)
+
def test_get_server_by_uuid(self):
req = fakes.HTTPRequest.blank('/v2/fake/servers/%s' % FAKE_UUID)
res_dict = self.controller.show(req, FAKE_UUID)