Deal with neutron changes forthcoming

This commit is contained in:
James Page 2016-02-23 14:32:45 +00:00
parent 86ed0c3e43
commit fb8c6021b3
3 changed files with 105 additions and 4 deletions

View File

@ -84,6 +84,7 @@ GIT_PACKAGE_BLACKLIST = [
'neutron-server', 'neutron-server',
'neutron-plugin-openvswitch', 'neutron-plugin-openvswitch',
'neutron-plugin-openvswitch-agent', 'neutron-plugin-openvswitch-agent',
'neutron-openvswitch-agent',
] ]
NOVA_CONF_DIR = "/etc/nova" NOVA_CONF_DIR = "/etc/nova"
@ -94,6 +95,7 @@ NEUTRON_DEFAULT = '/etc/default/neutron-server'
NEUTRON_L3_AGENT_CONF = "/etc/neutron/l3_agent.ini" NEUTRON_L3_AGENT_CONF = "/etc/neutron/l3_agent.ini"
NEUTRON_FWAAS_CONF = "/etc/neutron/fwaas_driver.ini" NEUTRON_FWAAS_CONF = "/etc/neutron/fwaas_driver.ini"
ML2_CONF = '%s/plugins/ml2/ml2_conf.ini' % NEUTRON_CONF_DIR ML2_CONF = '%s/plugins/ml2/ml2_conf.ini' % NEUTRON_CONF_DIR
OVS_CONF = '%s/plugins/ml2/openvswitch_agent.ini' % NEUTRON_CONF_DIR
EXT_PORT_CONF = '/etc/init/ext-port.conf' EXT_PORT_CONF = '/etc/init/ext-port.conf'
NEUTRON_METADATA_AGENT_CONF = "/etc/neutron/metadata_agent.ini" NEUTRON_METADATA_AGENT_CONF = "/etc/neutron/metadata_agent.ini"
DVR_PACKAGES = ['neutron-l3-agent'] DVR_PACKAGES = ['neutron-l3-agent']
@ -114,6 +116,10 @@ BASE_RESOURCE_MAP = OrderedDict([
'services': ['neutron-plugin-openvswitch-agent'], 'services': ['neutron-plugin-openvswitch-agent'],
'contexts': [neutron_ovs_context.OVSPluginContext()], 'contexts': [neutron_ovs_context.OVSPluginContext()],
}), }),
(OVS_CONF, {
'services': ['neutron-openvswitch-agent'],
'contexts': [neutron_ovs_context.OVSPluginContext()],
}),
(PHY_NIC_MTU_CONF, { (PHY_NIC_MTU_CONF, {
'services': ['os-charm-phy-nic-mtu'], 'services': ['os-charm-phy-nic-mtu'],
'contexts': [context.PhyNICMTUContext()], 'contexts': [context.PhyNICMTUContext()],
@ -193,6 +199,11 @@ def determine_packages():
if p in pkgs: if p in pkgs:
pkgs.remove(p) pkgs.remove(p)
release = os_release('neutron-common', base='icehouse')
if release >= 'mitaka' and 'neutron-plugin-openvswitch-agent' in pkgs:
pkgs.remove('neutron-plugin-openvswitch-agent')
pkgs.append('neutron-openvswitch-agent')
return pkgs return pkgs
@ -221,6 +232,19 @@ def resource_map():
resource_map.update(DHCP_RESOURCE_MAP) resource_map.update(DHCP_RESOURCE_MAP)
metadata_services = ['neutron-metadata-agent', 'neutron-dhcp-agent'] metadata_services = ['neutron-metadata-agent', 'neutron-dhcp-agent']
resource_map[NEUTRON_CONF]['services'] += metadata_services resource_map[NEUTRON_CONF]['services'] += metadata_services
# Remap any service names as required
if os_release('neutron-common', base='icehouse') >= 'mitaka':
# ml2_conf.ini -> openvswitch_agent.ini
del resource_map[ML2_CONF]
# drop of -plugin from service name
resource_map[NEUTRON_CONF]['services'].remove(
'neutron-plugin-openvswitch-agent'
)
resource_map[NEUTRON_CONF]['services'].append(
'neutron-openvswitch-agent'
)
else:
del resource_map[OVS_CONF]
return resource_map return resource_map

View File

@ -0,0 +1,26 @@
# mitaka
###############################################################################
# [ WARNING ]
# Configuration file maintained by Juju. Local changes may be overwritten.
# Config managed by neutron-openvswitch charm
###############################################################################
[ovs]
enable_tunneling = True
local_ip = {{ local_ip }}
bridge_mappings = {{ bridge_mappings }}
[agent]
tunnel_types = {{ overlay_network_type }}
l2_population = {{ l2_population }}
enable_distributed_routing = {{ distributed_routing }}
{% if veth_mtu -%}
veth_mtu = {{ veth_mtu }}
{% endif %}
[securitygroup]
{% if neutron_security_groups -%}
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
{% else -%}
enable_security_group = False
{% endif -%}

View File

@ -111,12 +111,29 @@ class TestNeutronOVSUtils(CharmTestCase):
self.test_config.set('enable-local-dhcp-and-metadata', False) self.test_config.set('enable-local-dhcp-and-metadata', False)
_git_requested.return_value = False _git_requested.return_value = False
_use_dvr.return_value = False _use_dvr.return_value = False
_os_rel.return_value = 'trusty' _os_rel.return_value = 'icehouse'
self.os_release.return_value = 'icehouse'
_head_pkgs.return_value = head_pkg _head_pkgs.return_value = head_pkg
pkg_list = nutils.determine_packages() pkg_list = nutils.determine_packages()
expect = ['neutron-plugin-openvswitch-agent', head_pkg] expect = ['neutron-plugin-openvswitch-agent', head_pkg]
self.assertItemsEqual(pkg_list, expect) self.assertItemsEqual(pkg_list, expect)
@patch.object(nutils, 'use_dvr')
@patch.object(nutils, 'git_install_requested')
@patch.object(charmhelpers.contrib.openstack.neutron, 'os_release')
@patch.object(charmhelpers.contrib.openstack.neutron, 'headers_package')
def test_determine_packages_mitaka(self, _head_pkgs, _os_rel,
_git_requested, _use_dvr):
self.test_config.set('enable-local-dhcp-and-metadata', False)
_git_requested.return_value = False
_use_dvr.return_value = False
_os_rel.return_value = 'mitaka'
self.os_release.return_value = 'mitaka'
_head_pkgs.return_value = head_pkg
pkg_list = nutils.determine_packages()
expect = ['neutron-openvswitch-agent', head_pkg]
self.assertItemsEqual(pkg_list, expect)
@patch.object(nutils, 'use_dvr') @patch.object(nutils, 'use_dvr')
@patch.object(nutils, 'git_install_requested') @patch.object(nutils, 'git_install_requested')
@patch.object(charmhelpers.contrib.openstack.neutron, 'os_release') @patch.object(charmhelpers.contrib.openstack.neutron, 'os_release')
@ -126,7 +143,8 @@ class TestNeutronOVSUtils(CharmTestCase):
self.test_config.set('enable-local-dhcp-and-metadata', True) self.test_config.set('enable-local-dhcp-and-metadata', True)
_git_requested.return_value = False _git_requested.return_value = False
_use_dvr.return_value = False _use_dvr.return_value = False
_os_rel.return_value = 'trusty' _os_rel.return_value = 'icehouse'
self.os_release.return_value = 'icehouse'
_head_pkgs.return_value = head_pkg _head_pkgs.return_value = head_pkg
pkg_list = nutils.determine_packages() pkg_list = nutils.determine_packages()
expect = ['neutron-plugin-openvswitch-agent', head_pkg, expect = ['neutron-plugin-openvswitch-agent', head_pkg,
@ -142,7 +160,8 @@ class TestNeutronOVSUtils(CharmTestCase):
self.test_config.set('enable-local-dhcp-and-metadata', False) self.test_config.set('enable-local-dhcp-and-metadata', False)
_git_requested.return_value = True _git_requested.return_value = True
_use_dvr.return_value = True _use_dvr.return_value = True
_os_rel.return_value = 'trusty' _os_rel.return_value = 'icehouse'
self.os_release.return_value = 'icehouse'
_head_pkgs.return_value = head_pkg _head_pkgs.return_value = head_pkg
pkg_list = nutils.determine_packages() pkg_list = nutils.determine_packages()
self.assertFalse('neutron-l3-agent' in pkg_list) self.assertFalse('neutron-l3-agent' in pkg_list)
@ -159,7 +178,7 @@ class TestNeutronOVSUtils(CharmTestCase):
self.ctxts.append(ctxt) self.ctxts.append(ctxt)
_use_dvr.return_value = False _use_dvr.return_value = False
self.os_release.return_value = 'trusty' self.os_release.return_value = 'icehouse'
templating.OSConfigRenderer.side_effect = _mock_OSConfigRenderer templating.OSConfigRenderer.side_effect = _mock_OSConfigRenderer
_regconfs = nutils.register_configs() _regconfs = nutils.register_configs()
confs = ['/etc/neutron/neutron.conf', confs = ['/etc/neutron/neutron.conf',
@ -167,18 +186,50 @@ class TestNeutronOVSUtils(CharmTestCase):
'/etc/init/os-charm-phy-nic-mtu.conf'] '/etc/init/os-charm-phy-nic-mtu.conf']
self.assertItemsEqual(_regconfs.configs, confs) self.assertItemsEqual(_regconfs.configs, confs)
@patch.object(nutils, 'use_dvr')
def test_register_configs_mitaka(self, _use_dvr):
class _mock_OSConfigRenderer():
def __init__(self, templates_dir=None, openstack_release=None):
self.configs = []
self.ctxts = []
def register(self, config, ctxt):
self.configs.append(config)
self.ctxts.append(ctxt)
_use_dvr.return_value = False
self.os_release.return_value = 'mitaka'
templating.OSConfigRenderer.side_effect = _mock_OSConfigRenderer
_regconfs = nutils.register_configs()
confs = ['/etc/neutron/neutron.conf',
'/etc/neutron/plugins/ml2/openvswitch_agent.ini',
'/etc/init/os-charm-phy-nic-mtu.conf']
self.assertItemsEqual(_regconfs.configs, confs)
@patch.object(nutils, 'use_dvr') @patch.object(nutils, 'use_dvr')
def test_resource_map(self, _use_dvr): def test_resource_map(self, _use_dvr):
_use_dvr.return_value = False _use_dvr.return_value = False
self.os_release.return_value = 'icehouse'
_map = nutils.resource_map() _map = nutils.resource_map()
svcs = ['neutron-plugin-openvswitch-agent'] svcs = ['neutron-plugin-openvswitch-agent']
confs = [nutils.NEUTRON_CONF] confs = [nutils.NEUTRON_CONF]
[self.assertIn(q_conf, _map.keys()) for q_conf in confs] [self.assertIn(q_conf, _map.keys()) for q_conf in confs]
self.assertEqual(_map[nutils.NEUTRON_CONF]['services'], svcs) self.assertEqual(_map[nutils.NEUTRON_CONF]['services'], svcs)
@patch.object(nutils, 'use_dvr')
def test_resource_map_mitaka(self, _use_dvr):
_use_dvr.return_value = False
self.os_release.return_value = 'mitaka'
_map = nutils.resource_map()
svcs = ['neutron-openvswitch-agent']
confs = [nutils.NEUTRON_CONF]
[self.assertIn(q_conf, _map.keys()) for q_conf in confs]
self.assertEqual(_map[nutils.NEUTRON_CONF]['services'], svcs)
@patch.object(nutils, 'use_dvr') @patch.object(nutils, 'use_dvr')
def test_resource_map_dvr(self, _use_dvr): def test_resource_map_dvr(self, _use_dvr):
_use_dvr.return_value = True _use_dvr.return_value = True
self.os_release.return_value = 'icehouse'
_map = nutils.resource_map() _map = nutils.resource_map()
svcs = ['neutron-plugin-openvswitch-agent', 'neutron-metadata-agent', svcs = ['neutron-plugin-openvswitch-agent', 'neutron-metadata-agent',
'neutron-l3-agent'] 'neutron-l3-agent']