summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorBrian Waldon <bcwaldon@gmail.com>2012-05-01 08:19:02 -0700
committerBrian Waldon <bcwaldon@gmail.com>2012-05-01 10:32:44 -0700
commitac21815ecb977840e90cee807fac7992d060c643 (patch)
tree2b3157888dd2fa54b32484ada5fb963ea7405a08 /nova/api
parente6b1370d823cdcdb5201152010f0bb27e424b2d3 (diff)
downloadnova-ac21815ecb977840e90cee807fac7992d060c643.tar.gz
nova-ac21815ecb977840e90cee807fac7992d060c643.tar.xz
nova-ac21815ecb977840e90cee807fac7992d060c643.zip
Allow blank adminPass on server create
* Fixes bug 992648 Change-Id: Ib796904b3155300a178e37d129e398817c8747d6
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/compute/servers.py17
1 files changed, 11 insertions, 6 deletions
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py
index af6d9c7d6..4468af401 100644
--- a/nova/api/openstack/compute/servers.py
+++ b/nova/api/openstack/compute/servers.py
@@ -1145,15 +1145,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',