Compare commits

...

No commits in common. "imports/c8s/WALinuxAgent-2.2.49.2-1.el8" and "c8" have entirely different histories.

10 changed files with 446 additions and 219 deletions

View File

@ -1 +1 @@
3c11701ed7b3d9dc76f521eb9519c3f1ce8a24b8 SOURCES/WALinuxAgent-2.2.49.2.tar.gz
9d9b8fcd872d8782b96d312fb13f47a41658dd04 SOURCES/v2.7.0.6.tar.gz

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/WALinuxAgent-2.2.49.2.tar.gz
SOURCES/v2.7.0.6.tar.gz

View File

@ -1,4 +1,4 @@
From 18257d0baf1acde7522c1bf7d10e0a588d974431 Mon Sep 17 00:00:00 2001
From ee6172c4d57103ac857bbd69c46f247cee5394c3 Mon Sep 17 00:00:00 2001
From: Miroslav Rezanina <mrezanin@redhat.com>
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
@ -31,34 +35,33 @@ Merged patches (2.2.32):
Merged patches (2.2.49):
- 3a23336 Mark logrotate configs with %config(noreplace)
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 +
azurelinuxagent/ga/update.py | 12 +-
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 | 206 +++++++++++++++++++
redhat/Makefile | 72 +++++
redhat/Makefile.common | 37 +++
redhat/WALinuxAgent.spec.template | 243 ++++++++++++++++
redhat/rpmbuild/BUILD/.gitignore | 2 +
redhat/rpmbuild/RPMS/.gitignore | 2 +
redhat/rpmbuild/SOURCES/.gitignore | 2 +
redhat/rpmbuild/SPECS/.gitignore | 2 +
redhat/rpmbuild/SRPMS/.gitignore | 2 +
redhat/scripts/frh.py | 27 +++
redhat/scripts/git-backport-diff | 327 ++++++++++++++++++++++++++++++
redhat/scripts/git-compile-check | 215 ++++++++++++++++++++
redhat/scripts/process-patches.sh | 79 ++++++++
redhat/scripts/frh.py | 27 ++
redhat/scripts/git-backport-diff | 327 ++++++++++++++++++++++
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 +-
26 files changed, 1002 insertions(+), 14 deletions(-)
19 files changed, 1042 insertions(+), 5 deletions(-)
create mode 100644 .gitpublish
create mode 100644 redhat/.gitignore
create mode 100644 redhat/Makefile
@ -75,110 +78,8 @@ Merged patches (2.2.49):
create mode 100755 redhat/scripts/process-patches.sh
create mode 100755 redhat/scripts/tarball_checksum.sh
diff --git a/azurelinuxagent/ga/update.py b/azurelinuxagent/ga/update.py
index 6fec60e..d2a80ab 100644
--- a/azurelinuxagent/ga/update.py
+++ b/azurelinuxagent/ga/update.py
@@ -87,8 +87,11 @@ def get_update_handler():
def get_python_cmd():
- major_version = platform.python_version_tuple()[0]
- return "python" if int(major_version) <= 2 else "python{0}".format(major_version)
+ if sys.executable:
+ return sys.executable
+ else:
+ major_version = platform.python_version_tuple()[0]
+ return "python" if int(major_version) <= 2 else "python{0}".format(major_version)
class UpdateHandler(object):
@@ -152,9 +155,8 @@ class UpdateHandler(object):
# Launch the correct Python version for python-based agents
cmds = textutil.safe_shlex_split(agent_cmd)
- if cmds[0].lower() == "python":
- cmds[0] = get_python_cmd()
- agent_cmd = " ".join(cmds)
+ cmds[0] = get_python_cmd()
+ agent_cmd = " ".join(cmds)
self._evaluate_agent_health(latest_agent)
diff --git a/bin/waagent b/bin/waagent
index 60cdf56..0443ecb 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 3473267..762d211 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 d426eb2..ff1ebab 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 9afee45..c29fc1b 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 b77b0fa..317e89e 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 e91f143..99f3183 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 52e0eae..51c263c 100755
index 11e90b95..1b6b4351 100755
--- a/makepkg.py
+++ b/makepkg.py
@@ -1,4 +1,4 @@
@ -188,7 +89,7 @@ index 52e0eae..51c263c 100755
import glob
import os
diff --git a/setup.py b/setup.py
index 372807f..f0798ff 100755
index 12c9e1d6..586bb5ca 100755
--- a/setup.py
+++ b/setup.py
@@ -1,4 +1,4 @@
@ -197,16 +98,34 @@ index 372807f..f0798ff 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 74bd839..bf6ed99 100755
index 47f86af8..92585ed3 100755
--- a/tests/data/ext/sample_ext-1.3.0/sample.py
+++ b/tests/data/ext/sample_ext-1.3.0/sample.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
import json
import os
import re
--
1.8.3.1
2.31.1

