diff --git a/python/neutron-understack/neutron_understack/config.py b/python/neutron-understack/neutron_understack/config.py index 0c2484060..5ac50b65d 100644 --- a/python/neutron-understack/neutron_understack/config.py +++ b/python/neutron-understack/neutron_understack/config.py @@ -1,13 +1,5 @@ from oslo_config import cfg -type_understack_opts = [ - cfg.StrOpt( - "provisioning_network", - help="provisioning_network ID as configured in ironic.conf", - default="change_me", - ), -] - mech_understack_opts = [ cfg.StrOpt( "nb_url", @@ -115,10 +107,6 @@ ] -def register_ml2_type_understack_opts(config): - config.register_opts(type_understack_opts, "ml2_type_understack") - - def register_ml2_understack_opts(config): config.register_opts(mech_understack_opts, "ml2_understack") diff --git a/python/neutron-understack/neutron_understack/neutron_understack_mech.py b/python/neutron-understack/neutron_understack/neutron_understack_mech.py index fb6cec593..d7ce95ce9 100644 --- a/python/neutron-understack/neutron_understack/neutron_understack_mech.py +++ b/python/neutron-understack/neutron_understack/neutron_understack_mech.py @@ -22,9 +22,6 @@ LOG = logging.getLogger(__name__) -config.register_ml2_type_understack_opts(cfg.CONF) -config.register_ml2_understack_opts(cfg.CONF) - SUPPORTED_VNIC_TYPES = [portbindings.VNIC_BAREMETAL, portbindings.VNIC_NORMAL] @@ -38,6 +35,7 @@ def connectivity(self): # type: ignore return portbindings.CONNECTIVITY_L2 def initialize(self): + config.register_ml2_understack_opts(cfg.CONF) conf = cfg.CONF.ml2_understack self.undersync = Undersync(conf.undersync_token, conf.undersync_url) self.ironic_client = IronicClient() @@ -296,8 +294,4 @@ def check_vlan_transparency(self, context): def is_provisioning_network(network_id: str) -> bool: - provisioning_network = ( - cfg.CONF.ml2_understack.provisioning_network - or cfg.CONF.ml2_type_understack.provisioning_network - ) - return network_id == provisioning_network + return network_id == cfg.CONF.ml2_understack.provisioning_network diff --git a/python/neutron-understack/neutron_understack/tests/conftest.py b/python/neutron-understack/neutron_understack/tests/conftest.py index 18b5cea41..5e336e6f5 100644 --- a/python/neutron-understack/neutron_understack/tests/conftest.py +++ b/python/neutron-understack/neutron_understack/tests/conftest.py @@ -22,7 +22,9 @@ from neutron_lib import constants as p_const from neutron_lib.api.definitions import portbindings from neutron_lib.callbacks.events import DBEventPayload +from oslo_config import fixture as config_fixture +from neutron_understack import config as understack_config from neutron_understack.ironic import IronicClient from neutron_understack.neutron_understack_mech import UnderstackDriver from neutron_understack.tests.helpers import Ml2PluginNoInit @@ -276,7 +278,7 @@ def ironic_client(mocker) -> IronicClient: @pytest.fixture -def understack_driver(ironic_client) -> UnderstackDriver: +def understack_driver(oslo_config, ironic_client) -> UnderstackDriver: driver = UnderstackDriver() driver.undersync = Undersync("auth_token", "api_url") driver.ironic_client = ironic_client @@ -341,18 +343,29 @@ def port_db_payload(network) -> DBEventPayload: @pytest.fixture -def ml2_understack_conf(mocker, ucvni_group_id) -> None: - mocker.patch( - "neutron_understack.neutron_understack_mech.cfg.CONF.ml2_understack.ucvni_group", - str(ucvni_group_id), +def oslo_config(): + """CONF from oslo_config is global but we need to override it sometimes.""" + conf_fixture = config_fixture.Config() + conf_fixture.setUp() + # register the ml2_understack options + understack_config.register_ml2_understack_opts(conf_fixture.conf) + yield conf_fixture + conf_fixture.cleanUp() + + +@pytest.fixture +def ml2_understack_conf(oslo_config, ucvni_group_id) -> None: + oslo_config.config( + ucvni_group=str(ucvni_group_id), + group="ml2_understack", ) - mocker.patch( - "neutron_understack.neutron_understack_mech.cfg.CONF.ml2_understack.network_node_switchport_uuid", - "a27f7260-a7c5-4f0c-ac70-6258b026d368", + oslo_config.config( + network_node_switchport_uuid="a27f7260-a7c5-4f0c-ac70-6258b026d368", + group="ml2_understack", ) - mocker.patch( - "neutron_understack.neutron_understack_mech.cfg.CONF.ml2_understack.undersync_dry_run", - False, + oslo_config.config( + undersync_dry_run=False, + group="ml2_understack", ) diff --git a/python/neutron-understack/neutron_understack/tests/test_trunk.py b/python/neutron-understack/neutron_understack/tests/test_trunk.py index c3b5d1ed0..9540f6e5d 100644 --- a/python/neutron-understack/neutron_understack/tests/test_trunk.py +++ b/python/neutron-understack/neutron_understack/tests/test_trunk.py @@ -336,14 +336,23 @@ class TestCheckSubportsSegmentationId: def test_when_trunk_id_is_network_node_trunk_id( self, mocker, + oslo_config, understack_trunk_driver, trunk_id, ): - mocker.patch( - "oslo_config.cfg.CONF.ml2_understack.network_node_trunk_uuid", - trunk_id, + oslo_config.config( + network_node_trunk_uuid=str(trunk_id), + group="ml2_understack", + ) + # Mock to ensure the function returns early and doesn't call this + allowed_ranges_mock = mocker.patch( + "neutron_understack.utils.allowed_tenant_vlan_id_ranges" + ) + result = understack_trunk_driver._check_subports_segmentation_id( + [], str(trunk_id) ) - result = understack_trunk_driver._check_subports_segmentation_id([], trunk_id) + # Should not call allowed_tenant_vlan_id_ranges because it returns early + allowed_ranges_mock.assert_not_called() assert result is None def test_when_segmentation_id_is_in_allowed_range( diff --git a/python/neutron-understack/neutron_understack/tests/test_utils.py b/python/neutron-understack/neutron_understack/tests/test_utils.py index 58e028493..711a2ec52 100644 --- a/python/neutron-understack/neutron_understack/tests/test_utils.py +++ b/python/neutron-understack/neutron_understack/tests/test_utils.py @@ -189,10 +189,11 @@ class TestAllowedTenantVlanIdRanges: def test_multiple_non_overlapping_ranges( self, mocker, + oslo_config, ): - mocker.patch( - "oslo_config.cfg.CONF.ml2_understack.default_tenant_vlan_id_range", - [1, 2000], + oslo_config.config( + default_tenant_vlan_id_range=[1, 2000], + group="ml2_understack", ) mocker.patch( "neutron_understack.utils.fetch_vlan_network_segment_ranges", @@ -205,10 +206,11 @@ def test_multiple_non_overlapping_ranges( def test_multiple_overlapping_ranges( self, mocker, + oslo_config, ): - mocker.patch( - "oslo_config.cfg.CONF.ml2_understack.default_tenant_vlan_id_range", - [1, 2000], + oslo_config.config( + default_tenant_vlan_id_range=[1, 2000], + group="ml2_understack", ) mocker.patch( "neutron_understack.utils.fetch_vlan_network_segment_ranges", @@ -221,10 +223,11 @@ def test_multiple_overlapping_ranges( def test_single_range( self, mocker, + oslo_config, ): - mocker.patch( - "oslo_config.cfg.CONF.ml2_understack.default_tenant_vlan_id_range", - [1, 2000], + oslo_config.config( + default_tenant_vlan_id_range=[1, 2000], + group="ml2_understack", ) mocker.patch( "neutron_understack.utils.fetch_vlan_network_segment_ranges",