parent
9981d65f86
commit
4e49ca8b27
@ -1,6 +1,6 @@
|
||||
56057bba4714e59b0f28bbb778bdb8321a198dd7 SOURCES/ansible-c1bb0c6ab89a344bdcc07ef66887c310e661e3a6.tar.gz
|
||||
6a9e1e0eec23c0f3091fa53f91eb8701ad7caaeb SOURCES/jinja2-b08cd4bc64bb980df86ed2876978ae5735572280.tar.gz
|
||||
72c5fe7f8145d4cff66426c444c33104a9ae3d53 SOURCES/markupsafe-b5a517506d6cb8091e215a4a89e47db5eee6a68f.tar.gz
|
||||
d5b06047a8a5937c9433c8e0e88bcf2ccb6a4f84 SOURCES/packaging-ded06cedf6e20680eea0363fac894cb4a09e7831.tar.gz
|
||||
f20e820c8fa08ff162ace90735a2a89c599f7166 SOURCES/pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605.tar.gz
|
||||
c17fd6000af4ccf32930c41e928fea1e38cb5d0a SOURCES/straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed.tar.gz
|
||||
560f248ccb0b98256c5b50c86a002c2c1e57edb6 SOURCES/Jinja2-3.1.2.tar.gz
|
||||
acb6dca5cbec84f4c707225a8b6b2505fae28c90 SOURCES/MarkupSafe-2.1.0.tar.gz
|
||||
b7e3b3c247a445c1986e5ec350b13bb1984a7207 SOURCES/ansible-core-2.14.2.tar.gz
|
||||
b99fa7af153646722b2d1817bb09906cc5a94bc6 SOURCES/packaging-20.4.tar.gz
|
||||
ca8d892c93fe2d54ea5e6f31c5798e40c58e8667 SOURCES/pyparsing-2.4.7.tar.gz
|
||||
ae564e766fc147e87d7f009d42b5204b7ae3a832 SOURCES/resolvelib-0.5.4.tar.gz
|
||||
|
@ -1,6 +1,6 @@
|
||||
SOURCES/ansible-c1bb0c6ab89a344bdcc07ef66887c310e661e3a6.tar.gz
|
||||
SOURCES/jinja2-b08cd4bc64bb980df86ed2876978ae5735572280.tar.gz
|
||||
SOURCES/markupsafe-b5a517506d6cb8091e215a4a89e47db5eee6a68f.tar.gz
|
||||
SOURCES/packaging-ded06cedf6e20680eea0363fac894cb4a09e7831.tar.gz
|
||||
SOURCES/pyparsing-6a844ee35ca5125490a28dbd6dd2d15b6498e605.tar.gz
|
||||
SOURCES/straightplugin-6634ea8e1e89d5bb23804f50e676f196c52c46ed.tar.gz
|
||||
SOURCES/Jinja2-3.1.2.tar.gz
|
||||
SOURCES/MarkupSafe-2.1.0.tar.gz
|
||||
SOURCES/ansible-core-2.14.2.tar.gz
|
||||
SOURCES/packaging-20.4.tar.gz
|
||||
SOURCES/pyparsing-2.4.7.tar.gz
|
||||
SOURCES/resolvelib-0.5.4.tar.gz
|
||||
|
@ -1,72 +0,0 @@
|
||||
From 1a583e3c0d67a63cef1b1a433f176b7983d39812 Mon Sep 17 00:00:00 2001
|
||||
From: Matt Martz <matt@sivel.net>
|
||||
Date: Wed, 26 Oct 2022 16:06:43 -0500
|
||||
Subject: [PATCH] [stable-2.13] Use python re to parse service output instead
|
||||
of grep (#79015) (#79051)
|
||||
|
||||
* Use python re to parse service output instead of grep. Fixes #78541
|
||||
|
||||
* Add clog frag
|
||||
|
||||
* Add an extra guard to abort if rc is 4, and /etc/init.d is missing
|
||||
(cherry picked from commit 4458128)
|
||||
|
||||
Co-authored-by: Matt Martz <matt@sivel.net>
|
||||
---
|
||||
.../fragments/78541-service-facts-re.yml | 3 +++
|
||||
lib/ansible/modules/service_facts.py | 20 +++++++++++--------
|
||||
2 files changed, 15 insertions(+), 8 deletions(-)
|
||||
create mode 100644 changelogs/fragments/78541-service-facts-re.yml
|
||||
|
||||
diff --git a/changelogs/fragments/78541-service-facts-re.yml b/changelogs/fragments/78541-service-facts-re.yml
|
||||
new file mode 100644
|
||||
index 0000000000..b96d584246
|
||||
--- /dev/null
|
||||
+++ b/changelogs/fragments/78541-service-facts-re.yml
|
||||
@@ -0,0 +1,3 @@
|
||||
+bugfixes:
|
||||
+- service_facts - Use python re to parse service output instead of grep
|
||||
+ (https://github.com/ansible/ansible/issues/78541)
|
||||
diff --git a/lib/ansible/modules/service_facts.py b/lib/ansible/modules/service_facts.py
|
||||
index 996b47fd59..60555fdc4a 100644
|
||||
--- a/lib/ansible/modules/service_facts.py
|
||||
+++ b/lib/ansible/modules/service_facts.py
|
||||
@@ -89,6 +89,7 @@ ansible_facts:
|
||||
'''
|
||||
|
||||
|
||||
+import os
|
||||
import platform
|
||||
import re
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
@@ -104,16 +105,19 @@ class BaseService(object):
|
||||
class ServiceScanService(BaseService):
|
||||
|
||||
def _list_sysvinit(self, services):
|
||||
-
|
||||
- rc, stdout, stderr = self.module.run_command("%s --status-all 2>&1 | grep -E \"\\[ (\\+|\\-) \\]\"" % self.service_path, use_unsafe_shell=True)
|
||||
+ rc, stdout, stderr = self.module.run_command("%s --status-all" % self.service_path)
|
||||
+ if rc == 4 and not os.path.exists('/etc/init.d'):
|
||||
+ # This function is not intended to run on Red Hat but it could happen
|
||||
+ # if `chkconfig` is not installed. `service` on RHEL9 returns rc 4
|
||||
+ # when /etc/init.d is missing, add the extra guard of checking /etc/init.d
|
||||
+ # instead of solely relying on rc == 4
|
||||
+ return
|
||||
if rc != 0:
|
||||
self.module.warn("Unable to query 'service' tool (%s): %s" % (rc, stderr))
|
||||
- for line in stdout.split("\n"):
|
||||
- line_data = line.split()
|
||||
- if len(line_data) < 4:
|
||||
- continue # Skipping because we expected more data
|
||||
- service_name = " ".join(line_data[3:])
|
||||
- if line_data[1] == "+":
|
||||
+ p = re.compile(r'^\s*\[ (?P<state>\+|\-) \]\s+(?P<name>.+)$', flags=re.M)
|
||||
+ for match in p.finditer(stdout):
|
||||
+ service_name = match.group('name')
|
||||
+ if match.group('state') == "+":
|
||||
service_state = "running"
|
||||
else:
|
||||
service_state = "stopped"
|
||||
--
|
||||
2.30.2
|
||||
|
@ -0,0 +1,18 @@
|
||||
diff --git a/requirements.txt b/requirements.txt
|
||||
index 20562c3e0f..792daa209a 100644
|
||||
--- a/requirements.txt
|
||||
+++ b/requirements.txt
|
||||
@@ -3,13 +3,5 @@
|
||||
# packages. Thus, this should be the loosest set possible (only required
|
||||
# packages, not optional ones, and with the widest range of versions that could
|
||||
# be suitable)
|
||||
-jinja2 >= 3.0.0
|
||||
PyYAML >= 5.1 # PyYAML 5.1 is required for Python 3.8+ support
|
||||
cryptography
|
||||
-packaging
|
||||
-# NOTE: resolvelib 0.x version bumps should be considered major/breaking
|
||||
-# NOTE: and we should update the upper cap with care, at least until 1.0
|
||||
-# NOTE: Ref: https://github.com/sarugaku/resolvelib/issues/69
|
||||
-# NOTE: When updating the upper bound, also update the latest version used
|
||||
-# NOTE: in the ansible-galaxy-collection test suite.
|
||||
-resolvelib >= 0.5.3, < 0.9.0 # dependency resolver used by ansible-galaxy
|
Loading…
Reference in new issue