Merge "Allow blank adminPass on server create"

This commit is contained in:
Jenkins 2012-05-02 23:36:44 +00:00 committed by Gerrit Code Review
commit e175c5f1c0
2 changed files with 15 additions and 9 deletions

View File

@ -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',

View File

@ -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')