def test_centos_stream():
    release = RedhatRelease(context_wrap(CENTOS_STREAM))
    assert release.major == 8
    assert release.minor is None
    assert release.product == 'CentOS Stream'
    assert release.is_centos
    assert not release.is_rhel
def test_both():
    un = Uname(context_wrap(UNAME))
    rel = RedhatRelease(context_wrap(REDHAT_RELEASE))
    expected = (7, 2)
    result = redhat_release(rel, un)
    assert result.major == expected[0]
    assert result.minor == expected[1]
示例#3
0
def test_httpd_V_RHEL6():
    hv1 = HV(context_wrap(HTTPDV1))
    hv2 = HWV(context_wrap(HTTPDV2))
    hv3 = HEV(context_wrap(HTTPDV3))
    ps = PsAuxww(context_wrap(PS_WORKER))
    rh = RedhatRelease(context_wrap(RHEL6))
    shared = {HV: hv1, HWV: hv2, HEV: hv3, PsAuxww: ps, redhat_release: rh}
    result = HttpdV(None, shared)
    assert result["Server MPM"] == "worker"
    assert result[
        "Server version"] == "apache/2.4.6 (red hat enterprise linux)"
    assert result["forked"] == "yes (variable process count)"
    assert "APR_HAVE_IPV6" in result['Server compiled with']
    assert result['Server compiled with']['APR_HAS_MMAP'] is True
    assert result['Server compiled with'][
        'APR_HAVE_IPV6'] == "IPv4-mapped addresses enabled"
    assert result['Server compiled with'][
        'DEFAULT_PIDLOG'] == "/run/httpd/httpd.pid"

    ps = PsAuxww(context_wrap(PS_EVENT))
    shared = {HV: hv1, HWV: hv2, HEV: hv3, PsAuxww: ps, redhat_release: rh}
    result = HttpdV(None, shared)
    assert result["Server MPM"] == "event"
    assert result[
        "Server version"] == "apache/2.4.6 (red hat enterprise linux)"
    assert result["forked"] == "yes (variable process count)"
    assert "APR_HAVE_IPV6" not in result['Server compiled with']
    assert result['Server compiled with']['APR_HAS_MMAP'] is True
示例#4
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)
def test_rhel6_10():
    release = RedhatRelease(context_wrap(REDHAT_RELEASE10))
    assert release.raw == REDHAT_RELEASE10
    assert release.major == 6
    assert release.minor == 10
    assert release.version == "6.10"
    assert release.is_rhel
    assert release.product == "Red Hat Enterprise Linux Server"
def test_centos_7():
    release = RedhatRelease(context_wrap(CENTOS_7))
    assert release.major == 7
    assert release.minor == 6
    assert release.product == 'CentOS Linux'
    assert release.code_name == 'Core'
    assert release.is_centos
    assert not release.is_rhel
示例#7
0
def test_rhe75_0_14():
    release = RedhatRelease(context_wrap(REDHAT_RELEASE3))
    assert release.raw == REDHAT_RELEASE3
    assert release.major == 7
    assert release.minor == 5
    assert release.version == "7.5-0.14"
    assert release.is_rhel
    assert release.product == "Red Hat Enterprise Linux"
示例#8
0
def test_rhevh35():
    release = RedhatRelease(context_wrap(RHEVH_RHEV35))
    assert release.raw == RHEVH_RHEV35
    assert release.major == 6
    assert release.minor == 7
    assert release.version == "6.7"
    assert not release.is_rhel
    assert release.product == "Red Hat Enterprise Virtualization Hypervisor"
示例#9
0
def test_rhvh40():
    release = RedhatRelease(context_wrap(RHVH_RHV40))
    assert release.raw == RHVH_RHV40
    assert release.major == 7
    assert release.minor == 3
    assert release.version == "7.3"
    assert release.is_rhel
    assert release.product == "Red Hat Enterprise Linux"
