MOS7 with MU3
1)Create env with hardware nodes(in this case it's DL180 G9s)
2)Assign networks to interfaces
3)Start deployment
Actual results:
Deployment stuck, because hardware servers never come back after deployment. This is because eth NIC for admin network renamed by udev in wrong way.
Here is file generated by fuel-agent:
root@node-47:~# cat /etc/udev/rules.d/70-persistent-net.rules
# Generated by fuel-agent during provisioning: BEGIN
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="8c:dc:d4:02:17:78", ATTR{type}=="1", KERNEL="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="50:65:f3:6c:45:78", ATTR{type}=="1", KERNEL="eth*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="8c:dc:d4:02:17:7c", ATTR{type}=="1", KERNEL="eth*", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="50:65:f3:6c:45:79", ATTR{type}=="1", KERNEL="eth*", NAME="eth3"
# Generated by fuel-agent during provisioning: END
Problem here is that when udev first time rename interface to something like eth1->rename2. The next rename is not works, because it doesn't match KERNLER='eth*' rule.
It can be resolved really easy, we just need to delete KERNEL="eth*", from rule definition. Below is fixed file, that did the trick
root@node-47:~# cat /etc/udev/rules.d/70-persistent-net.rules
# Generated by fuel-agent during provisioning: BEGIN
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="8c:dc:d4:02:17:78", ATTR{type}=="1", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="50:65:f3:6c:45:78", ATTR{type}=="1", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="8c:dc:d4:02:17:7c", ATTR{type}=="1", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="50:65:f3:6c:45:79", ATTR{type}=="1", NAME="eth3"
# Generated by fuel-agent during provisioning: END
The same system was able to correctly rename interfaces:
[ 56.442750] systemd-udevd[6750]: renamed network interface eth1 to rename3
[ 56.510752] systemd-udevd[6799]: renamed network interface eth2 to eth1
[ 56.554635] systemd-udevd[6750]: renamed network interface rename3 to eth2
Steps to reproduce:
MOS7 with MU3
1)Create env with hardware nodes(in this case it's DL180 G9s)
2)Assign networks to interfaces
3)Start deployment
Actual results:
Deployment stuck, because hardware servers never come back after deployment. This is because eth NIC for admin network renamed by udev in wrong way.
Here is file generated by fuel-agent:
root@node-47:~# cat /etc/udev/ rules.d/ 70-persistent- net.rules =="8c:dc: d4:02:17: 78", ATTR{type}=="1", KERNEL="eth*", NAME="eth0" =="50:65: f3:6c:45: 78", ATTR{type}=="1", KERNEL="eth*", NAME="eth1" =="8c:dc: d4:02:17: 7c", ATTR{type}=="1", KERNEL="eth*", NAME="eth2" =="50:65: f3:6c:45: 79", ATTR{type}=="1", KERNEL="eth*", NAME="eth3"
# Generated by fuel-agent during provisioning: BEGIN
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}
# Generated by fuel-agent during provisioning: END
Problem here is that when udev first time rename interface to something like eth1->rename2. The next rename is not works, because it doesn't match KERNLER='eth*' rule.
It can be resolved really easy, we just need to delete KERNEL="eth*", from rule definition. Below is fixed file, that did the trick rules.d/ 70-persistent- net.rules =="8c:dc: d4:02:17: 78", ATTR{type}=="1", NAME="eth0" =="50:65: f3:6c:45: 78", ATTR{type}=="1", NAME="eth1" =="8c:dc: d4:02:17: 7c", ATTR{type}=="1", NAME="eth2" =="50:65: f3:6c:45: 79", ATTR{type}=="1", NAME="eth3"
root@node-47:~# cat /etc/udev/
# Generated by fuel-agent during provisioning: BEGIN
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}
# Generated by fuel-agent during provisioning: END
The same system was able to correctly rename interfaces: udevd[6750] : renamed network interface eth1 to rename3 udevd[6799] : renamed network interface eth2 to eth1 udevd[6750] : renamed network interface rename3 to eth2
[ 56.442750] systemd-
[ 56.510752] systemd-
[ 56.554635] systemd-
The buggy code is here: https:/ /github. com/openstack/ fuel-agent/ blob/master/ fuel_agent/ manager. py#L920- L923
Expected result:
Deployment should finish successfully.
lspic output:
05:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
05:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
0c:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM57810 10 Gigabit Ethernet (rev 10)
0c:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM57810 10 Gigabit Ethernet (rev 10)