aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sos/collector/clusters/juju.py7
-rw-r--r--sos/collector/clusters/pacemaker.py4
-rw-r--r--sos/collector/sosnode.py28
-rw-r--r--sos/report/plugins/pacemaker.py4
-rw-r--r--sos/utilities.py26
5 files changed, 37 insertions, 32 deletions
diff --git a/sos/collector/clusters/juju.py b/sos/collector/clusters/juju.py
index be69759a..a8ef68fb 100644
--- a/sos/collector/clusters/juju.py
+++ b/sos/collector/clusters/juju.py
@@ -13,7 +13,7 @@ import json
import re
from sos.collector.clusters import Cluster
-from sos.utilities import parse_version
+from sos.utilities import sos_parse_version
from sos.utilities import sos_get_command_output
@@ -161,12 +161,13 @@ class juju(Cluster):
def _get_juju_version(self):
"""Grab the version of juju"""
res = sos_get_command_output("juju version")
- return res['output'].split("-")[0]
+ return res['output']
def _execute_juju_status(self, model_name):
model_option = f"-m {model_name}" if model_name else ""
format_option = "--format json"
- if parse_version(self._get_juju_version()) > parse_version("3"):
+ juju_version = self._get_juju_version()
+ if sos_parse_version(juju_version) > sos_parse_version("3"):
format_option += " --no-color"
status_cmd = f"{self.cmd} status {model_option} {format_option}"
res = self.exec_primary_cmd(status_cmd)
diff --git a/sos/collector/clusters/pacemaker.py b/sos/collector/clusters/pacemaker.py
index c83f8c3c..bd3a832b 100644
--- a/sos/collector/clusters/pacemaker.py
+++ b/sos/collector/clusters/pacemaker.py
@@ -11,7 +11,7 @@
import re
from sos.collector.clusters import Cluster
-from sos.utilities import parse_version
+from sos.utilities import sos_parse_version
from xml.etree import ElementTree
@@ -63,7 +63,7 @@ class pacemaker(Cluster):
_ver = self.exec_primary_cmd('crm_mon --version')
if _ver['status'] == 0:
cver = _ver['output'].split()[1].split('-')[0]
- if not parse_version(cver) > parse_version('2.0.3'):
+ if not sos_parse_version(cver) > sos_parse_version('2.0.3'):
xmlopt = '--as-xml'
else:
return
diff --git a/sos/collector/sosnode.py b/sos/collector/sosnode.py
index 07a71865..f315c58a 100644
--- a/sos/collector/sosnode.py
+++ b/sos/collector/sosnode.py
@@ -26,7 +26,7 @@ from sos.collector.exceptions import (CommandTimeoutException,
ConnectionException,
UnsupportedHostException,
InvalidTransportException)
-from sos.utilities import parse_version
+from sos.utilities import sos_parse_version
TRANSPORTS = {
'local': LocalTransport,
@@ -412,31 +412,9 @@ class SosNode():
:returns: True if installed version is at least ``ver``, else False
:rtype: ``bool``
"""
- def _format_version_to_pep440(ver):
- """ Convert the version into a PEP440 compliant version scheme."""
- public_version_re = re.compile(
- r"^([0-9][0-9.]*(?:(?:a|b|rc|.post|.dev)[0-9]+)*)\+?"
- )
- try:
- _, public, local = public_version_re.split(ver, maxsplit=1)
- if not local:
- return ver
- sanitized_local = re.sub("[+~]+", ".", local).strip("-")
- pep440_version = f"{public}+{sanitized_local}"
- return pep440_version
- except Exception as err:
- self.log_debug(f"Unable to format {ver} to pep440 format: "
- f"{err}")
- return ver
-
- _ver = _format_version_to_pep440(ver)
- _node_formatted_version = _format_version_to_pep440(
- self.sos_info['version'])
-
try:
- _node_ver = parse_version(_node_formatted_version)
- _test_ver = parse_version(_ver)
- return _node_ver >= _test_ver
+ _node_ver = self.sos_info['version']
+ return sos_parse_version(_node_ver) >= sos_parse_version(ver)
except Exception as err:
self.log_error("Error checking sos version: %s" % err)
return False
diff --git a/sos/report/plugins/pacemaker.py b/sos/report/plugins/pacemaker.py
index cf11e219..113691e1 100644
--- a/sos/report/plugins/pacemaker.py
+++ b/sos/report/plugins/pacemaker.py
@@ -8,7 +8,7 @@
from sos.report.plugins import (Plugin, RedHatPlugin, DebianPlugin,
UbuntuPlugin, PluginOpt)
-from sos.utilities import parse_version
+from sos.utilities import sos_parse_version
from datetime import datetime, timedelta
import re
@@ -55,7 +55,7 @@ class Pacemaker(Plugin):
])
pcs_version = '.'.join(pcs_pkg['version'])
- if parse_version(pcs_version) > parse_version('0.10.8'):
+ if sos_parse_version(pcs_version) > sos_parse_version('0.10.8'):
self.add_cmd_output("pcs property config --all")
else:
self.add_cmd_output("pcs property list --all")
diff --git a/sos/utilities.py b/sos/utilities.py
index ce371b0a..c8f11993 100644
--- a/sos/utilities.py
+++ b/sos/utilities.py
@@ -73,6 +73,32 @@ __all__ = [
]
+def format_version_to_pep440(ver):
+ """ Convert the version into a PEP440 compliant version scheme."""
+ public_version_re = re.compile(
+ r"^([0-9][0-9.]*(?:(?:a|b|rc|.post|.dev)[0-9]+)*)\+?"
+ )
+ try:
+ _, public, local = public_version_re.split(ver, maxsplit=1)
+ if not local:
+ return ver
+ sanitized_local = re.sub("[+~]+", ".", local).strip("-")
+ pep440_version = f"{public}+{sanitized_local}"
+ return pep440_version
+ except Exception as err:
+ log.debug(f"Unable to format {ver} to pep440 format: {err}")
+ return ver
+
+
+def sos_parse_version(ver, pep440=True):
+ """ Converts the version to PEP440 format before parsing """
+ if pep440:
+ ver_pep440 = format_version_to_pep440(ver)
+ return parse_version(ver_pep440)
+
+ return parse_version(ver)
+
+
def tail(filename, number_of_bytes):
"""Returns the last number_of_bytes of filename"""
with open(filename, "rb") as f: