~gandelman-a/ubuntu/precise/nova/UCA_2012.2.1

« back to all changes in this revision

Viewing changes to nova/console/api.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short, Chuck Short, Adam Gandelman
  • Date: 2012-06-22 12:39:57 UTC
  • mfrom: (1.1.57)
  • Revision ID: package-import@ubuntu.com-20120622123957-hbzwg84nt9rqwg8r
Tags: 2012.2~f2~20120621.14517-0ubuntu1
[ Chuck Short ]
* New upstream version.

[ Adam Gandelman ]
* debian/rules: Temporarily disable test suite while blocking
  tests are investigated. 
* debian/patches/kombu_tests_timeout.patch: Dropped.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
"""Handles ConsoleProxy API requests."""
19
19
 
 
20
from nova.compute import rpcapi as compute_rpcapi
20
21
from nova.console import rpcapi as console_rpcapi
21
22
from nova.db import base
22
23
from nova import flags
23
 
from nova import rpc
 
24
from nova.openstack.common import rpc
24
25
from nova import utils
25
26
 
26
27
 
33
34
    def __init__(self, **kwargs):
34
35
        super(API, self).__init__(**kwargs)
35
36
 
36
 
    def get_consoles(self, context, instance_id):
37
 
        instance_id = self._translate_uuid_if_necessary(context, instance_id)
38
 
        return self.db.console_get_all_by_instance(context, instance_id)
39
 
 
40
 
    def get_console(self, context, instance_id, console_id):
41
 
        instance_id = self._translate_uuid_if_necessary(context, instance_id)
42
 
        return self.db.console_get(context, console_id, instance_id)
43
 
 
44
 
    def delete_console(self, context, instance_id, console_id):
45
 
        instance_id = self._translate_uuid_if_necessary(context, instance_id)
46
 
        console = self.db.console_get(context, console_id, instance_id)
47
 
        topic = self.db.queue_get_for(context, FLAGS.console_topic,
48
 
                                      pool['host'])
 
37
    def get_consoles(self, context, instance_uuid):
 
38
        instance_id = self._translate_uuid_if_necessary(context, instance_uuid)
 
39
        return self.db.console_get_all_by_instance(context, instance_uuid)
 
40
 
 
41
    def get_console(self, context, instance_id, console_uuid):
 
42
        instance_id = self._translate_uuid_if_necessary(context, instance_uuid)
 
43
        return self.db.console_get(context, console_id, instance_uuid)
 
44
 
 
45
    def delete_console(self, context, instance_id, console_uuid):
 
46
        instance_id = self._translate_uuid_if_necessary(context, instance_uuid)
 
47
        console = self.db.console_get(context, console_id, instance_uuid)
 
48
        topic = rpc.queue_get_for(context, FLAGS.console_topic,
 
49
                                  pool['host'])
49
50
        rpcapi = console_rpcapi.ConsoleAPI(topic=topic)
50
51
        rpcapi.remove_console(context, console['id'])
51
52
 
52
 
    def create_console(self, context, instance_id):
 
53
    def create_console(self, context, instance_uuid):
53
54
        #NOTE(mdragon): If we wanted to return this the console info
54
55
        #               here, as we would need to do a call.
55
56
        #               They can just do an index later to fetch
56
57
        #               console info. I am not sure which is better
57
58
        #               here.
58
 
        instance = self._get_instance(context, instance_id)
 
59
        instance = self._get_instance(context, instance_uuid)
59
60
        topic = self._get_console_topic(context, instance['host']),
60
61
        rpcapi = console_rpcapi.ConsoleAPI(topic=topic)
61
62
        rpcapi.add_console(context, instance['id'])
62
63
 
63
64
    def _get_console_topic(self, context, instance_host):
64
 
        topic = self.db.queue_get_for(context,
65
 
                                      FLAGS.compute_topic,
66
 
                                      instance_host)
67
 
        return rpc.call(context, topic, {'method': 'get_console_topic',
68
 
                                         'args': {'fake': 1}})
69
 
 
70
 
    def _translate_uuid_if_necessary(self, context, instance_id):
71
 
        if utils.is_uuid_like(instance_id):
72
 
            instance = self.db.instance_get_by_uuid(context, instance_id)
73
 
            instance_id = instance['id']
74
 
        return instance_id
75
 
 
76
 
    def _get_instance(self, context, instance_id):
77
 
        if utils.is_uuid_like(instance_id):
78
 
            instance = self.db.instance_get_by_uuid(context, instance_id)
 
65
        rpcapi = compute_rpcapi.ComputeAPI()
 
66
        return rpcapi.get_console_topic(context, instance_host)
 
67
 
 
68
    def _translate_id_if_necessary(self, context, instance_uuid):
 
69
        if not utils.is_uuid_like(instance_uuid):
 
70
            instance = self.db.instance_get(context, instance_uuid)
 
71
            instance_uuid = instance['uuid']
 
72
        return instance_uuid
 
73
 
 
74
    def _get_instance(self, context, instance_uuid):
 
75
        if utils.is_uuid_like(instance_uuid):
 
76
            instance = self.db.instance_get_by_uuid(context, instance_uuid)
79
77
        else:
80
 
            instance = self.db.instance_get(context, instance_id)
 
78
            instance = self.db.instance_get(context, instance_uuid)
81
79
        return instance