示例#10
0
def test_rhe7():
    release = RedhatRelease(context_wrap(REDHAT_RELEASE2))
    assert release.raw == REDHAT_RELEASE2
    assert release.major == 7
    assert release.minor == 2
    assert release.version == "7.2"
    assert release.is_rhel
    assert release.product == "Red Hat Enterprise Linux Server"
def test_RedHatRelease_redhat_release():
    rel = RedhatRelease(context_wrap(REDHAT_RELEASE))
    expected = (7, 2)
    result = RedHatRelease(None, rel)
    assert result.major == expected[0]
    assert result.minor == expected[1]
    assert result.rhel == result.rhel7 == '7.2'
    assert result.rhel8 is None
示例#12
0
def test_httpd_V_failed():
    hv1 = HV(context_wrap(HTTPDV1))
    hv2 = HWV(context_wrap(HTTPDV2, path='httpd.worker_-V'))
    ps = PsAuxcww(context_wrap(PS_EVENT))
    rh = RedhatRelease(context_wrap(RHEL6))
    with pytest.raises(SkipComponent) as sc:
        HttpdV(rh, ps, hv1, None, hv2)
    assert "Unable to get the valid `httpd -V` command" in str(sc)
示例#13
0
def test_fedora23():
    release = RedhatRelease(context_wrap(FEDORA))
    assert release.raw == FEDORA
    assert release.major == 23
    assert release.minor is None
    assert release.version == "23"
    assert not release.is_rhel
    assert release.product == "Fedora"
示例#14
0
def test_httpd_V_failed():
    hv1 = HV(context_wrap(HTTPDV1))
    hv2 = HWV(context_wrap(HTTPDV2))
    ps = PsAuxww(context_wrap(PS_EVENT))
    rh = RedhatRelease(context_wrap(RHEL6))
    shared = {HV: hv1, HWV: hv2, PsAuxww: ps, redhat_release: rh}
    with pytest.raises(SkipComponent) as sc:
        HttpdV(None, shared)
    assert "Unable to get the valid `httpd -V` command" in str(sc)
示例#15
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
def test_RedHatRelease_both():
    un = Uname(context_wrap(UNAME))
    rel = RedhatRelease(context_wrap(REDHAT_RELEASE))
    expected = (7, 2)
    result = RedHatRelease(un, rel)
    assert result.major == expected[0]
    assert result.minor == expected[1]
    assert result.rhel == result.rhel7 == '7.2'
    assert result.rhel6 is None
    assert result.rhel8 is None
def test_rhel_beta():
    release = RedhatRelease(context_wrap(REDHAT_RELEASE_BETA))
    assert release.raw == REDHAT_RELEASE_BETA
    assert release.major == 8
    assert release.minor == 5
    assert release.version == "8.5"
    assert release.is_rhel
    assert release.is_beta
    assert release.parsed['code_name'] == 'Ootpa'
    assert release.product == "Red Hat Enterprise Linux Server"
示例#18
0
def test_grub2_grubenv():
    grub2 = Grub2Config(context_wrap(GRUB2_TEMPLATE))
    grub2env = Grub2Grubenv(context_wrap(GRUBENV))
    rhel8 = RedhatRelease(context_wrap(RHEL8))
    rhel = RedHatRelease(None, rhel8)
    rpms = InstalledRpms(context_wrap(INSTALLED_RPMS_V2))
    sys_firmware = LsSysFirmware(context_wrap(SYS_FIRMWARE_DIR_NOEFI))
    result = GrubConf(None, grub2, None, None, grub2env, None, rpms, None,
                      sys_firmware, rhel)
    assert len(result.get_grub_cmdlines()) == 1
    assert 'noapic' not in result.get_grub_cmdlines()[0]['cmdline']
    assert result.version == 2
    assert not result.is_efi
