...
1
16
17 package objectutil
18
19 import (
20 apimeta "k8s.io/apimachinery/pkg/api/meta"
21 "k8s.io/apimachinery/pkg/labels"
22 "k8s.io/apimachinery/pkg/runtime"
23 )
24
25
26 func FilterWithLabels(objs []runtime.Object, labelSel labels.Selector) ([]runtime.Object, error) {
27 outItems := make([]runtime.Object, 0, len(objs))
28 for _, obj := range objs {
29 meta, err := apimeta.Accessor(obj)
30 if err != nil {
31 return nil, err
32 }
33 if labelSel != nil {
34 lbls := labels.Set(meta.GetLabels())
35 if !labelSel.Matches(lbls) {
36 continue
37 }
38 }
39 outItems = append(outItems, obj.DeepCopyObject())
40 }
41 return outItems, nil
42 }
43
View as plain text