From 29e043ed1df57f072c48890b7e9ca1d226b0eedd Mon Sep 17 00:00:00 2001 From: Lanting Chiang Date: Wed, 12 Oct 2022 10:03:23 -0400 Subject: [PATCH] account for nil holderIdentity case --- internal/store/lease.go | 9 +++++++-- internal/store/lease_test.go | 27 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/internal/store/lease.go b/internal/store/lease.go index 6c468f4b4d..af0cc3db09 100644 --- a/internal/store/lease.go +++ b/internal/store/lease.go @@ -42,13 +42,18 @@ var ( wrapLeaseFunc(func(l *coordinationv1.Lease) *metric.Family { labelKeys := []string{"owner_kind", "owner_name", "namespace", "lease_holder"} + var holder string + if l.Spec.HolderIdentity != nil { + holder = *l.Spec.HolderIdentity + } + owners := l.GetOwnerReferences() if len(owners) == 0 { return &metric.Family{ Metrics: []*metric.Metric{ { LabelKeys: labelKeys, - LabelValues: []string{"", "", l.Namespace, *l.Spec.HolderIdentity}, + LabelValues: []string{"", "", l.Namespace, holder}, Value: 1, }, }, @@ -59,7 +64,7 @@ var ( for i, owner := range owners { ms[i] = &metric.Metric{ LabelKeys: labelKeys, - LabelValues: []string{owner.Kind, owner.Name, l.Namespace, *l.Spec.HolderIdentity}, + LabelValues: []string{owner.Kind, owner.Name, l.Namespace, holder}, Value: 1, } } diff --git a/internal/store/lease_test.go b/internal/store/lease_test.go index 8caa86023d..23f26f2403 100644 --- a/internal/store/lease_test.go +++ b/internal/store/lease_test.go @@ -57,6 +57,33 @@ func TestLeaseStore(t *testing.T) { }, Want: metadata + ` kube_lease_owner{lease="kube-master",owner_kind="Node",owner_name="kube-master",namespace="default",lease_holder="kube-master"} 1 + kube_lease_renew_time{lease="kube-master"} 1.5e+09 + `, + MetricNames: []string{ + "kube_lease_owner", + "kube_lease_renew_time", + }, + }, + { + Obj: &coordinationv1.Lease{ + ObjectMeta: metav1.ObjectMeta{ + Generation: 2, + Name: "kube-master", + Namespace: "default", + CreationTimestamp: metav1.Time{Time: time.Unix(1500000000, 0)}, + OwnerReferences: []metav1.OwnerReference{ + { + Kind: "Node", + Name: leaseOwner, + }, + }, + }, + Spec: coordinationv1.LeaseSpec{ + RenewTime: &metav1.MicroTime{Time: time.Unix(1500000000, 0)}, + }, + }, + Want: metadata + ` + kube_lease_owner{lease="kube-master",owner_kind="Node",owner_name="kube-master",namespace="default",lease_holder=""} 1 kube_lease_renew_time{lease="kube-master"} 1.5e+09 `, MetricNames: []string{