From 231f40af80c69f80aec4922f1261f4fdf5365a3c Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Thu, 10 Nov 2011 16:34:50 -0500 Subject: Converting set password to use instance objects Related to blueprint internal-uuids Change-Id: Ifd229c7b9a9b69040a04289d4a98385fc946c734 --- nova/api/openstack/servers.py | 3 ++- nova/compute/api.py | 5 ++++- nova/tests/api/openstack/test_server_actions.py | 4 ++-- nova/tests/test_compute.py | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py index ba9dd4ec3..02acdd1b9 100644 --- a/nova/api/openstack/servers.py +++ b/nova/api/openstack/servers.py @@ -745,7 +745,8 @@ class Controller(object): if not isinstance(password, basestring) or password == '': msg = _("Invalid adminPass") raise exc.HTTPBadRequest(explanation=msg) - self.compute_api.set_admin_password(context, id, password) + server = self._get_server(context, id) + self.compute_api.set_admin_password(context, server, password) return webob.Response(status_int=202) def _limit_items(self, items, req): diff --git a/nova/compute/api.py b/nova/compute/api.py index 820a7b9b6..0c1583e65 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -1429,8 +1429,11 @@ class API(base.Base): self._cast_compute_message('unrescue_instance', context, instance_id) @scheduler_api.reroute_compute("set_admin_password") - def set_admin_password(self, context, instance_id, password=None): + def set_admin_password(self, context, instance, password=None): """Set the root/admin password for the given instance.""" + #NOTE(bcwaldon): we need to use the integer id here since manager uses + # db.instance_get, not db.instance_get_by_uuid + instance_id = instance['id'] self.update(context, instance_id, task_state=task_states.UPDATING_PASSWORD) diff --git a/nova/tests/api/openstack/test_server_actions.py b/nova/tests/api/openstack/test_server_actions.py index df0bfd968..9d50483b8 100644 --- a/nova/tests/api/openstack/test_server_actions.py +++ b/nova/tests/api/openstack/test_server_actions.py @@ -122,8 +122,8 @@ class MockSetAdminPassword(object): self.instance_id = None self.password = None - def __call__(self, context, instance_id, password): - self.instance_id = instance_id + def __call__(self, context, instance, password): + self.instance_id = instance['uuid'] self.password = password diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py index 0e8d53751..8fd70187f 100644 --- a/nova/tests/test_compute.py +++ b/nova/tests/test_compute.py @@ -1180,7 +1180,7 @@ class ComputeAPITestCase(BaseTestCase): self.assertEqual(inst_ref['vm_state'], vm_states.ACTIVE) self.assertEqual(inst_ref['task_state'], None) - self.compute_api.set_admin_password(self.context, instance_id) + self.compute_api.set_admin_password(self.context, inst_ref) inst_ref = db.instance_get(self.context, instance_id) self.assertEqual(inst_ref['vm_state'], vm_states.ACTIVE) -- cgit