From b999e72d531f70cdf877468514b1bf11a8badfd4 Mon Sep 17 00:00:00 2001 From: Dmitry Volodin Date: Thu, 23 Apr 2020 13:42:20 +0300 Subject: [PATCH] :sparkles: Add ContainsFinalizer helper to the controllerutil --- pkg/controller/controllerutil/controllerutil.go | 11 +++++++++++ pkg/controller/controllerutil/controllerutil_test.go | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/pkg/controller/controllerutil/controllerutil.go b/pkg/controller/controllerutil/controllerutil.go index 5f36b36f1f..de9dfa49fb 100644 --- a/pkg/controller/controllerutil/controllerutil.go +++ b/pkg/controller/controllerutil/controllerutil.go @@ -282,6 +282,17 @@ func RemoveFinalizerWithError(o runtime.Object, finalizer string) error { return nil } +// ContainsFinalizer checks a metav1 object that the provided finalizer is present. +func ContainsFinalizer(o Object, finalizer string) bool { + f := o.GetFinalizers() + for _, e := range f { + if e == finalizer { + return true + } + } + return false +} + // Object allows functions to work indistinctly with any resource that // implements both Object interfaces. type Object interface { diff --git a/pkg/controller/controllerutil/controllerutil_test.go b/pkg/controller/controllerutil/controllerutil_test.go index 74b736c7bb..0de2221650 100644 --- a/pkg/controller/controllerutil/controllerutil_test.go +++ b/pkg/controller/controllerutil/controllerutil_test.go @@ -452,6 +452,18 @@ var _ = Describe("Controllerutil", func() { Expect(deploy.ObjectMeta.GetFinalizers()).To(Equal([]string{})) }) }) + + Describe("ContainsFinalizer", func() { + It("should check that finalizer is present", func() { + controllerutil.AddFinalizer(deploy, testFinalizer) + Expect(controllerutil.ContainsFinalizer(deploy, testFinalizer)).To(Equal(true)) + }) + + It("should check that finalizer is not present after RemoveFinalizer call", func() { + controllerutil.RemoveFinalizer(deploy, testFinalizer) + Expect(controllerutil.ContainsFinalizer(deploy, testFinalizer)).To(Equal(false)) + }) + }) }) })