def os_release_info(): ''' Use insights-core to fetch the os-release or redhat-release info Returns a tuple of OS name and version ''' os_family = "Unknown" os_release = "" for p in ["/etc/os-release", "/etc/redhat-release"]: try: with open(p) as f: data = f.readlines() ctx = Context(content=data, path=p, relative_path=p) if p == "/etc/os-release": rls = OsRelease(ctx) os_family = rls.data.get("NAME") os_release = rls.data.get("VERSION_ID") elif p == "/etc/redhat-release": rls = RedhatRelease(ctx) os_family = rls.product os_release = rls.version break except IOError: continue except Exception as e: logger.warning("Failed to detect OS version: %s", e) return (os_family, os_release)
def user_agent(self): """ Generates and returns a string suitable for use as a request user-agent """ core_version = "insights-core" pkg = pkg_resources.working_set.find(pkg_resources.Requirement.parse(core_version)) if pkg is not None: core_version = "%s %s" % (pkg.project_name, pkg.version) else: core_version = "Core %s" % package_info["VERSION"] client_version = "insights-client" pkg = pkg_resources.working_set.find(pkg_resources.Requirement.parse(client_version)) if pkg is not None: client_version = "%s/%s" % (pkg.project_name, pkg.version) requests_version = None pkg = pkg_resources.working_set.find(pkg_resources.Requirement.parse("requests")) if pkg is not None: requests_version = "%s %s" % (pkg.project_name, pkg.version) python_version = "%s %s" % (platform.python_implementation(), platform.python_version()) os_family = "Unknown" os_release = "" for p in ["/etc/os-release", "/etc/redhat-release"]: try: with open(p) as f: data = f.readlines() ctx = Context(content=data, path=p, relative_path=p) if p == "/etc/os-release": rls = OsRelease(ctx) os_family = rls.data.get("NAME") os_release = rls.data.get("VERSION_ID") elif p == "/etc/redhat-release": rls = RedhatRelease(ctx) os_family = rls.product os_release = rls.version break except IOError: continue except Exception as e: logger.warning("Failed to detect OS version: %s", e) kernel_version = "%s %s" % (platform.system(), platform.release()) ua = "{client_version} ({core_version}; {requests_version}) {os_family} {os_release} ({python_version}; {kernel_version})".format( client_version=client_version, core_version=core_version, python_version=python_version, os_family=os_family, os_release=os_release, kernel_version=kernel_version, requests_version=requests_version, ) return ua
def test_rhevh(): rls = OsRelease(context_wrap(RHEVH_RHV40_OS_RELEASE)) data = rls.data assert data.get("VARIANT_ID") == "ovirt-node" assert data.get("VERSION") == "7.3" assert data.get("PRETTY_NAME") == "Red Hat Virtualization Host 4.0 (el7.3)"
def test_fedora24(): rls = OsRelease(context_wrap(FEDORA_OS_RELEASE)) data = rls.data assert data.get("VARIANT_ID") == "server" assert data.get("VERSION") == "24 (Server Edition)" assert data.get("PRETTY_NAME") == "Fedora 24 (Server Edition)"
def test_rhel(): rls = OsRelease(context_wrap(REHL_OS_RELEASE)) data = rls.data assert data.get("VARIANT_ID") is None assert data.get("VERSION") == "7.2 (Maipo)"