from __future__ import with_statement from sos.plugins import UbuntuPlugin, DebianPlugin from sos.policies.debian import DebianPolicy import os class UbuntuPolicy(DebianPolicy): distro = "Ubuntu" vendor = "Canonical" vendor_url = "https://www.ubuntu.com/" PATH = "/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" \ + ":/usr/local/sbin:/usr/local/bin:/snap/bin" _upload_url = "https://files.support.canonical.com/uploads/" _upload_user = "ubuntu" _upload_password = "ubuntu" _upload_method = 'put' def __init__(self, sysroot=None): super(UbuntuPolicy, self).__init__(sysroot=sysroot) self.valid_subclasses = [UbuntuPlugin, DebianPlugin] @classmethod def check(cls): """This method checks to see if we are running on Ubuntu. It returns True or False.""" try: with open('/etc/lsb-release', 'r') as fp: return "Ubuntu" in fp.read() except IOError: return False def dist_version(self): """ Returns the version stated in DISTRIB_RELEASE """ try: with open('/etc/lsb-release', 'r') as fp: lines = fp.readlines() for line in lines: if "DISTRIB_RELEASE" in line: return line.split("=")[1].strip() return False except IOError: return False def get_upload_https_auth(self): if self.upload_url.startswith(self._upload_url): return (self._upload_user, self._upload_password) else: return super(UbuntuPolicy, self).get_upload_https_auth() def get_upload_url_string(self): if self.upload_url.startswith(self._upload_url): return "Canonical Support File Server" else: return self.get_upload_url() def get_upload_url(self): if not self.upload_url or self.upload_url.startswith(self._upload_url): fname = os.path.basename(self.upload_archive) return self._upload_url + fname super(UbuntuPolicy, self).get_upload_url() # vim: set et ts=4 sw=4 :