Пример #1
0
def singlehost_table(
    view, columns, query, only_sites, limit, all_active_filters, joinbyname, bygroup
):

    filterheaders = "".join(get_livestatus_filter_headers(view.context, all_active_filters))
    host_columns = [c for c in columns if c.startswith("host_")]

    rows = []
    bi_manager = BIManager()
    bi_manager.status_fetcher.set_assumed_states(user.bi_assumptions)
    bi_aggregation_filter = compute_bi_aggregation_filter(view.context, all_active_filters)
    required_aggregations = bi_manager.computer.get_required_aggregations(bi_aggregation_filter)
    bi_manager.status_fetcher.update_states_filtered(
        filterheaders, only_sites, limit, host_columns, bygroup, required_aggregations
    )

    aggregation_results = bi_manager.computer.compute_results(required_aggregations)
    legacy_results = bi_manager.computer.convert_to_legacy_results(
        aggregation_results, bi_aggregation_filter
    )

    for site_host_name, values in bi_manager.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
Пример #2
0
    def _get_hostnames_from_filters(
        self, context: VisualContext, filters: List[Filter]
    ) -> Set[HostName]:
        filter_headers = "".join(get_livestatus_filter_headers(context, filters))

        query = "GET hosts\nColumns: name"
        if filter_headers:
            query += "\n%s" % filter_headers

        site = request.var("site")
        with sites.only_sites(None if site is None else SiteId(site)):
            return {HostName(x) for x in sites.live().query_column_unique(query)}
Пример #3
0
 def _get_filter_headers(self) -> FilterHeader:
     view, filters = get_topology_view_and_filters()
     return "".join(get_livestatus_filter_headers(view.context, filters))