Uploaded image for project: 'Red Hat OpenStack Services on OpenShift'
  1. Red Hat OpenStack Services on OpenShift
  2. OSPRH-21154

[os-net-config][nmstate] Missing support for linux_bridge

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Normal Normal
    • None
    • rhos-18.0.14 FR 4
    • os-net-config
    • None
    • False
    • Hide

      None

      Show
      None
    • False
    • ?
    • rhos-connectivity-nfv
    • None
    • Critical

      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.

              vcandapp@redhat.com Vijayalakshmi Candappa
              rdiazcam@redhat.com Ricardo Diaz Campos
              rhos-dfg-nfv
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

                Created:
                Updated: