From 771d3b5630c378d416652d9df4fa7c6d26d70b45 Mon Sep 17 00:00:00 2001 From: Hemanth Nakkina Date: Tue, 31 Aug 2021 11:07:12 +0530 Subject: [PATCH] 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. TODO: Sync charmhelpers to get related changes https://github.com/juju/charm-helpers/pull/635 Partial-Bug: #1934129 Change-Id: I5019c5ed3b8ab556d4900f1fe46dee69f5f09ee7 --- hooks/neutron_api_context.py | 22 ++++++++++++++++++++++ hooks/neutron_api_hooks.py | 2 ++ unit_tests/test_neutron_api_hooks.py | 10 ++++++++++ 3 files changed, 34 insertions(+) diff --git a/hooks/neutron_api_context.py b/hooks/neutron_api_context.py index fe8b1a0c..b053ce54 100644 --- a/hooks/neutron_api_context.py +++ b/hooks/neutron_api_context.py @@ -282,6 +282,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 only supported " + "on Stein to Ussuri", + ERROR) + 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 diff --git a/hooks/neutron_api_hooks.py b/hooks/neutron_api_hooks.py index da2b39fe..5288b837 100755 --- a/hooks/neutron_api_hooks.py +++ b/hooks/neutron_api_hooks.py @@ -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'), diff --git a/unit_tests/test_neutron_api_hooks.py b/unit_tests/test_neutron_api_hooks.py index 5774defd..3ca2125a 100644 --- a/unit_tests/test_neutron_api_hooks.py +++ b/unit_tests/test_neutron_api_hooks.py @@ -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, }