Bug 1654987

Summary: os-net-config don't restart vlan when a change append on bond
Product: Red Hat OpenStack Reporter: Cyril Lopez <cylopez>
Component: os-net-configAssignee: Harald Jensås <hjensas>
Status: CLOSED ERRATA QA Contact: Alistair Tonner <atonner>
Severity: urgent Docs Contact:
Priority: high    
Version: 10.0 (Newton)CC: athomas, atonner, bfournie, hbrock, hjensas, jamsmith, jslagle, mburns, pcaruana
Target Milestone: z10Keywords: Triaged, ZStream
Target Release: 10.0 (Newton)Flags: hjensas: needinfo+
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: os-net-config-5.2.3-3.el7ost Doc Type: Bug Fix
Doc Text:
This update ensures that VLAN interfaces are restarted when underlying devices are restarted after a device configuration change, allowing the successful restoration of networks. Prior to this update, a VLAN interface was not restarted when the underlying device was restarted. Network routes using the VLAN interface as the next hop were removed and not restored. With this update, the VLAN interfaces are restarted when the underlying devices are restarted. Network routes are restored.
Story Points: ---
Clone Of:
: 1655765 (view as bug list) Environment:
Last Closed: 2019-01-16 17:09:41 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1655765, 1656074    

Description Cyril Lopez 2018-11-30 09:32:49 UTC
Description of problem:

When a change is needed on bond, os-net-config write the configuration and restart nic and bond. But it will not restart vlan on top of the bond. So all route from vlan are lost. The solution should be on restart of a bond, restart after all related vlan.

Version-Release number of selected component (if applicable):
os-net-config-5.2.3-2.el7ost.noarch

Steps to Reproduce:
1. deploy a network topology with nic in a bond and vlan the bond with static route.
2. change a param on bond in /etc/os-net-config/config.json
3. os-net-config -c /etc/os-net-config/config.json
4. check the route are lost.


Additional info:
Example with vlan1421 on bond0 :

[root@cpt-0-m630v4 ~]# ip r
default via 172.31.151.1 dev vlan1421 <-----------------
10.1.1.2 via 172.31.151.1 dev vlan1421 <-----------------
10.1.1.5 via 172.31.155.1 dev vhost0
11.1.1.2 via 172.31.151.1 dev vlan1421 <-----------------
11.1.1.5 via 172.31.155.1 dev vhost0
169.254.0.1 dev vhost0 proto 109 scope link
169.254.169.254 via 172.31.150.2 dev bond0
172.31.145.0/27 via 172.31.155.1 dev vhost0
172.31.150.0/26 dev bond0 proto kernel scope link src 172.31.150.21
172.31.151.0/27 dev vlan1421 proto kernel scope link src 172.31.151.20
172.31.152.0/27 dev vlan1422 proto kernel scope link src 172.31.152.20
172.31.154.0/27 dev vlan1424 proto kernel scope link src 172.31.154.20
172.31.155.0/27 dev vhost0 proto kernel scope link src 172.31.155.20

Do a change and call os-net-config


