summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-07-11 23:13:39 +0000
committerGerrit Code Review <review@openstack.org>2012-07-11 23:13:39 +0000
commit6dd0a3e8860db0198cf325b521e5a3a790df5602 (patch)
treeb1adb4181e51a84fda7980fcafe5aea4e3f8b5bd
parent647684adf2514fe9f0a1f142871f489bcd4a1c1a (diff)
parent0a3aae0a627bb551137d9d78fe65c839920ad1f2 (diff)
downloadnova-6dd0a3e8860db0198cf325b521e5a3a790df5602.tar.gz
nova-6dd0a3e8860db0198cf325b521e5a3a790df5602.tar.xz
nova-6dd0a3e8860db0198cf325b521e5a3a790df5602.zip
Merge "allows setting accessIPvs to null via update call"
-rw-r--r--nova/api/openstack/compute/servers.py10
-rw-r--r--nova/tests/api/openstack/compute/test_servers.py52
2 files changed, 60 insertions, 2 deletions
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py
index 1b0ad9463..0b37b5c57 100644
--- a/nova/api/openstack/compute/servers.py
+++ b/nova/api/openstack/compute/servers.py
@@ -776,12 +776,18 @@ class Controller(wsgi.Controller):
if 'accessIPv4' in body['server']:
access_ipv4 = body['server']['accessIPv4']
- self._validate_access_ipv4(access_ipv4)
+ if access_ipv4 is None:
+ access_ipv4 = ''
+ if access_ipv4:
+ self._validate_access_ipv4(access_ipv4)
update_dict['access_ip_v4'] = access_ipv4.strip()
if 'accessIPv6' in body['server']:
access_ipv6 = body['server']['accessIPv6']
- self._validate_access_ipv6(access_ipv6)
+ if access_ipv6 is None:
+ access_ipv6 = ''
+ if access_ipv6:
+ self._validate_access_ipv6(access_ipv6)
update_dict['access_ip_v6'] = access_ipv6.strip()
if 'auto_disk_config' in body['server']:
diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py
index 5b9fdc3d2..1d97f86fa 100644
--- a/nova/tests/api/openstack/compute/test_servers.py
+++ b/nova/tests/api/openstack/compute/test_servers.py
@@ -937,6 +937,32 @@ class ServersControllerTest(test.TestCase):
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,
req, FAKE_UUID, body)
+ def test_update_server_access_ipv4_none(self):
+ self.stubs.Set(nova.db, 'instance_get',
+ fakes.fake_instance_get(access_ipv4='0.0.0.0'))
+ req = fakes.HTTPRequest.blank('/v2/fake/servers/%s' % FAKE_UUID)
+ req.method = 'PUT'
+ req.content_type = 'application/json'
+ body = {'server': {'accessIPv4': None}}
+ req.body = jsonutils.dumps(body)
+ res_dict = self.controller.update(req, FAKE_UUID, body)
+
+ self.assertEqual(res_dict['server']['id'], FAKE_UUID)
+ self.assertEqual(res_dict['server']['accessIPv4'], '')
+
+ def test_update_server_access_ipv4_blank(self):
+ self.stubs.Set(nova.db, 'instance_get',
+ fakes.fake_instance_get(access_ipv4='0.0.0.0'))
+ req = fakes.HTTPRequest.blank('/v2/fake/servers/%s' % FAKE_UUID)
+ req.method = 'PUT'
+ req.content_type = 'application/json'
+ body = {'server': {'accessIPv4': ''}}
+ req.body = jsonutils.dumps(body)
+ res_dict = self.controller.update(req, FAKE_UUID, body)
+
+ self.assertEqual(res_dict['server']['id'], FAKE_UUID)
+ self.assertEqual(res_dict['server']['accessIPv4'], '')
+
def test_update_server_access_ipv6(self):
self.stubs.Set(nova.db, 'instance_get',
fakes.fake_instance_get(access_ipv6='beef::0123'))
@@ -961,6 +987,32 @@ class ServersControllerTest(test.TestCase):
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,
req, FAKE_UUID, body)
+ def test_update_server_access_ipv6_none(self):
+ self.stubs.Set(nova.db, 'instance_get',
+ fakes.fake_instance_get(access_ipv6='beef::0123'))
+ req = fakes.HTTPRequest.blank('/v2/fake/servers/%s' % FAKE_UUID)
+ req.method = 'PUT'
+ req.content_type = 'application/json'
+ body = {'server': {'accessIPv6': None}}
+ req.body = jsonutils.dumps(body)
+ res_dict = self.controller.update(req, FAKE_UUID, body)
+
+ self.assertEqual(res_dict['server']['id'], FAKE_UUID)
+ self.assertEqual(res_dict['server']['accessIPv6'], '')
+
+ def test_update_server_access_ipv6_blank(self):
+ self.stubs.Set(nova.db, 'instance_get',
+ fakes.fake_instance_get(access_ipv6='beef::0123'))
+ req = fakes.HTTPRequest.blank('/v2/fake/servers/%s' % FAKE_UUID)
+ req.method = 'PUT'
+ req.content_type = 'application/json'
+ body = {'server': {'accessIPv6': ''}}
+ req.body = jsonutils.dumps(body)
+ res_dict = self.controller.update(req, FAKE_UUID, body)
+
+ self.assertEqual(res_dict['server']['id'], FAKE_UUID)
+ self.assertEqual(res_dict['server']['accessIPv6'], '')
+
def test_update_server_adminPass_ignored(self):
inst_dict = dict(name='server_test', adminPass='bacon')
body = dict(server=inst_dict)