From 71ba3858f3ac519394df5afaf7447dd12d52790b Mon Sep 17 00:00:00 2001 From: "jesus m. rodriguez" Date: Wed, 22 Jul 2020 15:24:32 -0400 Subject: [PATCH 1/2] Move pkg/predicate closer to where it is used. --- pkg/ansible/controller/controller.go | 2 +- pkg/{ => ansible}/predicate/predicate.go | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename pkg/{ => ansible}/predicate/predicate.go (100%) diff --git a/pkg/ansible/controller/controller.go b/pkg/ansible/controller/controller.go index d414bc001d..52e1e44dbc 100644 --- a/pkg/ansible/controller/controller.go +++ b/pkg/ansible/controller/controller.go @@ -30,9 +30,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/source" "github.com/operator-framework/operator-sdk/pkg/ansible/events" + "github.com/operator-framework/operator-sdk/pkg/ansible/predicate" "github.com/operator-framework/operator-sdk/pkg/ansible/runner" handler "github.com/operator-framework/operator-sdk/pkg/handler" - "github.com/operator-framework/operator-sdk/pkg/predicate" ) var log = logf.Log.WithName("ansible-controller") diff --git a/pkg/predicate/predicate.go b/pkg/ansible/predicate/predicate.go similarity index 100% rename from pkg/predicate/predicate.go rename to pkg/ansible/predicate/predicate.go From 3bf43a429f4b607794d1d541134a30586b9ff6d8 Mon Sep 17 00:00:00 2001 From: "jesus m. rodriguez" Date: Wed, 22 Jul 2020 15:36:18 -0400 Subject: [PATCH 2/2] Favor c-r GenerationChangedPredicate instead of ours --- pkg/ansible/controller/controller.go | 3 ++- pkg/ansible/predicate/predicate.go | 33 ---------------------------- 2 files changed, 2 insertions(+), 34 deletions(-) diff --git a/pkg/ansible/controller/controller.go b/pkg/ansible/controller/controller.go index 52e1e44dbc..3aa58799f2 100644 --- a/pkg/ansible/controller/controller.go +++ b/pkg/ansible/controller/controller.go @@ -27,6 +27,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller" logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/manager" + crpredicate "sigs.k8s.io/controller-runtime/pkg/predicate" "sigs.k8s.io/controller-runtime/pkg/source" "github.com/operator-framework/operator-sdk/pkg/ansible/events" @@ -107,7 +108,7 @@ func Add(mgr manager.Manager, options Options) *controller.Controller { } if err := c.Watch(&source.Kind{Type: u}, &handler.InstrumentedEnqueueRequestForObject{}, - predicate.GenerationChangedPredicate{}, filterPredicate); err != nil { + crpredicate.GenerationChangedPredicate{}, filterPredicate); err != nil { log.Error(err, "") os.Exit(1) } diff --git a/pkg/ansible/predicate/predicate.go b/pkg/ansible/predicate/predicate.go index ffa5211609..c053b12a6c 100644 --- a/pkg/ansible/predicate/predicate.go +++ b/pkg/ansible/predicate/predicate.go @@ -18,47 +18,14 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "sigs.k8s.io/controller-runtime/pkg/event" - logf "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/predicate" ) -var log = logf.Log.WithName("predicate").WithName("eventFilters") - -// GenerationChangedPredicate implements a default update predicate function on generation change -// (adapted from sigs.k8s.io/controller-runtime/pkg/predicate/predicate.ResourceVersionChangedPredicate) -type GenerationChangedPredicate struct { - predicate.Funcs -} - type ResourceFilterPredicate struct { predicate.Funcs Selector labels.Selector } -// Update implements default UpdateEvent filter for validating generation change -func (GenerationChangedPredicate) Update(e event.UpdateEvent) bool { - if e.MetaOld == nil { - log.Error(nil, "Update event has no old metadata", "event", e) - return false - } - if e.ObjectOld == nil { - log.Error(nil, "Update event has no old runtime object to update", "event", e) - return false - } - if e.ObjectNew == nil { - log.Error(nil, "Update event has no new runtime object for update", "event", e) - return false - } - if e.MetaNew == nil { - log.Error(nil, "Update event has no new metadata", "event", e) - return false - } - if e.MetaNew.GetGeneration() == e.MetaOld.GetGeneration() && e.MetaNew.GetGeneration() != 0 { - return false - } - return true -} - // Skips events that have labels matching selectors defined in watches.yaml func (r ResourceFilterPredicate) eventFilter(eventLabels map[string]string) bool { return r.Selector.Matches(labels.Set(eventLabels))