-
Notifications
You must be signed in to change notification settings - Fork 51
/
finalizer.go
38 lines (32 loc) · 990 Bytes
/
finalizer.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package finalizer
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets"
)
func Contains(list []string, s string) bool {
for _, v := range list {
if v == s {
return true
}
}
return false
}
func Remove(object metav1.Object, finalizer string) {
finalizers := sets.NewString(object.GetFinalizers()...)
finalizers.Delete(finalizer)
object.SetFinalizers(finalizers.List())
}
// Add adds a finalizer to an object
func Add(object metav1.Object, finalizer string) {
finalizers := sets.NewString(object.GetFinalizers()...)
finalizers.Insert(finalizer)
object.SetFinalizers(finalizers.List())
}
// WasDeleteRequested verifies if the resource was requested for deletion
func WasDeleteRequested(o metav1.Object) bool {
return o.GetDeletionTimestamp() != nil
}
// HasFinalizer verifies if a finalizer is placed on the resource
func HasFinalizer(o metav1.Object, finalizerKey string) bool {
return Contains(o.GetFinalizers(), finalizerKey)
}