From 46ba2598ef4a27d9688af1fab565a5902e227076 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 08 2022 06:42:47 +0000 Subject: import WALinuxAgent-2.7.0.6-6.el8 --- diff --git a/.WALinuxAgent.metadata b/.WALinuxAgent.metadata index 8ac06c5..6fc22e2 100644 --- a/.WALinuxAgent.metadata +++ b/.WALinuxAgent.metadata @@ -1 +1 @@ -de1d5307a1fc937038536b27d1e32f7ee851d0dd SOURCES/WALinuxAgent-2.3.0.2.tar.gz +9d9b8fcd872d8782b96d312fb13f47a41658dd04 SOURCES/v2.7.0.6.tar.gz diff --git a/.gitignore b/.gitignore index 1b6e24f..d9de403 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/WALinuxAgent-2.3.0.2.tar.gz +SOURCES/v2.7.0.6.tar.gz diff --git a/SOURCES/0001-Add-inital-redhat-build-support.patch b/SOURCES/0001-Add-inital-redhat-build-support.patch index d330b09..a2aa39e 100644 --- a/SOURCES/0001-Add-inital-redhat-build-support.patch +++ b/SOURCES/0001-Add-inital-redhat-build-support.patch @@ -1,4 +1,4 @@ -From 3aa5fe71fd77f07c5b35ef40e774840f12ee4ee8 Mon Sep 17 00:00:00 2001 +From ee6172c4d57103ac857bbd69c46f247cee5394c3 Mon Sep 17 00:00:00 2001 From: Miroslav Rezanina Date: Thu, 6 Oct 2016 12:25:35 +0200 Subject: Add inital redhat build support @@ -17,6 +17,10 @@ Rebase notes (2.2.10): Rebase notes (2.2.46): - added waagent-extn.logrotate +Rebase notes (2.7.0.6): +- new files - azure.slice and azure-vmextensions.slice +- removed changes in not shipped scripts + Merged patches (2.2.45): - df29beb Switch from platform-python to python36 - 6749108 Stop packaging legacy waagent2.0 @@ -34,20 +38,17 @@ Merged patches (2.2.49): Merged patches (2.3.0.2): - 30bb06f9 Provide udev rules as a separate subpackage. + +Merged patches (2.7.0.6): +- a790fb5c Require iptables for setting up persistent firewall rules --- .gitignore | 1 + .gitpublish | 8 + - bin/waagent | 2 +- - bin/waagent2.0 | 2 +- - init/arch/waagent.service | 2 +- - init/clearlinux/waagent.service | 2 +- - init/suse/waagent | 2 +- - init/waagent.service | 2 +- makepkg.py | 2 +- redhat/.gitignore | 1 + redhat/Makefile | 72 +++++ redhat/Makefile.common | 37 +++ - redhat/WALinuxAgent.spec.template | 234 ++++++++++++++++ + redhat/WALinuxAgent.spec.template | 243 ++++++++++++++++ redhat/rpmbuild/BUILD/.gitignore | 2 + redhat/rpmbuild/RPMS/.gitignore | 2 + redhat/rpmbuild/SOURCES/.gitignore | 2 + @@ -58,9 +59,9 @@ Merged patches (2.3.0.2): redhat/scripts/git-compile-check | 215 ++++++++++++++ redhat/scripts/process-patches.sh | 93 ++++++ redhat/scripts/tarball_checksum.sh | 3 + - setup.py | 2 +- + setup.py | 6 +- tests/data/ext/sample_ext-1.3.0/sample.py | 2 +- - 25 files changed, 1037 insertions(+), 9 deletions(-) + 19 files changed, 1042 insertions(+), 5 deletions(-) create mode 100644 .gitpublish create mode 100644 redhat/.gitignore create mode 100644 redhat/Makefile @@ -77,78 +78,6 @@ Merged patches (2.3.0.2): create mode 100755 redhat/scripts/process-patches.sh create mode 100755 redhat/scripts/tarball_checksum.sh -diff --git a/bin/waagent b/bin/waagent -index 60cdf56c..0443ecb4 100755 ---- a/bin/waagent -+++ b/bin/waagent -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/python3.6 - # - # Azure Linux Agent - # -diff --git a/bin/waagent2.0 b/bin/waagent2.0 -index 34732677..762d211f 100644 ---- a/bin/waagent2.0 -+++ b/bin/waagent2.0 -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python3 - # - # Azure Linux Agent - # -diff --git a/init/arch/waagent.service b/init/arch/waagent.service -index d426eb21..ff1ebab1 100644 ---- a/init/arch/waagent.service -+++ b/init/arch/waagent.service -@@ -8,7 +8,7 @@ ConditionPathExists=/etc/waagent.conf - - [Service] - Type=simple --ExecStart=/usr/bin/python -u /usr/bin/waagent -daemon -+ExecStart=/usr/bin/python3 -u /usr/bin/waagent -daemon - Restart=always - RestartSec=5 - -diff --git a/init/clearlinux/waagent.service b/init/clearlinux/waagent.service -index 9afee454..c29fc1b2 100644 ---- a/init/clearlinux/waagent.service -+++ b/init/clearlinux/waagent.service -@@ -8,7 +8,7 @@ ConditionPathExists=/usr/share/defaults/waagent/waagent.conf - - [Service] - Type=simple --ExecStart=/usr/bin/python -u /usr/bin/waagent -daemon -+ExecStart=/usr/bin/python3 -u /usr/bin/waagent -daemon - Restart=always - RestartSec=5 - -diff --git a/init/suse/waagent b/init/suse/waagent -index b77b0fa4..317e89ec 100755 ---- a/init/suse/waagent -+++ b/init/suse/waagent -@@ -34,7 +34,7 @@ - # Description: Start the MicrosoftAzureLinuxAgent - ### END INIT INFO - --PYTHON=/usr/bin/python -+PYTHON=/usr/bin/python3 - WAZD_BIN=/usr/sbin/waagent - WAZD_CONF=/etc/waagent.conf - WAZD_PIDFILE=/var/run/waagent.pid -diff --git a/init/waagent.service b/init/waagent.service -index e91f1433..99f31830 100644 ---- a/init/waagent.service -+++ b/init/waagent.service -@@ -8,7 +8,7 @@ ConditionPathExists=/etc/waagent.conf - - [Service] - Type=simple --ExecStart=/usr/bin/python -u /usr/sbin/waagent -daemon -+ExecStart=/usr/bin/python3.6 -u /usr/sbin/waagent -daemon - Restart=always - RestartSec=5 - diff --git a/makepkg.py b/makepkg.py index 11e90b95..1b6b4351 100755 --- a/makepkg.py @@ -160,7 +89,7 @@ index 11e90b95..1b6b4351 100755 import glob import os diff --git a/setup.py b/setup.py -index c258e4b8..ba6783c6 100755 +index 12c9e1d6..586bb5ca 100755 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ @@ -169,6 +98,24 @@ index c258e4b8..ba6783c6 100755 # # Microsoft Azure Linux Agent 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("8"): + # 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("8"): + # redhat 8+ uses systemd and python3 + set_systemd_files(data_files, dest=systemd_dir_path, + src=["init/redhat/waagent.service", diff --git a/tests/data/ext/sample_ext-1.3.0/sample.py b/tests/data/ext/sample_ext-1.3.0/sample.py index 47f86af8..92585ed3 100755 --- a/tests/data/ext/sample_ext-1.3.0/sample.py @@ -180,5 +127,5 @@ index 47f86af8..92585ed3 100755 import os import re -- -2.27.0 +2.31.1 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..d90a129 --- /dev/null +++ b/SOURCES/0002-Implement-restart_if-for-RedHat-OS.patch @@ -0,0 +1,40 @@ +From 0a9c628d9edd67af7b6f20d034be85c1c552a512 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-Fix-if-hangs-2283.patch b/SOURCES/wla-Fix-if-hangs-2283.patch deleted file mode 100644 index 3d4b4bd..0000000 --- a/SOURCES/wla-Fix-if-hangs-2283.patch +++ /dev/null @@ -1,127 +0,0 @@ -From b415b30624f0dcbe9fd574c28593e8fd38a8d9c8 Mon Sep 17 00:00:00 2001 -From: Mohammed Gamal -Date: Thu, 2 Jun 2022 14:39:42 +0200 -Subject: [PATCH 1/2] Fix if hangs (#2283) - -RH-Author: Mohamed Gamal Morsy -RH-MergeRequest: 2: Fix if hangs (#2283) -RH-Commit: [1/2] cf3b0a2d65eb9eeeceab6d74e376e729e06a01ed -RH-Bugzilla: 2092753 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Cathy Avery - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2092753 - -Signed-off-by: Laveesh Rohra -(cherry picked from commit 05cd6437ba90928788ef18c8b9fc8a6dbaf47c7d) - -Signed-off-by: Mohammed Gamal ---- - azurelinuxagent/common/osutil/default.py | 26 ++++++++---------------- - azurelinuxagent/common/osutil/ubuntu.py | 22 +++++++++----------- - tests/common/osutil/test_default.py | 11 +++------- - 3 files changed, 21 insertions(+), 38 deletions(-) - -diff --git a/azurelinuxagent/common/osutil/default.py b/azurelinuxagent/common/osutil/default.py -index 066e1431..820016c1 100644 ---- a/azurelinuxagent/common/osutil/default.py -+++ b/azurelinuxagent/common/osutil/default.py -@@ -1163,25 +1163,15 @@ class DefaultOSUtil(object): - def restart_if(self, ifname, retries=3, wait=5): - retry_limit = retries + 1 - for attempt in range(1, retry_limit): -- try: -- shellutil.run_command(["ifdown", ifname]) -- shellutil.run_command(["ifup", ifname]) -+ return_code = shellutil.run("ifdown {0} && ifup {0}".format(ifname), expected_errors=[1] if attempt < retries else []) -+ if return_code == 0: - return -- except shellutil.CommandError as cmd_err: -- -- msg = "failed to restart {0}: returncode={1}\n[stdout]{2}\n\n[stderr]{3}\n"\ -- .format(ifname, cmd_err.returncode, cmd_err.stdout, cmd_err.stderr) -- -- if cmd_err.returncode == 1: -- logger.info(msg) -- else: -- logger.warn(msg) -- -- if attempt < retry_limit: -- logger.info("retrying in {0} seconds".format(wait)) -- time.sleep(wait) -- else: -- logger.warn("exceeded restart retries") -+ 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") - - def publish_hostname(self, hostname): - self.set_dhcp_hostname(hostname) -diff --git a/azurelinuxagent/common/osutil/ubuntu.py b/azurelinuxagent/common/osutil/ubuntu.py -index 249e1120..5a21511c 100644 ---- a/azurelinuxagent/common/osutil/ubuntu.py -+++ b/azurelinuxagent/common/osutil/ubuntu.py -@@ -142,19 +142,17 @@ class UbuntuOSUtil(Ubuntu16OSUtil): - Restart an interface by bouncing the link. systemd-networkd observes - this event, and forces a renew of DHCP. - """ -- 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)) -+ 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") - - - class UbuntuSnappyOSUtil(Ubuntu14OSUtil): -diff --git a/tests/common/osutil/test_default.py b/tests/common/osutil/test_default.py -index 65d7ae0f..d6eae68f 100644 ---- a/tests/common/osutil/test_default.py -+++ b/tests/common/osutil/test_default.py -@@ -49,20 +49,15 @@ class TestOSUtil(AgentTestCase): - # setup - retries = 3 - ifname = 'dummy' -- with patch.object(shellutil, "run_command") as run_patch: -- run_patch.side_effect = shellutil.CommandError("ifupdown dummy", 1, "", "") -+ with patch.object(shellutil, "run") as run_patch: -+ run_patch.return_value = 1 - - # execute - osutil.DefaultOSUtil.restart_if(osutil.DefaultOSUtil(), ifname=ifname, retries=retries, wait=0) - - # assert - self.assertEqual(run_patch.call_count, retries) -- cmd_queue = list(args[0] for (args, _) in run_patch.call_args_list) -- while cmd_queue: -- self.assertEqual(cmd_queue.pop(0), ["ifdown", ifname]) -- # We don't expect the following command to be called because 'dummy' does -- # not exist. -- self.assertNotEqual(cmd_queue[0] if cmd_queue else None, ["ifup", ifname]) -+ self.assertEqual(run_patch.call_args_list[0][0][0], 'ifdown {0} && ifup {0}'.format(ifname)) - - def test_get_dvd_device_success(self): - with patch.object(os, 'listdir', return_value=['cpu', 'cdrom0']): --- -2.31.1 - diff --git a/SOURCES/wla-Implement-restart_if-for-RedHat-OS.patch b/SOURCES/wla-Implement-restart_if-for-RedHat-OS.patch deleted file mode 100644 index 8e58daf..0000000 --- a/SOURCES/wla-Implement-restart_if-for-RedHat-OS.patch +++ /dev/null @@ -1,48 +0,0 @@ -From ab69ae533c18db1f468e7433984b36159612c0d0 Mon Sep 17 00:00:00 2001 -From: Mohammed Gamal -Date: Tue, 17 May 2022 10:50:59 +0200 -Subject: [PATCH 2/2] Implement restart_if for RedHat OS - -RH-Author: Mohamed Gamal Morsy -RH-MergeRequest: 2: Fix if hangs (#2283) -RH-Commit: [2/2] ba8712ff724d5f3cd8bd0b19f5849c854f6c99ca -RH-Bugzilla: 2092753 -RH-Acked-by: Vitaly Kuznetsov -RH-Acked-by: Cathy Avery - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2092753 - -Signed-off-by: Vitaly Kuznetsov -Signed-off-by: Mohammed Gamal ---- - azurelinuxagent/common/osutil/redhat.py | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - -diff --git a/azurelinuxagent/common/osutil/redhat.py b/azurelinuxagent/common/osutil/redhat.py -index 9759d113..840f7a1d 100644 ---- a/azurelinuxagent/common/osutil/redhat.py -+++ b/azurelinuxagent/common/osutil/redhat.py -@@ -142,3 +142,20 @@ 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", "&&", "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-Update-Log-Collector-default-in-Comments-and-Readme-.patch b/SOURCES/wla-Update-Log-Collector-default-in-Comments-and-Readme-.patch new file mode 100644 index 0000000..0410399 --- /dev/null +++ b/SOURCES/wla-Update-Log-Collector-default-in-Comments-and-Readme-.patch @@ -0,0 +1,108 @@ +From 97728b1371d39f5ddd31004db0ba87b268308c5d Mon Sep 17 00:00:00 2001 +From: Mohammed Gamal +Date: Wed, 3 Aug 2022 13:39:56 +0200 +Subject: [PATCH 2/2] Update Log Collector default in Comments and Readme + (#2608) + +RH-Author: Mohamed Gamal Morsy +RH-MergeRequest: 9: Update Log Collector default in Comments and Readme +RH-Commit: [1/1] ff82c0e933649ccd06d3cc48753324cddef2c56a +RH-Bugzilla: 2114824 +RH-Acked-by: Vitaly Kuznetsov +RH-Acked-by: Miroslav Rezanina + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2114824 + +(cherry picked from commit a560872bec103523e73ddcb5fb5705896545ffce) + +Signed-off-by: Mohammed Gamal +--- + README.md | 2 +- + config/debian/waagent.conf | 2 +- + config/suse/waagent.conf | 2 +- + config/ubuntu/waagent.conf | 2 +- + config/waagent.conf | 2 +- + tests/data/test_waagent.conf | 2 +- + 6 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/README.md b/README.md +index c69f43e6..f2f3db46 100644 +--- a/README.md ++++ b/README.md +@@ -465,7 +465,7 @@ _Default: y_ + + If set, agent logs will be periodically collected and uploaded to a secure location for improved supportability. + +-NOTE: This feature is only supported ubuntu 16.04+; this flag will not take effect on any other distro. ++NOTE: This feature relies on the agent's resource usage features (cgroups); this flag will not take effect on any distro not supported. + + #### __Logs.CollectPeriod__ + +diff --git a/config/debian/waagent.conf b/config/debian/waagent.conf +index 6bc36604..dfd7afcd 100644 +--- a/config/debian/waagent.conf ++++ b/config/debian/waagent.conf +@@ -63,7 +63,7 @@ Logs.Verbose=n + # Enable Console logging, default is y + # Logs.Console=y + +-# Enable periodic log collection, default is n ++# Enable periodic log collection, default is y + Logs.Collect=y + + # How frequently to collect logs, default is each hour +diff --git a/config/suse/waagent.conf b/config/suse/waagent.conf +index ac9f11a2..c617f9af 100644 +--- a/config/suse/waagent.conf ++++ b/config/suse/waagent.conf +@@ -66,7 +66,7 @@ Logs.Verbose=n + # Enable Console logging, default is y + # Logs.Console=y + +-# Enable periodic log collection, default is n ++# Enable periodic log collection, default is y + Logs.Collect=y + + # How frequently to collect logs, default is each hour +diff --git a/config/ubuntu/waagent.conf b/config/ubuntu/waagent.conf +index 63635a81..19b56bae 100644 +--- a/config/ubuntu/waagent.conf ++++ b/config/ubuntu/waagent.conf +@@ -66,7 +66,7 @@ Logs.Verbose=n + # Enable Console logging, default is y + # Logs.Console=y + +-# Enable periodic log collection, default is n ++# Enable periodic log collection, default is y + Logs.Collect=y + + # How frequently to collect logs, default is each hour +diff --git a/config/waagent.conf b/config/waagent.conf +index c7d10e2f..14cd01c8 100644 +--- a/config/waagent.conf ++++ b/config/waagent.conf +@@ -72,7 +72,7 @@ Logs.Verbose=n + # Enable Console logging, default is y + # Logs.Console=y + +-# Enable periodic log collection, default is n ++# Enable periodic log collection, default is y + Logs.Collect=y + + # How frequently to collect logs, default is each hour +diff --git a/tests/data/test_waagent.conf b/tests/data/test_waagent.conf +index a386228a..cc60886e 100644 +--- a/tests/data/test_waagent.conf ++++ b/tests/data/test_waagent.conf +@@ -67,7 +67,7 @@ ResourceDisk.MountOptions=None + # Enable verbose logging (y|n) + Logs.Verbose=n + +-# Enable periodic log collection, default is n ++# Enable periodic log collection, default is y + Logs.Collect=y + + # How frequently to collect logs, default is each hour +-- +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..a55d656 --- /dev/null +++ b/SOURCES/wla-redhat-Fix-command-sequence-for-restarting-net-inter.patch @@ -0,0 +1,57 @@ +From ac21739b94266387360a7ba2b3cfeb44c3df5b01 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: 4: redhat: Fix command sequence for restarting net interface +RH-Commit: [1/1] ac14220635c30b3361399ae33a5ecd4e7d8cf92b +RH-Bugzilla: 2080826 +RH-Acked-by: Miroslav Rezanina +RH-Acked-by: Vitaly Kuznetsov + +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2080826 + +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.35.3 + diff --git a/SOURCES/wla-redhat-Implement-restart_if-correctly-to-eliminate-w.patch b/SOURCES/wla-redhat-Implement-restart_if-correctly-to-eliminate-w.patch deleted file mode 100644 index a2efe55..0000000 --- a/SOURCES/wla-redhat-Implement-restart_if-correctly-to-eliminate-w.patch +++ /dev/null @@ -1,56 +0,0 @@ -From e95d78dbdc3ea83909d993c84f147bd26563e4a8 Mon Sep 17 00:00:00 2001 -From: Mohammed Gamal -Date: Thu, 30 Jun 2022 11:54:12 +0200 -Subject: [PATCH] redhat: Implement restart_if correctly to eliminate warnings - -RH-Author: Mohamed Gamal Morsy -RH-MergeRequest: 6: redhat: Fix WALinuxAgent killing network on boot and implement restart_if for Red Hat -RH-Commit: [3/3] 1827f4580b35e44ba60e5b176a1cee97023979ef -RH-Bugzilla: 2092753 -RH-Acked-by: Miroslav Rezanina -RH-Acked-by: Vitaly Kuznetsov - -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2092753 - -restart_if seems to generate some warnings. As errors are not handled correctly. -Implement restart_if() the same wat as default.py, but with RH supported commands -instead - -Signed-off-by: Mohammed Gamal ---- - azurelinuxagent/common/osutil/redhat.py | 21 ++++++++++----------- - 1 file changed, 10 insertions(+), 11 deletions(-) - -diff --git a/azurelinuxagent/common/osutil/redhat.py b/azurelinuxagent/common/osutil/redhat.py -index 840f7a1d..5c397ae8 100644 ---- a/azurelinuxagent/common/osutil/redhat.py -+++ b/azurelinuxagent/common/osutil/redhat.py -@@ -147,15 +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", "&&", "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.35.3 - diff --git a/SOURCES/wla-redhat-Use-NetworkManager-to-set-DHCP-hostnames-on-r.patch b/SOURCES/wla-redhat-Use-NetworkManager-to-set-DHCP-hostnames-on-r.patch index cc4d9c1..7a5a934 100644 --- a/SOURCES/wla-redhat-Use-NetworkManager-to-set-DHCP-hostnames-on-r.patch +++ b/SOURCES/wla-redhat-Use-NetworkManager-to-set-DHCP-hostnames-on-r.patch @@ -1,16 +1,17 @@ -From 3bc94c896f660e7932d732988f16dc2916fcc1d6 Mon Sep 17 00:00:00 2001 +From f45dc73365999334e680d64c90d36f710a0c7831 Mon Sep 17 00:00:00 2001 From: Mohammed Gamal Date: Fri, 29 Jul 2022 13:07:13 +0200 -Subject: [PATCH] redhat: Use NetworkManager to set DHCP hostnames on recent - RHEL distros +Subject: [PATCH 1/2] redhat: Use NetworkManager to set DHCP hostnames on + recent RHEL distros RH-Author: Mohamed Gamal Morsy -RH-MergeRequest: 13: redhat: Use NetworkManager to set DHCP hostnames on recent RHEL distros -RH-Bugzilla: 2133446 +RH-MergeRequest: 8: redhat: Use NetworkManager to set DHCP hostnames on recent RHEL distros +RH-Commit: [1/1] b83612e9d88bac7117541d7f7832f65ef268bbe3 +RH-Bugzilla: 2092002 +RH-Acked-by: Vitaly Kuznetsov RH-Acked-by: Miroslav Rezanina -RH-Commit: [1/1] 673e76149dd1f2fb4e23823844ed294fdbbecb1a -Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2133446 +Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2092002 Recent versions of RHEL 8 and RHEL 9 started using NetworkManager to configure network intefaces instead of sysconfig files. Configurations are no longer @@ -44,5 +45,5 @@ index 5c397ae8..7dd36add 100644 + if return_code != 0: + logger.error("failed to set DHCP hostname for interface {0}: return code {1}".format(ifname, return_code)) -- -2.37.3 +2.31.1 diff --git a/SPECS/WALinuxAgent.spec b/SPECS/WALinuxAgent.spec index 37ce560..88a2c6a 100644 --- a/SPECS/WALinuxAgent.spec +++ b/SPECS/WALinuxAgent.spec @@ -1,23 +1,22 @@ Summary: Microsoft Azure Linux Agent Name: WALinuxAgent -Version: 2.3.0.2 -Release: 2%{?dist}.3 +Version: 2.7.0.6 +Release: 6%{?dist} License: ASL 2.0 Group: Development/Libraries Url: https://github.com/Azure/WALinuxAgent -Source0: WALinuxAgent-2.3.0.2.tar.gz +Source0: v2.7.0.6.tar.gz BuildArch: noarch Patch0001: 0001-Add-inital-redhat-build-support.patch -# For bz#2092753 - [Azure][WALA][RHEL-8] [8.6.z] walinuxagent kills network during boot [rhel-8.6.0.z] -Patch2: wla-Fix-if-hangs-2283.patch -# For bz#2092753 - [Azure][WALA][RHEL-8] [8.6.z] walinuxagent kills network during boot [rhel-8.6.0.z] -Patch3: wla-Implement-restart_if-for-RedHat-OS.patch -# For bz#2092753 - [Azure][WALA][RHEL-8] [8.6.z] walinuxagent kills network during boot [rhel-8.6.0.z] -Patch4: wla-redhat-Implement-restart_if-correctly-to-eliminate-w.patch -# For bz#2133446 - [Azure][WALA][RHEL-8.7] Provisioning failed if no ifcfg-eth0 [rhel-8.6.0.z] -Patch5: wla-redhat-Use-NetworkManager-to-set-DHCP-hostnames-on-r.patch +Patch0002: 0002-Implement-restart_if-for-RedHat-OS.patch +# For bz#2080826 - [Azure][WALA][RHEL-8] [8.7] walinuxagent kills network during boot +Patch0003: wla-redhat-Fix-command-sequence-for-restarting-net-inter.patch +# For bz#2092002 - [Azure][WALA][RHEL-8.7] Provisioning failed if no ifcfg-eth0 +Patch4: wla-redhat-Use-NetworkManager-to-set-DHCP-hostnames-on-r.patch +# For bz#2114824 - [Azure][WALA][RHEL-8.7] The description of "Logs.Collect" is incorrect +Patch5: wla-Update-Log-Collector-default-in-Comments-and-Readme-.patch # rhel requirements BuildRequires: python3-devel @@ -51,8 +50,8 @@ Udev rules specific to Microsoft Azure Virtual Machines. %setup -q %patch0001 -p1 -%patch2 -p1 -%patch3 -p1 +%patch0002 -p1 +%patch0003 -p1 %patch4 -p1 %patch5 -p1 @@ -77,6 +76,7 @@ rm -rf $RPM_BUILD_ROOT %postun %systemd_postun_with_restart waagent.service +rm -rf %{_unitdir}/waagent.service.d/ %files %defattr(-,root,root) @@ -85,26 +85,49 @@ rm -rf $RPM_BUILD_ROOT %config(noreplace) %{_sysconfdir}/logrotate.d/waagent.logrotate %{_sbindir}/waagent %{_unitdir}/waagent.service +%{_unitdir}/azure.slice +%{_unitdir}/azure-vmextensions.slice +%ghost %{_unitdir}/waagent-network-setup.service %files udev %{_udevrulesdir}/*.rules %changelog -* Tue Oct 11 2022 Jon Maloy - 2.3.0.2-2.el8_6.3 -- wla-redhat-Use-NetworkManager-to-set-DHCP-hostnames-on-r.patch [bz#2133446] -- Resolves: bz#2133446 - ([Azure][WALA][RHEL-8.7] Provisioning failed if no ifcfg-eth0 [rhel-8.6.0.z]) - -* Tue Jul 12 2022 Camilla Conte - 2.3.0.2-2.el8_6.2 -- wla-redhat-Implement-restart_if-correctly-to-eliminate-w.patch [bz#2092753] -- Resolves: bz#2092753 - ([Azure][WALA][RHEL-8] [8.6.z] walinuxagent kills network during boot [rhel-8.6.0.z]) - -* Wed Jun 22 2022 Miroslav Rezanina - 2.3.0.2-2.el8_6.1 -- wla-Fix-if-hangs-2283.patch [bz#2092753] -- wla-Implement-restart_if-for-RedHat-OS.patch [bz#2092753] -- Resolves: bz#2092753 - ([Azure][WALA][RHEL-8] [8.6.z] walinuxagent kills network during boot [rhel-8.6.0.z]) +* Mon Aug 29 2022 Miroslav Rezanina - 2.7.0.6-6 +- wla-redhat-Remove-files-inside-WALA-services-directory.patch [bz#2114742] +- Resolves: bz#2114742 + ([Azure][WALA][RHEL-8] When remove package some files left) + +* Tue Aug 23 2022 Miroslav Rezanina - 2.7.0.6-5 +- wla-redhat-Mark-directories-properly-in-the-files-list.patch [bz#2114742] +- Resolves: bz#2114742 + ([Azure][WALA][RHEL-8] When remove package some files left) + +* Wed Aug 17 2022 Jon Maloy - 2.7.0.6-4 +- wla-redhat-Remove-all-waagent-unit-files-when-uninstalli.patch [bz#2114742] +- Resolves: bz#2114742 + ([Azure][WALA][RHEL-8] When remove package some files left) + +* Tue Aug 09 2022 Miroslav Rezanina - 2.7.0.6-3 +- wla-redhat-Use-NetworkManager-to-set-DHCP-hostnames-on-r.patch [bz#2092002] +- wla-Update-Log-Collector-default-in-Comments-and-Readme-.patch [bz#2114824] +- Resolves: bz#2092002 + ([Azure][WALA][RHEL-8.7] Provisioning failed if no ifcfg-eth0) +- Resolves: bz#2114824 + ([Azure][WALA][RHEL-8.7] The description of "Logs.Collect" is incorrect) + +* Tue Jul 12 2022 Camilla Conte - 2.7.0.6-2 +- wla-redhat-Fix-command-sequence-for-restarting-net-inter.patch [bz#2080826] +- Resolves: bz#2080826 + ([Azure][WALA][RHEL-8] [8.7] walinuxagent kills network during boot) + +* Wed May 25 2022 Miroslav Rezanina - 2.7.0.6-1 +- Rebase to 2.7.0.6 [bz#2083465] +- Adding restart_if implementation for RHEL [bz#2085578] +- Resolves: bz#2083465 + ([Azure][RHEL-8][8.7] Rebase WALinuxAgent to v2.7.0.6) +- Resolves: bz#2085578 + ([Azure][WALA][8.6] WALA provisions VM failed because of no "ifdown") * Mon Aug 09 2021 Miroslav Rezanina - 2.3.0.2-2 - wla-Require-iptables-for-setting-up-persistent-firewall-.patch [bz#1985198]