diff --git a/go.mod b/go.mod index 7cec2234d6..7a333cdc05 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( k8s.io/apimachinery v0.0.0-20190404173353-6a84e37a896d k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible k8s.io/kube-openapi v0.0.0-20180731170545-e3762e86a74c // indirect - k8s.io/utils v0.0.0-20190506122338-8fab8cb257d5 // indirect + k8s.io/utils v0.0.0-20190506122338-8fab8cb257d5 sigs.k8s.io/testing_frameworks v0.1.1 sigs.k8s.io/yaml v1.1.0 ) diff --git a/pkg/cache/internal/cache_reader.go b/pkg/cache/internal/cache_reader.go index a9b7ae347c..8564a2da8d 100644 --- a/pkg/cache/internal/cache_reader.go +++ b/pkg/cache/internal/cache_reader.go @@ -30,7 +30,6 @@ import ( "k8s.io/apimachinery/pkg/selection" "k8s.io/client-go/tools/cache" "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/internal/objectutil" ) // CacheReader is a CacheReader @@ -125,15 +124,22 @@ func (c *CacheReader) List(_ context.Context, out runtime.Object, opts ...client if !isObj { return fmt.Errorf("cache contained %T, which is not an Object", obj) } + meta, err := apimeta.Accessor(obj) + if err != nil { + return err + } + if labelSel != nil { + lbls := labels.Set(meta.GetLabels()) + if !labelSel.Matches(lbls) { + continue + } + } + outObj := obj.DeepCopyObject() outObj.GetObjectKind().SetGroupVersionKind(c.groupVersionKind) runtimeObjs = append(runtimeObjs, outObj) } - filteredItems, err := objectutil.FilterWithLabels(runtimeObjs, labelSel) - if err != nil { - return err - } - return apimeta.SetList(out, filteredItems) + return apimeta.SetList(out, runtimeObjs) } // objectKeyToStorageKey converts an object key to store key.