本文整理匯總了Python中sos.policies.PackageManager類的典型用法代碼示例。如果您正苦於以下問題:Python PackageManager類的具體用法?Python PackageManager怎麽用?Python PackageManager使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了PackageManager類的11個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: __init__
def __init__(self, sysroot=None):
super(RedHatPolicy, self).__init__(sysroot=sysroot)
self.report_name = ""
self.ticket_number = ""
# need to set _host_sysroot before PackageManager()
if sysroot:
self._container_init()
self._host_sysroot = sysroot
else:
sysroot = self._container_init()
self.package_manager = PackageManager(self._rpmq_cmd, chroot=sysroot)
self.valid_subclasses = [RedHatPlugin]
pkgs = self.package_manager.all_pkgs()
# If rpm query timed out after timeout duration exit
if not pkgs:
print("Could not obtain installed package list", file=sys.stderr)
sys.exit(1)
# handle PATH for UsrMove
if 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()
示例2: PackageManagerTests
class PackageManagerTests(unittest.TestCase):
def setUp(self):
self.pm = PackageManager()
def test_default_all_pkgs(self):
self.assertEquals(self.pm.allPkgs(), {})
def test_default_all_pkgs_by_name(self):
self.assertEquals(self.pm.allPkgsByName('doesntmatter'), [])
def test_default_all_pkgs_by_name_regex(self):
self.assertEquals(self.pm.allPkgsByNameRegex('.*doesntmatter$'), [])
def test_default_pkg_by_name(self):
self.assertEquals(self.pm.pkgByName('foo'), None)
示例3: RedHatPolicy
class RedHatPolicy(LinuxPolicy):
distro = "Red Hat"
vendor = "Red Hat"
vendor_url = "http://www.redhat.com/"
_tmp_dir = "/var/tmp"
def __init__(self):
super(RedHatPolicy, self).__init__()
self.report_name = ""
self.ticket_number = ""
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."""
return False
def runlevel_by_service(self, name):
from subprocess import Popen, PIPE
ret = []
p = Popen("LC_ALL=C /sbin/chkconfig --list %s" % name,
shell=True,
stdout=PIPE,
stderr=PIPE,
bufsize=-1,
close_fds=True)
out, err = p.communicate()
if err:
return ret
for tabs in out.split()[1:]:
try:
(runlevel, onoff) = tabs.split(":", 1)
except:
pass
else:
if onoff == "on":
ret.append(int(runlevel))
return ret
def get_tmp_dir(self, opt_tmp_dir):
if not opt_tmp_dir:
return self._tmp_dir
return opt_tmp_dir
def get_local_name(self):
return self.host_name()
示例4: __init__
def __init__(self):
super(RedHatPolicy, self).__init__()
self.report_name = ""
self.ticket_number = ""
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()
示例5: __init__
def __init__(self):
super(SuSEPolicy, self).__init__()
self.report_name = ""
self.ticket_number = ""
self.package_manager = PackageManager('rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"')
self.valid_subclasses = [SuSEPlugin, RedHatPlugin]
pkgs = self.package_manager.all_pkgs()
# If rpm query timed out after timeout duration exit
if not pkgs:
print("Could not obtain installed package list", file=sys.stderr)
sys.exit(1)
self.PATH = "/usr/sbin:/usr/bin:/root/bin"
self.PATH += os.pathsep + "/usr/local/bin"
self.PATH += os.pathsep + "/usr/local/sbin"
self.set_exec_path()
示例6: __init__
def __init__(self, sysroot=None):
super(RedHatPolicy, self).__init__(sysroot=sysroot)
self.ticket_number = ""
self.usrmove = False
# need to set _host_sysroot before PackageManager()
if sysroot:
self._container_init()
self._host_sysroot = sysroot
else:
sysroot = self._container_init()
self.package_manager = PackageManager(query_command=self._rpmq_cmd,
verify_command=self._rpmv_cmd,
verify_filter=self._rpmv_filter,
files_command=self._rpmql_cmd,
chroot=sysroot)
self.valid_subclasses = [RedHatPlugin]
self.pkgs = self.package_manager.all_pkgs()
files = self.package_manager.all_files()
# If rpm query failed, exit
if not self.pkgs:
print("Could not obtain installed package list", file=sys.stderr)
sys.exit(1)
# If the files rpm query failed, exit
if not files:
print("Could not obtain the files list known to the package \
manager", file=sys.stderr)
sys.exit(1)
self.usrmove = self.check_usrmove(self.pkgs)
if self.usrmove:
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()
self.load_presets()
示例7: __init__
def __init__(self, sysroot=None):
super(RedHatPolicy, self).__init__(sysroot=sysroot)
self.ticket_number = ""
# need to set _host_sysroot before PackageManager()
if sysroot:
self._container_init()
self._host_sysroot = sysroot
else:
sysroot = self._container_init()
self.package_manager = PackageManager(query_command=self._rpmq_cmd,
verify_command=self._rpmv_cmd,
verify_filter=self._rpmv_filter,
chroot=sysroot)
self.valid_subclasses = [RedHatPlugin]
pkgs = self.package_manager.all_pkgs()
# If rpm query failed, exit
if not pkgs:
print("Could not obtain installed package list", file=sys.stderr)
sys.exit(1)
# handle PATH for UsrMove
if 'filesystem' not in pkgs:
print("Could not find 'filesystem' package: "
"assuming PATH settings")
usrmove = True
else:
filesys_version = pkgs['filesystem']['version']
usrmove = True if filesys_version[0] == '3' else False
if usrmove:
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()
示例8: RedHatPolicy
class RedHatPolicy(LinuxPolicy):
distro = "Red Hat"
vendor = "Red Hat"
vendor_url = "http://www.redhat.com/"
_redhat_release = '/etc/redhat-release'
_tmp_dir = "/var/tmp"
_rpmq_cmd = 'rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"'
_in_container = False
_host_sysroot = '/'
def __init__(self, sysroot=None):
super(RedHatPolicy, self).__init__(sysroot=sysroot)
self.report_name = ""
self.ticket_number = ""
# need to set _host_sysroot before PackageManager()
if sysroot:
self._container_init()
self._host_sysroot = sysroot
else:
sysroot = self._container_init()
self.package_manager = PackageManager(self._rpmq_cmd, chroot=sysroot)
self.valid_subclasses = [RedHatPlugin]
pkgs = self.package_manager.all_pkgs()
# If rpm query failed, exit
if not pkgs:
print("Could not obtain installed package list", file=sys.stderr)
sys.exit(1)
# handle PATH for UsrMove
if 'filesystem' not in pkgs:
print("Could not find 'filesystem' package: "
"assuming PATH settings")
usrmove = True
else:
filesys_version = pkgs['filesystem']['version']
usrmove = True if filesys_version[0] == '3' else False
if usrmove:
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(cls):
"""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 _container_init(self):
"""Check if sos is running in a container and perform container
specific initialisation based on ENV_HOST_SYSROOT.
"""
if ENV_CONTAINER in os.environ:
if os.environ[ENV_CONTAINER] in ['docker', 'oci']:
self._in_container = True
if ENV_HOST_SYSROOT in os.environ:
self._host_sysroot = os.environ[ENV_HOST_SYSROOT]
use_sysroot = self._in_container and self._host_sysroot != '/'
if use_sysroot:
host_tmp_dir = os.path.abspath(self._host_sysroot + self._tmp_dir)
self._tmp_dir = host_tmp_dir
return self._host_sysroot if use_sysroot else None
def runlevel_by_service(self, name):
from subprocess import Popen, PIPE
ret = []
p = Popen("LC_ALL=C /sbin/chkconfig --list %s" % name,
shell=True,
stdout=PIPE,
stderr=PIPE,
bufsize=-1,
close_fds=True)
out, err = p.communicate()
if err:
return ret
for tabs in out.split()[1:]:
try:
(runlevel, onoff) = tabs.split(":", 1)
except:
pass
else:
if onoff == "on":
ret.append(int(runlevel))
return ret
def get_tmp_dir(self, opt_tmp_dir):
if not opt_tmp_dir:
return self._tmp_dir
return opt_tmp_dir
def get_local_name(self):
return self.host_name()
示例9: setUp
def setUp(self):
self.pm = PackageManager()
示例10: SuSEPolicy
class SuSEPolicy(LinuxPolicy):
distro = "SuSE"
vendor = "SuSE"
vendor_url = "https://www.suse.com/"
_tmp_dir = "/var/tmp"
def __init__(self):
super(SuSEPolicy, self).__init__()
self.report_name = ""
self.ticket_number = ""
self.package_manager = PackageManager('rpm -qa --queryformat "%{NAME}|%{VERSION}\\n"')
self.valid_subclasses = [SuSEPlugin, RedHatPlugin]
pkgs = self.package_manager.all_pkgs()
# If rpm query timed out after timeout duration exit
if not pkgs:
print("Could not obtain installed package list", file=sys.stderr)
sys.exit(1)
self.PATH = "/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 SuSE. It must be
overriden by concrete subclasses to return True when running on an
OpenSuSE, SLES or other Suse distribution and False otherwise."""
return False
def runlevel_by_service(self, name):
from subprocess import Popen, PIPE
ret = []
p = Popen(
"LC_ALL=C /sbin/chkconfig --list %s" % name,
shell=True,
stdout=PIPE,
stderr=PIPE,
bufsize=-1,
close_fds=True,
)
out, err = p.communicate()
if err:
return ret
for tabs in out.split()[1:]:
try:
(runlevel, onoff) = tabs.split(":", 1)
except:
pass
else:
if onoff == "on":
ret.append(int(runlevel))
return ret
def get_tmp_dir(self, opt_tmp_dir):
if not opt_tmp_dir:
return self._tmp_dir
return opt_tmp_dir
def get_local_name(self):
return self.host_name()
示例11: RedHatPolicy
class RedHatPolicy(LinuxPolicy):
distro = "Red Hat"
vendor = "Red Hat"
vendor_url = "http://www.redhat.com/"
_redhat_release = '/etc/redhat-release'
_tmp_dir = "/var/tmp"
_rpmq_cmd = 'rpm -qa --queryformat "%{NAME}|%{VERSION}|%{RELEASE}\\n"'
_rpmql_cmd = 'rpm -qal'
_rpmv_cmd = 'rpm -V'
_rpmv_filter = ["debuginfo", "-devel"]
_in_container = False
_host_sysroot = '/'
default_scl_prefix = '/opt/rh'
name_pattern = 'friendly'
init = 'systemd'
def __init__(self, sysroot=None):
super(RedHatPolicy, self).__init__(sysroot=sysroot)
self.ticket_number = ""
self.usrmove = False
# need to set _host_sysroot before PackageManager()
if sysroot:
self._container_init()
self._host_sysroot = sysroot
else:
sysroot = self._container_init()
self.package_manager = PackageManager(query_command=self._rpmq_cmd,
verify_command=self._rpmv_cmd,
verify_filter=self._rpmv_filter,
files_command=self._rpmql_cmd,
chroot=sysroot)
self.valid_subclasses = [RedHatPlugin]
self.pkgs = self.package_manager.all_pkgs()
files = self.package_manager.all_files()
# If rpm query failed, exit
if not self.pkgs:
print("Could not obtain installed package list", file=sys.stderr)
sys.exit(1)
# If the files rpm query failed, exit
if not files:
print("Could not obtain the files list known to the package \
manager", file=sys.stderr)
sys.exit(1)
self.usrmove = self.check_usrmove(self.pkgs)
if self.usrmove:
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()
self.load_presets()
@classmethod
def check(cls):
"""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 check_usrmove(self, pkgs):
"""Test whether the running system implements UsrMove.
If the 'filesystem' package is present, it will check that the
version is greater than 3. If the package is not present the
'/bin' and '/sbin' paths are checked and UsrMove is assumed
if both are symbolic links.
:param pkgs: a packages dictionary
"""
if 'filesystem' not in pkgs:
return os.path.islink('/bin') and os.path.islink('/sbin')
else:
filesys_version = pkgs['filesystem']['version']
return True if filesys_version[0] == '3' else False
def mangle_package_path(self, files):
"""Mangle paths for post-UsrMove systems.
If the system implements UsrMove, all files will be in
'/usr/[s]bin'. This method substitutes all the /[s]bin
references in the 'files' list with '/usr/[s]bin'.
:param files: the list of package managed files
"""
paths = []
def transform_path(path):
# Some packages actually own paths in /bin: in this case,
# duplicate the path as both the / and /usr version.
skip_paths = ["/bin/rpm", "/bin/mailx"]
if path in skip_paths:
return (path, os.path.join("/usr", path[1:]))
#.........這裏部分代碼省略.........