bcd5402484
Move config options of nova.conf section "upgrade_levels" to new centralized location nova/conf/upgrade_levels. Also, previously some config options for "upgrade_levels" were scattered in different conf files. Moved these options to the central location: nova/conf/upgrade_levels. Change-Id: I45651e8527dd98635f25e9586f68c288203d8cf5 Implements: blueprint centralize-config-options-newton
80 lines
2.3 KiB
Python
80 lines
2.3 KiB
Python
#
|
|
# Copyright 2013 Red Hat, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
#
|
|
|
|
"""
|
|
Base RPC client and server common to all services.
|
|
"""
|
|
|
|
import oslo_messaging as messaging
|
|
from oslo_serialization import jsonutils
|
|
|
|
import nova.conf
|
|
from nova import rpc
|
|
|
|
|
|
CONF = nova.conf.CONF
|
|
|
|
_NAMESPACE = 'baseapi'
|
|
|
|
|
|
class BaseAPI(object):
|
|
"""Client side of the base rpc API.
|
|
|
|
API version history:
|
|
|
|
1.0 - Initial version.
|
|
1.1 - Add get_backdoor_port
|
|
"""
|
|
|
|
VERSION_ALIASES = {
|
|
# baseapi was added in havana
|
|
}
|
|
|
|
def __init__(self, topic):
|
|
super(BaseAPI, self).__init__()
|
|
target = messaging.Target(topic=topic,
|
|
namespace=_NAMESPACE,
|
|
version='1.0')
|
|
version_cap = self.VERSION_ALIASES.get(CONF.upgrade_levels.baseapi,
|
|
CONF.upgrade_levels.baseapi)
|
|
self.client = rpc.get_client(target, version_cap=version_cap)
|
|
|
|
def ping(self, context, arg, timeout=None):
|
|
arg_p = jsonutils.to_primitive(arg)
|
|
cctxt = self.client.prepare(timeout=timeout)
|
|
return cctxt.call(context, 'ping', arg=arg_p)
|
|
|
|
def get_backdoor_port(self, context, host):
|
|
cctxt = self.client.prepare(server=host, version='1.1')
|
|
return cctxt.call(context, 'get_backdoor_port')
|
|
|
|
|
|
class BaseRPCAPI(object):
|
|
"""Server side of the base RPC API."""
|
|
|
|
target = messaging.Target(namespace=_NAMESPACE, version='1.1')
|
|
|
|
def __init__(self, service_name, backdoor_port):
|
|
self.service_name = service_name
|
|
self.backdoor_port = backdoor_port
|
|
|
|
def ping(self, context, arg):
|
|
resp = {'service': self.service_name, 'arg': arg}
|
|
return jsonutils.to_primitive(resp)
|
|
|
|
def get_backdoor_port(self, context):
|
|
return self.backdoor_port
|