From d1dff82edd37656a9e49f097106fb5129e6e9757 Mon Sep 17 00:00:00 2001 From: Ani Sinha Date: Tue, 21 Nov 2023 13:57:15 +0530 Subject: [PATCH] Re-apply "net: allow dhcp6 configuration from generate_fallback_configuration()" (#4607) This reverts commit 29ed5f5b646eebfd2dafa7e036e813516a8b99bf and therefore, re-applies the commit 518047aea93d502aefae808921b11d0cfe2e7fd9 . The issue that caused the reversal of 518047aea93d502aefae808921b11d0cfe2e7fd9 is fixed by the earlier commit: a8da6dfe04ae ("net/network_manager: do not set "may-fail" to False for both ipv4 and ipv6") Signed-off-by: Ani Sinha --- cloudinit/net/__init__.py | 7 ++++++- tests/unittests/net/test_init.py | 4 ++++ tests/unittests/test_net.py | 24 +++++++++++++++++++++--- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/cloudinit/net/__init__.py b/cloudinit/net/__init__.py index bf21633b1fbb..c0888f52702e 100644 --- a/cloudinit/net/__init__.py +++ b/cloudinit/net/__init__.py @@ -571,7 +571,12 @@ def generate_fallback_config(config_driver=None): match = { "macaddress": read_sys_net_safe(target_name, "address").lower() } - cfg = {"dhcp4": True, "set-name": target_name, "match": match} + cfg = { + "dhcp4": True, + "dhcp6": True, + "set-name": target_name, + "match": match, + } if config_driver: driver = device_driver(target_name) if driver: diff --git a/tests/unittests/net/test_init.py b/tests/unittests/net/test_init.py index 561d5151d3f5..60a44186efaa 100644 --- a/tests/unittests/net/test_init.py +++ b/tests/unittests/net/test_init.py @@ -261,6 +261,7 @@ def test_generate_fallback_finds_connected_eth_with_mac(self): "eth1": { "match": {"macaddress": mac}, "dhcp4": True, + "dhcp6": True, "set-name": "eth1", } }, @@ -278,6 +279,7 @@ def test_generate_fallback_finds_dormant_eth_with_mac(self): "eth0": { "match": {"macaddress": mac}, "dhcp4": True, + "dhcp6": True, "set-name": "eth0", } }, @@ -293,6 +295,7 @@ def test_generate_fallback_finds_eth_by_operstate(self): "ethernets": { "eth0": { "dhcp4": True, + "dhcp6": True, "match": {"macaddress": mac}, "set-name": "eth0", } @@ -359,6 +362,7 @@ def is_netfail_master(iface, _driver=None): "ethernets": { "ens3": { "dhcp4": True, + "dhcp6": True, "match": {"name": "ens3"}, "set-name": "ens3", } diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py index 775679a442df..3842916ad1a8 100644 --- a/tests/unittests/test_net.py +++ b/tests/unittests/test_net.py @@ -4287,6 +4287,7 @@ def test_device_driver_v2( "ethernets": { "eth0": { "dhcp4": True, + "dhcp6": True, "set-name": "eth0", "match": { "macaddress": "00:11:22:33:44:55", @@ -4371,6 +4372,9 @@ def test_device_driver( auto eth0 iface eth0 inet dhcp + +# control-alias eth0 +iface eth0 inet6 dhcp """ self.assertEqual(expected.lstrip(), contents.lstrip()) @@ -4460,6 +4464,9 @@ def test_hv_netvsc_vf_filter( auto eth1 iface eth1 inet dhcp + +# control-alias eth1 +iface eth1 inet6 dhcp """ self.assertEqual(expected.lstrip(), contents.lstrip()) @@ -4683,7 +4690,9 @@ def test_default_generation( # BOOTPROTO=dhcp DEVICE=eth1000 +DHCPV6C=yes HWADDR=07-1c-c6-75-a4-be +IPV6INIT=yes NM_CONTROLLED=no ONBOOT=yes TYPE=Ethernet @@ -5594,7 +5603,8 @@ def test_default_generation( expected_content = """ # Created by cloud-init automatically, do not edit. # -BOOTPROTO=dhcp4 +BOOTPROTO=dhcp +DHCLIENT6_MODE=managed LLADDR=07-1c-c6-75-a4-be STARTMODE=auto """.lstrip() @@ -5974,7 +5984,11 @@ def test_default_generation( [ipv4] method=auto - may-fail=false + may-fail=true + + [ipv6] + method=auto + may-fail=true """ ), @@ -6240,6 +6254,9 @@ def test_default_generation( auto eth1000 iface eth1000 inet dhcp + +# control-alias eth1000 +iface eth1000 inet6 dhcp """ self.assertEqual(expected.lstrip(), contents.lstrip()) @@ -6299,6 +6316,7 @@ class TestNetplanNetRendering: ethernets: eth1000: dhcp4: true + dhcp6: true match: macaddress: 07-1c-c6-75-a4-be set-name: eth1000 @@ -7798,7 +7816,7 @@ def test_networkd_default_generation( Name=eth1000 MACAddress=07-1c-c6-75-a4-be [Network] - DHCP=ipv4""" + DHCP=yes""" ).rstrip(" ") expected = self.create_conf_dict(expected.splitlines())