* Mon Feb 17 2025 Jon Maloy <jmaloy@redhat.com> - 24.4-4
- ci-net-sysconfig-do-not-remove-all-existing-settings-of.patch [RHEL-76361] - Resolves: RHEL-76361 ([c9s] cloud-init remove 'NOZEROCONF=yes' from /etc/sysconfig/network)
This commit is contained in:
		
							parent
							
								
									f7be84a001
								
							
						
					
					
						commit
						ccbbece2a6
					
				
							
								
								
									
										144
									
								
								ci-net-sysconfig-do-not-remove-all-existing-settings-of.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								ci-net-sysconfig-do-not-remove-all-existing-settings-of.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,144 @@ | |||||||
|  | From fe6b81e710c8e45652a1abe853b3537a61d44229 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Ani Sinha <anisinha@redhat.com> | ||||||
|  | Date: Sat, 15 Feb 2025 01:54:31 +0530 | ||||||
|  | Subject: [PATCH] net/sysconfig: do not remove all existing settings of | ||||||
|  |  /etc/sysconfig/network (#5991) | ||||||
|  | 
 | ||||||
|  | RH-Author: Ani Sinha <anisinha@redhat.com> | ||||||
|  | RH-MergeRequest: 124: net/sysconfig: do not remove all existing settings of /etc/sysconfig/network (#5991) | ||||||
|  | RH-Jira: RHEL-76361 | ||||||
|  | RH-Acked-by: xiachen <xiachen@redhat.com> | ||||||
|  | RH-Acked-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> | ||||||
|  | RH-Commit: [1/1] 9c9d5a23d693103f93a4683512dfb9654aa39d77 (anisinha/cloud-init) | ||||||
|  | 
 | ||||||
|  | In some distros, /etc/sysconfig/network may have important configurations that | ||||||
|  | are necessary for the instance to come up. For example, centos based distros | ||||||
|  | write NOZEROCONF=yes in /etc/sysconfig/network for some instances that require | ||||||
|  | zeroconf to be disabled. Removing these customizations would prevent the | ||||||
|  | instance to come up. So leave the customizations in /etc/sysconfig/network | ||||||
|  | intact except those that we are interested in. | ||||||
|  | 
 | ||||||
|  | Fixes GH-5990 | ||||||
|  | Signed-off-by: Ani Sinha <anisinha@redhat.com> | ||||||
|  | (cherry picked from commit fa331315d22f4bbe33320485e89a02bb2f695fbf) | ||||||
|  | ---
 | ||||||
|  |  cloudinit/net/sysconfig.py                | 18 +++++++ | ||||||
|  |  tests/unittests/distros/test_netconfig.py | 62 ++++++++++++++++++++++- | ||||||
|  |  2 files changed, 78 insertions(+), 2 deletions(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py
 | ||||||
|  | index 2151db3ab..bce307286 100644
 | ||||||
|  | --- a/cloudinit/net/sysconfig.py
 | ||||||
|  | +++ b/cloudinit/net/sysconfig.py
 | ||||||
|  | @@ -1119,6 +1119,24 @@ class Renderer(renderer.Renderer):
 | ||||||
|  |              if network_state.use_ipv6: | ||||||
|  |                  netcfg.append("NETWORKING_IPV6=yes") | ||||||
|  |                  netcfg.append("IPV6_AUTOCONF=no") | ||||||
|  | +
 | ||||||
|  | +            # if sysconfig file exists and is not empty, append rest of the
 | ||||||
|  | +            # file content, do not remove the exsisting customizations.
 | ||||||
|  | +            if os.path.exists(sysconfig_path):
 | ||||||
|  | +                for line in util.load_text_file(sysconfig_path).splitlines():
 | ||||||
|  | +                    if (
 | ||||||
|  | +                        not any(
 | ||||||
|  | +                            setting in line
 | ||||||
|  | +                            for setting in [
 | ||||||
|  | +                                "NETWORKING",
 | ||||||
|  | +                                "NETWORKING_IPV6",
 | ||||||
|  | +                                "IPV6_AUTOCONF",
 | ||||||
|  | +                            ]
 | ||||||
|  | +                        )
 | ||||||
|  | +                        and line not in _make_header().splitlines()
 | ||||||
|  | +                    ):
 | ||||||
|  | +                        netcfg.append(line)
 | ||||||
|  | +
 | ||||||
|  |              util.write_file( | ||||||
|  |                  sysconfig_path, "\n".join(netcfg) + "\n", file_mode | ||||||
|  |              ) | ||||||
|  | diff --git a/tests/unittests/distros/test_netconfig.py b/tests/unittests/distros/test_netconfig.py
 | ||||||
|  | index 3768623f2..72887252d 100644
 | ||||||
|  | --- a/tests/unittests/distros/test_netconfig.py
 | ||||||
|  | +++ b/tests/unittests/distros/test_netconfig.py
 | ||||||
|  | @@ -691,12 +691,16 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase):
 | ||||||
|  |          return "/etc/sysconfig/network" | ||||||
|  |   | ||||||
|  |      def _apply_and_verify( | ||||||
|  | -        self, apply_fn, config, expected_cfgs=None, bringup=False
 | ||||||
|  | +        self,
 | ||||||
|  | +        apply_fn,
 | ||||||
|  | +        config,
 | ||||||
|  | +        expected_cfgs=None,
 | ||||||
|  | +        bringup=False,
 | ||||||
|  | +        tmpd=None,
 | ||||||
|  |      ): | ||||||
|  |          if not expected_cfgs: | ||||||
|  |              raise ValueError("expected_cfg must not be None") | ||||||
|  |   | ||||||
|  | -        tmpd = None
 | ||||||
|  |          with mock.patch("cloudinit.net.sysconfig.available") as m_avail: | ||||||
|  |              m_avail.return_value = True | ||||||
|  |              with self.reRooted(tmpd) as tmpd: | ||||||
|  | @@ -789,6 +793,60 @@ class TestNetCfgDistroRedhat(TestNetCfgDistroBase):
 | ||||||
|  |              expected_cfgs=expected_cfgs.copy(), | ||||||
|  |          ) | ||||||
|  |   | ||||||
|  | +    def test_sysconfig_network_no_overwite_ipv6_rh(self):
 | ||||||
|  | +        expected_cfgs = {
 | ||||||
|  | +            self.ifcfg_path("eth0"): dedent(
 | ||||||
|  | +                """\
 | ||||||
|  | +                AUTOCONNECT_PRIORITY=120
 | ||||||
|  | +                BOOTPROTO=none
 | ||||||
|  | +                DEFROUTE=yes
 | ||||||
|  | +                DEVICE=eth0
 | ||||||
|  | +                IPV6ADDR=2607:f0d0:1002:0011::2/64
 | ||||||
|  | +                IPV6INIT=yes
 | ||||||
|  | +                IPV6_AUTOCONF=no
 | ||||||
|  | +                IPV6_DEFAULTGW=2607:f0d0:1002:0011::1
 | ||||||
|  | +                IPV6_FORCE_ACCEPT_RA=no
 | ||||||
|  | +                ONBOOT=yes
 | ||||||
|  | +                TYPE=Ethernet
 | ||||||
|  | +                USERCTL=no
 | ||||||
|  | +                """
 | ||||||
|  | +            ),
 | ||||||
|  | +            self.ifcfg_path("eth1"): dedent(
 | ||||||
|  | +                """\
 | ||||||
|  | +                AUTOCONNECT_PRIORITY=120
 | ||||||
|  | +                BOOTPROTO=dhcp
 | ||||||
|  | +                DEVICE=eth1
 | ||||||
|  | +                ONBOOT=yes
 | ||||||
|  | +                TYPE=Ethernet
 | ||||||
|  | +                USERCTL=no
 | ||||||
|  | +                """
 | ||||||
|  | +            ),
 | ||||||
|  | +            self.control_path(): dedent(
 | ||||||
|  | +                """\
 | ||||||
|  | +                NETWORKING=yes
 | ||||||
|  | +                NETWORKING_IPV6=yes
 | ||||||
|  | +                IPV6_AUTOCONF=no
 | ||||||
|  | +                NOZEROCONF=yes
 | ||||||
|  | +                """
 | ||||||
|  | +            ),
 | ||||||
|  | +        }
 | ||||||
|  | +        tmpdir = self.tmp_dir()
 | ||||||
|  | +        file_mode = 0o644
 | ||||||
|  | +        # pre-existing config in /etc/sysconfig/network should not be removed
 | ||||||
|  | +        with self.reRooted(tmpdir) as tmpdir:
 | ||||||
|  | +            util.write_file(
 | ||||||
|  | +                self.control_path(),
 | ||||||
|  | +                "".join("NOZEROCONF=yes") + "\n",
 | ||||||
|  | +                file_mode,
 | ||||||
|  | +            )
 | ||||||
|  | +
 | ||||||
|  | +        self._apply_and_verify(
 | ||||||
|  | +            self.distro.apply_network_config,
 | ||||||
|  | +            V1_NET_CFG_IPV6,
 | ||||||
|  | +            expected_cfgs=expected_cfgs.copy(),
 | ||||||
|  | +            tmpd=tmpdir,
 | ||||||
|  | +        )
 | ||||||
|  | +
 | ||||||
|  |      def test_vlan_render_unsupported(self): | ||||||
|  |          """Render officially unsupported vlan names.""" | ||||||
|  |          cfg = { | ||||||
|  | -- 
 | ||||||
|  | 2.48.1 | ||||||
|  | 
 | ||||||
| @ -1,6 +1,6 @@ | |||||||
| Name:           cloud-init | Name:           cloud-init | ||||||
| Version:        24.4 | Version:        24.4 | ||||||
| Release:        3%{?dist} | Release:        4%{?dist} | ||||||
| Summary:        Cloud instance init scripts | Summary:        Cloud instance init scripts | ||||||
| License:        ASL 2.0 or GPLv3 | License:        ASL 2.0 or GPLv3 | ||||||
| URL:            http://launchpad.net/cloud-init | URL:            http://launchpad.net/cloud-init | ||||||
| @ -19,6 +19,8 @@ Patch6: ci-downstream-Revert-feat-Use-NetworkManager-renderer-b.patch | |||||||
| Patch7: ci-Use-log_with_downgradable_level-for-user-password-wa.patch | Patch7: ci-Use-log_with_downgradable_level-for-user-password-wa.patch | ||||||
| # For RHEL-71122 - Suggest to change some log messages from warning to info after rebase cloud-init-24.4 [RHEL-9.6]  | # For RHEL-71122 - Suggest to change some log messages from warning to info after rebase cloud-init-24.4 [RHEL-9.6]  | ||||||
| Patch8: ci-downstream-set-deprecation-boundary-version.patch | Patch8: ci-downstream-set-deprecation-boundary-version.patch | ||||||
|  | # For RHEL-76361 - [c9s] cloud-init remove 'NOZEROCONF=yes' from /etc/sysconfig/network | ||||||
|  | Patch9: ci-net-sysconfig-do-not-remove-all-existing-settings-of.patch | ||||||
| 
 | 
 | ||||||
| BuildArch:      noarch | BuildArch:      noarch | ||||||
| 
 | 
 | ||||||
| @ -233,6 +235,11 @@ fi | |||||||
| %config(noreplace) %{_sysconfdir}/rsyslog.d/21-cloudinit.conf | %config(noreplace) %{_sysconfdir}/rsyslog.d/21-cloudinit.conf | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Mon Feb 17 2025 Jon Maloy <jmaloy@redhat.com> - 24.4-4 | ||||||
|  | - ci-net-sysconfig-do-not-remove-all-existing-settings-of.patch [RHEL-76361] | ||||||
|  | - Resolves: RHEL-76361 | ||||||
|  |   ([c9s] cloud-init remove 'NOZEROCONF=yes' from /etc/sysconfig/network) | ||||||
|  | 
 | ||||||
| * Mon Feb 10 2025 Jon Maloy <jmaloy@redhat.com> - 24.4-3 | * Mon Feb 10 2025 Jon Maloy <jmaloy@redhat.com> - 24.4-3 | ||||||
| - ci-Use-log_with_downgradable_level-for-user-password-wa.patch [RHEL-71122] | - ci-Use-log_with_downgradable_level-for-user-password-wa.patch [RHEL-71122] | ||||||
| - ci-downstream-set-deprecation-boundary-version.patch [RHEL-71122] | - ci-downstream-set-deprecation-boundary-version.patch [RHEL-71122] | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user