diff options
| author | Mark Washenberger <mark.washenberger@rackspace.com> | 2011-10-20 14:31:24 -0400 |
|---|---|---|
| committer | Mark Washenberger <mark.washenberger@rackspace.com> | 2011-10-26 14:54:11 -0400 |
| commit | fa74f5c59da8e1641d97333d0b8ee6147fb17947 (patch) | |
| tree | 2084eba44963d84be4efc48c9292074bd568f43d /nova/console | |
| parent | 5e9e3873e5ee3cf87b8aec801705ee24cedcd1aa (diff) | |
| download | nova-fa74f5c59da8e1641d97333d0b8ee6147fb17947.tar.gz nova-fa74f5c59da8e1641d97333d0b8ee6147fb17947.tar.xz nova-fa74f5c59da8e1641d97333d0b8ee6147fb17947.zip | |
Support using server uuids when accessing consoles.
This adds support to the nova/console/api.py for instance_ids
being uuids. Additionally, it updates the openstack console
controller to get around some int() casts and modifies testing
to exercise the server-uuid path.
Change-Id: I0641f2c4857d0d1e07abc7d70880590741769b9a
Diffstat (limited to 'nova/console')
| -rw-r--r-- | nova/console/api.py | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/nova/console/api.py b/nova/console/api.py index 137ddcaac..aa574132d 100644 --- a/nova/console/api.py +++ b/nova/console/api.py @@ -17,10 +17,11 @@ """Handles ConsoleProxy API requests.""" +from nova.db import base from nova import exception from nova import flags from nova import rpc -from nova.db import base +from nova import utils FLAGS = flags.FLAGS @@ -33,12 +34,15 @@ class API(base.Base): super(API, self).__init__(**kwargs) def get_consoles(self, context, instance_id): + instance_id = self._translate_uuid_if_necessary(context, instance_id) return self.db.console_get_all_by_instance(context, instance_id) def get_console(self, context, instance_id, console_id): + instance_id = self._translate_uuid_if_necessary(context, instance_id) return self.db.console_get(context, console_id, instance_id) def delete_console(self, context, instance_id, console_id): + instance_id = self._translate_uuid_if_necessary(context, instance_id) console = self.db.console_get(context, console_id, instance_id) @@ -51,16 +55,16 @@ class API(base.Base): 'args': {'console_id': console['id']}}) def create_console(self, context, instance_id): - instance = self.db.instance_get(context, instance_id) #NOTE(mdragon): If we wanted to return this the console info # here, as we would need to do a call. # They can just do an index later to fetch # console info. I am not sure which is better # here. + instance = self._get_instance(context, instance_id) rpc.cast(context, self._get_console_topic(context, instance['host']), {'method': 'add_console', - 'args': {'instance_id': instance_id}}) + 'args': {'instance_id': instance['id']}}) def _get_console_topic(self, context, instance_host): topic = self.db.queue_get_for(context, @@ -68,3 +72,16 @@ class API(base.Base): instance_host) return rpc.call(context, topic, {'method': 'get_console_topic', 'args': {'fake': 1}}) + + def _translate_uuid_if_necessary(self, context, instance_id): + if utils.is_uuid_like(instance_id): + instance = self.db.instance_get_by_uuid(context, instance_id) + instance_id = instance['id'] + return instance_id + + def _get_instance(self, context, instance_id): + if utils.is_uuid_like(instance_id): + instance = self.db.instance_get_by_uuid(context, instance_id) + else: + instance = self.db.instance_get(context, instance_id) + return instance |
