diff options
| author | Jason Kölker <jason@koelker.net> | 2012-07-05 11:21:13 -0500 |
|---|---|---|
| committer | Jason Kölker <jason@koelker.net> | 2012-07-05 12:01:54 -0500 |
| commit | dd0e0ad5942743a434adf36bb91d107ac4e484e9 (patch) | |
| tree | 6f4df1dc22ff8fdb23ed72f0a75acd160ee4570c | |
| parent | 8c9539d88fd53cb150dbe41da485ef0bc919b66a (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.py | 9 | ||||
| -rw-r--r-- | nova/tests/api/openstack/compute/test_servers.py | 6 |
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) |
