aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJake Hunsaker <jhunsake@redhat.com>2020-08-31 13:08:00 -0400
committerJake Hunsaker <jhunsake@redhat.com>2020-09-02 10:28:20 -0400
commit31102aff1a9a1a1338f075220edc8bc8f08db593 (patch)
treef4e88cc218906afb51bd1894787f180d13c89950
parentef4bccbb4a3d576ae181e69aab1f23ccb914f7e0 (diff)
downloadsos-31102aff1a9a1a1338f075220edc8bc8f08db593.tar.gz
[collect] Detect sos-4.0 and use new binary
Updates the `collect` module to detect sos-4.0 installation, and if present update the binary called to `sos report`. As part of this change, move the update of the binary path to the policy's full filesystem path into `finalize_sos_cmd()` Closes: #2214 Resolves: #2221 Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
-rw-r--r--sos/collector/sosnode.py13
-rw-r--r--sos/policies/__init__.py2
-rw-r--r--sos/policies/debian.py1
-rw-r--r--sos/policies/redhat.py2
4 files changed, 12 insertions, 6 deletions
diff --git a/sos/collector/sosnode.py b/sos/collector/sosnode.py
index 1f5718bf..a3338f4b 100644
--- a/sos/collector/sosnode.py
+++ b/sos/collector/sosnode.py
@@ -62,6 +62,7 @@ class SosNode():
'presets': [],
'sos_cmd': commons['sos_cmd']
}
+ self.sos_bin = 'sosreport'
filt = ['localhost', '127.0.0.1']
self.soslog = logging.getLogger('sos')
self.ui_log = logging.getLogger('sos_ui')
@@ -390,9 +391,6 @@ class SosNode():
self.log_debug("Error while trying to create new SSH control "
"socket: %s" % err)
raise
- if cmd.startswith('sosreport'):
- cmd = cmd.replace('sosreport', self.host.sos_bin_path)
- need_root = True
if use_container and self.host.containerized:
cmd = self.host.format_container_command(cmd)
if need_root:
@@ -649,6 +647,15 @@ class SosNode():
if self.opts.since:
sos_opts.append('--since=%s' % quote(self.opts.since))
+ # sos-4.0 changes the binary
+ if self.check_sos_version('4.0'):
+ self.sos_bin = 'sos report'
+
+ sos_cmd = sos_cmd.replace(
+ 'sosreport',
+ os.path.join(self.host.sos_bin_path, self.sos_bin)
+ )
+
if self.opts.only_plugins:
plugs = [o for o in self.opts.only_plugins
if self._plugin_exists(o)]
diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
index 112fbf62..5f7cb0bf 100644
--- a/sos/policies/__init__.py
+++ b/sos/policies/__init__.py
@@ -1289,7 +1289,7 @@ class LinuxPolicy(Policy):
container_image = None
sos_path_strip = None
sos_pkg_name = None
- sos_bin_path = None
+ sos_bin_path = '/usr/bin'
sos_container_name = 'sos-collector-tmp'
container_version_command = None
diff --git a/sos/policies/debian.py b/sos/policies/debian.py
index f1843d53..6e32fac8 100644
--- a/sos/policies/debian.py
+++ b/sos/policies/debian.py
@@ -17,7 +17,6 @@ class DebianPolicy(LinuxPolicy):
PATH = "/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" \
+ ":/usr/local/sbin:/usr/local/bin"
sos_pkg_name = 'sosreport'
- sos_bin_path = '/usr/bin/sosreport'
def __init__(self, sysroot=None, init=None, probe_runtime=True,
remote_exec=None):
diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py
index 0634ae10..0533e6dc 100644
--- a/sos/policies/redhat.py
+++ b/sos/policies/redhat.py
@@ -39,7 +39,7 @@ class RedHatPolicy(LinuxPolicy):
upload_directory = '/incoming'
default_container_runtime = 'podman'
sos_pkg_name = 'sos'
- sos_bin_path = '/usr/sbin/sosreport'
+ sos_bin_path = '/usr/sbin'
def __init__(self, sysroot=None, init=None, probe_runtime=True,
remote_exec=None):