diff options
| author | Satyanarayana Patibandla <satya.patibandla@tcs.com> | 2013-04-27 18:18:44 -0400 |
|---|---|---|
| committer | Satyanarayana Patibandla <satya.patibandla@tcs.com> | 2013-05-20 02:16:17 +0530 |
| commit | 53226b3262a95e4e62472416c125ee3ebd58b52e (patch) | |
| tree | 9151b6cdf5486b7aa596a1ef9ea0aaedc0e9fd7e /nova | |
| parent | eebcd6f2058d78c87dd2ee0a9a90f21f33f44e97 (diff) | |
Added validation for networks parameter value
A validation check is added for networks parameter value.
In server create request body, if networks parameter value
is not stored in a list then 'Bad networks format' error
is thrown with bad request exception.A new test case is
added to verify whether it is returning bad request exception
when invalid syntax is used.
Fixes: bug #1175683
Change-Id: I457a1626c56281f89d8c4a606ccc0d0e3aea05fa
Diffstat (limited to 'nova')
| -rw-r--r-- | nova/api/openstack/compute/servers.py | 3 | ||||
| -rw-r--r-- | nova/tests/api/openstack/compute/test_servers.py | 21 |
2 files changed, 24 insertions, 0 deletions
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index 166c8b10e..a63a39860 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -791,6 +791,9 @@ class Controller(wsgi.Controller): requested_networks = server_dict.get('networks') if requested_networks is not None: + if not isinstance(requested_networks, list): + expl = _('Bad networks format') + raise exc.HTTPBadRequest(explanation=expl) requested_networks = self._get_requested_networks( requested_networks) diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py index 22aecf020..4253c2d57 100644 --- a/nova/tests/api/openstack/compute/test_servers.py +++ b/nova/tests/api/openstack/compute/test_servers.py @@ -1857,6 +1857,27 @@ class ServersControllerCreateTest(test.TestCase): req, body) + def test_create_server_with_invalid_networks_parameter(self): + self.ext_mgr.extensions = {'os-networks': 'fake'} + image_href = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' + flavor_ref = 'http://localhost/123/flavors/3' + body = { + 'server': { + 'name': 'server_test', + 'imageRef': image_href, + 'flavorRef': flavor_ref, + 'networks': {'uuid': '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6'}, + } + } + req = fakes.HTTPRequest.blank('/v2/fake/servers') + req.method = 'POST' + req.body = jsonutils.dumps(body) + req.headers["content-type"] = "application/json" + self.assertRaises(webob.exc.HTTPBadRequest, + self.controller.create, + req, + body) + def test_create_server_with_deleted_image(self): image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6' # Get the fake image service so we can set the status to deleted |
