Allow multiple predicate functions when listing CertificateRequests

Signed-off-by: James Munnelly <james@munnelly.eu>
This commit is contained in:
James Munnelly 2020-04-15 14:38:24 +01:00
parent cf7e344425
commit 0f32bb46a8
2 changed files with 17 additions and 2 deletions

View File

@ -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",
],

View File

@ -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)
}
}