-
Bug
-
Resolution: Unresolved
-
Normal
-
None
-
rhos-18.0.14 FR 4
-
None
To Reproduce
Apply a config like this using the nmstate provider:
[root@compute-1 ~]# cat /var/tmp/os-net-config_tests/config-vlan.yaml
network_config:
- type: linux_bridge
name: br0
use_dhcp: false
members:
- type: interface
name: nic5
[root@compute-0 ~]# os-net-config -p nmstate -m /var/tmp/os-net-config_tests/mapping.yaml -c /var/tmp/os-net-config_tests/config-vlan.yaml -d --exit-on-validation-errors
...
2025-10-22 11:55:19.458 INFO os_net_config.impl_nmstate._add_common Using NetworkManager, nm_controlled is always true.Deprecating it from next release
2025-10-22 11:55:19.459 ERROR os_net_config.config_provider nmstate: ***Failed to configure network_config ***
'NmstateNetConfig' object has no attribute 'linuxbridge_data'
Traceback (most recent call last):
File "/usr/lib/python3.9/site-packages/os_net_config/cli.py", line 643, in config_provider
provider.add_object(obj)
File "/usr/lib/python3.9/site-packages/os_net_config/__init__.py", line 136, in add_object
self.add_linux_bridge(obj)
File "/usr/lib/python3.9/site-packages/os_net_config/impl_nmstate.py", line 2494, in add_linux_bridge
self.linuxbridge_data[bridge.name] = data
AttributeError: 'NmstateNetConfig' object has no attribute 'linuxbridge_data'
The problem seems to be that there is no support for the Linux bridge in os-net-config for nmstate provider:
ipdb> c
2025-10-22 11:58:57.313 ERROR os_net_config.config_provider nmstate: ***Failed to configure network_config ***
'NmstateNetConfig' object has no attribute 'linuxbridge_data'
Traceback (most recent call last):
File "/usr/lib/python3.9/site-packages/os_net_config/cli.py", line 643, in config_provider
provider.add_object(obj)
File "/usr/lib/python3.9/site-packages/os_net_config/__init__.py", line 136, in add_object
self.add_linux_bridge(obj)
File "/usr/lib/python3.9/site-packages/os_net_config/impl_nmstate.py", line 2495, in add_linux_bridge
self.linuxbridge_data[bridge.name] = data
AttributeError: 'NmstateNetConfig' object has no attribute 'linuxbridge_data'
[root@compute-0 ~]# grep -Rn linuxbridge_data /usr/lib/python3.9/site-packages/os_net_config/impl_nmstate.py
2494: self.linuxbridge_data[bridge.name] = data
If we take a look at the ifcfg implementation we can see that the support for Linux bridge is actually present:
[root@compute-0 ~]# egrep -Hn "linuxbridge|linux_bridge" /usr/lib/python3.9/site-packages/os_net_config/impl_ifcfg.py
/usr/lib/python3.9/site-packages/os_net_config/impl_ifcfg.py:198: self.linuxbridge_data = {}
/usr/lib/python3.9/site-packages/os_net_config/impl_ifcfg.py:608: if base_opt.linux_bridge_name:
/usr/lib/python3.9/site-packages/os_net_config/impl_ifcfg.py:609: data += "BRIDGE=%s\n" % base_opt.linux_bridge_name
/usr/lib/python3.9/site-packages/os_net_config/impl_ifcfg.py:1053: def add_linux_bridge(self, bridge):
/usr/lib/python3.9/site-packages/os_net_config/impl_ifcfg.py:1061: self.linuxbridge_data[bridge.name] = data
/usr/lib/python3.9/site-packages/os_net_config/impl_ifcfg.py:1810: for bridge_name, bridge_data in self.linuxbridge_data.items():
Expected behavior
It should work as it works for ifcfg provider:
[root@compute-1 ~]# os-net-config -p ifcfg -m /var/tmp/os-net-config_tests/mapping.yaml -c /var/tmp/os-net-config_tests/config-vlan.yaml --exit-on-validation-errors -d
...
2025-10-22 11:31:56.144 DEBUG os_net_config.impl_ifcfg.apply enp130s0f2: Calling stop_dhclient_interfaces()
2025-10-22 11:31:56.144 INFO os_net_config.execute running ifup on interface: enp130s0f2
2025-10-22 11:31:56.236 ERROR os_net_config.execute stderr : WARN : [ifup] You are using 'ifup' script provided by 'network-scripts', which are now deprecated.
WARN : [ifup] 'network-scripts' will be removed from distribution in near future.
WARN : [ifup] It is advised to switch to 'NetworkManager' instead - it provides 'ifup/ifdown' scripts as well.
2025-10-22 11:31:56.242 INFO os_net_config.config_provider ifcfg: Successfully configured network_config
2025-10-22 11:31:56.245 INFO os_net_config.main ifcfg: Configured network_config successfully
[root@compute-1 ~]# ip a sh br0
38: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether f8:f2:1e:33:04:e2 brd ff:ff:ff:ff:ff:ff
inet6 fe80::f407:1ff:fe75:16bd/64 scope link
valid_lft forever preferred_lft forever
Bug impact
Big impact for customers who want to configure Linux bridge with os-net-config and nmstate provider.
Known workaround
Remove linux_bridge and configure it manually after os-net-config execution finishes.