Ejemplo n.º 1
0
def test_diagnostics_element_local_files():
    diagnostics_element = diagnostics.LocalFilesDiagnosticsElement()
    assert diagnostics_element.ident == "local_files"
    assert diagnostics_element.title == "Local Files"
    assert diagnostics_element.description == (
        "List of installed, unpacked, optional files below $OMD_ROOT/local. "
        "This also includes information about installed MKPs.")
Ejemplo n.º 2
0
def test_diagnostics_element_local_files_content(tmp_path, _collectors):
    diagnostics_element = diagnostics.LocalFilesDiagnosticsElement()

    def create_test_package(name):
        check_dir = cmk.utils.paths.local_checks_dir
        check_dir.mkdir(parents=True, exist_ok=True)

        with check_dir.joinpath(name).open("w", encoding="utf-8") as f:
            f.write("test-check\n")

        package_info = packaging.get_initial_package_info(name)
        package_info["files"] = {
            "checks": [name],
        }

        packaging.create(package_info)

    packaging.package_dir().mkdir(parents=True, exist_ok=True)
    name = "test-package"
    create_test_package(name)

    tmppath = Path(tmp_path).joinpath("tmp")
    filepath = next(diagnostics_element.add_or_get_files(tmppath, _collectors))

    assert isinstance(filepath, Path)
    assert filepath == tmppath.joinpath("local_files.json")

    info_keys = [
        "installed",
        "unpackaged",
        "parts",
        "optional_packages",
        "disabled_packages",
    ]
    content = json.loads(filepath.open().read())

    assert sorted(content.keys()) == sorted(info_keys)

    installed_keys = [name]
    assert sorted(content["installed"].keys()) == sorted(installed_keys)
    assert content["installed"][name]["files"] == {"checks": [name]}

    unpackaged_keys = [
        "agent_based",
        "agents",
        "alert_handlers",
        "bin",
        "checkman",
        "checks",
        "doc",
        "ec_rule_packs",
        "inventory",
        "lib",
        "locales",
        "mibs",
        "notifications",
        "pnp-templates",
        "web",
    ]
    assert sorted(content["unpackaged"].keys()) == sorted(unpackaged_keys)
    for key in unpackaged_keys:
        assert content["unpackaged"][key] == []

    parts_keys = [
        "agent_based",
        "agents",
        "alert_handlers",
        "bin",
        "checkman",
        "checks",
        "doc",
        "ec_rule_packs",
        "inventory",
        "lib",
        "locales",
        "mibs",
        "notifications",
        "pnp-templates",
        "web",
    ]
    assert sorted(content["parts"].keys()) == sorted(parts_keys)
    part_keys = [
        "files",
        "path",
        "permissions",
        "title",
    ]
    for key in parts_keys:
        assert sorted(content["parts"][key].keys()) == sorted(part_keys)
        if key == "checks":
            assert content["parts"][key]["files"] == [name]
            assert content["parts"][key]["permissions"] == [420]
        else:
            assert content["parts"][key]["files"] == []
            assert content["parts"][key]["permissions"] == []

    assert content["optional_packages"] == {}

    shutil.rmtree(str(packaging.package_dir()))