From 0f32bb46a8096d2d890a0566ea00647667b6065d Mon Sep 17 00:00:00 2001 From: James Munnelly Date: Wed, 15 Apr 2020 14:38:24 +0100 Subject: [PATCH] Allow multiple predicate functions when listing CertificateRequests Signed-off-by: James Munnelly --- pkg/controller/expcertificates/BUILD.bazel | 1 + pkg/controller/expcertificates/util.go | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/pkg/controller/expcertificates/BUILD.bazel b/pkg/controller/expcertificates/BUILD.bazel index e0fe2ba84..e2e0b7d1c 100644 --- a/pkg/controller/expcertificates/BUILD.bazel +++ b/pkg/controller/expcertificates/BUILD.bazel @@ -13,6 +13,7 @@ go_library( "//pkg/util/pki:go_default_library", "@com_github_go_logr_logr//:go_default_library", "@io_k8s_api//core/v1:go_default_library", + "@io_k8s_apimachinery//pkg/apis/meta/v1:go_default_library", "@io_k8s_apimachinery//pkg/labels:go_default_library", "@io_k8s_client_go//util/workqueue:go_default_library", ], diff --git a/pkg/controller/expcertificates/util.go b/pkg/controller/expcertificates/util.go index 677c464d6..b072d1536 100644 --- a/pkg/controller/expcertificates/util.go +++ b/pkg/controller/expcertificates/util.go @@ -22,6 +22,7 @@ import ( "github.com/go-logr/logr" corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/client-go/util/workqueue" @@ -107,14 +108,27 @@ func WithCertificateRevisionPredicateFunc(revision int) CertificateRequestPredic } } -func ListCertificateRequestsMatchingPredicate(lister cmlisters.CertificateRequestNamespaceLister, selector labels.Selector, predicate CertificateRequestPredicateFunc) ([]*cmapi.CertificateRequest, error) { +func WithOwnerPredicateFunc(owner metav1.Object) CertificateRequestPredicateFunc { + return func(req *cmapi.CertificateRequest) bool { + return metav1.IsControlledBy(req, owner) + } +} + +func ListCertificateRequestsMatchingPredicate(lister cmlisters.CertificateRequestNamespaceLister, selector labels.Selector, predicates ...CertificateRequestPredicateFunc) ([]*cmapi.CertificateRequest, error) { reqs, err := lister.List(selector) if err != nil { return nil, err } out := make([]*cmapi.CertificateRequest, 0) for _, req := range reqs { - if predicate(req) { + matches := true + for _, predicate := range predicates { + if !predicate(req) { + matches = false + break + } + } + if matches { out = append(out, req) } }