~ubuntu-branches/ubuntu/raring/nova/raring-proposed

« back to all changes in this revision

Viewing changes to nova/conductor/api.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short, Adam Gandelman, Chuck Short
  • Date: 2012-11-23 09:04:58 UTC
  • mfrom: (1.1.66)
  • Revision ID: package-import@ubuntu.com-20121123090458-91565o7aev1i1h71
Tags: 2013.1~g1-0ubuntu1
[ Adam Gandelman ]
* debian/control: Ensure novaclient is upgraded with nova,
  require python-keystoneclient >= 1:2.9.0. (LP: #1073289)
* debian/patches/{ubuntu/*, rbd-security.patch}: Dropped, applied
  upstream.
* debian/control: Add python-testtools to Build-Depends.

[ Chuck Short ]
* New upstream version.
* Refreshed debian/patches/avoid_setuptools_git_dependency.patch.
* debian/rules: FTBFS if missing binaries.
* debian/nova-scheudler.install: Add missing rabbit-queues and
  nova-rpc-zmq-receiver.
* Remove nova-volume since it doesnt exist anymore, transition to cinder-*.
* debian/rules: install apport hook in the right place.
* debian/patches/ubuntu-show-tests.patch: Display test failures.
* debian/control: Add depends on genisoimage
* debian/control: Suggest guestmount.
* debian/control: Suggest websockify. (LP: #1076442)
* debian/nova.conf: Disable nova-volume service.
* debian/control: Depend on xen-system-* rather than the hypervisor.
* debian/control, debian/mans/nova-conductor.8, debian/nova-conductor.init,
  debian/nova-conductor.install, debian/nova-conductor.logrotate
  debian/nova-conductor.manpages, debian/nova-conductor.postrm
  debian/nova-conductor.upstart.in: Add nova-conductor service.
* debian/control: Add python-fixtures as a build deps.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#    Copyright 2012 IBM Corp.
 
2
#
 
3
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
 
4
#    not use this file except in compliance with the License. You may obtain
 
5
#    a copy of the License at
 
6
#
 
7
#         http://www.apache.org/licenses/LICENSE-2.0
 
8
#
 
9
#    Unless required by applicable law or agreed to in writing, software
 
10
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 
11
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 
12
#    License for the specific language governing permissions and limitations
 
13
#    under the License.
 
14
 
 
15
"""Handles all requests to the conductor service"""
 
16
 
 
17
from nova.conductor import manager
 
18
from nova.conductor import rpcapi
 
19
from nova.openstack.common import cfg
 
20
 
 
21
conductor_opts = [
 
22
    cfg.BoolOpt('use_local',
 
23
                default=False,
 
24
                help='Perform nova-conductor operations locally'),
 
25
    cfg.StrOpt('topic',
 
26
               default='conductor',
 
27
               help='the topic conductor nodes listen on'),
 
28
    cfg.StrOpt('manager',
 
29
               default='nova.conductor.manager.ConductorManager',
 
30
               help='full class name for the Manager for conductor'),
 
31
]
 
32
conductor_group = cfg.OptGroup(name='conductor',
 
33
                               title='Conductor Options')
 
34
CONF = cfg.CONF
 
35
CONF.register_group(conductor_group)
 
36
CONF.register_opts(conductor_opts, conductor_group)
 
37
 
 
38
 
 
39
class LocalAPI(object):
 
40
    """A local version of the conductor API that does database updates
 
41
    locally instead of via RPC"""
 
42
 
 
43
    def __init__(self):
 
44
        self._manager = manager.ConductorManager()
 
45
 
 
46
    def instance_update(self, context, instance_uuid, **updates):
 
47
        """Perform an instance update in the database"""
 
48
        return self._manager.instance_update(context, instance_uuid, updates)
 
49
 
 
50
 
 
51
class API(object):
 
52
    """Conductor API that does updates via RPC to the ConductorManager"""
 
53
 
 
54
    def __init__(self):
 
55
        self.conductor_rpcapi = rpcapi.ConductorAPI()
 
56
 
 
57
    def instance_update(self, context, instance_uuid, **updates):
 
58
        """Perform an instance update in the database"""
 
59
        return self.conductor_rpcapi.instance_update(context, instance_uuid,
 
60
                                                     updates)