Merge branch 'c9-beta' into a9-beta

This commit is contained in:
eabdullin 2022-09-27 09:01:00 +00:00 committed by Stepan Oksanichenko
commit af9f3cb025
9 changed files with 377 additions and 58 deletions

View File

@ -1 +1 @@
de1d5307a1fc937038536b27d1e32f7ee851d0dd SOURCES/v2.3.0.2.tar.gz
9d9b8fcd872d8782b96d312fb13f47a41658dd04 SOURCES/v2.7.0.6.tar.gz

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/v2.3.0.2.tar.gz
SOURCES/v2.7.0.6.tar.gz

View File

@ -0,0 +1,75 @@
From 9d071a9b4b40f0f86bb0b739b72c0b9b4870f060 Mon Sep 17 00:00:00 2001
From: Miroslav Rezanina <mrezanin@redhat.com>
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 <mrezanin@redhat.com>
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

View File

@ -1,48 +0,0 @@
From 7289e616a836fe0f1c97388f40e5d4916804ae91 Mon Sep 17 00:00:00 2001
From: Paula Gombar <gombarica@gmail.com>
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 <vkuznets@redhat.com>
---
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

View File

@ -0,0 +1,40 @@
From 8538516744130409f96b3ec956ff5ec1b1c1be11 Mon Sep 17 00:00:00 2001
From: Miroslav Rezanina <mrezanin@redhat.com>
Date: Tue, 24 May 2022 04:10:46 -0400
Subject: Implement restart_if for RedHat OS
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
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

View File