View File

@ -1,84 +0,0 @@
From a5af5690f0df9cb12fc46f8f14e4beba7c3aeae8 Mon Sep 17 00:00:00 2001
From: Vitaly Kuznetsov <vkuznets@redhat.com>
Date: Thu, 13 Aug 2020 08:43:58 +0200
Subject: Fix handling of gen2 disks with udev rules (#1954)
RH-Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Message-id: <20200810082500.479999-1-vkuznets@redhat.com>
Patchwork-id: 98129
O-Subject: [RHEL8.3 WALinuxAgent PATCH] Fix handling of gen2 disks with udev rules (#1954)
Bugzilla: 1859037
RH-Acked-by: Cathy Avery <cavery@redhat.com>
RH-Acked-by: Mohammed Gamal <mgamal@redhat.com>
commit d33f1f810728dbe4e2891149936195d1ec7aaa27
Author: Thomas Stringer <thstring@microsoft.com>
Date: Mon Jul 20 14:24:22 2020 -0400
Fix handling of gen2 disks with udev rules (#1954)
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
config/66-azure-storage.rules | 40 +++++++++++++++++++++++-----------------
1 file changed, 23 insertions(+), 17 deletions(-)
diff --git a/config/66-azure-storage.rules b/config/66-azure-storage.rules
index 5fb3693..cf94807 100644
--- a/config/66-azure-storage.rules
+++ b/config/66-azure-storage.rules
@@ -1,28 +1,34 @@
-ACTION=="add|change", SUBSYSTEM=="block", ENV{ID_VENDOR}=="Msft", ENV{ID_MODEL}=="Virtual_Disk", GOTO="azure_disk"
-GOTO="azure_end"
+# Azure specific rules.
+ACTION!="add|change", GOTO="walinuxagent_end"
+SUBSYSTEM!="block", GOTO="walinuxagent_end"
+ATTRS{ID_VENDOR}!="Msft", GOTO="walinuxagent_end"
+ATTRS{ID_MODEL}!="Virtual_Disk", GOTO="walinuxagent_end"
-LABEL="azure_disk"
-# Root has a GUID of 0000 as the second value
-# The resource/resource has GUID of 0001 as the second value
-ATTRS{device_id}=="?00000000-0000-*", ENV{fabric_name}="root", GOTO="azure_names"
-ATTRS{device_id}=="?00000000-0001-*", ENV{fabric_name}="resource", GOTO="azure_names"
-ATTRS{device_id}=="?00000001-0001-*", ENV{fabric_name}="BEK", GOTO="azure_names"
-# Wellknown SCSI controllers
+# Match the known ID parts for root and resource disks.
+ATTRS{device_id}=="?00000000-0000-*", ENV{fabric_name}="root", GOTO="wa_azure_names"
+ATTRS{device_id}=="?00000000-0001-*", ENV{fabric_name}="resource", GOTO="wa_azure_names"
+
+# Gen2 disk.
ATTRS{device_id}=="{f8b3781a-1e82-4818-a1c3-63d806ec15bb}", ENV{fabric_scsi_controller}="scsi0", GOTO="azure_datadisk"
+# Create symlinks for data disks attached.
ATTRS{device_id}=="{f8b3781b-1e82-4818-a1c3-63d806ec15bb}", ENV{fabric_scsi_controller}="scsi1", GOTO="azure_datadisk"
ATTRS{device_id}=="{f8b3781c-1e82-4818-a1c3-63d806ec15bb}", ENV{fabric_scsi_controller}="scsi2", GOTO="azure_datadisk"
ATTRS{device_id}=="{f8b3781d-1e82-4818-a1c3-63d806ec15bb}", ENV{fabric_scsi_controller}="scsi3", GOTO="azure_datadisk"
-GOTO="azure_end"
+GOTO="walinuxagent_end"
-# Retrieve LUN number for datadisks
+# Parse out the fabric n ame based off of scsi indicators.
LABEL="azure_datadisk"
-ENV{DEVTYPE}=="partition", PROGRAM="/bin/sh -c 'readlink /sys/class/block/%k/../device|cut -d: -f4'", ENV{fabric_name}="$env{fabric_scsi_controller}/lun$result", GOTO="azure_names"
-PROGRAM="/bin/sh -c 'readlink /sys/class/block/%k/device|cut -d: -f4'", ENV{fabric_name}="$env{fabric_scsi_controller}/lun$result", GOTO="azure_names"
-GOTO="azure_end"
+ENV{DEVTYPE}=="partition", PROGRAM="/bin/sh -c 'readlink /sys/class/block/%k/../device|cut -d: -f4'", ENV{fabric_name}="$env{fabric_scsi_controller}/lun$result"
+ENV{DEVTYPE}=="disk", PROGRAM="/bin/sh -c 'readlink /sys/class/block/%k/device|cut -d: -f4'", ENV{fabric_name}="$env{fabric_scsi_controller}/lun$result"
+
+ENV{fabric_name}=="scsi0/lun0", ENV{fabric_name}="root"
+ENV{fabric_name}=="scsi0/lun1", ENV{fabric_name}="resource"
+# Don't create a symlink for the cd-rom.
+ENV{fabric_name}=="scsi0/lun2", GOTO="walinuxagent_end"
-# Create the symlinks
-LABEL="azure_names"
+# Create the symlinks.
+LABEL="wa_azure_names"
ENV{DEVTYPE}=="disk", SYMLINK+="disk/azure/$env{fabric_name}"
ENV{DEVTYPE}=="partition", SYMLINK+="disk/azure/$env{fabric_name}-part%n"
-LABEL="azure_end"
+LABEL="walinuxagent_end"
--
1.8.3.1

View File

@ -0,0 +1,40 @@
From 0a9c628d9edd67af7b6f20d034be85c1c552a512 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,108 @@
From 97728b1371d39f5ddd31004db0ba87b268308c5d Mon Sep 17 00:00:00 2001
From: Mohammed Gamal <mgamal@redhat.com>
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 <mmorsy@redhat.com>
RH-MergeRequest: 9: Update Log Collector default in Comments and Readme
RH-Commit: [1/1] ff82c0e933649ccd06d3cc48753324cddef2c56a
RH-Bugzilla: 2114824
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=2114824
(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,45 @@
From 85638d1238ba9ab0c77138133ab1b7c7069e3821 Mon Sep 17 00:00:00 2001
From: Vitaly Kuznetsov <vkuznets@redhat.com>
Date: Tue, 21 Feb 2023 10:29:52 +0100
Subject: [PATCH 2/2] Use platform-python in waagent.service
RH-Author: Vitaly Kuznetsov <vkuznets@redhat.com>
RH-MergeRequest: 16: Use platform-python in waagent.service
RH-Bugzilla: 2170104
RH-Acked-by: Mohamed Gamal Morsy <mmorsy@redhat.com>
RH-Acked-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
RH-Commit: [2/2] e548a4d37bd89e6e2eb471b5193b76f1f9f9529b
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2170104
Upstream: RHEL only
WALinuxAgent in RHEL8 uses platform-python, which is python3.6.
'waagent.service', however, overrides this by calling
'/usr/bin/python3' directly and in case this point to a newer
AppStream Python (e.g. Python3.9) WALinuxAgent breaks as it can't
find its files.
See also: https://github.com/Azure/WALinuxAgent/issues/2728
See also: https://github.com/Azure/WALinuxAgent/pull/2729
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
init/redhat/waagent.service | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/init/redhat/waagent.service b/init/redhat/waagent.service
index dc11fbb1..29056395 100644
--- a/init/redhat/waagent.service
+++ b/init/redhat/waagent.service
@@ -8,7 +8,7 @@ ConditionPathExists=/etc/waagent.conf
[Service]
Type=simple
-ExecStart=/usr/bin/python3 -u /usr/sbin/waagent -daemon
+ExecStart=/usr/sbin/waagent -daemon
Restart=always
RestartSec=5
Slice=azure.slice
--
2.37.3

View File

@ -0,0 +1,57 @@
From ac21739b94266387360a7ba2b3cfeb44c3df5b01 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: 4: redhat: Fix command sequence for restarting net interface
RH-Commit: [1/1] ac14220635c30b3361399ae33a5ecd4e7d8cf92b
RH-Bugzilla: 2080826
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
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 <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.35.3

View File

@ -0,0 +1,49 @@
From f45dc73365999334e680d64c90d36f710a0c7831 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: 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 <vkuznets@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
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
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

@ -1,26 +1,36 @@
Summary: Microsoft Azure Linux Agent
Name: WALinuxAgent
Version: 2.2.49.2
Release: 1%{?dist}
Version: 2.7.0.6
Release: 8%{?dist}
License: ASL 2.0
Group: Development/Libraries
Url: https://github.com/Azure/WALinuxAgent
Source0: WALinuxAgent-2.2.49.2.tar.gz
Source0: v2.7.0.6.tar.gz
BuildArch: noarch
Patch0001: 0001-Add-inital-redhat-build-support.patch
Patch0002: 0002-Fix-handling-of-gen2-disks-with-udev-rules-1954.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
# For bz#2170104 - [Azure][WALA][RHEL-8] systemd service should not use python3
Patch6: wla-Use-platform-python-in-waagent.service.patch
# rhel requirements
BuildRequires: python3-devel
BuildRequires: python3-setuptools
Requires: %name-udev = %version-%release
Requires: openssh
Requires: openssh-server
Requires: openssl
Requires: parted
Requires: python3-pyasn1
Requires: python36
Requires: iptables
BuildRequires: systemd
Requires(post): systemd
@ -32,12 +42,21 @@ The Azure Linux Agent supports the provisioning and running of Linux
VMs in the Azure cloud. This package should be installed on Linux disk
images that are built to run in the Azure environment.
%package udev
Summary: Udev rules for Microsoft Azure
%description udev
Udev rules specific to Microsoft Azure Virtual Machines.
%prep
%setup -q
%patch0001 -p1
%patch0002 -p1
%patch0003 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%build
%py3_build
@ -46,6 +65,9 @@ images that are built to run in the Azure environment.
%{__python3} setup.py install --single-version-externally-managed -O1 --root=$RPM_BUILD_ROOT --record=INSTALLED_FILES
rm -f %{buildroot}%{_sbindir}/waagent2.0
mkdir -p %{buildroot}%{_udevrulesdir}
mv %{buildroot}%{_sysconfdir}/udev/rules.d/*.rules %{buildroot}%{_udevrulesdir}/
%clean
rm -rf $RPM_BUILD_ROOT
@ -57,22 +79,93 @@ rm -rf $RPM_BUILD_ROOT
%postun
%systemd_postun_with_restart waagent.service
rm -rf %{_unitdir}/waagent.service.d/
%files
%defattr(-,root,root)
%{python3_sitelib}/*
%config(noreplace) %{_sysconfdir}/waagent.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/waagent.logrotate
%config(noreplace) %{_sysconfdir}/logrotate.d/waagent-extn.logrotate
%{_sbindir}/waagent
%{_unitdir}/waagent.service
/etc/udev/rules.d/66-azure-storage.rules
/etc/udev/rules.d/99-azure-product-uuid.rules
%{_unitdir}/azure.slice
%{_unitdir}/azure-vmextensions.slice
%ghost %{_unitdir}/waagent-network-setup.service
%files udev
%{_udevrulesdir}/*.rules
%changelog
* Mon Mar 06 2023 Jon Maloy <jmaloy@redhat.com> - 2.7.0.6-8.el8_8
- wla-redhat-Fix-frh.py-to-not-skip-valid-patches-to-init-.patch [bz#2170104]
- wla-Use-platform-python-in-waagent.service.patch [bz#2170104]
- Resolves: bz#2170104
([Azure][WALA][RHEL-8] systemd service should not use python3)
* Mon Mar 06 2023 Jon Maloy <jmaloy@redhat.com> - 2.7.0.6-7.el8_8
- wla-redhat-Fix-frh.py-to-not-skip-valid-patches-to-init-.patch [bz#2170104]
- wla-Use-platform-python-in-waagent.service.patch [bz#2170104]
- Resolves: bz#2170104
([Azure][WALA][RHEL-8] systemd service should not use python3)
* Mon Aug 29 2022 Miroslav Rezanina <mrezanin@redhat.com> - 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 <mrezanin@redhat.com> - 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 <jmaloy@redhat.com> - 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 <mrezanin@redhat.com> - 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 <cconte@redhat.com> - 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 <mrezanin@redhat.com> - 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 <mrezanin@redhat.com> - 2.3.0.2-2
- wla-Require-iptables-for-setting-up-persistent-firewall-.patch [bz#1985198]
- Resolves: bz#1985198
([Azure][WALA][RHEL-8] WALA needs iptables package)
* Fri Jun 25 2021 Miroslav Rezanina <mrezanin@redhat.com> - 2.3.0.2-1
- Rebase to 2.3.0.2 [bz#1972102]
- Resolves: bz#1972102
([Azure][RHEL-8]Rebase WALinuxAgent to 2.3.0.2)
* Tue Jan 12 2021 Miroslav Rezanina <mrezanin@redhat.com> - 2.2.49.2-3.el8
- wla-Provide-udev-rules-as-a-separate-subpackage.patch [bz#1913074]
- Resolves: bz#1913074
([Azure][RFE] please provide the WALinuxAgent-udev subpackage)
* Thu Dec 17 2020 Miroslav Rezanina <mrezanin@redhat.com> - 2.2.49.2-2.el8
- wla-Fixed-faulty-check-for-run_command-2093.patch [bz#1903074]
- Resolves: bz#1903074
([Azure][WALA] Miss report "hostnamectl set-hostname --static] failed, attempting fallback")
* Wed Nov 18 2020 Miroslav Rezanina <mrezanin@redhat.com> - 2.2.49.2-1.el8
- Rebase to 2.2.49.2 [bz#1896907]
- Resolves: bz#1896907
([Azure] Rebase WALinuxAgent to 2.2.49)
* Thu Aug 13 2020 Miroslav Rezanina <mrezanin@redhat.com> - 2.2.46-8.el8