package resourcebundlestate import ( "context" "log" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" "sigs.k8s.io/controller-runtime/pkg/client" ) // checkLabel verifies if the expected label exists and returns bool func checkLabel(labels map[string]string) bool { _, ok := labels["emco/deployment-id"] if !ok { log.Printf("Pod does not have label. Filter it.") return false } return true } // returnLabel verifies if the expected label exists and returns a map func returnLabel(labels map[string]string) map[string]string { l, ok := labels["emco/deployment-id"] if !ok { log.Printf("Pod does not have label. Filter it.") return nil } return map[string]string{ "emco/deployment-id": l, } } // listResources lists resources based on the selectors provided // The data is returned in the pointer to the runtime.Object // provided as argument. func listResources(cli client.Client, namespace string, labelSelector map[string]string, returnData runtime.Object) error { listOptions := &client.ListOptions{ Namespace: namespace, LabelSelector: labels.SelectorFromSet(labelSelector), } err := cli.List(context.TODO(), returnData, listOptions) if err != nil { log.Printf("Failed to list CRs: %v", err) return err } return nil } // listClusterResources lists non-namespace resources based // on the selectors provided. // The data is returned in the pointer to the runtime.Object // provided as argument. func listClusterResources(cli client.Client, labelSelector map[string]string, returnData runtime.Object) error { return listResources(cli, "", labelSelector, returnData) }