in pkg/source/gcp/task/gke/k8s_event/query.go [39:72]
func generateK8sEventNamespaceFilter(filter *queryutil.SetFilterParseResult) string {
if filter.ValidationError != "" {
return fmt.Sprintf(`-- Failed to generate namespace filter due to the validation error "%s"`, filter.ValidationError)
}
if filter.SubtractMode {
return "-- Unsupported operation"
} else {
hasClusterScope := slices.Contains(filter.Additives, "#cluster-scoped")
hasNamespacedScope := slices.Contains(filter.Additives, "#namespaced")
if hasClusterScope && hasNamespacedScope {
return "-- No namespace filter"
}
if !hasClusterScope && hasNamespacedScope {
return `jsonPayload.involvedObject.namespace:"" -- ignore events in k8s object with namespace`
}
if hasClusterScope && !hasNamespacedScope {
if len(filter.Additives) == 1 {
return `-jsonPayload.involvedObject.namespace:"" -- ignore events in k8s object with namespace`
}
namespaceContains := []string{}
for _, additive := range filter.Additives {
if strings.HasPrefix(additive, "#") {
continue
}
namespaceContains = append(namespaceContains, additive)
}
return fmt.Sprintf(`(jsonPayload.involvedObject.namespace=(%s) OR NOT (jsonPayload.involvedObject.namespace:""))`, strings.Join(namespaceContains, " OR "))
}
if len(filter.Additives) == 0 {
return `-- Invalid: none of the resources will be selected. Ignoreing namespace filter.`
}
return fmt.Sprintf(`jsonPayload.involvedObject.namespace=(%s)`, strings.Join(filter.Additives, " OR "))
}
}