diff options
| author | Dan Prince <dan.prince@rackspace.com> | 2011-03-17 09:55:41 -0400 |
|---|---|---|
| committer | Dan Prince <dan.prince@rackspace.com> | 2011-03-17 09:55:41 -0400 |
| commit | 732633c93f8d8cf71875d2caf096c9efbcf9dbce (patch) | |
| tree | 0f64d48c1c693608bae44654d75e0ef3029494dd | |
| parent | 699abfe9e645ddbc854b42725247ab8fcd61517e (diff) | |
| download | nova-732633c93f8d8cf71875d2caf096c9efbcf9dbce.tar.gz nova-732633c93f8d8cf71875d2caf096c9efbcf9dbce.tar.xz nova-732633c93f8d8cf71875d2caf096c9efbcf9dbce.zip | |
Update the Openstack API to handle case where personality is set but
null in the request to create a server.
| -rw-r--r-- | nova/api/openstack/servers.py | 5 | ||||
| -rw-r--r-- | nova/tests/api/openstack/test_servers.py | 13 |
2 files changed, 16 insertions, 2 deletions
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py index 3ecd4fb01..bf21ed17f 100644 --- a/nova/api/openstack/servers.py +++ b/nova/api/openstack/servers.py @@ -220,6 +220,11 @@ class Controller(wsgi.Controller): underlying compute service. """ injected_files = [] + + # NOTE(dprince): handle case where 'personality: null' is in JSON req + if not personality: + return injected_files + for item in personality: try: path = item['path'] diff --git a/nova/tests/api/openstack/test_servers.py b/nova/tests/api/openstack/test_servers.py index 03e00af2a..230c9d03c 100644 --- a/nova/tests/api/openstack/test_servers.py +++ b/nova/tests/api/openstack/test_servers.py @@ -943,11 +943,13 @@ class TestServerInstanceCreation(test.TestCase): server['name'] = 'new-server-test' server['imageId'] = 1 server['flavorId'] = 1 - if personality_files is not None: + if personality_files: personalities = [] for path, contents in personality_files: personalities.append({'path': path, 'contents': contents}) server['personality'] = personalities + else: + server['personality'] = None return {'server': server} def _get_create_request_json(self, body_dict): @@ -976,7 +978,7 @@ class TestServerInstanceCreation(test.TestCase): for item in metadata.iteritems(): body_parts.append('<meta key="%s">%s</meta>' % item) body_parts.append('</metadata>') - if 'personality' in server: + if 'personality' in server and server['personality'] is not None: personalities = server['personality'] body_parts.append('<personality>') for file in personalities: @@ -1093,6 +1095,13 @@ class TestServerInstanceCreation(test.TestCase): self.assertEquals(response.status_int, 400) self.assertEquals(injected_files, None) + def test_create_instance_with_null_personality(self): + personality = None + request, response, injected_files = \ + self._create_instance_with_personality_json(personality) + self.assertEquals(response.status_int, 200) + self.assertEquals(injected_files, []) + def test_create_instance_with_three_personalities(self): files = [ ('/etc/sudoers', 'ALL ALL=NOPASSWD: ALL\n'), |
