Activity log for bug #1657940

Date Who What changed Old value New value Message
2017-01-20 02:00:57 Scott Moser bug added bug
2017-01-24 14:32:33 Scott Moser cloud-init: status New Confirmed
2017-01-24 14:32:35 Scott Moser cloud-init: importance Undecided High
2017-01-25 21:48:41 Launchpad Janitor merge proposal linked https://code.launchpad.net/~raharper/cloud-init/+git/cloud-init/+merge/315633
2017-01-25 23:12:48 Jon Grimm cloud-init: assignee Ryan Harper (raharper)
2017-01-25 23:13:08 Jon Grimm cloud-init: status Confirmed In Progress
2017-01-28 01:25:17 Scott Moser cloud-init: status In Progress Fix Committed
2017-01-28 01:25:26 Scott Moser bug task added cloud-init (Ubuntu)
2017-01-28 01:25:35 Scott Moser cloud-init (Ubuntu): status New Fix Committed
2017-01-28 01:25:42 Scott Moser cloud-init (Ubuntu): status Fix Committed Confirmed
2017-01-28 01:25:44 Scott Moser cloud-init (Ubuntu): importance Undecided Medium
2017-02-04 03:49:52 Launchpad Janitor cloud-init (Ubuntu): status Confirmed Fix Released
2017-03-03 07:22:17 Scott Moser nominated for series Ubuntu Yakkety
2017-03-03 07:22:17 Scott Moser bug task added cloud-init (Ubuntu Yakkety)
2017-03-03 07:22:17 Scott Moser nominated for series Ubuntu Xenial
2017-03-03 07:22:17 Scott Moser bug task added cloud-init (Ubuntu Xenial)
2017-03-03 07:22:24 Scott Moser cloud-init (Ubuntu Xenial): status New Incomplete
2017-03-03 07:22:27 Scott Moser cloud-init (Ubuntu Yakkety): status New Confirmed
2017-03-03 07:22:30 Scott Moser cloud-init (Ubuntu Xenial): status Incomplete Confirmed
2017-03-03 07:22:33 Scott Moser cloud-init (Ubuntu Xenial): importance Undecided Medium
2017-03-03 07:22:35 Scott Moser cloud-init (Ubuntu Yakkety): importance Undecided Medium
2017-03-03 17:16:28 Scott Moser description Currently, a config like this: | version: 1 | config: | - 'type': 'physical' | 'name': 'iface0' | 'subnets': | - {'type': 'dhcp4'} | - {'type': 'dhcp6'} Will render: | auto lo | iface lo inet loopback | | auto iface0 | iface iface0 inet dhcp | post-up ifup iface0:1 | | | auto iface0:1 | iface iface0:1 inet6 dhcp Below is an example test case that shows the output. Heres the problem: $ sudo sh -c 'ifdown eth0; ifup eth0' $ sudo sh -c 'ifdown eth0; ifup eth0' Killed old client process Internet Systems Consortium DHCP Client 4.3.3 Copyright 2004-2015 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth0/06:b3:0a:3a:2d:e3 Sending on LPF/eth0/06:b3:0a:3a:2d:e3 Sending on Socket/fallback DHCPRELEASE on eth0 to 172.31.16.1 port 67 (xid=0x32b625f1) Internet Systems Consortium DHCP Client 4.3.3 Copyright 2004-2015 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth0/06:b3:0a:3a:2d:e3 Sending on LPF/eth0/06:b3:0a:3a:2d:e3 Sending on Socket/fallback DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0xa4d5f301) DHCPREQUEST of 172.31.29.161 on eth0 to 255.255.255.255 port 67 (xid=0x1f3d5a4) DHCPOFFER of 172.31.29.161 from 172.31.16.1 DHCPACK of 172.31.29.161 from 172.31.16.1 bound to 172.31.29.161 -- renewal in 1801 seconds. Failed to bring up eth0:1. Failed to bring up eth0. $ sudo ifup -v eth0:1 Parsing file /etc/network/interfaces.d/50-cloud-init.cfg Parsing file /etc/network/interfaces.d/60-ipv6.cfg Configuring interface eth0:1=eth0:1 (inet6) /bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d run-parts: executing /etc/network/if-pre-up.d/ethtool run-parts: executing /etc/network/if-pre-up.d/ifenslave + [ inet6 = meta ] + IF_BOND_SLAVES= + [ ] + [ ] + [ -z ] + exit run-parts: executing /etc/network/if-pre-up.d/vlan /sbin/modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure. /sbin/sysctl -q -e -w net.ipv6.conf.eth0:1.accept_ra=1 /bin/ip link set dev eth0:1 up /lib/ifupdown/wait-for-ll6.sh /sbin/dhclient -1 -6 -pf /run/dhclient6.eth0:1.pid -lf /var/lib/dhcp/dhclient6.eth0:1.leases -I -df /var/lib/dhcp/dhclient.eth0:1.leases eth0:1 --- a/tests/unittests/test_net.py +++ b/tests/unittests/test_net.py @@ -813,6 +813,27 @@ class TestEniRoundTrip(TestCase): self.assertEqual( expected, [line for line in found if line]) + def test_dhcp4_and_dhcp6(self): + conf = yaml.load(textwrap.dedent("""\ + version: 1 + config: + - 'type': 'physical' + 'name': 'iface0' + 'subnets': + - {'type': 'dhcp4'} + - {'type': 'dhcp6'} + """)) + + #conf = [ + # {'type': 'physical', 'name': 'iface0', + # 'subnets': [ + # {'type': 'dhcp4'}, + # {'type': 'dhcp6'}, + # ]}, + #] + files = self._render_and_read(network_config=conf) + raise Exception(files['/etc/network/interfaces']) + === Begin SRU Template === [Impact] cloud-init rendered ENI (/etc/network/interfaces) configuration using "aliases" (eth0:1). That fails in some scenarios to bring up all interfaces on boot. Most specifically problematic is dhcp with ipv4 and dhcp with ipv6. In that case ipv6 dhcp just would not come up on boot. [Test Case] There are unit tests to verify that the new network configuration is written as expected. Additionally, this is now using the same ENI rendering format that curtin uses, which has good test cases in its 'vmtest'. [Regression Potential] Users who had done: ifup eth0:1 will no longer be able to do that. However now this will reliably work: ifup eth0 to bring up all ip addresses on eth0. === End SRU Template === Currently, a config like this: | version: 1 | config: | - 'type': 'physical' | 'name': 'iface0' | 'subnets': | - {'type': 'dhcp4'} | - {'type': 'dhcp6'} Will render: | auto lo | iface lo inet loopback | | auto iface0 | iface iface0 inet dhcp | post-up ifup iface0:1 | | | auto iface0:1 | iface iface0:1 inet6 dhcp Below is an example test case that shows the output. Heres the problem: $ sudo sh -c 'ifdown eth0; ifup eth0' $ sudo sh -c 'ifdown eth0; ifup eth0' Killed old client process Internet Systems Consortium DHCP Client 4.3.3 Copyright 2004-2015 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth0/06:b3:0a:3a:2d:e3 Sending on LPF/eth0/06:b3:0a:3a:2d:e3 Sending on Socket/fallback DHCPRELEASE on eth0 to 172.31.16.1 port 67 (xid=0x32b625f1) Internet Systems Consortium DHCP Client 4.3.3 Copyright 2004-2015 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth0/06:b3:0a:3a:2d:e3 Sending on LPF/eth0/06:b3:0a:3a:2d:e3 Sending on Socket/fallback DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0xa4d5f301) DHCPREQUEST of 172.31.29.161 on eth0 to 255.255.255.255 port 67 (xid=0x1f3d5a4) DHCPOFFER of 172.31.29.161 from 172.31.16.1 DHCPACK of 172.31.29.161 from 172.31.16.1 bound to 172.31.29.161 -- renewal in 1801 seconds. Failed to bring up eth0:1. Failed to bring up eth0. $ sudo ifup -v eth0:1 Parsing file /etc/network/interfaces.d/50-cloud-init.cfg Parsing file /etc/network/interfaces.d/60-ipv6.cfg Configuring interface eth0:1=eth0:1 (inet6) /bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d run-parts: executing /etc/network/if-pre-up.d/ethtool run-parts: executing /etc/network/if-pre-up.d/ifenslave + [ inet6 = meta ] + IF_BOND_SLAVES= + [ ] + [ ] + [ -z ] + exit run-parts: executing /etc/network/if-pre-up.d/vlan /sbin/modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure. /sbin/sysctl -q -e -w net.ipv6.conf.eth0:1.accept_ra=1 /bin/ip link set dev eth0:1 up /lib/ifupdown/wait-for-ll6.sh /sbin/dhclient -1 -6 -pf /run/dhclient6.eth0:1.pid -lf /var/lib/dhcp/dhclient6.eth0:1.leases -I -df /var/lib/dhcp/dhclient.eth0:1.leases eth0:1 --- a/tests/unittests/test_net.py +++ b/tests/unittests/test_net.py @@ -813,6 +813,27 @@ class TestEniRoundTrip(TestCase):          self.assertEqual(              expected, [line for line in found if line]) + def test_dhcp4_and_dhcp6(self): + conf = yaml.load(textwrap.dedent("""\ + version: 1 + config: + - 'type': 'physical' + 'name': 'iface0' + 'subnets': + - {'type': 'dhcp4'} + - {'type': 'dhcp6'} + """)) + + #conf = [ + # {'type': 'physical', 'name': 'iface0', + # 'subnets': [ + # {'type': 'dhcp4'}, + # {'type': 'dhcp6'}, + # ]}, + #] + files = self._render_and_read(network_config=conf) + raise Exception(files['/etc/network/interfaces']) +
2017-03-07 23:25:12 Chris Halse Rogers cloud-init (Ubuntu Xenial): status Confirmed Fix Committed
2017-03-07 23:25:16 Chris Halse Rogers bug added subscriber Ubuntu Stable Release Updates Team
2017-03-07 23:25:26 Chris Halse Rogers bug added subscriber SRU Verification
2017-03-07 23:25:31 Chris Halse Rogers tags verification-needed
2017-03-07 23:33:45 Chris Halse Rogers cloud-init (Ubuntu Yakkety): status Confirmed Fix Committed
2017-03-08 20:49:12 Scott Moser tags verification-needed verification-done-xenial verification-done-yakkety
2017-03-16 16:18:49 Launchpad Janitor cloud-init (Ubuntu Xenial): status Fix Committed Fix Released
2017-03-16 16:19:11 Brian Murray removed subscriber Ubuntu Stable Release Updates Team
2017-03-16 16:19:33 Launchpad Janitor cloud-init (Ubuntu Yakkety): status Fix Committed Fix Released
2017-09-23 02:14:49 Scott Moser cloud-init: status Fix Committed Fix Released
2023-05-10 20:04:57 James Falcon bug watch added https://github.com/canonical/cloud-init/issues/2791