From 68737327aac7cca8dd9e7e59ec3b4aab1ab4f40c Mon Sep 17 00:00:00 2001 From: Catherine Fang Date: Tue, 12 Dec 2023 16:46:00 -0500 Subject: [PATCH] Update volumeattachment --- internal/store/builder.go | 2 +- internal/store/volumeattachment.go | 91 +++++++++++++------------ internal/store/volumeattachment_test.go | 4 +- 3 files changed, 52 insertions(+), 45 deletions(-) diff --git a/internal/store/builder.go b/internal/store/builder.go index faff07ad82..15c2386217 100644 --- a/internal/store/builder.go +++ b/internal/store/builder.go @@ -474,7 +474,7 @@ func (b *Builder) buildValidatingWebhookConfigurationStores() []cache.Store { } func (b *Builder) buildVolumeAttachmentStores() []cache.Store { - return b.buildStoresFunc(volumeAttachmentMetricFamilies, &storagev1.VolumeAttachment{}, createVolumeAttachmentListWatch, b.useAPIServerCache) + return b.buildStoresFunc(volumeAttachmentMetricFamilies(), &storagev1.VolumeAttachment{}, createVolumeAttachmentListWatch, b.useAPIServerCache) } func (b *Builder) buildLeasesStores() []cache.Store { diff --git a/internal/store/volumeattachment.go b/internal/store/volumeattachment.go index 22cdd8e963..0605be5522 100644 --- a/internal/store/volumeattachment.go +++ b/internal/store/volumeattachment.go @@ -35,8 +35,10 @@ var ( descVolumeAttachmentLabelsName = "kube_volumeattachment_labels" descVolumeAttachmentLabelsHelp = "Kubernetes labels converted to Prometheus labels." descVolumeAttachmentLabelsDefaultLabels = []string{"volumeattachment"} +) - volumeAttachmentMetricFamilies = []generator.FamilyGenerator{ +func volumeAttachmentMetricFamilies() []generator.FamilyGenerator { + return []generator.FamilyGenerator{ *generator.NewFamilyGeneratorWithStability( descVolumeAttachmentLabelsName, descVolumeAttachmentLabelsHelp, @@ -45,15 +47,16 @@ var ( "", wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family { labelKeys, labelValues := kubeMapToPrometheusLabels("label", va.Labels) - return &metric.Family{ - Metrics: []*metric.Metric{ - { - LabelKeys: labelKeys, - LabelValues: labelValues, - Value: 1, - }, + ms := []*metric.Metric{ + { + LabelValues: labelValues, + Value: 1, }, } + metric.SetLabelKeys(ms, labelKeys) + return &metric.Family{ + Metrics: ms, + } }), ), *generator.NewFamilyGeneratorWithStability( @@ -63,15 +66,16 @@ var ( basemetrics.ALPHA, "", wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family { - return &metric.Family{ - Metrics: []*metric.Metric{ - { - LabelKeys: []string{"attacher", "node"}, - LabelValues: []string{va.Spec.Attacher, va.Spec.NodeName}, - Value: 1, - }, + ms := []*metric.Metric{ + { + LabelValues: []string{va.Spec.Attacher, va.Spec.NodeName}, + Value: 1, }, } + metric.SetLabelKeys(ms, []string{"attacher", "node"}) + return &metric.Family{ + Metrics: ms, + } }), ), *generator.NewFamilyGeneratorWithStability( @@ -82,12 +86,14 @@ var ( "", wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family { if !va.CreationTimestamp.IsZero() { - m := metric.Metric{ - LabelKeys: nil, - LabelValues: nil, - Value: float64(va.CreationTimestamp.Unix()), + ms := []*metric.Metric{ + { + Value: float64(va.CreationTimestamp.Unix()), + }, } - return &metric.Family{Metrics: []*metric.Metric{&m}} + + metric.SetLabelKeys(ms, []string{}) + return &metric.Family{Metrics: ms} } return &metric.Family{Metrics: []*metric.Metric{}} }), @@ -100,15 +106,15 @@ var ( "", wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family { if va.Spec.Source.PersistentVolumeName != nil { - return &metric.Family{ - Metrics: []*metric.Metric{ - { - LabelKeys: []string{"volumename"}, - LabelValues: []string{*va.Spec.Source.PersistentVolumeName}, - Value: 1, - }, + ms := []*metric.Metric{ + { + LabelValues: []string{*va.Spec.Source.PersistentVolumeName}, + Value: 1, }, } + metric.SetLabelKeys(ms, []string{"volumename"}) + + return &metric.Family{Metrics: ms} } return &metric.Family{} }), @@ -120,15 +126,15 @@ var ( basemetrics.ALPHA, "", wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family { - return &metric.Family{ - Metrics: []*metric.Metric{ - { - LabelKeys: nil, - LabelValues: nil, - Value: boolFloat64(va.Status.Attached), - }, + ms := []*metric.Metric{ + { + Value: boolFloat64(va.Status.Attached), }, } + metric.SetLabelKeys(ms, []string{}) + return &metric.Family{ + Metrics: ms, + } }), ), *generator.NewFamilyGeneratorWithStability( @@ -139,19 +145,20 @@ var ( "", wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family { labelKeys, labelValues := mapToPrometheusLabels(va.Status.AttachmentMetadata, "metadata") - return &metric.Family{ - Metrics: []*metric.Metric{ - { - LabelKeys: labelKeys, - LabelValues: labelValues, - Value: 1, - }, + ms := []*metric.Metric{ + { + LabelValues: labelValues, + Value: 1, }, } + metric.SetLabelKeys(ms, labelKeys) + return &metric.Family{ + Metrics: ms, + } }), ), } -) +} func wrapVolumeAttachmentFunc(f func(*storagev1.VolumeAttachment) *metric.Family) func(interface{}) *metric.Family { return func(obj interface{}) *metric.Family { diff --git a/internal/store/volumeattachment_test.go b/internal/store/volumeattachment_test.go index 822cd21f31..7a26c67e21 100644 --- a/internal/store/volumeattachment_test.go +++ b/internal/store/volumeattachment_test.go @@ -87,8 +87,8 @@ func TestVolumeAttachmentStore(t *testing.T) { } ) for i, c := range cases { - c.Func = generator.ComposeMetricGenFuncs(volumeAttachmentMetricFamilies) - c.Headers = generator.ExtractMetricFamilyHeaders(volumeAttachmentMetricFamilies) + c.Func = generator.ComposeMetricGenFuncs(volumeAttachmentMetricFamilies()) + c.Headers = generator.ExtractMetricFamilyHeaders(volumeAttachmentMetricFamilies()) if err := c.run(); err != nil { t.Errorf("unexpected collecting result in %vth run:\n%s", i, err) }