...
1
16
17 package v1
18
19 import (
20 "k8s.io/apimachinery/pkg/runtime/schema"
21 )
22
23
24 func IsControlledBy(obj Object, owner Object) bool {
25 ref := GetControllerOfNoCopy(obj)
26 if ref == nil {
27 return false
28 }
29 return ref.UID == owner.GetUID()
30 }
31
32
33 func GetControllerOf(controllee Object) *OwnerReference {
34 ref := GetControllerOfNoCopy(controllee)
35 if ref == nil {
36 return nil
37 }
38 cp := *ref
39 return &cp
40 }
41
42
43 func GetControllerOfNoCopy(controllee Object) *OwnerReference {
44 refs := controllee.GetOwnerReferences()
45 for i := range refs {
46 if refs[i].Controller != nil && *refs[i].Controller {
47 return &refs[i]
48 }
49 }
50 return nil
51 }
52
53
54 func NewControllerRef(owner Object, gvk schema.GroupVersionKind) *OwnerReference {
55 blockOwnerDeletion := true
56 isController := true
57 return &OwnerReference{
58 APIVersion: gvk.GroupVersion().String(),
59 Kind: gvk.Kind,
60 Name: owner.GetName(),
61 UID: owner.GetUID(),
62 BlockOwnerDeletion: &blockOwnerDeletion,
63 Controller: &isController,
64 }
65 }
66
View as plain text