Proposed fix: https://review.openstack.org/621298 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