...
1
16
17 package util
18
19 import (
20 "context"
21
22 coordinationv1 "k8s.io/api/coordination/v1"
23 corev1 "k8s.io/api/core/v1"
24 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25 clientset "k8s.io/client-go/kubernetes"
26
27 "k8s.io/klog/v2"
28 )
29
30
31
32 func SetNodeOwnerFunc(c clientset.Interface, nodeName string) func(lease *coordinationv1.Lease) error {
33 return func(lease *coordinationv1.Lease) error {
34
35
36
37
38 if len(lease.OwnerReferences) == 0 {
39 if node, err := c.CoreV1().Nodes().Get(context.TODO(), nodeName, metav1.GetOptions{}); err == nil {
40 lease.OwnerReferences = []metav1.OwnerReference{
41 {
42 APIVersion: corev1.SchemeGroupVersion.WithKind("Node").Version,
43 Kind: corev1.SchemeGroupVersion.WithKind("Node").Kind,
44 Name: nodeName,
45 UID: node.UID,
46 },
47 }
48 } else {
49 klog.ErrorS(err, "Failed to get node when trying to set owner ref to the node lease", "node", klog.KRef("", nodeName))
50 return err
51 }
52 }
53 return nil
54 }
55 }
56
View as plain text