// Copyright 2022 Google LLC // // 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 k8s import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func EnsureFinalizer(o metav1.Object, finalizer string) (found bool) { for _, f := range o.GetFinalizers() { if f == finalizer { return true } } o.SetFinalizers(append(o.GetFinalizers(), finalizer)) return false } func EnsureFinalizers(o metav1.Object, finalizers ...string) (found bool) { found = true for _, f := range finalizers { partialFound := EnsureFinalizer(o, f) if !partialFound { found = false } } return found } func RemoveFinalizer(o metav1.Object, finalizer string) { found := false var finalizers []string for _, f := range o.GetFinalizers() { if f != finalizer { finalizers = append(finalizers, f) } else { found = true } } if found { o.SetFinalizers(finalizers) } } func HasFinalizer(o metav1.Object, finalizer string) bool { for _, f := range o.GetFinalizers() { if f == finalizer { return true } } return false }