def platform_information(): """detect platform information from remote host.""" try: file_name = '/proc/self/cgroup' with open(file_name, 'r') as f: lines = f.readlines() for line in lines: if "docker" in line.split(':')[2]: return ('docker', 'docker', 'docker') except Exception as err: logging.debug("platform_information: ", "Error while opening %s : %s" % (file_name, err)) if os.path.isfile('/.dockerenv'): return ('docker', 'docker', 'docker') if platform.system() == 'Linux': linux_distro = platform.linux_distribution( supported_dists=platform._supported_dists + ('alpine', 'arch')) logging.debug('platform_information: linux_distribution = ' + str(linux_distro)) distro, release, codename = linux_distro elif platform.system() == 'FreeBSD': distro = 'freebsd' release = platform.release() codename = platform.version().split(' ')[3].split(':')[0] logging.debug( 'platform_information: release = {}, version = {}'.format( platform.release(), platform.version())) else: raise exc.UnsupportedPlatform(platform.system(), '', '') # this could be an empty string in Debian if not codename and 'debian' in distro.lower(): debian_codenames = { '8': 'jessie', '7': 'wheezy', '6': 'squeeze', } major_version = release.split('.')[0] codename = debian_codenames.get(major_version, '') # In order to support newer jessie/sid or wheezy/sid strings # we test this if sid is buried in the minor, we should use # sid anyway. if not codename and '/' in release: major, minor = release.split('/') if minor == 'sid': codename = minor else: codename = major return (str(distro).rstrip(), str(release).rstrip(), str(codename).rstrip())
def platform_information(): """detect platform information from remote host.""" try: file_name = '/proc/self/cgroup' with open(file_name, 'r') as f: lines = f.readlines() for line in lines: if "docker" in line.split(':')[2]: return ('docker', 'docker', 'docker') except Exception as err: logging.debug("platform_information: ", "Error while opening %s : %s" % (file_name, err)) if os.path.isfile('/.dockerenv'): return ('docker', 'docker', 'docker') if platform.system() == 'Linux': linux_distro = platform.linux_distribution( supported_dists=platform._supported_dists + ('alpine', 'arch')) logging.debug('platform_information: linux_distribution = ' + str(linux_distro)) distro, release, codename = linux_distro elif platform.system() == 'FreeBSD': distro = 'freebsd' release = platform.release() codename = platform.version().split(' ')[3].split(':')[0] logging.debug( 'platform_information: release = {}, version = {}'.format( platform.release(), platform.version())) else: raise exc.UnsupportedPlatform(platform.system(), '', '') distro_lower = distro.lower() # this could be an empty string in Debian if not codename and 'debian' in distro_lower: pass # this is an empty string in Oracle elif distro_lower.startswith('oracle linux'): codename = 'OL' + release elif distro_lower.startswith('oracle vm'): codename = 'OVS' + release # this could be an empty string in Virtuozzo linux elif distro_lower.startswith('virtuozzo linux'): codename = 'virtuozzo' return ( str(distro).rstrip(), str(release).rstrip(), str(codename).rstrip() )
def get(use_rhceph=False): distro_name, release, codename = platform_information() if not codename or not _get_distro(distro_name): raise exc.UnsupportedPlatform(distro=distro_name, codename=codename, release=release) module = _get_distro(distro_name, use_rhceph=use_rhceph) module.name = distro_name module.normalized_name = _normalized_distro_name(distro_name) module.distro = module.normalized_name module.is_el = module.normalized_name in [ 'redhat', 'centos', 'fedora', 'scientific' ] module.release = release module.codename = codename module.init = module.choose_init() return module
def get(use_rhceph=False): distro_name, release, codename = platform_information() # Not all distributions have a concept that maps to codenames # (or even releases really) if not codename and not _get_distro(distro_name): raise exc.UnsupportedPlatform(distro=distro_name, codename=codename, release=release) module = _get_distro(distro_name, use_rhceph=use_rhceph) module.name = distro_name module.normalized_name = _normalized_distro_name(distro_name) module.distro = module.normalized_name module.is_el = module.normalized_name in [ 'redhat', 'centos', 'fedora', 'scientific' ] module.release = release module.codename = codename module.init = module.choose_init() return module
def platform_information(): """detect platform information from remote host.""" if platform.system() == 'Linux': linux_distro = platform.linux_distribution( supported_dists=platform._supported_dists + ('alpine', )) logging.debug('platform_information: linux_distribution = ' + str(linux_distro)) distro, release, codename = linux_distro elif platform.system() == 'FreeBSD': distro = 'freebsd' release = platform.release() codename = platform.version().split(' ')[3].split(':')[0] logging.debug( 'platform_information: release = {}, version = {}'.format( platform.release(), platform.version())) else: raise exc.UnsupportedPlatform(platform.system(), '', '') # this could be an empty string in Debian if not codename and 'debian' in distro.lower(): debian_codenames = { '8': 'jessie', '7': 'wheezy', '6': 'squeeze', } major_version = release.split('.')[0] codename = debian_codenames.get(major_version, '') # In order to support newer jessie/sid or wheezy/sid strings # we test this if sid is buried in the minor, we should use # sid anyway. if not codename and '/' in release: major, minor = release.split('/') if minor == 'sid': codename = minor else: codename = major return (str(distro).rstrip(), str(release).rstrip(), str(codename).rstrip())