summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorDan Prince <dan.prince@rackspace.com>2011-03-07 12:07:23 -0500
committerDan Prince <dan.prince@rackspace.com>2011-03-07 12:07:23 -0500
commitb3d3366b8fd4eaf81bb9e03ad808c1a139e5b5b0 (patch)
treedcc7d428a15ea63d720a4964819608ae5abf57a4 /nova
parent2280848e8477c33f2a903eb7f821dcbcc90ce307 (diff)
Generate 'adminPass' and call set_password when creating servers.
Diffstat (limited to 'nova')
-rw-r--r--nova/api/openstack/servers.py10
-rw-r--r--nova/tests/api/openstack/test_servers.py8
2 files changed, 14 insertions, 4 deletions
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py
index 08b95b46a..6cd8bb451 100644
--- a/nova/api/openstack/servers.py
+++ b/nova/api/openstack/servers.py
@@ -84,13 +84,11 @@ def _translate_detail_keys(inst):
return dict(server=inst_dict)
-
def _translate_keys(inst):
""" Coerces into dictionary format, excluding all model attributes
save for id and name """
return dict(server=dict(id=inst['id'], name=inst['display_name']))
-
class Controller(wsgi.Controller):
""" The Server API controller for the OpenStack API """
@@ -178,7 +176,13 @@ class Controller(wsgi.Controller):
key_data=key_pair['public_key'],
metadata=metadata,
onset_files=env.get('onset_files', []))
- return _translate_keys(instances[0])
+
+ server = _translate_keys(instances[0])
+ password = "%s%s" % (server['server']['name'][:4],
+ utils.generate_password(12))
+ server['server']['adminPass'] = password
+ self.compute_api.set_admin_password(context, server['server']['id'])
+ return server
def update(self, req, id):
""" Updates the server name or password """
diff --git a/nova/tests/api/openstack/test_servers.py b/nova/tests/api/openstack/test_servers.py
index 78beb7df9..16b48a13b 100644
--- a/nova/tests/api/openstack/test_servers.py
+++ b/nova/tests/api/openstack/test_servers.py
@@ -186,7 +186,7 @@ class ServersTest(test.TestCase):
def test_create_instance(self):
def instance_create(context, inst):
- return {'id': '1', 'display_name': ''}
+ return {'id': '1', 'display_name': 'server_test'}
def server_update(context, id, params):
return instance_create(context, id)
@@ -230,6 +230,12 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
+ server = json.loads(res.body)['server']
+ self.assertEqual('serv', server['adminPass'][:4])
+ self.assertEqual(16, len(server['adminPass']))
+ self.assertEqual('server_test', server['name'])
+ self.assertEqual('1', server['id'])
+
self.assertEqual(res.status_int, 200)
def test_update_no_body(self):