From a20a7eda6078c01b377add1f5d81c7e23997970c Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Wed, 25 May 2022 04:50:10 -0400 Subject: [PATCH] * Wed May 25 2022 Miroslav Rezanina - 2.7.0.6-1 - Rebase to 2.7.0.6-1 [bz#2083464] - Adding restart_if implementation for RHEL [bz#2081944] - Resolves: bz#2083464 ([Azure][RHEL-9]Rebase WALinuxAgent to v2.7.0.6) - Resolves: bz#2081944 ([Azure][WALA][9.0] WALA provisions VM failed because of no "ifdown") --- .gitignore | 1 + 0001-Initial-redhat-build-configuation.patch | 75 +++++++++++++++++++ ...ix-distro-resolution-for-RedHat-2083.patch | 48 ------------ 0002-Implement-restart_if-for-RedHat-OS.patch | 40 ++++++++++ WALinuxAgent.spec | 23 ++++-- sources | 2 +- 6 files changed, 133 insertions(+), 56 deletions(-) create mode 100644 0001-Initial-redhat-build-configuation.patch delete mode 100644 0002-Fix-distro-resolution-for-RedHat-2083.patch create mode 100644 0002-Implement-restart_if-for-RedHat-OS.patch diff --git a/.gitignore b/.gitignore index b57e398..e23d00a 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ /v2.2.52.tar.gz /module-setup.sh /v2.3.0.2.tar.gz +/v2.7.0.6.tar.gz diff --git a/0001-Initial-redhat-build-configuation.patch b/0001-Initial-redhat-build-configuation.patch new file mode 100644 index 0000000..938b0bd --- /dev/null +++ b/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/0002-Fix-distro-resolution-for-RedHat-2083.patch b/0002-Fix-distro-resolution-for-RedHat-2083.patch deleted file mode 100644 index 85bd505..0000000 --- a/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/0002-Implement-restart_if-for-RedHat-OS.patch b/0002-Implement-restart_if-for-RedHat-OS.patch new file mode 100644 index 0000000..142f6df --- /dev/null +++ b/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/WALinuxAgent.spec b/WALinuxAgent.spec index 5680643..4513a9f 100644 --- a/WALinuxAgent.spec +++ b/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,9 @@ 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 + # Source-git patches BuildArch: noarch @@ -60,8 +62,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 +81,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 +108,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 +123,14 @@ 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 +- Rebase to 2.7.0.6-1 [bz#2083464] +- Adding restart_if implementation for RHEL [bz#2081944] +- Resolves: bz#2083464 + ([Azure][RHEL-9]Rebase WALinuxAgent to v2.7.0.6) +- Resolves: bz#2081944 + ([Azure][WALA][9.0] WALA provisions VM failed because of no "ifdown") + * Tue Aug 10 2021 Mohan Boddu - 2.3.0.2-3 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688 diff --git a/sources b/sources index 29f0945..1c0074c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (v2.3.0.2.tar.gz) = 7aa3c0d5a0987774625cacb4e5be105779db8e6531fba2d5d2fd58931616e8b79d00f253b972d1e531c652f6d782e607748e135fa522258f8a5fb137002e0e25 +SHA512 (v2.7.0.6.tar.gz) = b23c9c31014d5f5e31952bb97babfcf45058fa2826d3ca167ee87d432a9459b99ce1b823e7c7e83933f8389368ee47d76398dd514ce0a3b27bfb47ba4e44a17b