Esempio n. 1
0
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)
Esempio n. 2
0
    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
Esempio n. 3
0
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)"
Esempio n. 4
0
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)"
Esempio n. 5
0
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)"