In the kubernetes client-go API (or another library that uses it), is there a utility function to convert a k8s.io/apimachinery/pkg/apis/meta/v1/LabelSelector to a string to fill the field LabelSelector in k8s.io/apimachinery/pkg/apis/meta/v1/ListOptions?
I digged through the code of client-go but I can't find a function like that.
The LabelSelector.Marshall() nor LabelSelector.String() give me that (unsurprisingly, because that's not their purpose, but I tried it anyway).
I have spec descriptions like k8s.io/api/extensions/v1beta1/Deployment, and want to use it's set of selector labels (i.e. the Selector field) to query it's pods using
options := metav1.ListOptions{
LabelSelector: <stringified labels>,
}
podList, err := clientset.CoreV1().Pods(<namespace>).List(options)You can use LabelSelectorAsMap(LabelSelector) function to convert the labelselector into map[string]string map.
Then, use SelectorFromSet function of package k8s.io/apimachinery/pkg/labels to convert map to selector/strings.
Pseudo code:
import (
"k8s.io/apimachinery/pkg/labels"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func ListPod(labelSelector metav1.LabelSelector) {
labelMap := metav1.LabelSelectorAsMap(labelSelector)
options := metav1.ListOptions{
LabelSelector: labels.SelectorFromSet(labelMap).String(),
}
podList, err := clientset.CoreV1().Pods("<namespace>").List(options)
}