Add enable-fwaas to relation data

Add enable-fwaas to neutron-plugin-api relation data so
that neutron-openvswitch updates neutron-l3-agent
configuration accordingly.

Synced charmhelpers to get related changes
https://github.com/juju/charm-helpers/pull/640

Partial-Bug: #1934129

(cherry picked from commit 69af89a615)
Change-Id: I5019c5ed3b8ab556d4900f1fe46dee69f5f09ee7
This commit is contained in:
Hemanth Nakkina 2021-09-14 16:39:46 +05:30
parent ea7e7dd2c6
commit 33de9d5f3b
5 changed files with 82 additions and 5 deletions

View File

@ -25,7 +25,10 @@ import socket
import time
from base64 import b64decode
from subprocess import check_call, CalledProcessError
from subprocess import (
check_call,
check_output,
CalledProcessError)
import six
@ -1781,6 +1784,10 @@ class NeutronAPIContext(OSContextGenerator):
'rel_key': 'enable-port-forwarding',
'default': False,
},
'enable_fwaas': {
'rel_key': 'enable-fwaas',
'default': False,
},
'global_physnet_mtu': {
'rel_key': 'global-physnet-mtu',
'default': 1500,
@ -1815,6 +1822,11 @@ class NeutronAPIContext(OSContextGenerator):
if ctxt['enable_port_forwarding']:
l3_extension_plugins.append('port_forwarding')
if ctxt['enable_fwaas']:
l3_extension_plugins.append('fwaas_v2')
if ctxt['enable_nfg_logging']:
l3_extension_plugins.append('fwaas_v2_log')
ctxt['l3_extension_plugins'] = l3_extension_plugins
return ctxt
@ -2578,14 +2590,22 @@ class OVSDPDKDeviceContext(OSContextGenerator):
return format(mask, '#04x')
def socket_memory(self):
"""Formatted list of socket memory configuration per NUMA node
"""Formatted list of socket memory configuration per socket.
:returns: socket memory configuration per NUMA node
:returns: socket memory configuration per socket.
:rtype: str
"""
lscpu_out = check_output(
['lscpu', '-p=socket']).decode('UTF-8').strip()
sockets = set()
for line in lscpu_out.split('\n'):
try:
sockets.add(int(line))
except ValueError:
# lscpu output is headed by comments so ignore them.
pass
sm_size = config('dpdk-socket-memory')
node_regex = '/sys/devices/system/node/node*'
mem_list = [str(sm_size) for _ in glob.glob(node_regex)]
mem_list = [str(sm_size) for _ in sockets]
if mem_list:
return ','.join(mem_list)
else:

View File

@ -27,6 +27,7 @@ from charmhelpers.core.hookenv import (
log,
DEBUG,
ERROR,
WARNING,
)
from charmhelpers.contrib.openstack import context
from charmhelpers.contrib.hahelpers.cluster import (
@ -282,6 +283,28 @@ def is_port_forwarding_enabled():
return False
def is_fwaas_enabled():
"""
Check if Firewall as a service feature should be enabled.
returns: True if enable-fwaas config item is True,
otherwise False.
:rtype: boolean
"""
if config('enable-fwaas'):
cmp_release = CompareOpenStackReleases(os_release('neutron-server'))
if cmp_release < 'stein' or cmp_release > 'ussuri':
log("The fwaas option is set to true but will be ignored "
"and disabled for releases outside of Stein to Ussuri.",
WARNING)
return False
return True
return False
def is_vlan_trunking_requested_and_valid():
"""Check whether VLAN trunking should be enabled by checking whether
it has been requested and, if it has, is it supported in the current

View File

@ -107,6 +107,7 @@ from neutron_api_context import (
get_l2population,
get_l3ha,
get_overlay_network_type,
is_fwaas_enabled,
is_nfg_logging_enabled,
is_nsg_logging_enabled,
is_qos_requested_and_valid,
@ -554,6 +555,7 @@ def neutron_plugin_api_relation_joined(rid=None):
'enable-nsg-logging': is_nsg_logging_enabled(),
'enable-nfg-logging': is_nfg_logging_enabled(),
'enable-port-forwarding': is_port_forwarding_enabled(),
'enable-fwaas': is_fwaas_enabled(),
'overlay-network-type': get_overlay_network_type(),
'addr': unit_get('private-address'),
'polling-interval': config('polling-interval'),

View File

@ -272,6 +272,28 @@ class GeneralTests(CharmTestCase):
self.test_config.set('enable-port-forwarding', True)
self.assertFalse(context.is_port_forwarding_enabled())
def test_is_fwaas_enabled(self):
# Test pre-stein release
self.os_release.return_value = 'rocky'
self.test_config.set('enable-fwaas', True)
self.assertFalse(context.is_fwaas_enabled())
self.test_config.set('enable-fwaas', False)
self.assertFalse(context.is_fwaas_enabled())
# Test any series between stein - ussuri
self.os_release.return_value = 'ussuri'
self.test_config.set('enable-fwaas', True)
self.assertTrue(context.is_fwaas_enabled())
self.test_config.set('enable-fwaas', False)
self.assertFalse(context.is_fwaas_enabled())
# Test post-ussuri release
self.os_release.return_value = 'victoria'
self.test_config.set('enable-fwaas', True)
self.assertFalse(context.is_fwaas_enabled())
self.test_config.set('enable-fwaas', False)
self.assertFalse(context.is_fwaas_enabled())
class IdentityServiceContext(CharmTestCase):

View File

@ -91,6 +91,7 @@ TO_PATCH = [
'is_nsg_logging_enabled',
'is_nfg_logging_enabled',
'is_port_forwarding_enabled',
'is_fwaas_enabled',
'remove_old_packages',
'services',
'service_restart',
@ -144,6 +145,7 @@ class NeutronAPIHooksTests(CharmTestCase):
self.is_nsg_logging_enabled.return_value = False
self.is_nfg_logging_enabled.return_value = False
self.is_port_forwarding_enabled.return_value = False
self.is_fwaas_enabled.return_value = True
def _fake_relids(self, rel_name):
return [randrange(100) for _count in range(2)]
@ -542,6 +544,7 @@ class NeutronAPIHooksTests(CharmTestCase):
'enable-nsg-logging': False,
'enable-nfg-logging': False,
'enable-port-forwarding': False,
'enable-fwaas': True,
'global-physnet-mtu': 1500,
'physical-network-mtus': None,
}
@ -588,6 +591,7 @@ class NeutronAPIHooksTests(CharmTestCase):
'enable-nsg-logging': True,
'enable-nfg-logging': False,
'enable-port-forwarding': False,
'enable-fwaas': True,
'global-physnet-mtu': 1500,
'physical-network-mtus': None,
}
@ -640,6 +644,7 @@ class NeutronAPIHooksTests(CharmTestCase):
'enable-nsg-logging': False,
'enable-nfg-logging': True,
'enable-port-forwarding': False,
'enable-fwaas': True,
'global-physnet-mtu': 1500,
'physical-network-mtus': None,
}
@ -691,6 +696,7 @@ class NeutronAPIHooksTests(CharmTestCase):
'enable-nsg-logging': False,
'enable-nfg-logging': False,
'enable-port-forwarding': True,
'enable-fwaas': True,
'global-physnet-mtu': 1500,
'physical-network-mtus': None,
}
@ -742,6 +748,7 @@ class NeutronAPIHooksTests(CharmTestCase):
'enable-nsg-logging': False,
'enable-nfg-logging': False,
'enable-port-forwarding': False,
'enable-fwaas': True,
'global-physnet-mtu': 1500,
'physical-network-mtus': None,
}
@ -788,6 +795,7 @@ class NeutronAPIHooksTests(CharmTestCase):
'enable-nsg-logging': False,
'enable-nfg-logging': False,
'enable-port-forwarding': False,
'enable-fwaas': True,
'global-physnet-mtu': 1500,
'physical-network-mtus': None,
}
@ -836,6 +844,7 @@ class NeutronAPIHooksTests(CharmTestCase):
'enable-nsg-logging': False,
'enable-nfg-logging': False,
'enable-port-forwarding': False,
'enable-fwaas': True,
'global-physnet-mtu': 1500,
'physical-network-mtus': None,
}
@ -883,6 +892,7 @@ class NeutronAPIHooksTests(CharmTestCase):
'enable-nsg-logging': False,
'enable-nfg-logging': False,
'enable-port-forwarding': False,
'enable-fwaas': True,
'global-physnet-mtu': 1500,
'physical-network-mtus': None,
}