From 0057ad5f4c4a99f75dc0107c88381b543cf8679d Mon Sep 17 00:00:00 2001 From: James Page Date: Wed, 12 Oct 2016 21:48:25 +0100 Subject: [PATCH] Update service plugins for Newton OpenStack Newton removes lbaas (v1) support; switch to using v2 when deploying newton or later. Change-Id: Ied28f27247af43896c9babd9143a60d281b8b5a0 --- src/lib/charm/openstack/neutron_api_odl.py | 12 +++++++++++- unit_tests/test_lib_charm_neutron_api_odl.py | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/lib/charm/openstack/neutron_api_odl.py b/src/lib/charm/openstack/neutron_api_odl.py index 6d46ad7..e12ca95 100644 --- a/src/lib/charm/openstack/neutron_api_odl.py +++ b/src/lib/charm/openstack/neutron_api_odl.py @@ -79,9 +79,19 @@ class NeutronAPIODLCharm(charms_openstack.charm.OpenStackCharm): } } } + if self.release >= 'newton': + # NOTE: LBaaS v2 for >= newton + service_plugins = ( + 'router,firewall,vpnaas,metering,' + 'neutron_lbaas.services.loadbalancer.' + 'plugin.LoadBalancerPluginv2' + ) + else: + service_plugins = 'router,firewall,lbaas,vpnaas,metering' + api_principle.configure_plugin( neutron_plugin='odl', core_plugin='neutron.plugins.ml2.plugin.Ml2Plugin', neutron_plugin_config='/etc/neutron/plugins/ml2/ml2_conf.ini', - service_plugins='router,firewall,lbaas,vpnaas,metering', + service_plugins=service_plugins, subordinate_configuration=inject_config) diff --git a/unit_tests/test_lib_charm_neutron_api_odl.py b/unit_tests/test_lib_charm_neutron_api_odl.py index dccda50..28b1966 100644 --- a/unit_tests/test_lib_charm_neutron_api_odl.py +++ b/unit_tests/test_lib_charm_neutron_api_odl.py @@ -66,3 +66,21 @@ class TestNeutronAPIODLCharm(Helper): neutron_plugin_config='/etc/neutron/plugins/ml2/ml2_conf.ini', service_plugins='router,firewall,lbaas,vpnaas,metering', subordinate_configuration=config_dict) + + def test_configure_plugin_newton(self): + principle_interface = mock.MagicMock() + self.patch_object(neutron_api_odl.ch_utils, 'os_release') + self.os_release.return_value = 'newton' + c = neutron_api_odl.NeutronAPIODLCharm() + c.configure_plugin(principle_interface) + config_dict = { + 'neutron-api': { + '/etc/neutron/neutron.conf': {'sections': {'DEFAULT': []}}}} + principle_interface.configure_plugin.assert_called_once_with( + neutron_plugin='odl', + core_plugin='neutron.plugins.ml2.plugin.Ml2Plugin', + neutron_plugin_config='/etc/neutron/plugins/ml2/ml2_conf.ini', + service_plugins=('router,firewall,vpnaas,metering,' + 'neutron_lbaas.services.loadbalancer.' + 'plugin.LoadBalancerPluginv2'), + subordinate_configuration=config_dict)