@ -0,0 +1,107 @@
From 1671c696f3b0f51e3e317b50aabc5dc84be4ca01 Mon Sep 17 00:00:00 2001
From: Mohammed Gamal <mgamal@redhat.com>
Date: Wed, 3 Aug 2022 13:23:19 +0200
Subject: [PATCH 2/2] Update Log Collector default in Comments and Readme
(#2608)
RH-Author: Mohamed Gamal Morsy <mmorsy@redhat.com>
RH-MergeRequest: 4: Update Log Collector default in Comments and Readme
RH-Commit: [1/1] 2f249d80b7136a0e3dbacb34a75c56454b95b8c2
RH-Bugzilla: 2093965
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2093965
(cherry picked from commit a560872bec103523e73ddcb5fb5705896545ffce)
Signed-off-by: Mohammed Gamal <mgamal@redhat.com>
---
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

View File

@ -0,0 +1,57 @@
From 6d452b28383c59a8193595daaca13fa8db9338a1 Mon Sep 17 00:00:00 2001
From: Mohammed Gamal <mgamal@redhat.com>
Date: Wed, 22 Jun 2022 13:36:07 +0200
Subject: [PATCH] redhat: Fix command sequence for restarting net interface
RH-Author: Mohamed Gamal Morsy <mmorsy@redhat.com>
RH-MergeRequest: 2: redhat: Fix command sequence for restarting net interface
RH-Commit: [1/1] e838ff196b8823f64e08247b3a4dac9d60e5ed72
RH-Bugzilla: 2098233
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
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 <mgamal@redhat.com>
---
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

View File

@ -0,0 +1,49 @@
From b85814d5683c7f8a1e1b5f3570bcce0a8f76137b Mon Sep 17 00:00:00 2001
From: Mohammed Gamal <mgamal@redhat.com>
Date: Fri, 29 Jul 2022 13:07:13 +0200
Subject: [PATCH 1/2] redhat: Use NetworkManager to set DHCP hostnames on
recent RHEL distros
RH-Author: Mohamed Gamal Morsy <mmorsy@redhat.com>
RH-MergeRequest: 3: redhat: Use NetworkManager to set DHCP hostnames on recent RHEL distros
RH-Commit: [1/1] 2bf51293796ba0e8567e436836adc0547f062b04
RH-Bugzilla: 2114830
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2114830
Recent versions of RHEL 8 and RHEL 9 started using NetworkManager to configure
network intefaces instead of sysconfig files. Configurations are no longer
stored in /etc/sysconfig/ifcfg-{interface}.
Fix this for setting DHCP hostnames in those RHEL versions.
Signed-off-by: Mohammed Gamal <mgamal@redhat.com>
---
azurelinuxagent/common/osutil/redhat.py | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/azurelinuxagent/common/osutil/redhat.py b/azurelinuxagent/common/osutil/redhat.py
index 5c397ae8..7dd36add 100644
--- a/azurelinuxagent/common/osutil/redhat.py
+++ b/azurelinuxagent/common/osutil/redhat.py
@@ -158,3 +158,15 @@ class RedhatOSUtil(Redhat6xOSUtil):
time.sleep(wait)
else:
logger.warn("exceeded restart retries")
+
+ def set_dhcp_hostname(self, hostname):
+ """
+ Recent RHEL distributions use network manager instead of sysconfig files
+ to configure network interfaces
+ """
+ ifname = self.get_if_name()
+
+ return_code = shellutil.run("nmcli device modify {0} ipv4.dhcp-hostname {1} ipv6.dhcp-hostname {1}".format(ifname, hostname))
+
+ if return_code != 0:
+ logger.error("failed to set DHCP hostname for interface {0}: return code {1}".format(ifname, return_code))
--
2.31.1

View File

@ -2,8 +2,8 @@
%global dracut_modname 97walinuxagent
Name: WALinuxAgent
Version: 2.3.0.2
Release: 3%{?dist}.alma
Version: 2.7.0.6
Release: 5%{?dist}.alma
Summary: The Microsoft Azure Linux Agent
License: ASL 2.0
@ -12,7 +12,15 @@ 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
# For bz#2098233 - [Azure][WALA][RHEL-9] [9.1] walinuxagent kills network during boot
Patch3: wla-redhat-Fix-command-sequence-for-restarting-net-inter.patch
# For bz#2114830 - [Azure][WALA][RHEL-9.1] Provisioning failed if no ifcfg-eth0
Patch4: wla-redhat-Use-NetworkManager-to-set-DHCP-hostnames-on-r.patch
# For bz#2093965 - [Azure][WALA][RHEL-9] The description of "Logs.Collect" is incorrect
Patch5: wla-Update-Log-Collector-default-in-Comments-and-Readme-.patch
# Source-git patches
# AlmaLinux
Patch1000: WALinuxAgent-2.3-almalinux_support.patch
@ -62,8 +70,7 @@ Udev rules specific to Microsoft Azure Virtual Machines.
%prep
%setup -q
%patch0002 -p1
# Apply source-git patches
%autopatch -p1
%patch1000 -p1
@ -84,13 +91,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}
@ -108,11 +113,15 @@ install -m0755 -D -t %{buildroot}%{_prefix}/lib/dracut/modules.d/%{dracut_modnam
%files
%doc LICENSE.txt NOTICE README.md
%ghost %{_localstatedir}/log/waagent.log
%ghost %{_unitdir}/waagent-network-setup.service
%ghost %dir %{_unitdir}/waagent.service.d
%dir %attr(0700, root, root) %{_sharedstatedir}/waagent
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%{_sbindir}/waagent
%config(noreplace) %{_sysconfdir}/waagent.conf
%{_unitdir}/waagent.service
%{_unitdir}/azure.slice
%{_unitdir}/azure-vmextensions.slice
%{python3_sitelib}/azurelinuxagent
%{python3_sitelib}/*.egg-info
@ -126,9 +135,39 @@ install -m0755 -D -t %{buildroot}%{_prefix}/lib/dracut/modules.d/%{dracut_modnam
%endif
%changelog
* Wed Jan 19 2022 Eduard Abdullin <eabdullin@almalinux.org> - 2.3.0.2-3.alma
* Tue Sep 27 2022 Eduard Abdullin <eabdullin@almalinux.org> - 2.7.0.6-5.alma.plus
- Add AlmaLinux support
* Tue Aug 23 2022 Miroslav Rezanina <mrezanin@redhat.com> - 2.7.0.6-5
- wla-redhat-Mark-directories-properly-in-the-files-list.patch [bz#2114768]
- Resolves: bz#2114768
([Azure][WALA][RHEL-9] When remove package some files left)
* Wed Aug 17 2022 Miroslav Rezanina <mrezanin@redhat.com> - 2.7.0.6-4
- wla-redhat-Remove-all-waagent-unit-files-when-uninstalli.patch [bz#2114768]
- Resolves: bz#2114768
([Azure][WALA][RHEL-9] When remove package some files left)
* Mon Aug 08 2022 Miroslav Rezanina <mrezanin@redhat.com> - 2.7.0.6-3
- wla-redhat-Use-NetworkManager-to-set-DHCP-hostnames-on-r.patch [bz#2114830]
- wla-Update-Log-Collector-default-in-Comments-and-Readme-.patch [bz#2093965]
- Resolves: bz#2114830
([Azure][WALA][RHEL-9.1] Provisioning failed if no ifcfg-eth0)
- Resolves: bz#2093965
([Azure][WALA][RHEL-9] The description of "Logs.Collect" is incorrect)
* Fri Jul 15 2022 Miroslav Rezanina <mrezanin@redhat.com> - 2.7.0.6-2
- wla-redhat-Fix-command-sequence-for-restarting-net-inter.patch [bz#2098233]
- Resolves: bz#2098233
([Azure][WALA][RHEL-9] [9.1] walinuxagent kills network during boot)
* Wed May 25 2022 Miroslav Rezanina <mrezanin@redhat.com> - 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 <mboddu@redhat.com> - 2.3.0.2-3
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688