From 4e24e6f9e786437d94ba5e2d3e084ef2a2fc534f Mon Sep 17 00:00:00 2001 From: Ani Sinha Date: Wed, 13 Dec 2023 11:55:16 +0530 Subject: [PATCH] Setting autoconnect priority setting for network-scripts Changes for 24.1.2 (c10s): - Fixed additional unit tests. Changes for 23.4 (c9s): Squashed the following three downstream only commits from RHEL 9.3: Commit 1: Setting highest autoconnect priority for network-scripts RH-Author: Eduardo Otubo RH-MergeRequest: 22: Setting highest autoconnect priority for network-scripts RH-Commit: [1/1] 34f1d62f8934a983a124df95b861a1e448681d3b (otubo/cloud-init-src) RH-Bugzilla: 2036060 RH-Acked-by: Miroslav Rezanina RH-Acked-by: Emanuele Giuseppe Esposito Set the highest autoconnect priority for network-scripts which is loaded by NetworkManager ifcfg-rh plugin. Note that keyfile is the only and default existing plugin on RHEL9, by setting the highest autoconnect priority for network-scripts, NetworkManager will activate network-scripts but keyfile. Network-scripts path: Since this is a blocking issue, we decided to have this one-liner downstream-only patch so we can move forward and have a better NetworkManager support later on the release. rhbz: 2036060 x-downstream-only: yes Commit 2: net/sysconfig: do not use the highest autoconnect priority Using the highest priority is a very big hammer that we may not want to use. We may want users to override the cloud init generated ifcfg files for custom configuration of interfaces. If cloud init uses the highest priority, nothing can beat it. Hence lower the priority to 120 allowing values from 121 to 999 to be used by users if they want to use a custom interface nm keyfile. X-downstream-only: true Suggested-by: thaller@redhat.com fixes: c589da20eb92231 ("Setting highest autoconnect priority for network-scripts") Commit 3: test fixes: update tests to reflect AUTOCONNECT_PRIORITY setting X-downstream-only: true fixes: 0a2c6b6118ff ("net/sysconfig: do not use the highest autoconnect priority") fixes: c589da20eb92 ("Setting highest autoconnect priority for network-scripts") Signed-off-by: Ani Sinha (cherry picked from commit 8a2fcbbcfdfc1df6f6c18f96588154f40083a239) --- cloudinit/net/sysconfig.py | 1 + tests/unittests/cmd/devel/test_net_convert.py | 1 + tests/unittests/distros/test_netconfig.py | 8 +++ tests/unittests/test_net.py | 54 +++++++++++++++++++ 4 files changed, 64 insertions(+) diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py index b9e9593b..1678fcde 100644 --- a/cloudinit/net/sysconfig.py +++ b/cloudinit/net/sysconfig.py @@ -318,6 +318,7 @@ class Renderer(renderer.Renderer): "ONBOOT": True, "USERCTL": False, "BOOTPROTO": "none", + "AUTOCONNECT_PRIORITY": 120, }, "suse": {"BOOTPROTO": "static", "STARTMODE": "auto"}, } diff --git a/tests/unittests/cmd/devel/test_net_convert.py b/tests/unittests/cmd/devel/test_net_convert.py index 3e9a4f90..b6da87ca 100644 --- a/tests/unittests/cmd/devel/test_net_convert.py +++ b/tests/unittests/cmd/devel/test_net_convert.py @@ -60,6 +60,7 @@ DHCP=ipv4 SAMPLE_SYSCONFIG_CONTENT = """\ # Created by cloud-init automatically, do not edit. # +AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEVICE=eth0 ONBOOT=yes diff --git a/tests/unittests/distros/test_netconfig.py b/tests/unittests/distros/test_netconfig.py index f35e5b0a..6b4fc666 100644 --- a/tests/unittests/distros/test_netconfig.py +++ b/tests/unittests/distros/test_netconfig.py @@ -717,6 +717,7 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase): expected_cfgs = { self.ifcfg_path("eth0"): dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEFROUTE=yes DEVICE=eth0 @@ -730,6 +731,7 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase): ), self.ifcfg_path("eth1"): dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEVICE=eth1 ONBOOT=yes @@ -754,6 +756,7 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase): expected_cfgs = { self.ifcfg_path("eth0"): dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEFROUTE=yes DEVICE=eth0 @@ -769,6 +772,7 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase): ), self.ifcfg_path("eth1"): dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEVICE=eth1 ONBOOT=yes @@ -812,6 +816,7 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase): expected_cfgs = { self.ifcfg_path("eth0"): dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth0 HWADDR=00:16:3e:60:7c:df @@ -824,6 +829,7 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase): ), self.ifcfg_path("infra0"): dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=infra0 IPADDR=10.0.1.2 @@ -859,6 +865,7 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase): expected_cfgs = { self.ifcfg_path("eth0"): dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth0 IPADDR=192.10.1.2 @@ -870,6 +877,7 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase): ), self.ifcfg_path("eth0.1001"): dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth0.1001 IPADDR=10.0.1.2 diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py index d83c52f0..fee8e035 100644 --- a/tests/unittests/test_net.py +++ b/tests/unittests/test_net.py @@ -578,6 +578,7 @@ dns = none """ # Created by cloud-init automatically, do not edit. # +AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEFROUTE=yes DEVICE=eth0 @@ -741,6 +742,7 @@ dns = none """ # Created by cloud-init automatically, do not edit. # +AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEFROUTE=yes DEVICE=eth0 @@ -898,6 +900,7 @@ dns = none """ # Created by cloud-init automatically, do not edit. # +AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEFROUTE=yes DEVICE=eth0 @@ -1138,6 +1141,7 @@ NETWORK_CONFIGS = { "expected_sysconfig_rhel": { "ifcfg-eth1": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth1 HWADDR=cf:d6:af:48:e8:80 @@ -1147,6 +1151,7 @@ NETWORK_CONFIGS = { ), "ifcfg-eth99": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEFROUTE=yes DEVICE=eth99 @@ -1310,6 +1315,7 @@ NETWORK_CONFIGS = { "expected_sysconfig_rhel": { "ifcfg-eth1": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth1 HWADDR=cf:d6:af:48:e8:80 @@ -1319,6 +1325,7 @@ NETWORK_CONFIGS = { ), "ifcfg-eth99": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEFROUTE=yes DEVICE=eth99 @@ -1565,6 +1572,7 @@ NETWORK_CONFIGS = { "expected_sysconfig_rhel": { "ifcfg-iface0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=iface0 IPADDR=192.168.14.2 @@ -1711,6 +1719,7 @@ NETWORK_CONFIGS = { "expected_sysconfig_rhel": { "ifcfg-iface0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=iface0 DHCPV6C=yes @@ -1800,6 +1809,7 @@ NETWORK_CONFIGS = { "expected_sysconfig_rhel": { "ifcfg-iface0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=iface0 DHCPV6C=yes @@ -1875,6 +1885,7 @@ NETWORK_CONFIGS = { "expected_sysconfig_rhel": { "ifcfg-iface0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=iface0 DHCPV6C=yes @@ -1939,6 +1950,7 @@ NETWORK_CONFIGS = { "expected_sysconfig_rhel": { "ifcfg-iface0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=iface0 IPV6_AUTOCONF=yes @@ -1994,6 +2006,7 @@ NETWORK_CONFIGS = { "expected_sysconfig_rhel": { "ifcfg-iface0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=iface0 IPV6ADDR=2001:1::1/64 @@ -2050,6 +2063,7 @@ NETWORK_CONFIGS = { "expected_sysconfig_rhel": { "ifcfg-iface0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=iface0 DHCPV6C=yes @@ -2134,6 +2148,7 @@ NETWORK_CONFIGS = { "expected_sysconfig_rhel": { "ifcfg-iface0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=iface0 DHCPV6C=yes @@ -2180,6 +2195,7 @@ NETWORK_CONFIGS = { "expected_sysconfig_rhel": { "ifcfg-iface0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEVICE=iface0 ONBOOT=yes @@ -2255,6 +2271,7 @@ NETWORK_CONFIGS = { "expected_sysconfig_rhel": { "ifcfg-iface0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEVICE=iface0 ETHTOOL_OPTS="wol g" @@ -2590,6 +2607,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true "expected_sysconfig_rhel": { "ifcfg-bond0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BONDING_MASTER=yes BONDING_OPTS="mode=active-backup """ """xmit_hash_policy=layer3+4 """ @@ -2607,6 +2625,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true ), "ifcfg-bond0.200": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEVICE=bond0.200 DHCLIENT_SET_DEFAULT_ROUTE=no @@ -2618,6 +2637,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true "ifcfg-br0": textwrap.dedent( """\ AGEING=250 + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEFROUTE=yes DEVICE=br0 @@ -2637,6 +2657,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true ), "ifcfg-eth0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth0 HWADDR=c0:d6:9f:2c:e8:80 @@ -2646,6 +2667,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true ), "ifcfg-eth0.101": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEFROUTE=yes DEVICE=eth0.101 @@ -2665,6 +2687,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true ), "ifcfg-eth1": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth1 HWADDR=aa:d6:9f:2c:e8:80 @@ -2676,6 +2699,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true ), "ifcfg-eth2": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth2 HWADDR=c0:bb:9f:2c:e8:80 @@ -2687,6 +2711,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true ), "ifcfg-eth3": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none BRIDGE=br0 DEVICE=eth3 @@ -2697,6 +2722,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true ), "ifcfg-eth4": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none BRIDGE=br0 DEVICE=eth4 @@ -2707,6 +2733,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true ), "ifcfg-eth5": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEVICE=eth5 DHCLIENT_SET_DEFAULT_ROUTE=no @@ -2717,6 +2744,7 @@ pre-down route del -net 10.0.0.0/8 gw 11.0.0.1 metric 3 || true ), "ifcfg-ib0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=ib0 HWADDR=a0:00:02:20:fe:80:00:00:00:00:00:00:ec:0d:9a:03:00:15:e2:c1 @@ -3431,6 +3459,7 @@ iface bond0 inet6 static "expected_sysconfig_rhel": { "ifcfg-bond0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BONDING_MASTER=yes BONDING_OPTS="mode=active-backup xmit_hash_policy=layer3+4 """ """miimon=100 num_grat_arp=5 """ @@ -3461,6 +3490,7 @@ iface bond0 inet6 static ), "ifcfg-bond0s0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=bond0s0 HWADDR=aa:bb:cc:dd:e8:00 @@ -3488,6 +3518,7 @@ iface bond0 inet6 static ), "ifcfg-bond0s1": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=bond0s1 HWADDR=aa:bb:cc:dd:e8:01 @@ -3637,6 +3668,7 @@ iface bond0 inet6 static "expected_sysconfig_rhel": { "ifcfg-en0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=en0 HWADDR=aa:bb:cc:dd:e8:00 @@ -3646,6 +3678,7 @@ iface bond0 inet6 static ), "ifcfg-en0.99": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEFROUTE=yes DEVICE=en0.99 @@ -3783,6 +3816,7 @@ iface bond0 inet6 static "expected_sysconfig_rhel": { "ifcfg-br0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=br0 IPADDR=192.168.2.2 @@ -3796,6 +3830,7 @@ iface bond0 inet6 static ), "ifcfg-eth0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none BRIDGE=br0 DEVICE=eth0 @@ -3811,6 +3846,7 @@ iface bond0 inet6 static ), "ifcfg-eth1": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none BRIDGE=br0 DEVICE=eth1 @@ -3998,6 +4034,7 @@ iface bond0 inet6 static "expected_sysconfig_rhel": { "ifcfg-eth0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth0 HWADDR=52:54:00:12:34:00 @@ -4010,6 +4047,7 @@ iface bond0 inet6 static ), "ifcfg-eth1": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth1 HWADDR=52:54:00:12:34:aa @@ -4021,6 +4059,7 @@ iface bond0 inet6 static ), "ifcfg-eth2": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth2 HWADDR=52:54:00:12:34:ff @@ -4268,6 +4307,7 @@ iface bond0 inet6 static "expected_sysconfig_rhel": { "ifcfg-eth0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth0 HWADDR=cf:d6:af:48:e8:80 @@ -4419,6 +4459,7 @@ iface bond0 inet6 static """\ # Created by cloud-init automatically, do not edit. # + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eth0 DNS1=8.8.8.8 @@ -5185,6 +5226,7 @@ class TestRhelSysConfigRendering(CiTestCase): expected_content = """ # Created by cloud-init automatically, do not edit. # +AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEVICE=eth1000 DHCPV6C=yes @@ -5394,6 +5436,7 @@ USERCTL=no expected = """\ # Created by cloud-init automatically, do not edit. # +AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEFROUTE=yes DEVICE=interface0 @@ -5423,6 +5466,7 @@ USERCTL=no expected_i1 = """\ # Created by cloud-init automatically, do not edit. # +AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEFROUTE=yes DEVICE=eth0 @@ -5439,6 +5483,7 @@ USERCTL=no expected_i2 = """\ # Created by cloud-init automatically, do not edit. # +AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEVICE=eth1 DHCLIENT_SET_DEFAULT_ROUTE=no @@ -5466,6 +5511,7 @@ USERCTL=no expected = """\ # Created by cloud-init automatically, do not edit. # +AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEVICE=eth0 ONBOOT=yes @@ -5699,6 +5745,7 @@ USERCTL=no "expected_sysconfig": { "ifcfg-ens3": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEFROUTE=yes DEVICE=ens3 @@ -5743,6 +5790,7 @@ USERCTL=no expected = { "ifcfg-eno1": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eno1 ONBOOT=yes @@ -5752,6 +5800,7 @@ USERCTL=no ), "ifcfg-eno1.1000": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEVICE=eno1.1000 IPADDR=192.6.1.9 @@ -5784,6 +5833,7 @@ USERCTL=no expected = { "ifcfg-bond0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BONDING_MASTER=yes BONDING_SLAVE0=enp0s0 BONDING_SLAVE1=enp0s1 @@ -5799,6 +5849,7 @@ USERCTL=no ), "ifcfg-enp0s0": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BONDING_MASTER=yes BOOTPROTO=none DEVICE=enp0s0 @@ -5811,6 +5862,7 @@ USERCTL=no ), "ifcfg-enp0s1": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BONDING_MASTER=yes BOOTPROTO=none DEVICE=enp0s1 @@ -5841,6 +5893,7 @@ USERCTL=no expected = { "ifcfg-eno1": textwrap.dedent( """\ + AUTOCONNECT_PRIORITY=120 BOOTPROTO=dhcp DEVICE=eno1 HWADDR=07-1c-c6-75-a4-be @@ -5919,6 +5972,7 @@ USERCTL=no """\ # Created by cloud-init automatically, do not edit. # + AUTOCONNECT_PRIORITY=120 BOOTPROTO=none DEFROUTE=yes DEVICE=eth0