Cloud pulse conductor initial code uses direct DB access
Change-Id: I257fc7aa9e7a584e4f40e2b98ce883f00a9ee140 Partially-Implements: blueprint conductor
This commit is contained in:
0
cloudpulse/conductor/__init__.py
Normal file
0
cloudpulse/conductor/__init__.py
Normal file
60
cloudpulse/conductor/api.py
Normal file
60
cloudpulse/conductor/api.py
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
"""API for interfacing with Magnum Backend."""
|
||||||
|
from oslo_config import cfg
|
||||||
|
|
||||||
|
from cloudpulse.common import rpc_service
|
||||||
|
from cloudpulse import objects
|
||||||
|
|
||||||
|
|
||||||
|
# The Backend API class serves as a AMQP client for communicating
|
||||||
|
# on a topic exchange specific to the conductors. This allows the ReST
|
||||||
|
# API to trigger operations on the conductors
|
||||||
|
|
||||||
|
class API(rpc_service.API):
|
||||||
|
def __init__(self, transport=None, context=None, topic=None):
|
||||||
|
if topic is None:
|
||||||
|
cfg.CONF.import_opt('topic', 'cloudpulse.conductor.config',
|
||||||
|
group='conductor')
|
||||||
|
super(API, self).__init__(transport, context,
|
||||||
|
topic=cfg.CONF.conductor.topic)
|
||||||
|
|
||||||
|
# Test Operations
|
||||||
|
def test_create(self, test, cpulse_create_timeout):
|
||||||
|
# TODO(RPC CALL)
|
||||||
|
# return self._call('cpulse_create', test=test, cpulse_create_timeout)
|
||||||
|
test.create(cpulse_create_timeout)
|
||||||
|
return test
|
||||||
|
|
||||||
|
def test_list(self, context, limit, marker, sort_key, sort_dir):
|
||||||
|
return objects.Cpulse.list(context, limit, marker, sort_key, sort_dir)
|
||||||
|
|
||||||
|
def test_delete(self, context, uuid):
|
||||||
|
# return self._call('cpulse_delete', uuid=uuid)
|
||||||
|
test = objects.Cpulse.get_by_uuid(context, uuid=uuid)
|
||||||
|
return test.destroy()
|
||||||
|
|
||||||
|
def test_show(self, context, uuid):
|
||||||
|
return objects.Cpulse.get_by_uuid(context, uuid)
|
||||||
|
|
||||||
|
def test_update(self, test):
|
||||||
|
return self._call('cpulse_update', test=test)
|
||||||
|
|
||||||
|
|
||||||
|
class ListenerAPI(rpc_service.API):
|
||||||
|
def __init__(self, context=None, topic=None, server=None, timeout=None):
|
||||||
|
super(ListenerAPI, self).__init__(context=context, topic=topic,
|
||||||
|
server=server, timeout=timeout)
|
||||||
|
|
||||||
|
def ping_conductor(self):
|
||||||
|
return self._call('ping_conductor')
|
34
cloudpulse/conductor/config.py
Normal file
34
cloudpulse/conductor/config.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Copyright 2014 - Rackspace Hosting
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
"""Config options for CloudPulse Backend service."""
|
||||||
|
|
||||||
|
|
||||||
|
from oslo_config import cfg
|
||||||
|
|
||||||
|
SERVICE_OPTS = [
|
||||||
|
cfg.StrOpt('topic',
|
||||||
|
default='cloudpulse-conductor',
|
||||||
|
help='The queue to add conductor tasks to'),
|
||||||
|
cfg.IntOpt('conductor_life_check_timeout',
|
||||||
|
default=4,
|
||||||
|
help=('RPC timeout for the conductor liveness check that is '
|
||||||
|
'used for bay locking.')),
|
||||||
|
]
|
||||||
|
|
||||||
|
opt_group = cfg.OptGroup(
|
||||||
|
name='conductor',
|
||||||
|
title='Options for the cloudpulse-conductor service')
|
||||||
|
cfg.CONF.register_group(opt_group)
|
||||||
|
cfg.CONF.register_opts(SERVICE_OPTS, opt_group)
|
Reference in New Issue
Block a user