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