Example #1
0
    def filter(self, value: FilterHTTPVariables) -> FilterHeader:
        headers = []

        # Do not restrict to a certain number, because we'd like to link to this
        # via an URL, e.g. from the virtual host tree snapin
        num = 0
        column = livestatus.lqencode(self.object_type) + "_tags"
        while value.get("%s%d_grp" % (self.var_prefix, num)):
            prefix = "%s%d" % (self.var_prefix, num)
            num += 1

            op = value.get(prefix + "_op")
            tag_group = config.tags.get_tag_group(
                value.get(prefix + "_grp", ""))
            tag = value.get(prefix + "_val", "")

            if not tag_group or not op:
                continue

            headers.append(
                encode_label_for_livestatus(column,
                                            tag_group.id,
                                            tag,
                                            negate=op != "is"))

        if headers:
            return "\n".join(headers) + "\n"
        return ""
Example #2
0
 def filter(self, value: FilterHTTPVariables) -> FilterHeader:
     headers = [
         encode_label_for_livestatus(self.ident, label_id, label_value)
         for label_id, label_value in self.parse_value(value)
     ]
     if headers:
         return "\n".join(headers) + "\n"
     return ""
Example #3
0
def host_aux_tags_lq(prefix: str, value: FilterHTTPVariables) -> FilterHeader:
    headers = []

    # Do not restrict to a certain number, because we'd like to link to this
    # via an URL, e.g. from the virtual host tree snapin
    num = 0
    while (this_tag := value.get("%s_%d" % (prefix, num))) is not None:
        if this_tag:
            negate = bool(value.get("%s_%d_neg" % (prefix, num)))
            headers.append(
                encode_label_for_livestatus("host_tags", this_tag, this_tag,
                                            negate))

        num += 1
Example #4
0
    def _query_callback(
            sites_live: MultiSiteConnection) -> Collection[LivestatusColumn]:
        """
        we search for hosts having a certain label
        ('cmk/kubernets/object:{object_type}') and want a list of unique labels
        values of labels with the key label_name.
        """
        label_filter = encode_label_for_livestatus(
            column="labels",
            label=Label("cmk/kubernetes/object", object_type, False),
        )
        query = f"GET hosts\nColumns: labels\n{label_filter}"

        query_result = sites_live.query_column(query)
        label_values = set()
        for element in query_result:
            for label_key, label_value in element.items():
                if label_key == label_name:
                    label_values.add(label_value)
        return label_values