コード例 #1
0
ファイル: bi.py プロジェクト: gugas1nwork/checkmk
def table(view, columns, query, only_sites, limit, all_active_filters):
    bi_aggregation_filter = compute_bi_aggregation_filter(all_active_filters)
    with aggregation_compute_auto_cleanup():
        bi_status_fetcher.set_assumed_states(config.user.bi_assumptions)
        results = bi_computer.compute_legacy_result_for_filter(
            bi_aggregation_filter)
        return results
コード例 #2
0
ファイル: test_bi_rule.py プロジェクト: gugas1nwork/checkmk
def test_sample_config_networking_rule(
    bi_packs_sample_config,
    use_test_structure_data,
    use_test_status_data,
):
    bi_aggregation = bi_packs_sample_config.get_aggregation("default_aggregation")
    applications_rule = bi_packs_sample_config.get_rule("networking")
    results = applications_rule.compile(["heute"])
    assert len(results) == 1
    compiled_rule = results[0]
    assert compiled_rule.required_elements() == {("heute", "heute", "Interface 2"),
                                                 ("heute", "heute", "Interface 3"),
                                                 ("heute", "heute", "Interface 4")}
    computed_tree = compiled_rule.compute(bi_aggregation.computation_options)
    assert computed_tree.assumed_result is None
    assert computed_tree.actual_result.state == 1
    assert computed_tree.actual_result.downtime_state == 0
    assert not computed_tree.actual_result.acknowledged
    assert computed_tree.actual_result.in_service_period

    # Apply assumed states
    bi_status_fetcher.set_assumed_states({
        ("heute", "heute", "Interface 2"): 0,
        ("heute", "heute", "Interface 3"): 0,
        ("heute", "heute", "Interface 4"): 0,
    })

    computed_tree = compiled_rule.compute(bi_aggregation.computation_options, use_assumed=True)
    assert computed_tree.assumed_result is not None
    assert computed_tree.assumed_result.state == 0
    assert computed_tree.assumed_result.downtime_state == 0
    assert not computed_tree.assumed_result.acknowledged
    assert computed_tree.assumed_result.in_service_period
コード例 #3
0
ファイル: bi.py プロジェクト: gugas1nwork/checkmk
def singlehost_table(view, columns, query, only_sites, limit,
                     all_active_filters, joinbyname, bygroup):
    bi_packs.load_config()
    filter_code = ""
    for filt in all_active_filters:
        header = filt.filter("bi_host_aggregations")
        filter_code += header
    host_columns = [c for c in columns if c.startswith("host_")]

    bi_packs.load_config()

    rows = []
    with aggregation_compute_auto_cleanup():
        bi_status_fetcher.set_assumed_states(config.user.bi_assumptions)
        bi_aggregation_filter = compute_bi_aggregation_filter(
            all_active_filters)
        required_aggregations = bi_computer.get_required_aggregations(
            bi_aggregation_filter)
        bi_status_fetcher.update_states_filtered(filter_code, only_sites,
                                                 limit, host_columns, bygroup,
                                                 required_aggregations)

        aggregation_results = bi_computer.compute_results(
            required_aggregations)
        legacy_results = bi_computer.convert_to_legacy_results(
            aggregation_results, bi_aggregation_filter)

        for site_host_name, values in bi_status_fetcher.states.items():
            for legacy_result in legacy_results:
                if site_host_name in legacy_result["aggr_hosts"]:
                    # Combine bi columns + extra livestatus columns + bi computation columns into one row
                    row = values._asdict()
                    row.update(row["remaining_row_keys"])
                    del row["remaining_row_keys"]
                    row.update(legacy_result)
                    row["site"] = site_host_name[0]
                    rows.append(row)
    return rows
コード例 #4
0
ファイル: bi.py プロジェクト: gugas1nwork/checkmk
def ajax_render_tree():
    aggr_group = html.request.get_unicode_input("group")
    aggr_title = html.request.get_unicode_input("title")
    omit_root = bool(html.request.var("omit_root"))
    only_problems = bool(html.request.var("only_problems"))

    rows = []
    with aggregation_compute_auto_cleanup():
        bi_status_fetcher.set_assumed_states(config.user.bi_assumptions)
        aggregation_id = html.request.get_str_input_mandatory("aggregation_id")
        bi_aggregation_filter = BIAggregationFilter(
            [], [], [aggregation_id],
            [aggr_title] if aggr_title is not None else [],
            [aggr_group] if aggr_group is not None else [], [])
        rows = bi_computer.compute_legacy_result_for_filter(
            bi_aggregation_filter)

    # TODO: Cleanup the renderer to use a class registry for lookup
    renderer_class_name = html.request.var("renderer")
    if renderer_class_name == "FoldableTreeRendererTree":
        renderer_cls: Type[ABCFoldableTreeRenderer] = FoldableTreeRendererTree
    elif renderer_class_name == "FoldableTreeRendererBoxes":
        renderer_cls = FoldableTreeRendererBoxes
    elif renderer_class_name == "FoldableTreeRendererBottomUp":
        renderer_cls = FoldableTreeRendererBottomUp
    elif renderer_class_name == "FoldableTreeRendererTopDown":
        renderer_cls = FoldableTreeRendererTopDown
    else:
        raise NotImplementedError()

    renderer = renderer_cls(rows[0],
                            omit_root=omit_root,
                            expansion_level=config.user.bi_expansion_level,
                            only_problems=only_problems,
                            lazy=False)
    html.write(renderer.render())