diff --git a/go.mod b/go.mod index 0621102ad7..2ce2c1eb81 100644 --- a/go.mod +++ b/go.mod @@ -16,6 +16,7 @@ require ( github.com/onsi/ginkgo v1.12.0 github.com/onsi/gomega v1.9.0 github.com/operator-framework/api v0.3.8 + github.com/operator-framework/operator-lib v0.0.0-20200722145423-0ffd6fc49593 github.com/operator-framework/operator-registry v1.12.6-0.20200611222234-275301b779f8 github.com/prometheus/client_golang v1.5.1 github.com/rogpeppe/go-internal v1.5.0 diff --git a/go.sum b/go.sum index 57bb8d9bfd..d7741e38ca 100644 --- a/go.sum +++ b/go.sum @@ -565,6 +565,8 @@ github.com/operator-framework/api v0.3.7-0.20200602203552-431198de9fc2 h1:2KtDe3 github.com/operator-framework/api v0.3.7-0.20200602203552-431198de9fc2/go.mod h1:Xbje9x0SHmh0nihE21kpesB38vk3cyxnE6JdDS8Jo1Q= github.com/operator-framework/api v0.3.8 h1:tJykTCmwGKZBsPVTCfxbwz6nTF6dzmKydWJtC40erc8= github.com/operator-framework/api v0.3.8/go.mod h1:Xbje9x0SHmh0nihE21kpesB38vk3cyxnE6JdDS8Jo1Q= +github.com/operator-framework/operator-lib v0.0.0-20200722145423-0ffd6fc49593 h1:HO4u9RmDgd026bOmMCAqYXhFDVPaZoo/gbZGb61+Dzg= +github.com/operator-framework/operator-lib v0.0.0-20200722145423-0ffd6fc49593/go.mod h1:ECCXhumm5v45hOPC/7Y9drfL1akeoyDHT8GsoJ7/Xc0= github.com/operator-framework/operator-registry v1.12.6-0.20200611222234-275301b779f8 h1:F3zzxoBJJANdKMxmSOi5z/HWiVT+gwOdhROkEwDWD2M= github.com/operator-framework/operator-registry v1.12.6-0.20200611222234-275301b779f8/go.mod h1:loVINznYhgBIkmv83kU4yee88RS0BBk+hqOw9r4bhJk= github.com/otiai10/copy v1.2.0 h1:HvG945u96iNadPoG2/Ja2+AUJeW5YuFQMixq9yirC+k= diff --git a/pkg/ansible/proxy/proxy.go b/pkg/ansible/proxy/proxy.go index 00083f5310..322543e657 100644 --- a/pkg/ansible/proxy/proxy.go +++ b/pkg/ansible/proxy/proxy.go @@ -39,11 +39,11 @@ import ( "sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/source" + "github.com/operator-framework/operator-lib/predicate" "github.com/operator-framework/operator-sdk/pkg/ansible/proxy/controllermap" "github.com/operator-framework/operator-sdk/pkg/ansible/proxy/kubeconfig" k8sRequest "github.com/operator-framework/operator-sdk/pkg/ansible/proxy/requestfactory" osdkHandler "github.com/operator-framework/operator-sdk/pkg/handler" - "github.com/operator-framework/operator-sdk/pkg/internal/predicate" ) // This is the default timeout to wait for the cache to respond diff --git a/pkg/helm/controller/controller.go b/pkg/helm/controller/controller.go index 4b476d48bf..cb93b09cfc 100644 --- a/pkg/helm/controller/controller.go +++ b/pkg/helm/controller/controller.go @@ -32,10 +32,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/source" "sigs.k8s.io/yaml" + "github.com/operator-framework/operator-lib/predicate" "github.com/operator-framework/operator-sdk/internal/util/k8sutil" "github.com/operator-framework/operator-sdk/pkg/handler" "github.com/operator-framework/operator-sdk/pkg/helm/release" - "github.com/operator-framework/operator-sdk/pkg/internal/predicate" ) var log = logf.Log.WithName("helm.controller") diff --git a/pkg/internal/predicate/dependent.go b/pkg/internal/predicate/dependent.go deleted file mode 100644 index 28b4dfe388..0000000000 --- a/pkg/internal/predicate/dependent.go +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2019 The Operator-SDK Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package predicate - -import ( - "reflect" - - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "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") - -var _ predicate.Predicate = DependentPredicate{} - -// DependentPredicate is a predicate that filters events for resources -// created as dependents of a primary resource. It follows the following -// rules: -// -// - Create events are ignored because it is assumed that the controller -// reconciling the parent is the client creating the dependent -// resources. -// - Update events that change only the dependent resource status are -// ignored because it is not typical for the controller of a primary -// resource to write to the status of one its dependent resources. -// - Deletion events are always handled because a controller will -// typically want to recreate deleted dependent resources if the -// primary resource is not deleted. -// - Generic events are ignored. -// -// DependentPredicate is most often used in conjunction with -// controller-runtime's handler.EnqueueRequestForOwner -type DependentPredicate struct { - predicate.Funcs -} - -// Create filters out all events. It assumes that the controller -// reconciling the parent is the only client creating the dependent -// resources. -func (DependentPredicate) Create(e event.CreateEvent) bool { - o := e.Object.(*unstructured.Unstructured) - log.V(1).Info("Skipping reconciliation for dependent resource creation", - "name", o.GetName(), "namespace", o.GetNamespace(), "apiVersion", - o.GroupVersionKind().GroupVersion(), "kind", o.GroupVersionKind().Kind) - return false -} - -// Delete passes all events through. This allows the controller to -// recreate deleted dependent resources if the primary resource is -// not deleted. -func (DependentPredicate) Delete(e event.DeleteEvent) bool { - o := e.Object.(*unstructured.Unstructured) - log.V(1).Info("Reconciling due to dependent resource deletion", - "name", o.GetName(), "namespace", o.GetNamespace(), "apiVersion", - o.GroupVersionKind().GroupVersion(), "kind", o.GroupVersionKind().Kind) - return true -} - -// Generic filters out all events. -func (DependentPredicate) Generic(e event.GenericEvent) bool { - o := e.Object.(*unstructured.Unstructured) - log.V(1).Info("Skipping reconcile due to generic event", "name", o.GetName(), - "namespace", o.GetNamespace(), "apiVersion", o.GroupVersionKind().GroupVersion(), - "kind", o.GroupVersionKind().Kind) - return false -} - -// Update filters out events that change only the dependent resource -// status. It is not typical for the controller of a primary -// resource to write to the status of one its dependent resources. -func (DependentPredicate) Update(e event.UpdateEvent) bool { - old := e.ObjectOld.(*unstructured.Unstructured).DeepCopy() - new := e.ObjectNew.(*unstructured.Unstructured).DeepCopy() - - delete(old.Object, "status") - delete(new.Object, "status") - old.SetResourceVersion("") - new.SetResourceVersion("") - - if reflect.DeepEqual(old.Object, new.Object) { - return false - } - log.V(1).Info("Reconciling due to dependent resource update", - "name", new.GetName(), "namespace", new.GetNamespace(), "apiVersion", - new.GroupVersionKind().GroupVersion(), "kind", new.GroupVersionKind().Kind) - return true -}