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