from sos.plugins import DebianPlugin
from sos.policies import PackageManager, LinuxPolicy
import os
class DebianPolicy(LinuxPolicy):
distro = "Debian"
vendor = "the Debian project"
vendor_url = "https://www.debian.org/"
ticket_number = ""
_debq_cmd = "dpkg-query -W -f='${Package}|${Version}\\n'"
_debv_cmd = "dpkg --verify"
_debv_filter = ""
name_pattern = 'friendly'
valid_subclasses = [DebianPlugin]
PATH = "/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" \
+ ":/usr/local/sbin:/usr/local/bin"
def __init__(self, sysroot=None):
super(DebianPolicy, self).__init__(sysroot=sysroot)
self.ticket_number = ""
self.package_manager = PackageManager(query_command=self._debq_cmd,
verify_command=self._debv_cmd,
verify_filter=self._debv_filter,
chroot=sysroot)
self.valid_subclasses = [DebianPlugin]
def _get_pkg_name_for_binary(self, binary):
# for binary not specified inside {..}, return binary itself
return {
"xz": "xz-utils"
}.get(binary, binary)
@classmethod
def check(cls):
"""This method checks to see if we are running on Debian.
It returns True or False."""
return os.path.isfile('/etc/debian_version')
def dist_version(self):
try:
with open('/etc/lsb-release', 'r') as fp:
rel_string = fp.read()
if "wheezy/sid" in rel_string:
return 6
elif "jessie/sid" in rel_string:
return 7
return False
except IOError:
return False
# vim: set et ts=4 sw=4 :