[root@cpt-0-m630v4 ~]# os-net-config -c /etc/os-net-config/config.json -d 
[2018/11/30 09:28:46 AM] [INFO] No changes required for linux bond: bond1
[2018/11/30 09:28:46 AM] [INFO] running ifdown on interface: em1
[2018/11/30 09:28:46 AM] [DEBUG] Running cmd (subprocess): /sbin/ifdown em1
[2018/11/30 09:28:47 AM] [DEBUG] CMD "/sbin/ifdown em1" returned: 0 in 0.291s
[2018/11/30 09:28:47 AM] [INFO] running ifdown on interface: p2p1
[2018/11/30 09:28:47 AM] [DEBUG] Running cmd (subprocess): /sbin/ifdown p2p1
[2018/11/30 09:28:47 AM] [DEBUG] CMD "/sbin/ifdown p2p1" returned: 0 in 0.258s
[2018/11/30 09:28:47 AM] [INFO] running ifdown on interface: bond0
[2018/11/30 09:28:47 AM] [DEBUG] Running cmd (subprocess): /sbin/ifdown bond0
[2018/11/30 09:28:47 AM] [DEBUG] CMD "/sbin/ifdown bond0" returned: 0 in 0.409s
[2018/11/30 09:28:47 AM] [INFO] Writing config /etc/sysconfig/network-scripts/route6-bond0
[2018/11/30 09:28:47 AM] [INFO] Writing config /etc/sysconfig/network-scripts/route-bond0
[2018/11/30 09:28:47 AM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-bond0
[2018/11/30 09:28:47 AM] [INFO] running ifup on interface: em1
[2018/11/30 09:28:47 AM] [DEBUG] Running cmd (subprocess): /sbin/ifup em1
[2018/11/30 09:28:48 AM] [DEBUG] CMD "/sbin/ifup em1" returned: 0 in 0.265s
[2018/11/30 09:28:48 AM] [INFO] running ifup on interface: p2p1
[2018/11/30 09:28:48 AM] [DEBUG] Running cmd (subprocess): /sbin/ifup p2p1
[2018/11/30 09:28:48 AM] [DEBUG] CMD "/sbin/ifup p2p1" returned: 0 in 0.268s
[2018/11/30 09:28:48 AM] [INFO] running ifup on interface: bond0
[2018/11/30 09:28:48 AM] [DEBUG] Running cmd (subprocess): /sbin/ifup bond0
[2018/11/30 09:28:52 AM] [DEBUG] CMD "/sbin/ifup bond0" returned: 0 in 4.321s

Here our route on vlan1421 are lost because when bond0 is down, all routes of vlan based on bond0 are lost. VLANs are M-DOWN.

[root@cpt-0-m630v4 ~]# ip r
10.1.1.5 via 172.31.155.1 dev vhost0
11.1.1.5 via 172.31.155.1 dev vhost0
169.254.0.1 dev vhost0 proto 109 scope link
169.254.169.254 via 172.31.150.2 dev bond0
172.31.145.0/27 via 172.31.155.1 dev vhost0
172.31.150.0/26 dev bond0 proto kernel scope link src 172.31.150.21
172.31.151.0/27 dev vlan1421 proto kernel scope link src 172.31.151.20
172.31.152.0/27 dev vlan1422 proto kernel scope link src 172.31.152.20
172.31.154.0/27 dev vlan1424 proto kernel scope link src 172.31.154.20
172.31.155.0/27 dev vhost0 proto kernel scope link src 172.31.155.20

Comment 2 Harald Jensås 2018-11-30 10:12:19 UTC
I wrote a unit test for this, and it confirms vlan is not restarted.


os_net_config/tests/test_impl_ifcfg.py

    def test_restart_vlans_on_bond_change(self):
        self.ifup_interface_names = []
        interface1 = objects.Interface('em1')
        interface2 = objects.Interface('em2')
        bond = objects.LinuxBond('bond0', members=[interface1, interface2])
        vlan = objects.Vlan('bond0', 10)
        self.provider.add_interface(interface1)
        self.provider.add_interface(interface2)
        self.provider.add_linux_bond(bond)
        self.provider.add_vlan(vlan)
        self.provider.apply()
        self.assertIn('bond0', self.ifup_interface_names)
        self.assertIn('em1', self.ifup_interface_names)
        self.assertIn('em2', self.ifup_interface_names)
        self.assertIn('vlan10', self.ifup_interface_names)

        # Change the bond configuration
        self.ifup_interface_names = []
        bond = objects.LinuxBond('bond0', members=[interface1, interface2],
                                 bonding_options='mode=1 miimon=100')
        self.provider.add_linux_bond(bond)
        self.provider.apply()
        self.assertIn('bond0', self.ifup_interface_names)
        self.assertIn('em1', self.ifup_interface_names)
        self.assertIn('em2', self.ifup_interface_names)
        self.assertIn('vlan10', self.ifup_interface_names)



==============================
Failed 1 tests - output below:
==============================

os_net_config.tests.test_impl_ifcfg.TestIfcfgNetConfigApply.test_restart_vlans_on_bond_change
---------------------------------------------------------------------------------------------

Captured pythonlogging:
~~~~~~~~~~~~~~~~~~~~~~~
    Ifcfg net config provider created.
    adding interface: em1
    adding interface: em2
    adding linux bond: bond0
    adding vlan: vlan10
    applying network configs...
    running ifdown on interface: vlan10
    running ifdown on interface: em2
    running ifdown on interface: em1
    running ifdown on interface: bond0
    Writing config /tmp/tmpBxoitC/tmp4kc9fi
    Writing config /tmp/tmpBxoitC/tmptYXvIJ
    running ifup on interface: em2
    running ifup on interface: em1
    running ifup on interface: bond0
    running ifup on interface: vlan10
    adding linux bond: bond0
    applying network configs...
    No changes required for vlan interface: vlan10
    running ifdown on interface: em2
    running ifdown on interface: em1
    running ifdown on interface: bond0
    Writing config /tmp/tmpBxoitC/tmp4kc9fi
    Writing config /tmp/tmpBxoitC/tmptYXvIJ
    running ifup on interface: em2
    running ifup on interface: em1
    running ifup on interface: bond0
    

Captured traceback:
~~~~~~~~~~~~~~~~~~~
    Traceback (most recent call last):
      File "os_net_config/tests/test_impl_ifcfg.py", line 2004, in test_restart_vlans_on_bond_change
        self.assertIn('vlan10', self.ifup_interface_names)
      File "/home/hjensas/code/os-net-config/.tox/py27/lib/python2.7/site-packages/testtools/testcase.py", line 417, in assertIn
        self.assertThat(haystack, Contains(needle), message)
      File "/home/hjensas/code/os-net-config/.tox/py27/lib/python2.7/site-packages/testtools/testcase.py", line 498, in assertThat
        raise mismatch_error
    testtools.matchers._impl.MismatchError: 'vlan10' not in ['em2', 'em1', 'bond0']

Comment 3 Harald Jensås 2018-11-30 12:00:12 UTC
Reproduced using: os-net-config-10.0.1-0.20181122111300.122684c.el7.noarch


[root@os-net-config os-net-config]# cat /etc/os-net-config/config.json
{
    "network_config": [
        {
            "name": "bond0",
            "type": "linux_bond",
            "use_dhcp": false,
            "addresses": [{"ip_netmask": "172.31.170.27/26"}],
            "bonding_options": "mode=1 miimon=100",
            "members": [
                {
                    "type": "interface",
                    "name": "nic2",
                    "primary": true
                },
                {
                    "type": "interface",
                    "name": "nic3"
                }
            ],
            "routes": [{"ip_netmask": "169.254.169.254/32", "next_hop": "172.31.170.2"}],
        },
        {
            "device": "bond0",
            "type": "vlan",
            "vlan_id": 610,
            "addresses": [{"ip_netmask": "172.20.1.10/26"}],
            "routes": [{"ip_netmask": "172.20.1.0/26", "next_hop": "172.20.1.62"}],
        },
        {
            "device": "bond0",
            "vlan_id": 611,
            "type": "vlan",
            "addresses": [{"ip_netmask": "172.20.1.70/26"}],
            "routes": [{"ip_netmask": "172.20.1.0/24", "next_hop": "172.20.1.126"}],
        },
        {
            "device": "bond0",
            "type": "vlan",
            "vlan_id": 612,
            "dns_servers": [
                "192.168.122.1"
            ],
            "addresses": [{"ip_netmask": "172.20.1.200/26"}],
            "routes": [{"ip_netmask": "172.20.1.0/24", "next_hop": "172.20.1.192"}],
        }
    ]
}



[root@os-net-config os-net-config]# os-net-config -c /etc/os-net-config/config.json -v
[2018/11/30 12:56:01 PM] [INFO] Using config file at: /etc/os-net-config/config.json
[2018/11/30 12:56:01 PM] [INFO] Ifcfg net config provider created.
[2018/11/30 12:56:01 PM] [INFO] Not using any mapping file.
[2018/11/30 12:56:01 PM] [INFO] Finding active nics
[2018/11/30 12:56:01 PM] [INFO] eth1 is an embedded active nic
[2018/11/30 12:56:01 PM] [INFO] eth0 is an embedded active nic
[2018/11/30 12:56:01 PM] [INFO] eth2 is an embedded active nic
[2018/11/30 12:56:01 PM] [INFO] lo is not an active nic
[2018/11/30 12:56:01 PM] [INFO] No DPDK mapping available in path (/var/lib/os-net-config/dpdk_mapping.yaml)
[2018/11/30 12:56:01 PM] [INFO] Active nics are ['eth0', 'eth1', 'eth2']
[2018/11/30 12:56:01 PM] [INFO] nic3 mapped to: eth2
[2018/11/30 12:56:01 PM] [INFO] nic2 mapped to: eth1
[2018/11/30 12:56:01 PM] [INFO] nic1 mapped to: eth0
[2018/11/30 12:56:01 PM] [INFO] adding linux bond: bond0
[2018/11/30 12:56:01 PM] [INFO] adding custom route for interface: bond0
[2018/11/30 12:56:01 PM] [INFO] adding interface: eth1
[2018/11/30 12:56:01 PM] [INFO] adding interface: eth2
[2018/11/30 12:56:01 PM] [INFO] adding vlan: vlan610
[2018/11/30 12:56:01 PM] [INFO] adding custom route for interface: vlan610
[2018/11/30 12:56:01 PM] [INFO] adding vlan: vlan611
[2018/11/30 12:56:01 PM] [INFO] adding custom route for interface: vlan611
[2018/11/30 12:56:01 PM] [INFO] adding vlan: vlan612
[2018/11/30 12:56:01 PM] [INFO] adding custom route for interface: vlan612
[2018/11/30 12:56:01 PM] [INFO] applying network configs...
[2018/11/30 12:56:01 PM] [INFO] running ifdown on interface: vlan612
[2018/11/30 12:56:01 PM] [INFO] running ifdown on interface: vlan611
[2018/11/30 12:56:01 PM] [INFO] running ifdown on interface: vlan610
[2018/11/30 12:56:01 PM] [INFO] running ifdown on interface: eth2
[2018/11/30 12:56:01 PM] [INFO] running ifdown on interface: eth1
[2018/11/30 12:56:01 PM] [INFO] running ifdown on interface: bond0
[2018/11/30 12:56:01 PM] [INFO] Writing config /etc/sysconfig/network-scripts/route-vlan612
[2018/11/30 12:56:01 PM] [INFO] Writing config /etc/sysconfig/network-scripts/route-vlan610
[2018/11/30 12:56:01 PM] [INFO] Writing config /etc/sysconfig/network-scripts/route-vlan611
[2018/11/30 12:56:01 PM] [INFO] Writing config /etc/sysconfig/network-scripts/route-bond0
[2018/11/30 12:56:01 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-bond0
[2018/11/30 12:56:01 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-vlan610
[2018/11/30 12:56:01 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-vlan611
[2018/11/30 12:56:01 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-vlan612
[2018/11/30 12:56:01 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-eth2
[2018/11/30 12:56:01 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-eth1
[2018/11/30 12:56:01 PM] [INFO] running ifup on interface: eth2
[2018/11/30 12:56:01 PM] [INFO] running ifup on interface: eth1
[2018/11/30 12:56:01 PM] [INFO] running ifup on interface: bond0
[2018/11/30 12:56:05 PM] [INFO] running ifup on interface: vlan612
[2018/11/30 12:56:09 PM] [INFO] running ifup on interface: vlan611
[2018/11/30 12:56:14 PM] [INFO] running ifup on interface: vlan610


[root@os-net-config os-net-config]# ip r
default via 192.168.122.1 dev eth0 proto static metric 100 
169.254.0.0/16 dev bond0 scope link metric 1005 
169.254.0.0/16 dev vlan612 scope link metric 1006 
169.254.0.0/16 dev vlan611 scope link metric 1007 
169.254.0.0/16 dev vlan610 scope link metric 1008 
169.254.169.254 via 172.31.170.2 dev bond0 
172.20.1.0/26 dev vlan610 proto kernel scope link src 172.20.1.10 
172.20.1.0/24 via 172.20.1.126 dev vlan611 
172.20.1.64/26 dev vlan611 proto kernel scope link src 172.20.1.70 
172.20.1.192/26 dev vlan612 proto kernel scope link src 172.20.1.200 
172.31.170.0/26 dev bond0 proto kernel scope link src 172.31.170.27 
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.98 metric 100 


[root@os-net-config os-net-config]# sed -i s/miimon=100/miimon=111/g /etc/os-net-config/config.json


[root@os-net-config os-net-config]# os-net-config -c /etc/os-net-config/config.json -v
[2018/11/30 12:58:31 PM] [INFO] Using config file at: /etc/os-net-config/config.json
[2018/11/30 12:58:31 PM] [INFO] Ifcfg net config provider created.
[2018/11/30 12:58:31 PM] [INFO] Not using any mapping file.
[2018/11/30 12:58:31 PM] [INFO] Finding active nics
[2018/11/30 12:58:31 PM] [INFO] vlan612 is not an active nic
[2018/11/30 12:58:31 PM] [INFO] vlan611 is not an active nic
[2018/11/30 12:58:31 PM] [INFO] vlan610 is not an active nic
[2018/11/30 12:58:31 PM] [INFO] bond0 is not an active nic
[2018/11/30 12:58:31 PM] [INFO] bonding_masters is not an active nic
[2018/11/30 12:58:31 PM] [INFO] eth1 is an embedded active nic
[2018/11/30 12:58:31 PM] [INFO] eth0 is an embedded active nic
[2018/11/30 12:58:31 PM] [INFO] eth2 is an embedded active nic
[2018/11/30 12:58:31 PM] [INFO] lo is not an active nic
[2018/11/30 12:58:31 PM] [INFO] No DPDK mapping available in path (/var/lib/os-net-config/dpdk_mapping.yaml)
[2018/11/30 12:58:31 PM] [INFO] Active nics are ['eth0', 'eth1', 'eth2']
[2018/11/30 12:58:31 PM] [INFO] nic3 mapped to: eth2
[2018/11/30 12:58:31 PM] [INFO] nic2 mapped to: eth1
[2018/11/30 12:58:31 PM] [INFO] nic1 mapped to: eth0
[2018/11/30 12:58:31 PM] [INFO] adding linux bond: bond0
[2018/11/30 12:58:31 PM] [INFO] adding custom route for interface: bond0
[2018/11/30 12:58:31 PM] [INFO] adding interface: eth1
[2018/11/30 12:58:31 PM] [INFO] adding interface: eth2
[2018/11/30 12:58:31 PM] [INFO] adding vlan: vlan610
[2018/11/30 12:58:31 PM] [INFO] adding custom route for interface: vlan610
[2018/11/30 12:58:31 PM] [INFO] adding vlan: vlan611
[2018/11/30 12:58:31 PM] [INFO] adding custom route for interface: vlan611
[2018/11/30 12:58:31 PM] [INFO] adding vlan: vlan612
[2018/11/30 12:58:31 PM] [INFO] adding custom route for interface: vlan612
[2018/11/30 12:58:31 PM] [INFO] applying network configs...
[2018/11/30 12:58:31 PM] [INFO] No changes required for interface: eth2
[2018/11/30 12:58:31 PM] [INFO] No changes required for interface: eth1
[2018/11/30 12:58:31 PM] [INFO] No changes required for vlan interface: vlan612
[2018/11/30 12:58:31 PM] [INFO] No changes required for vlan interface: vlan611
[2018/11/30 12:58:31 PM] [INFO] No changes required for vlan interface: vlan610
[2018/11/30 12:58:31 PM] [INFO] running ifdown on interface: eth2
[2018/11/30 12:58:31 PM] [INFO] running ifdown on interface: eth1
[2018/11/30 12:58:31 PM] [INFO] running ifdown on interface: bond0
[2018/11/30 12:58:31 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-bond0
[2018/11/30 12:58:31 PM] [INFO] running ifup on interface: eth2
[2018/11/30 12:58:31 PM] [INFO] running ifup on interface: eth1
[2018/11/30 12:58:31 PM] [INFO] running ifup on interface: bond0


[root@os-net-config os-net-config]# ip r
default via 192.168.122.1 dev eth0 proto static metric 100 
169.254.0.0/16 dev bond0 scope link metric 1005 
169.254.169.254 via 172.31.170.2 dev bond0 
172.20.1.0/26 dev vlan610 proto kernel scope link src 172.20.1.10 
172.20.1.64/26 dev vlan611 proto kernel scope link src 172.20.1.70 
172.20.1.192/26 dev vlan612 proto kernel scope link src 172.20.1.200 
172.31.170.0/26 dev bond0 proto kernel scope link src 172.31.170.27 
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.98 metric 100

Comment 5 Harald Jensås 2018-12-01 19:05:42 UTC
Test result in reproducer:
--------------------------

[root@os-net-config ~]# cat /etc/os-net-config/config.json
{
    "network_config": [
        {
            "name": "bond0",
            "type": "linux_bond",
            "use_dhcp": false,
            "bonding_options": "mode=1 miimon=111",
            "members": [
                {
                    "type": "interface",
                    "name": "nic2",
                    "primary": true
                },
                {
                    "type": "interface",
                    "name": "nic3"
                }
            ],
        },
        {
            "device": "bond0",
            "type": "vlan",
            "vlan_id": 610,
            "addresses": [{"ip_netmask": "172.20.1.10/26"}],
            "routes": [{"ip_netmask": "172.20.2.0/26", "next_hop": "172.20.1.62"}],
        },
        {
            "device": "bond0",
            "vlan_id": 611,
            "type": "vlan",
            "addresses": [{"ip_netmask": "172.20.1.70/26"}],
            "routes": [{"ip_netmask": "172.20.2.64/26", "next_hop": "172.20.1.126"}],
        },
        {
            "device": "bond0",
            "type": "vlan",
            "vlan_id": 612,
            "dns_servers": [
                "192.168.122.1"
            ],
            "addresses": [{"ip_netmask": "172.20.1.130/26"}],
            "routes": [{"ip_netmask": "172.20.2.128/26", "next_hop": "172.20.1.190"}],
        }
    ]
}

Initial configuration apply:
----------------------------

[root@os-net-config ~]# os-net-config -c os-net-config -c /etc/os-net-config/config.json -v
[2018/12/01 07:56:26 PM] [INFO] Using config file at: /etc/os-net-config/config.json
[2018/12/01 07:56:26 PM] [INFO] Ifcfg net config provider created.
[2018/12/01 07:56:26 PM] [INFO] Not using any mapping file.
[2018/12/01 07:56:26 PM] [INFO] Finding active nics
[2018/12/01 07:56:26 PM] [INFO] lo is not an active nic
[2018/12/01 07:56:26 PM] [INFO] eth2 is an embedded active nic
[2018/12/01 07:56:26 PM] [INFO] eth0 is an embedded active nic
[2018/12/01 07:56:26 PM] [INFO] eth1 is an embedded active nic
[2018/12/01 07:56:26 PM] [INFO] No DPDK mapping available in path (/var/lib/os-net-config/dpdk_mapping.yaml)
[2018/12/01 07:56:26 PM] [INFO] Active nics are ['eth0', 'eth1', 'eth2']
[2018/12/01 07:56:26 PM] [INFO] nic3 mapped to: eth2
[2018/12/01 07:56:26 PM] [INFO] nic2 mapped to: eth1
[2018/12/01 07:56:26 PM] [INFO] nic1 mapped to: eth0
[2018/12/01 07:56:26 PM] [INFO] adding linux bond: bond0
[2018/12/01 07:56:26 PM] [INFO] adding interface: eth1
[2018/12/01 07:56:26 PM] [INFO] adding interface: eth2
[2018/12/01 07:56:26 PM] [INFO] adding vlan: vlan610
[2018/12/01 07:56:26 PM] [INFO] adding custom route for interface: vlan610
[2018/12/01 07:56:26 PM] [INFO] adding vlan: vlan611
[2018/12/01 07:56:26 PM] [INFO] adding custom route for interface: vlan611
[2018/12/01 07:56:26 PM] [INFO] adding vlan: vlan612
[2018/12/01 07:56:26 PM] [INFO] adding custom route for interface: vlan612
[2018/12/01 07:56:26 PM] [INFO] applying network configs...
[2018/12/01 07:56:26 PM] [INFO] running ifdown on interface: vlan612
[2018/12/01 07:56:26 PM] [INFO] running ifdown on interface: vlan611
[2018/12/01 07:56:26 PM] [INFO] running ifdown on interface: vlan610
[2018/12/01 07:56:26 PM] [INFO] running ifdown on interface: eth2
[2018/12/01 07:56:26 PM] [INFO] running ifdown on interface: eth1
[2018/12/01 07:56:27 PM] [INFO] running ifdown on interface: bond0
[2018/12/01 07:56:27 PM] [INFO] Writing config /etc/sysconfig/network-scripts/route-vlan612
[2018/12/01 07:56:27 PM] [INFO] Writing config /etc/sysconfig/network-scripts/route-vlan610
[2018/12/01 07:56:27 PM] [INFO] Writing config /etc/sysconfig/network-scripts/route-vlan611
[2018/12/01 07:56:27 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-bond0
[2018/12/01 07:56:27 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-vlan610
[2018/12/01 07:56:27 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-vlan611
[2018/12/01 07:56:27 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-vlan612
[2018/12/01 07:56:27 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-eth2
[2018/12/01 07:56:27 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-eth1
[2018/12/01 07:56:27 PM] [INFO] running ifup on interface: eth2
[2018/12/01 07:56:27 PM] [INFO] running ifup on interface: eth1
[2018/12/01 07:56:27 PM] [INFO] running ifup on interface: bond0
[2018/12/01 07:56:27 PM] [INFO] running ifup on interface: vlan612
[2018/12/01 07:56:31 PM] [INFO] running ifup on interface: vlan611
[2018/12/01 07:56:35 PM] [INFO] running ifup on interface: vlan610

Routes are present:
-------------------

[root@os-net-config ~]# ip r
default via 192.168.122.1 dev eth0 proto dhcp metric 100
169.254.0.0/16 dev bond0 scope link metric 1005
169.254.0.0/16 dev vlan612 scope link metric 1006
169.254.0.0/16 dev vlan611 scope link metric 1007
169.254.0.0/16 dev vlan610 scope link metric 1008
172.20.1.0/26 dev vlan610 proto kernel scope link src 172.20.1.10
172.20.1.64/26 dev vlan611 proto kernel scope link src 172.20.1.70
172.20.1.128/26 dev vlan612 proto kernel scope link src 172.20.1.130
172.20.2.0/26 via 172.20.1.62 dev vlan610
172.20.2.64/26 via 172.20.1.126 dev vlan611
172.20.2.128/26 via 172.20.1.190 dev vlan612
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.98 metric 100

Change setting in bond configuration to trigger bond0 restart:
--------------------------------------------------------------

[root@os-net-config ~]# sed -i s/miimon=111/miimon=100/g /etc/os-net-config/config.json

Re-Run os-net-config with changed configuration:
------------------------------------------------

[root@os-net-config ~]# os-net-config -c os-net-config -c /etc/os-net-config/config.json -v
[2018/12/01 07:57:18 PM] [INFO] Using config file at: /etc/os-net-config/config.json
[2018/12/01 07:57:18 PM] [INFO] Ifcfg net config provider created.
[2018/12/01 07:57:18 PM] [INFO] Not using any mapping file.
[2018/12/01 07:57:18 PM] [INFO] Finding active nics
[2018/12/01 07:57:18 PM] [INFO] bond0 is not an active nic
[2018/12/01 07:57:18 PM] [INFO] bonding_masters is not an active nic
[2018/12/01 07:57:18 PM] [INFO] lo is not an active nic
[2018/12/01 07:57:18 PM] [INFO] eth2 is an embedded active nic
[2018/12/01 07:57:18 PM] [INFO] eth0 is an embedded active nic
[2018/12/01 07:57:18 PM] [INFO] eth1 is an embedded active nic
[2018/12/01 07:57:18 PM] [INFO] vlan610 is not an active nic
[2018/12/01 07:57:18 PM] [INFO] vlan611 is not an active nic
[2018/12/01 07:57:18 PM] [INFO] vlan612 is not an active nic
[2018/12/01 07:57:18 PM] [INFO] No DPDK mapping available in path (/var/lib/os-net-config/dpdk_mapping.yaml)
[2018/12/01 07:57:18 PM] [INFO] Active nics are ['eth0', 'eth1', 'eth2']
[2018/12/01 07:57:18 PM] [INFO] nic3 mapped to: eth2
[2018/12/01 07:57:18 PM] [INFO] nic2 mapped to: eth1
[2018/12/01 07:57:18 PM] [INFO] nic1 mapped to: eth0
[2018/12/01 07:57:18 PM] [INFO] adding linux bond: bond0
[2018/12/01 07:57:18 PM] [INFO] adding interface: eth1
[2018/12/01 07:57:18 PM] [INFO] adding interface: eth2
[2018/12/01 07:57:18 PM] [INFO] adding vlan: vlan610
[2018/12/01 07:57:18 PM] [INFO] adding custom route for interface: vlan610
[2018/12/01 07:57:18 PM] [INFO] adding vlan: vlan611
[2018/12/01 07:57:18 PM] [INFO] adding custom route for interface: vlan611
[2018/12/01 07:57:18 PM] [INFO] adding vlan: vlan612
[2018/12/01 07:57:18 PM] [INFO] adding custom route for interface: vlan612
[2018/12/01 07:57:18 PM] [INFO] applying network configs...
[2018/12/01 07:57:18 PM] [INFO] No changes required for interface: eth2
[2018/12/01 07:57:18 PM] [INFO] No changes required for interface: eth1
[2018/12/01 07:57:18 PM] [INFO] running ifdown on interface: vlan612
[2018/12/01 07:57:18 PM] [INFO] running ifdown on interface: vlan611
[2018/12/01 07:57:18 PM] [INFO] running ifdown on interface: vlan610
[2018/12/01 07:57:18 PM] [INFO] running ifdown on interface: eth2
[2018/12/01 07:57:18 PM] [INFO] running ifdown on interface: eth1
[2018/12/01 07:57:19 PM] [INFO] running ifdown on interface: bond0
[2018/12/01 07:57:19 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-vlan610
[2018/12/01 07:57:19 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-vlan611
[2018/12/01 07:57:19 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-vlan612
[2018/12/01 07:57:19 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-bond0
[2018/12/01 07:57:19 PM] [INFO] running ifup on interface: eth2
[2018/12/01 07:57:19 PM] [INFO] running ifup on interface: eth1
[2018/12/01 07:57:19 PM] [INFO] running ifup on interface: bond0
[2018/12/01 07:57:19 PM] [INFO] running ifup on interface: vlan612 <-- Vlan restarted
[2018/12/01 07:57:23 PM] [INFO] running ifup on interface: vlan611 <-- Vlan restarted
[2018/12/01 07:57:28 PM] [INFO] running ifup on interface: vlan610 <-- Vlan restarted

Routes are present after change of bond0 config:
------------------------------------------------

[root@os-net-config ~]# ip r
default via 192.168.122.1 dev eth0 proto dhcp metric 100
169.254.0.0/16 dev bond0 scope link metric 1005
169.254.0.0/16 dev vlan612 scope link metric 1009
169.254.0.0/16 dev vlan611 scope link metric 1010
169.254.0.0/16 dev vlan610 scope link metric 1011
172.20.1.0/26 dev vlan610 proto kernel scope link src 172.20.1.10
172.20.1.64/26 dev vlan611 proto kernel scope link src 172.20.1.70
172.20.1.128/26 dev vlan612 proto kernel scope link src 172.20.1.130
172.20.2.0/26 via 172.20.1.62 dev vlan610 <-- Route still present
172.20.2.64/26 via 172.20.1.126 dev vlan611 <-- Route still present
172.20.2.128/26 via 172.20.1.190 dev vlan612 <-- Route still present
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.98 metric 100

Comment 14 Alistair Tonner 2019-01-08 18:15:13 UTC
Verified 
environment:
root@controller-0 ~]# rpm -q os-net-config
os-net-config-5.2.3-3.el7ost.noarch

Changed bridge config in config json and applied -:

os-net-config -v -c /etc/os-net-config/config.json #verbosely applying new config
[2019/01/08 05:59:31 PM] [INFO] Using config file at: /etc/os-net-config/config.json
[2019/01/08 05:59:31 PM] [INFO] Using mapping file at: /etc/os-net-config/mapping.yaml
[2019/01/08 05:59:31 PM] [INFO] Ifcfg net config provider created.
[2019/01/08 05:59:31 PM] [INFO] nic3 mapped to: eth2
[2019/01/08 05:59:31 PM] [INFO] nic2 mapped to: eth1
[2019/01/08 05:59:31 PM] [INFO] nic1 mapped to: eth0
[2019/01/08 05:59:31 PM] [INFO] adding interface: eth0
[2019/01/08 05:59:31 PM] [INFO] adding custom route for interface: eth0
[2019/01/08 05:59:31 PM] [INFO] adding bridge: br-isolated
[2019/01/08 05:59:31 PM] [INFO] adding interface: eth1
[2019/01/08 05:59:31 PM] [INFO] adding vlan: vlan20
[2019/01/08 05:59:31 PM] [INFO] adding custom route for interface: vlan20
[2019/01/08 05:59:31 PM] [INFO] adding vlan: vlan30
[2019/01/08 05:59:31 PM] [INFO] adding vlan: vlan40
[2019/01/08 05:59:31 PM] [INFO] adding vlan: vlan50
[2019/01/08 05:59:31 PM] [INFO] adding bridge: br-ex
[2019/01/08 05:59:31 PM] [INFO] adding custom route for interface: br-ex
[2019/01/08 05:59:31 PM] [INFO] adding interface: eth2
[2019/01/08 05:59:31 PM] [INFO] applying network configs...
[2019/01/08 05:59:31 PM] [INFO] No changes required for interface: eth2
[2019/01/08 05:59:31 PM] [INFO] No changes required for interface: eth1
[2019/01/08 05:59:31 PM] [INFO] No changes required for interface: eth0
[2019/01/08 05:59:31 PM] [INFO] No changes required for bridge: br-ex
[2019/01/08 05:59:31 PM] [INFO] No changes required for vlan interface: vlan20
[2019/01/08 05:59:31 PM] [INFO] No changes required for vlan interface: vlan30
[2019/01/08 05:59:31 PM] [INFO] No changes required for vlan interface: vlan40
[2019/01/08 05:59:31 PM] [INFO] No changes required for vlan interface: vlan50
[2019/01/08 05:59:31 PM] [INFO] running ifdown on interface: vlan50
[2019/01/08 05:59:32 PM] [INFO] running ifdown on interface: vlan20
[2019/01/08 05:59:32 PM] [INFO] running ifdown on interface: vlan30
[2019/01/08 05:59:32 PM] [INFO] running ifdown on interface: vlan40
[2019/01/08 05:59:32 PM] [INFO] running ifdown on interface: eth1
[2019/01/08 05:59:32 PM] [INFO] running ifdown on bridge: br-isolated
[2019/01/08 05:59:33 PM] [INFO] Writing config /etc/sysconfig/network-scripts/route-br-isolated
[2019/01/08 05:59:33 PM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-br-isolated
[2019/01/08 05:59:33 PM] [INFO] Writing config /etc/sysconfig/network-scripts/route6-br-isolated
[2019/01/08 05:59:33 PM] [INFO] running ifup on bridge: br-isolated
[2019/01/08 05:59:33 PM] [INFO] running ifup on interface: vlan50
[2019/01/08 05:59:37 PM] [INFO] running ifup on interface: vlan20
[2019/01/08 05:59:41 PM] [INFO] running ifup on interface: vlan30
[2019/01/08 05:59:46 PM] [INFO] running ifup on interface: vlan40
[2019/01/08 05:59:50 PM] [INFO] running ifup on interface: eth1


   Vlans restarted successfully.

Comment 16 errata-xmlrpc 2019-01-16 17:09:41 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2019:0055