Merge "Allow blank adminPass on server create"
This commit is contained in:
commit
e175c5f1c0
@ -1124,15 +1124,20 @@ class Controller(wsgi.Controller):
|
||||
|
||||
def _get_server_admin_password(self, server):
|
||||
"""Determine the admin password for a server on creation."""
|
||||
password = server.get('adminPass')
|
||||
try:
|
||||
password = server['adminPass']
|
||||
self._validate_admin_password(password)
|
||||
except KeyError:
|
||||
password = utils.generate_password(FLAGS.password_length)
|
||||
except ValueError:
|
||||
raise exc.HTTPBadRequest(explanation=_("Invalid adminPass"))
|
||||
|
||||
if password is None:
|
||||
return utils.generate_password(FLAGS.password_length)
|
||||
if not isinstance(password, basestring) or password == '':
|
||||
msg = _("Invalid adminPass")
|
||||
raise exc.HTTPBadRequest(explanation=msg)
|
||||
return password
|
||||
|
||||
def _validate_admin_password(self, password):
|
||||
if not isinstance(password, basestring):
|
||||
raise ValueError()
|
||||
|
||||
def _get_server_search_options(self):
|
||||
"""Return server search options allowed by non-admin."""
|
||||
return ('reservation_id', 'name', 'status', 'image', 'flavor',
|
||||
|
@ -2263,10 +2263,11 @@ class ServersControllerCreateTest(test.TestCase):
|
||||
self.assertTrue('adminPass' not in server)
|
||||
|
||||
def test_create_instance_admin_pass_empty(self):
|
||||
image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6'
|
||||
body = {
|
||||
'server': {
|
||||
'name': 'server_test',
|
||||
'imageRef': 3,
|
||||
'imageRef': image_uuid,
|
||||
'flavorRef': 3,
|
||||
'adminPass': '',
|
||||
},
|
||||
@ -2277,8 +2278,8 @@ class ServersControllerCreateTest(test.TestCase):
|
||||
req.body = json.dumps(body)
|
||||
req.headers['content-type'] = "application/json"
|
||||
|
||||
self.assertRaises(webob.exc.HTTPBadRequest,
|
||||
self.controller.create, req, body)
|
||||
# The fact that the action doesn't raise is enough validation
|
||||
self.controller.create(req, body)
|
||||
|
||||
def test_create_instance_malformed_entity(self):
|
||||
req = fakes.HTTPRequest.blank('/v2/fake/servers')
|
||||
|
Loading…
Reference in New Issue
Block a user