Pluggable controller worker

Change-Id: I11496547431fd5c4d162381afd9bc88b3de7513e
This commit is contained in:
ptoohill1 2015-07-15 17:51:58 -05:00 committed by Phillip Toohill
parent f074222842
commit fc427679bd
5 changed files with 25 additions and 10 deletions

View File

@ -6,6 +6,10 @@
# bind_host = 0.0.0.0
# bind_port = 9876
# api_handler = simulated_handler
#
# Plugin options are hot_plug_plugin (Hot-pluggable controller plugin)
#
# octavia_plugins = hot_plug_plugin
# nova_region_name =
#

View File

@ -75,6 +75,9 @@ core_opts = [
cfg.StrOpt('nova_region_name',
help=_('Name of nova region to use. Useful if keystone manages'
' more than one region.')),
cfg.StrOpt('octavia_plugins',
default='hot_plug_plugin',
help=_('Name of the controller plugin to use'))
]
networking_opts = [
@ -183,7 +186,6 @@ controller_worker_opts = [
cfg.StrOpt('cert_generator',
default='local_cert_generator',
help=_('Name of the cert generator to use'))
]
task_flow_opts = [

View File

@ -12,13 +12,16 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo_config import cfg
from oslo_log import log as logging
import oslo_messaging as messaging
from stevedore import driver as stevedore_driver
from octavia.common import constants
from octavia.controller.worker import controller_worker
from octavia.i18n import _LI
CONF = cfg.CONF
LOG = logging.getLogger(__name__)
@ -31,7 +34,11 @@ class Endpoint(object):
version='1.0')
def __init__(self):
self.worker = controller_worker.ControllerWorker()
self.worker = stevedore_driver.DriverManager(
namespace='octavia.plugins',
name=CONF.octavia_plugins,
invoke_on_load=True
).driver
def create_load_balancer(self, context, load_balancer_id):
LOG.info(_LI('Creating load balancer \'%s\'...') % load_balancer_id)

View File

@ -12,6 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo_config import cfg
import six
from octavia.controller.queue import endpoint
@ -29,20 +30,19 @@ class TestEndpoint(base.TestCase):
def setUp(self):
super(TestEndpoint, self).setUp()
cfg.CONF.import_group('controller_worker', 'octavia.common.config')
cfg.CONF.set_override('octavia_plugins', 'hot_plug_plugin')
mock_class = mock.create_autospec(controller_worker.ControllerWorker)
self.worker_patcher = mock.patch('octavia.controller.queue.endpoint.'
'controller_worker')
'stevedore_driver')
self.worker_patcher.start().ControllerWorker = mock_class
self.ep = endpoint.Endpoint()
self.context = {}
self.resource_updates = {}
self.resource_id = 1234
def reset_patches():
self.worker_patcher.stop()
self.addCleanup(reset_patches)
def test_create_load_balancer(self):
self.ep.create_load_balancer(self.context, self.resource_id)
self.ep.worker.create_load_balancer.assert_called_once_with(

View File

@ -55,10 +55,12 @@ octavia.compute.drivers =
octavia.network.drivers =
network_noop_driver = octavia.network.drivers.noop_driver.driver:NoopNetworkDriver
allowed_address_pairs_driver = octavia.network.drivers.neutron.allowed_address_pairs:AllowedAddressPairsDriver
containers_driver = octavia.network.drivers.neutron.containers:ContainersDriver
octavia.cert_generator =
local_cert_generator = octavia.certificates.generator.local:LocalCertGenerator
barbican_cert_generator = octavia.certificates.generator.barbican:BarbicanCertGenerator
octavia.cert_manager =
local_cert_manager = octavia.certificates.manager.local:LocalCertManager
barbican_cert_manager = octavia.certificates.manager.barbican:BarbicanCertManager
octavia.plugins =
hot_plug_plugin = octavia.controller.worker.controller_worker:ControllerWorker