diff --git a/.WALinuxAgent.metadata b/.WALinuxAgent.metadata index 254389e..6fc22e2 100644 --- a/.WALinuxAgent.metadata +++ b/.WALinuxAgent.metadata @@ -1 +1 @@ -de1d5307a1fc937038536b27d1e32f7ee851d0dd SOURCES/v2.3.0.2.tar.gz +9d9b8fcd872d8782b96d312fb13f47a41658dd04 SOURCES/v2.7.0.6.tar.gz diff --git a/.gitignore b/.gitignore index 21228da..d9de403 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/v2.3.0.2.tar.gz +SOURCES/v2.7.0.6.tar.gz diff --git a/SOURCES/0001-Initial-redhat-build-configuation.patch b/SOURCES/0001-Initial-redhat-build-configuation.patch new file mode 100644 index 0000000..938b0bd --- /dev/null +++ b/SOURCES/0001-Initial-redhat-build-configuation.patch @@ -0,0 +1,75 @@ +From 9d071a9b4b40f0f86bb0b739b72c0b9b4870f060 Mon Sep 17 00:00:00 2001 +From: Miroslav Rezanina +Date: Fri, 14 May 2021 09:42:08 +0200 +Subject: Initial redhat build configuation. + +Using .distro repository to hold redhat tools and configuration. + +Package can be built on brew using rh-rhel-koji command. + +Note: Old rh-brew target is supported. + +Signed-off-by: Miroslav Rezanina + +Merged patches (2.7.0.6): +- 896c5c83 Require iptables package +- a702a0d1 (origin/rhel-9.0.0-beta) source-git: Use dynamic SRPM_NAME +--- + .distro/Makefile | 73 ++++++ + .distro/Makefile.common | 18 ++ + .distro/WALinuxAgent.spec.template | 254 +++++++++++++++++++++ + .distro/module-setup.sh | 16 ++ + .distro/rpmbuild/BUILD/.gitignore | 2 + + .distro/rpmbuild/RPMS/.gitignore | 2 + + .distro/rpmbuild/SOURCES/.gitignore | 2 + + .distro/rpmbuild/SPECS/.gitignore | 2 + + .distro/rpmbuild/SRPMS/.gitignore | 2 + + .distro/scripts/extract_build_cmd.py | 83 +++++++ + .distro/scripts/frh.py | 24 ++ + .distro/scripts/git-backport-diff | 327 +++++++++++++++++++++++++++ + .distro/scripts/git-compile-check | 215 ++++++++++++++++++ + .distro/scripts/process-patches.sh | 92 ++++++++ + .distro/scripts/tarball_checksum.sh | 3 + + setup.py | 4 +- + 16 files changed, 1117 insertions(+), 2 deletions(-) + create mode 100644 .distro/Makefile + create mode 100644 .distro/Makefile.common + create mode 100644 .distro/WALinuxAgent.spec.template + create mode 100644 .distro/module-setup.sh + create mode 100644 .distro/rpmbuild/BUILD/.gitignore + create mode 100644 .distro/rpmbuild/RPMS/.gitignore + create mode 100644 .distro/rpmbuild/SOURCES/.gitignore + create mode 100644 .distro/rpmbuild/SPECS/.gitignore + create mode 100644 .distro/rpmbuild/SRPMS/.gitignore + create mode 100755 .distro/scripts/extract_build_cmd.py + create mode 100755 .distro/scripts/frh.py + create mode 100755 .distro/scripts/git-backport-diff + create mode 100755 .distro/scripts/git-compile-check + create mode 100755 .distro/scripts/process-patches.sh + create mode 100755 .distro/scripts/tarball_checksum.sh + +diff --git a/setup.py b/setup.py +index 12c9e1d6..e4d7cf7e 100755 +--- a/setup.py ++++ b/setup.py +@@ -97,7 +97,7 @@ def get_data_files(name, version, fullname): # pylint: disable=R0912 + agent_bin_path = osutil.get_agent_bin_path() + + if name in ('redhat', 'centos', 'almalinux', 'cloudlinux'): # pylint: disable=R1714 +- if version.startswith("8.2"): ++ if version.startswith("9"): + # redhat8+ default to py3 + set_bin_files(data_files, dest=agent_bin_path, + src=["bin/py3/waagent", "bin/waagent2.0"]) +@@ -106,7 +106,7 @@ def get_data_files(name, version, fullname): # pylint: disable=R0912 + set_conf_files(data_files) + set_logrotate_files(data_files) + set_udev_files(data_files) +- if version.startswith("8.2"): ++ if version.startswith("9"): + # redhat 8+ uses systemd and python3 + set_systemd_files(data_files, dest=systemd_dir_path, + src=["init/redhat/waagent.service", +-- +2.31.1 + diff --git a/SOURCES/0002-Fix-distro-resolution-for-RedHat-2083.patch b/SOURCES/0002-Fix-distro-resolution-for-RedHat-2083.patch deleted file mode 100644 index 85bd505..0000000 --- a/SOURCES/0002-Fix-distro-resolution-for-RedHat-2083.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 7289e616a836fe0f1c97388f40e5d4916804ae91 Mon Sep 17 00:00:00 2001 -From: Paula Gombar -Date: Wed, 2 Dec 2020 21:36:41 -0800 -Subject: Fix distro resolution for RedHat (#2083) - -vkuznets: cherry-picking the primary change of the commit (adding 'rhel') -only, pylint changes require additional commits. - -Signed-off-by: Vitaly Kuznetsov ---- - tests/common/osutil/test_factory.py | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/tests/common/osutil/test_factory.py b/tests/common/osutil/test_factory.py -index f7d46b21..c48dd17f 100644 ---- a/tests/common/osutil/test_factory.py -+++ b/tests/common/osutil/test_factory.py -@@ -195,6 +195,13 @@ class TestOsUtilFactory(AgentTestCase): - self.assertTrue(isinstance(ret, Redhat6xOSUtil)) - self.assertEqual(ret.get_service_name(), "waagent") - -+ ret = _get_osutil(distro_name="rhel", -+ distro_code_name="", -+ distro_full_name="", -+ distro_version="6") -+ self.assertTrue(type(ret) == Redhat6xOSUtil) -+ self.assertEquals(ret.get_service_name(), "waagent") -+ - ret = _get_osutil(distro_name="centos", - distro_code_name="", - distro_full_name="", -@@ -223,6 +230,13 @@ class TestOsUtilFactory(AgentTestCase): - self.assertTrue(isinstance(ret, RedhatOSUtil)) - self.assertEqual(ret.get_service_name(), "waagent") - -+ ret = _get_osutil(distro_name="rhel", -+ distro_code_name="", -+ distro_full_name="", -+ distro_version="7") -+ self.assertTrue(type(ret) == RedhatOSUtil) -+ self.assertEquals(ret.get_service_name(), "waagent") -+ - ret = _get_osutil(distro_name="centos", - distro_code_name="", - distro_full_name="", --- -2.27.0 - diff --git a/SOURCES/0002-Implement-restart_if-for-RedHat-OS.patch b/SOURCES/0002-Implement-restart_if-for-RedHat-OS.patch new file mode 100644 index 0000000..142f6df --- /dev/null +++ b/SOURCES/0002-Implement-restart_if-for-RedHat-OS.patch @@ -0,0 +1,40 @@ +From 8538516744130409f96b3ec956ff5ec1b1c1be11 Mon Sep 17 00:00:00 2001 +From: Miroslav Rezanina +Date: Tue, 24 May 2022 04:10:46 -0400 +Subject: Implement restart_if for RedHat OS + +Signed-off-by: Vitaly Kuznetsov +Signed-off-by: Miroslav Rezanina +--- + azurelinuxagent/common/osutil/redhat.py | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/azurelinuxagent/common/osutil/redhat.py b/azurelinuxagent/common/osutil/redhat.py +index 9759d113..a02647cd 100644 +--- a/azurelinuxagent/common/osutil/redhat.py ++++ b/azurelinuxagent/common/osutil/redhat.py +@@ -142,3 +142,21 @@ class RedhatOSUtil(Redhat6xOSUtil): + endpoint = self.get_endpoint_from_leases_path('/var/lib/NetworkManager/dhclient-*.lease') + + return endpoint ++ ++ def restart_if(self, ifname, retries=3, wait=5): ++ """ ++ Restart an interface by bouncing the link. ++ """ ++ retry_limit=retries+1 ++ for attempt in range(1, retry_limit): ++ try: ++ shellutil.run_command(["ip", "link", "set", ifname, "down"]) ++ shellutil.run_command(["ip", "link", "set", ifname, "up"]) ++ ++ except shellutil.CommandError as cmd_err: ++ logger.warn("failed to restart {0}: return code {1}".format(ifname, cmd_err.returncode)) ++ if attempt < retry_limit: ++ logger.info("retrying in {0} seconds".format(wait)) ++ time.sleep(wait) ++ else: ++ logger.warn("exceeded restart retries") +-- +2.31.1 + diff --git a/SOURCES/wla-redhat-Fix-command-sequence-for-restarting-net-inter.patch b/SOURCES/wla-redhat-Fix-command-sequence-for-restarting-net-inter.patch new file mode 100644 index 0000000..2fafa98 --- /dev/null +++ b/SOURCES/wla-redhat-Fix-command-sequence-for-restarting-net-inter.patch @@ -0,0 +1,57 @@ +From 6d452b28383c59a8193595daaca13fa8db9338a1 Mon Sep 17 00:00:00 2001 +From: Mohammed Gamal +Date: Wed, 22 Jun 2022 13:36:07 +0200 +Subject: [PATCH] redhat: Fix command sequence for restarting net interface + +RH-Author: Mohamed Gamal Morsy +RH-MergeRequest: 2: redhat: Fix command sequence for restarting net interface +RH-Commit: [1/1] e838ff196b8823f64e08247b3a4dac9d60e5ed72 +RH-Bugzilla: 2098233 +RH-Acked-by: Vitaly Kuznetsov +RH-Acked-by: Miroslav Rezanina + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2098233 + +Apparently the down and up commands need to be run in the same command, so +connect them together with "&&" operator. Also re-implement restart_if ot handle +warnings same wat as other distros + +Signed-off-by: Mohammed Gamal +--- + azurelinuxagent/common/osutil/redhat.py | 22 ++++++++++------------ + 1 file changed, 10 insertions(+), 12 deletions(-) + +diff --git a/azurelinuxagent/common/osutil/redhat.py b/azurelinuxagent/common/osutil/redhat.py +index a02647cd..5c397ae8 100644 +--- a/azurelinuxagent/common/osutil/redhat.py ++++ b/azurelinuxagent/common/osutil/redhat.py +@@ -147,16 +147,14 @@ class RedhatOSUtil(Redhat6xOSUtil): + """ + Restart an interface by bouncing the link. + """ +- retry_limit=retries+1 ++ retry_limit = retries + 1 + for attempt in range(1, retry_limit): +- try: +- shellutil.run_command(["ip", "link", "set", ifname, "down"]) +- shellutil.run_command(["ip", "link", "set", ifname, "up"]) +- +- except shellutil.CommandError as cmd_err: +- logger.warn("failed to restart {0}: return code {1}".format(ifname, cmd_err.returncode)) +- if attempt < retry_limit: +- logger.info("retrying in {0} seconds".format(wait)) +- time.sleep(wait) +- else: +- logger.warn("exceeded restart retries") ++ return_code = shellutil.run("ip link set {0} down && ip link set {0} up".format(ifname), expected_errors=[1] if attempt < retries else []) ++ if return_code == 0: ++ return ++ logger.warn("failed to restart {0}: return code {1}".format(ifname, return_code)) ++ if attempt < retry_limit: ++ logger.info("retrying in {0} seconds".format(wait)) ++ time.sleep(wait) ++ else: ++ logger.warn("exceeded restart retries") +-- +2.31.1 + diff --git a/SPECS/WALinuxAgent.spec b/SPECS/WALinuxAgent.spec index 5680643..6da29cf 100644 --- a/SPECS/WALinuxAgent.spec +++ b/SPECS/WALinuxAgent.spec @@ -2,8 +2,8 @@ %global dracut_modname 97walinuxagent Name: WALinuxAgent -Version: 2.3.0.2 -Release: 3%{?dist} +Version: 2.7.0.6 +Release: 1%{?dist} Summary: The Microsoft Azure Linux Agent License: ASL 2.0 @@ -12,7 +12,10 @@ Source0: https://github.com/Azure/%{name}/archive/v%{version}.tar.gz Source1: module-setup.sh # Python3.9 fixes -Patch0002: 0002-Fix-distro-resolution-for-RedHat-2083.patch +Patch0001: 0001-Initial-redhat-build-configuation.patch +Patch0002: 0002-Implement-restart_if-for-RedHat-OS.patch +Patch3: wla-redhat-Fix-command-sequence-for-restarting-net-inter.patch + # Source-git patches BuildArch: noarch @@ -60,8 +63,7 @@ Udev rules specific to Microsoft Azure Virtual Machines. %prep %setup -q -%patch0002 -p1 -# Apply source-git patches +%autopatch -p1 %build %py3_build @@ -80,13 +82,11 @@ rm -rf %{buildroot}/%{python3_sitelib}/tests rm -rf %{buildroot}/%{python3_sitelib}/__main__.py rm -rf %{buildroot}/%{python3_sitelib}/__pycache__/__main__*.py* -sed -i 's,#!/usr/bin/env python,#!/usr/bin/python3,' %{buildroot}%{_sbindir}/waagent %if 0%{?with_legacy} sed -i 's,#!/usr/bin/env python,#!/usr/bin/python2,' %{buildroot}%{_sbindir}/waagent2.0 %else rm -f %{buildroot}%{_sbindir}/waagent2.0 %endif -sed -i 's,/usr/bin/python ,/usr/bin/python3 ,' %{buildroot}%{_unitdir}/waagent.service mv %{buildroot}%{_sysconfdir}/logrotate.d/waagent.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/%{name} @@ -109,6 +109,8 @@ install -m0755 -D -t %{buildroot}%{_prefix}/lib/dracut/modules.d/%{dracut_modnam %{_sbindir}/waagent %config(noreplace) %{_sysconfdir}/waagent.conf %{_unitdir}/waagent.service +%{_unitdir}/azure.slice +%{_unitdir}/azure-vmextensions.slice %{python3_sitelib}/azurelinuxagent %{python3_sitelib}/*.egg-info @@ -122,6 +124,11 @@ install -m0755 -D -t %{buildroot}%{_prefix}/lib/dracut/modules.d/%{dracut_modnam %endif %changelog +* Wed May 25 2022 Miroslav Rezanina - 2.7.0.6-1.el9_0 +- Rebase to 2.7.0.6-1 [bz#2110415] +- Resolves: bz#2110415 + ([Azure][WALA][RHEL-9] [9.0.z]The latest RHEL 9 repositories contain a buggy old version of WALinuxAgent : 2.3.0.2, latest version is v2.7.0.6 [rhel-9.0.0.z]) + * Tue Aug 10 2021 Mohan Boddu - 2.3.0.2-3 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688