Comment 1 for bug 1806027

Revision history for this message
Harald Jensås (harald-jensas) wrote :

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