diff options
-rw-r--r-- | sos/policies/__init__.py | 14 | ||||
-rw-r--r-- | sos/policies/debian.py | 2 | ||||
-rw-r--r-- | sos/policies/redhat.py | 18 |
3 files changed, 29 insertions, 5 deletions
diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py index d99207ba..8148c894 100644 --- a/sos/policies/__init__.py +++ b/sos/policies/__init__.py @@ -5,6 +5,7 @@ import re import platform import time import fnmatch +from os import environ from sos.utilities import ImporterHelper, \ import_module, \ @@ -133,16 +134,20 @@ No changes will be made to system configuration. vendor = "Unknown" vendor_url = "http://www.example.com/" vendor_text = "" + PATH = "" def __init__(self): """Subclasses that choose to override this initializer should call super() to ensure that they get the required platform bits attached. - super(SubClass, self).__init__()""" + super(SubClass, self).__init__(). Policies that require runtime + tests to construct PATH must call self.set_exec_path() after + modifying PATH in their own initializer.""" self._parse_uname() self.report_name = self.hostname self.ticket_number = None self.package_manager = PackageManager() self._valid_subclasses = [] + self.set_exec_path() def get_valid_subclasses(self): return [IndependentPlugin] + self._valid_subclasses @@ -221,6 +226,12 @@ No changes will be made to system configuration. def set_commons(self, commons): self.commons = commons + def _set_PATH(self, path): + environ['PATH'] = path + + def set_exec_path(self): + self._set_PATH(self.PATH) + def is_root(self): """This method should return true if the user calling the script is considered to be a superuser""" @@ -377,6 +388,7 @@ class LinuxPolicy(Policy): distro = "Linux" vendor = "None" + PATH = "/bin:/sbin:/usr/bin:/usr/sbin" def __init__(self): super(LinuxPolicy, self).__init__() diff --git a/sos/policies/debian.py b/sos/policies/debian.py index 94b089f3..409ba85a 100644 --- a/sos/policies/debian.py +++ b/sos/policies/debian.py @@ -11,6 +11,8 @@ class DebianPolicy(LinuxPolicy): ticket_number = "" package_manager = PackageManager("dpkg-query -W -f='${Package}|${Version}\\n' \*") valid_subclasses = [DebianPlugin] + PATH = "/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" \ + + ":/usr/loca/sbin:/usr/local/bin" def __init__(self): super(DebianPolicy, self).__init__() diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py index 7677b806..7a26d811 100644 --- a/sos/policies/redhat.py +++ b/sos/policies/redhat.py @@ -40,14 +40,24 @@ class RedHatPolicy(LinuxPolicy): super(RedHatPolicy, self).__init__() self.report_name = "" self.ticket_number = "" - self.package_manager = PackageManager('rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"') + self.package_manager = PackageManager( + 'rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"') self.valid_subclasses = [RedHatPlugin] + # handle PATH for UsrMove + if self.package_manager.all_pkgs()['filesystem']['version'][0] == '3': + self.PATH = "/usr/sbin:/usr/bin:/root/bin" + else: + self.PATH = "/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" + self.PATH += os.pathsep + "/usr/local/bin" + self.PATH += os.pathsep + "/usr/local/sbin" + self.set_exec_path() + @classmethod def check(self): - """This method checks to see if we are running on Red Hat. It must be overriden - by concrete subclasses to return True when running on a Fedora, RHEL or other - Red Hat distribution or False otherwise.""" + """This method checks to see if we are running on Red Hat. It must be + overriden by concrete subclasses to return True when running on a + Fedora, RHEL or other Red Hat distribution or False otherwise.""" return False def runlevel_by_service(self, name): |