def get_aggregation_group_trees(): # Here we have to deal with weird legacy # aggregation group definitions: # - "GROUP" # - ["GROUP_1", "GROUP2", ..] bi_packs.load_config() return bi_packs.get_aggregation_group_trees()
def get_bi_pack(params): """Get BI Pack""" bi_packs.load_config() bi_pack = bi_packs.get_pack(params["pack_id"]) if bi_pack is None: _bailout_with_message("Unknown bi_pack: %s" % params["pack_id"]) assert bi_pack is not None uri = constructors.object_href('bi_pack', bi_pack.id) domain_members = {} for (name, entities) in [("aggregation", bi_pack.get_aggregations()), ("rule", bi_pack.get_rules())]: elements = entities.values() # type: ignore[attr-defined] domain_members["%ss" % name] = constructors.object_collection( name=name, domain_type="bi_" + name, # type: ignore[arg-type] entries=[ constructors.link_rel( rel='.../value', parameters={'collection': "items"}, href=constructors.object_href( "bi_" + name # type: ignore[arg-type] , element.id), ) for element in elements ], base=uri, ) domain_object = constructors.domain_object(domain_type='bi_pack', identifier=bi_pack.id, title=bi_pack.title, members=domain_members) return constructors.serve_json(domain_object)
def get_bi_rule(params): """Get BI Rule""" bi_packs.load_config() bi_rule = bi_packs.get_rule(params["rule_id"]) if bi_rule is None: _bailout_with_message("Unknown bi_rule: %s" % params["rule_id"]) assert bi_rule is not None data = {"pack_id": bi_rule.pack_id} data.update(BIRuleSchema().dump(bi_rule).data) return constructors.serve_json(data)
def get_bi_aggregation(params): """Get BI Aggregation""" bi_packs.load_config() bi_aggregation = bi_packs.get_aggregation(params["aggregation_id"]) if bi_aggregation is None: _bailout_with_message("Unknown bi_aggregation: %s" % params["aggregation_id"]) assert bi_aggregation is not None data = {"pack_id": bi_aggregation.pack_id} data.update(BIAggregationSchema().dump(bi_aggregation).data) return constructors.serve_json(data)
def put_bi_rule(params): """Save BI Rule""" bi_packs.load_config() target_pack = bi_packs.get_pack(params["body"]["pack_id"]) if target_pack is None: _bailout_with_message("Unknown bi_pack: %s" % params["body"]["pack_id"]) assert target_pack is not None bi_rule = BIRule(params["body"]) target_pack.add_rule(bi_rule) bi_packs.save_config() data = {"pack_id": bi_rule.pack_id} data.update(bi_rule.schema()().dump(bi_rule).data) return constructors.serve_json(data)
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
def get_bi_packs(params): """Show all BI Packs""" bi_packs.load_config() packs = [ constructors.collection_item( domain_type='bi_pack', obj={ 'id': pack.id, 'title': pack.title, }, ) for pack in bi_packs.packs.values() ] collection_object = constructors.collection_object( domain_type='bi_pack', value=packs, links=[ constructors.link_rel('self', constructors.collection_href('bi_pack')) ], ) return constructors.serve_json(collection_object)
def prepare_for_compilation(self, online_sites: Set[SiteProgramStart]): bi_packs.load_config() bi_structure_fetcher.update_data(online_sites) bi_searcher.set_hosts(bi_structure_fetcher.hosts)
def aggregation_group_choices() -> List[DropdownChoiceEntry]: """ Returns a sorted list of aggregation group names """ bi_packs.load_config() return bi_packs.get_aggregation_group_choices()