Relax restrictions on server name
The server name is designed to be anything the user would like it to
be, so should be validated against name, not hostname. This is how
v2.0 worked, and v2.1 schema validation accidentally went over the top
here. v2.1 regressed at f40b6a1d5c
Change-Id: Ia32a452ab3a5d7cd5a5289e8e8bf9f8e5e404780
Partial-Bug: #1491511
This commit is contained in:
parent
0391a19d0f
commit
a0aeaa0e5b
|
@ -21,7 +21,7 @@ base_create = {
|
|||
'server': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'name': parameter_types.hostname,
|
||||
'name': parameter_types.name,
|
||||
'imageRef': parameter_types.image_ref,
|
||||
'flavorRef': parameter_types.flavor_ref,
|
||||
'adminPass': parameter_types.admin_password,
|
||||
|
@ -56,7 +56,7 @@ base_update = {
|
|||
'server': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'name': parameter_types.hostname,
|
||||
'name': parameter_types.name,
|
||||
},
|
||||
'additionalProperties': False,
|
||||
},
|
||||
|
@ -71,7 +71,7 @@ base_rebuild = {
|
|||
'rebuild': {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'name': parameter_types.hostname,
|
||||
'name': parameter_types.name,
|
||||
'imageRef': parameter_types.image_ref,
|
||||
'adminPass': parameter_types.admin_password,
|
||||
'metadata': parameter_types.metadata,
|
||||
|
|
|
@ -1397,6 +1397,11 @@ class ServersControllerUpdateTest(ControllerTest):
|
|||
self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,
|
||||
req, FAKE_UUID, body)
|
||||
|
||||
def test_update_server_name_with_spaces_in_the_middle(self):
|
||||
body = {'server': {'name': 'abc def'}}
|
||||
req = self._get_request(body)
|
||||
self.controller.update(req, FAKE_UUID, body)
|
||||
|
||||
def test_update_server_personality(self):
|
||||
body = {
|
||||
'server': {
|
||||
|
@ -1626,6 +1631,11 @@ class ServersControllerRebuildInstanceTest(ControllerTest):
|
|||
self.controller._action_rebuild,
|
||||
self.req, FAKE_UUID, self.body)
|
||||
|
||||
def test_rebuild_instance_name_with_spaces_in_middle(self):
|
||||
self.body['rebuild']['name'] = 'abc def'
|
||||
self.req.body = jsonutils.dumps(self.body)
|
||||
self.controller._action_rebuild(self.req, FAKE_UUID, self.body)
|
||||
|
||||
def test_rebuild_instance_with_metadata_key_too_long(self):
|
||||
self.body['rebuild']['accessIPv4'] = '0.0.0.0'
|
||||
self.body['rebuild']['accessIPv6'] = 'fead::1234'
|
||||
|
@ -2211,6 +2221,11 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.create, self.req, self.body)
|
||||
|
||||
def test_create_instance_name_with_spaces_in_middle(self):
|
||||
self.body['server']['name'] = 'abc def'
|
||||
self.req.body = jsonutils.dumps(self.body)
|
||||
self.controller.create(self.req, self.body)
|
||||
|
||||
def test_create_instance_name_too_long(self):
|
||||
self.body['server']['name'] = 'X' * 256
|
||||
self.req.body = jsonutils.dumps(self.body)
|
||||
|
|
|
@ -1520,6 +1520,11 @@ class ServersControllerRebuildInstanceTest(ControllerTest):
|
|||
self.req.method = 'POST'
|
||||
self.req.headers["content-type"] = "application/json"
|
||||
|
||||
def test_rebuild_instance_name_with_spaces_in_the_middle(self):
|
||||
self.body['rebuild']['name'] = 'abc def'
|
||||
self.req.body = jsonutils.dumps(self.body)
|
||||
self.controller._action_rebuild(self.req, FAKE_UUID, body=self.body)
|
||||
|
||||
def test_rebuild_instance_with_blank_metadata_key(self):
|
||||
self.body['rebuild']['metadata'][''] = 'world'
|
||||
self.req.body = jsonutils.dumps(self.body)
|
||||
|
@ -1822,6 +1827,16 @@ class ServersControllerUpdateTest(ControllerTest):
|
|||
self.assertRaises(exception.ValidationError, self.controller.update,
|
||||
req, FAKE_UUID, body=body)
|
||||
|
||||
def test_update_server_name_with_spaces_in_the_middle(self):
|
||||
self.stubs.Set(db, 'instance_get',
|
||||
fakes.fake_instance_get(name='server_test'))
|
||||
req = fakes.HTTPRequest.blank('/fake/servers/%s' % FAKE_UUID)
|
||||
req.method = 'PUT'
|
||||
req.content_type = 'application/json'
|
||||
body = {'server': {'name': 'abc def'}}
|
||||
req.body = jsonutils.dumps(body)
|
||||
self.controller.update(req, FAKE_UUID, body=body)
|
||||
|
||||
def test_update_server_admin_password_extra_arg(self):
|
||||
inst_dict = dict(name='server_test', admin_password='bacon')
|
||||
body = dict(server=inst_dict)
|
||||
|
@ -2364,6 +2379,14 @@ class ServersControllerCreateTest(test.TestCase):
|
|||
self.assertRaises(exception.ValidationError, self.controller.create,
|
||||
self.req, body=self.body)
|
||||
|
||||
def test_create_instance_name_with_spaces_in_the_middle(self):
|
||||
# proper local hrefs must start with 'http://localhost/v2/'
|
||||
image_href = 'http://localhost/v2/images/%s' % self.image_uuid
|
||||
self.body['server']['name'] = 'abc def'
|
||||
self.body['server']['imageRef'] = image_href
|
||||
self.req.body = jsonutils.dumps(self.body)
|
||||
self.controller.create(self.req, body=self.body)
|
||||
|
||||
def test_create_instance_name_all_blank_spaces(self):
|
||||
# proper local hrefs must start with 'http://localhost/v2/'
|
||||
image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6'
|
||||
|
|
Loading…
Reference in New Issue