Option to enable network-segment-range support

To let operators add an additional and optional service plugin into the
deployment configuration as "network_segment_range".
https://docs.openstack.org/neutron/latest/admin/config-network-segment-ranges.html

Closes-Bug: #1965229
Change-Id: Id0ac7c397874ad2c51935e8c0eab64f1ef4f6fd3
This commit is contained in:
Nobuto Murata 2022-03-17 14:58:34 +09:00
parent 1c88770e9b
commit c411b90d2d
3 changed files with 45 additions and 0 deletions

View File

@ -807,3 +807,9 @@ options:
If True, on Stein or later attribute 'propagate_uplink_status' will be
available to port. This attribute can be implemented for VF port to
indicate if the VF link state should follow the state of the PF.
enable-network-segment-range:
type: boolean
default: False
description: |
Setting this to True will enable network segment ranges (Stein and
later).

View File

@ -317,6 +317,27 @@ def is_fwaas_enabled(cmp_release=None):
return False
def is_network_segment_range_enabled():
"""
Check if Network segment ranges feature should be enabled.
returns: True if enable-network-segment-range config is True,
otherwise False.
:rtype: boolean
"""
if config('enable-network-segment-range'):
if CompareOpenStackReleases(os_release('neutron-server')) < 'stein':
log("The network segment ranges option is"
"only supported on Stein or later",
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
@ -715,6 +736,9 @@ class NeutronCCContext(context.NeutronContext):
if is_port_forwarding_enabled():
ctxt['service_plugins'].append('port_forwarding')
if is_network_segment_range_enabled():
ctxt['service_plugins'].append('network_segment_range')
if is_qos_requested_and_valid():
ctxt['service_plugins'].append('qos')

View File

@ -294,6 +294,21 @@ class GeneralTests(CharmTestCase):
self.test_config.set('enable-fwaas', False)
self.assertFalse(context.is_fwaas_enabled())
def test_is_network_segment_range_enabled(self):
# Test pre-stein release
self.os_release.return_value = 'rocky'
self.test_config.set('enable-network-segment-range', True)
self.assertFalse(context.is_network_segment_range_enabled())
self.test_config.set('enable-network-segment-range', False)
self.assertFalse(context.is_network_segment_range_enabled())
# Test stein release
self.os_release.return_value = 'stein'
self.test_config.set('enable-network-segment-range', True)
self.assertTrue(context.is_network_segment_range_enabled())
self.test_config.set('enable-network-segment-range', False)
self.assertFalse(context.is_network_segment_range_enabled())
class IdentityServiceContext(CharmTestCase):