diff --git a/cloudinit/net/__init__.py b/cloudinit/net/__init__.py index bf21633b1fb..c0888f52702 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 561d5151d3f..60a44186efa 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 3e8f721f098..fbba583c808 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() @@ -5976,6 +5986,10 @@ def test_default_generation( method=auto may-fail=false + [ipv6] + method=auto + may-fail=false + """ ), }, @@ -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())