Description of problem: During 'add host' by engine, vdsm-engine connectivity is lost when ovirtmgmt is built over iface whose ipv6 address was assigned by dhcpv6. vdsm reproduces the behaviour by which the ipv6 on the iface was assigned when creating the bridge: it assigns the ivp6 address of the bridge from dhcpv6. Therefore a different ipv6 address is assigned to ovirtmgmt than was on the original iface. This causes loss of connectivity to engine, on which adding the host was performed with the initial ipv6 address. vdsm reproduces this behaviour because during add host, it sends a 'getCaps' to engine which has dhcpv6=true from the original iface, and receives a setupNetworks request which copies the same behaviour: dhcpv6=true Version-Release number of selected component (if applicable): vdsm-4.30.0-166.git9fe9abd.el7.centos.x86_64 (NetworkManager-1.8.0-11.el7_4.x86_64) How reproducible: 100% Steps to Reproduce: 1. create ifcfg-eth0: TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes (can be 'no' - does not matter for this bug) IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy (can be 'eui64' - does not matter for this bug) NAME=eth0 ONBOOT=yes DHCPV6C=yes 2. ifdown eth0 && ifup eth0 3. verify correct ipv6.method: # nmcli con show eth0 | grep ipv6.method --> should be 'auto' (or 'dhcp' if IPV6_AUTOCONF=no) 4. on the host verify getCaps has dhcpv6="true" 5. record ipv6 address on eth0 for later comparison 6. on the host where vdsm is running, prepare file "myfile.json" containing: { "networks": { "ovirtmgmt": { "ipv6autoconf": "true", "nic": "eth0", "mtu": "1500", "switch": "legacy", "dhcpv6": "true", "STP": "no", "bridged": "true", "defaultRoute": "true", "bootproto": "dhcp" } }, "bondings": { }, "options": { "connectivityCheck": "false" } } 7. on the host run: # vdsm-client -f myfile.json Host setupNetworks Actual results: after setupNetworks completes ovirtmgmt has a different ipv6 address than was on eth0 before setupNetworks. Expected results: ovirtmgmt should have the same ipv6 address as was on eth0 before setupNetworks. Additional info: Running add host from engine should yield a similar actual result, but because the connectivity check issued by engine fails, vdsm destroy ovirtmgmt, and the actual result can not be verified.
In steps to reproduce, add step: 8. observe that there is a dhclient -6 process on ovirtmgmt. e.g. #ps -elf | grep dhclient /sbin/dhclient -6 -1 -lf /var/lib/dhclient/dhclient6--ovirtmgmt.lease -pf /var/run/dhclient6-ovirtmgmt.pid ovirtmgmt -H myhostname
We are only supporting static IPv6 for now,