From d5e0b9cf3045ded5b5d714e4182b795876c39bec Mon Sep 17 00:00:00 2001 From: Packit Service Date: Dec 15 2020 18:05:09 +0000 Subject: Apply patch BZ_1887349-Allow-duplicate-iface-name-in-ovs.patch patch_name: BZ_1887349-Allow-duplicate-iface-name-in-ovs.patch present_in_specfile: true location_in_specfile: 9 --- diff --git a/libnmstate/nm/bridge.py b/libnmstate/nm/bridge.py index b885f7a..0ca6c2d 100644 --- a/libnmstate/nm/bridge.py +++ b/libnmstate/nm/bridge.py @@ -260,9 +260,9 @@ def _get_slave_profiles_by_name(master_device): for dev in master_device.get_slaves(): active_con = connection.get_device_active_connection(dev) if active_con: - slaves_profiles_by_name[ - dev.get_iface() - ] = active_con.props.connection + profile = active_con.props.connection + if profile: + slaves_profiles_by_name[dev.get_iface()] = profile return slaves_profiles_by_name diff --git a/libnmstate/nm/ovs.py b/libnmstate/nm/ovs.py index 2518773..d1f26ba 100644 --- a/libnmstate/nm/ovs.py +++ b/libnmstate/nm/ovs.py @@ -140,7 +140,12 @@ def get_port_by_slave(nmdev): def get_ovs_info(context, bridge_device, devices_info): - port_profiles = _get_slave_profiles(bridge_device, devices_info) + ovs_ports_info = ( + info + for info in devices_info + if is_ovs_port_type_id(info[1]["type_id"]) + ) + port_profiles = _get_slave_profiles(bridge_device, ovs_ports_info) ports = _get_bridge_ports_info(context, port_profiles, devices_info) options = _get_bridge_options(context, bridge_device) @@ -203,8 +208,21 @@ def _get_bridge_port_info(context, port_profile, devices_info): vlan_mode = port_setting.props.vlan_mode port_name = port_profile.get_interface_name() - port_device = context.get_nm_dev(port_name) - port_slave_profiles = _get_slave_profiles(port_device, devices_info) + port_device = next( + dev + for dev, devinfo in devices_info + if devinfo["name"] == port_name + and is_ovs_port_type_id(devinfo["type_id"]) + ) + devices_info_excluding_bridges_and_ports = ( + info + for info in devices_info + if not is_ovs_bridge_type_id(info[1]["type_id"]) + and not is_ovs_port_type_id(info[1]["type_id"]) + ) + port_slave_profiles = _get_slave_profiles( + port_device, devices_info_excluding_bridges_and_ports + ) port_slave_names = [c.get_interface_name() for c in port_slave_profiles] if port_slave_names: @@ -279,5 +297,7 @@ def _get_slave_profiles(master_device, devices_info): if active_con: master = active_con.props.master if master and (master.get_iface() == master_device.get_iface()): - slave_profiles.append(active_con.props.connection) + profile = active_con.props.connection + if profile: + slave_profiles.append(profile) return slave_profiles