示例#19
0
def test_httpd_V_RHEL7():
    hv1 = HV(context_wrap(HTTPDV1))
    hv2 = HWV(context_wrap(HTTPDV2, path='httpd.worker_-V'))
    hv3 = HEV(context_wrap(HTTPDV3, path='httpd.event_-V'))
    ps = PsAuxww(context_wrap(PS_WORKER))
    rh = RedhatRelease(context_wrap(RHEL7))
    result = HttpdV(rh, ps, hv1, hv3, hv2)
    assert result["Server MPM"] == "prefork"
    assert result["Server version"] == "apache/2.2.15 (unix)"
    assert result["forked"] == "yes (variable process count)"
    assert "APR_HAVE_IPV6" in result['Server compiled with']
    assert result['Server compiled with']['APR_HAS_MMAP'] is True
    assert result['Server compiled with']['APR_HAVE_IPV6'] == "IPv4-mapped addresses enabled"
    assert result['Server compiled with']['DEFAULT_PIDLOG'] == "run/httpd.pid"
示例#20
0
def test_grub2_boot_loader_entries():
    grub2 = Grub2Config(context_wrap(GRUB2_TEMPLATE))
    grub_ble1 = BLE(context_wrap(BOOT_LOADER_ENTRIES_1))
    grub_ble2 = BLE(context_wrap(BOOT_LOADER_ENTRIES_2))
    grub_bles = BootLoaderEntries([grub_ble1, grub_ble2], None, None)
    rhel8 = RedhatRelease(context_wrap(RHEL8))
    rhel = RedHatRelease(None, rhel8)
    rpms = InstalledRpms(context_wrap(INSTALLED_RPMS_V2))
    sys_firmware = LsSysFirmware(context_wrap(SYS_FIRMWARE_DIR_EFI))
    result = GrubConf(None, grub2, None, None, grub_bles, rpms, None,
                      sys_firmware, rhel)
    assert len(result.get_grub_cmdlines()) == 2
    assert 'noapic' in result.get_grub_cmdlines()[0]['cmdline']
    assert result.version == 2
    assert result.is_efi
示例#21
0
def test_grub2_grubenv_with_kernelopts():
    grub2 = Grub2Config(context_wrap(GRUB2_TEMPLATE))
    grub_ble3 = BLE(context_wrap(BOOT_LOADER_ENTRIES_3))
    grub_bles = BootLoaderEntries([grub_ble3], None, None)
    rhel8 = RedhatRelease(context_wrap(RHEL8))
    rhel = RedHatRelease(None, rhel8)
    rpms = InstalledRpms(context_wrap(INSTALLED_RPMS_V2))
    sys_firmware = LsSysFirmware(context_wrap(SYS_FIRMWARE_DIR_NOEFI))
    result = GrubConf(None, grub2, None, None, grub_bles, rpms, None,
                      sys_firmware, rhel)
    assert len(result.get_grub_cmdlines()) == 1
    assert 'noapic' not in result.get_grub_cmdlines()[0]['cmdline']
    assert 'transparent_hugepages' not in result.get_grub_cmdlines(
    )[0]['cmdline']
    assert result.version == 2
    assert not result.is_efi
def test_examples():
    release = RedhatRelease(context_wrap(REDHAT_RELEASE2))
    globs = {'rh_release': release}
    failed, tested = doctest.testmod(redhat_release, globs=globs)
    assert failed == 0
def test_redhat_release():
    rel = RedhatRelease(context_wrap(REDHAT_RELEASE))
    expected = (7, 2)
    result = redhat_release(rel, None)
    assert result.major == expected[0]
    assert result.minor == expected[1]
def test_is_rhel8():
    rr = RedhatRelease(context_wrap(REDHAT_RELEASE4))
    rel = RR(None, rr)
    result = IsRhel8(rel)
    assert isinstance(result, IsRhel8)
def test_uname_is_rhel7():
    uname = Uname(context_wrap(UNAME))
    rr = RedhatRelease(context_wrap(REDHAT_RELEASE3))
    rel = RR(uname, rr)
    result = IsRhel7(rel)
    assert isinstance(result, IsRhel7)
def test_not_rhel8():
    rr = RedhatRelease(context_wrap(REDHAT_RELEASE2))
    rel = RR(None, rr)
    with pytest.raises(SkipComponent) as e:
        IsRhel8(rel)
    assert "Not RHEL8" in str(e)