Skip to content

Commit 263b162

Browse files
committed
chore: Reduce code duplication for metadata metric families
1 parent 2e8c3bf commit 263b162

File tree

11 files changed

+187
-743
lines changed

11 files changed

+187
-743
lines changed

internal/store/certificatesigningrequest.go

Lines changed: 3 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -33,80 +33,13 @@ import (
3333
)
3434

3535
var (
36-
descCSRAnnotationsName = "kube_certificatesigningrequest_annotations"
37-
descCSRAnnotationsHelp = "Kubernetes annotations converted to Prometheus labels."
38-
descCSRLabelsName = "kube_certificatesigningrequest_labels"
39-
descCSRLabelsHelp = "Kubernetes labels converted to Prometheus labels."
4036
descCSRLabelsDefaultLabels = []string{"certificatesigningrequest", "signer_name"}
4137
)
4238

4339
func csrMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generator.FamilyGenerator {
44-
return []generator.FamilyGenerator{
45-
*generator.NewFamilyGeneratorWithStability(
46-
descCSRAnnotationsName,
47-
descCSRAnnotationsHelp,
48-
metric.Gauge,
49-
basemetrics.ALPHA,
50-
"",
51-
wrapCSRFunc(func(j *certv1.CertificateSigningRequest) *metric.Family {
52-
if len(allowAnnotationsList) == 0 {
53-
return &metric.Family{}
54-
}
55-
annotationKeys, annotationValues := createPrometheusLabelKeysValues("annotation", j.Annotations, allowAnnotationsList)
56-
return &metric.Family{
57-
Metrics: []*metric.Metric{
58-
{
59-
LabelKeys: annotationKeys,
60-
LabelValues: annotationValues,
61-
Value: 1,
62-
},
63-
},
64-
}
65-
}),
66-
),
67-
*generator.NewFamilyGeneratorWithStability(
68-
descCSRLabelsName,
69-
descCSRLabelsHelp,
70-
metric.Gauge,
71-
basemetrics.STABLE,
72-
"",
73-
wrapCSRFunc(func(j *certv1.CertificateSigningRequest) *metric.Family {
74-
if len(allowLabelsList) == 0 {
75-
return &metric.Family{}
76-
}
77-
labelKeys, labelValues := createPrometheusLabelKeysValues("label", j.Labels, allowLabelsList)
78-
return &metric.Family{
79-
Metrics: []*metric.Metric{
80-
{
81-
LabelKeys: labelKeys,
82-
LabelValues: labelValues,
83-
Value: 1,
84-
},
85-
},
86-
}
87-
}),
88-
),
89-
*generator.NewFamilyGeneratorWithStability(
90-
"kube_certificatesigningrequest_created",
91-
"Unix creation timestamp",
92-
metric.Gauge,
93-
basemetrics.STABLE,
94-
"",
95-
wrapCSRFunc(func(csr *certv1.CertificateSigningRequest) *metric.Family {
96-
ms := []*metric.Metric{}
97-
if !csr.CreationTimestamp.IsZero() {
98-
ms = append(ms, &metric.Metric{
99-
LabelKeys: []string{},
100-
LabelValues: []string{},
101-
Value: float64(csr.CreationTimestamp.Unix()),
102-
})
103-
}
40+
metadataFamilies := createMetadataMetricFamiliesGenerator(allowAnnotationsList, allowLabelsList, descCSRLabelsDefaultLabels, "kube_certificatesigningrequest", wrapMetadataFunc)
10441

105-
return &metric.Family{
106-
Metrics: ms,
107-
}
108-
}),
109-
),
42+
return append(metadataFamilies,
11043
*generator.NewFamilyGeneratorWithStability(
11144
"kube_certificatesigningrequest_condition",
11245
"The number of each certificatesigningrequest condition",
@@ -137,7 +70,7 @@ func csrMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
13770
}
13871
}),
13972
),
140-
}
73+
)
14174
}
14275

14376
func wrapCSRFunc(f func(*certv1.CertificateSigningRequest) *metric.Family) func(interface{}) *metric.Family {

internal/store/clusterrole.go

Lines changed: 3 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -32,59 +32,12 @@ import (
3232
)
3333

3434
var (
35-
descClusterRoleAnnotationsName = "kube_clusterrole_annotations"
36-
descClusterRoleAnnotationsHelp = "Kubernetes annotations converted to Prometheus labels."
37-
descClusterRoleLabelsName = "kube_clusterrole_labels"
38-
descClusterRoleLabelsHelp = "Kubernetes labels converted to Prometheus labels."
3935
descClusterRoleLabelsDefaultLabels = []string{"clusterrole"}
4036
)
4137

4238
func clusterRoleMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generator.FamilyGenerator {
43-
return []generator.FamilyGenerator{
44-
*generator.NewFamilyGeneratorWithStability(
45-
descClusterRoleAnnotationsName,
46-
descClusterRoleAnnotationsHelp,
47-
metric.Gauge,
48-
basemetrics.ALPHA,
49-
"",
50-
wrapClusterRoleFunc(func(r *rbacv1.ClusterRole) *metric.Family {
51-
if len(allowAnnotationsList) == 0 {
52-
return &metric.Family{}
53-
}
54-
annotationKeys, annotationValues := createPrometheusLabelKeysValues("annotation", r.Annotations, allowAnnotationsList)
55-
return &metric.Family{
56-
Metrics: []*metric.Metric{
57-
{
58-
LabelKeys: annotationKeys,
59-
LabelValues: annotationValues,
60-
Value: 1,
61-
},
62-
},
63-
}
64-
}),
65-
),
66-
*generator.NewFamilyGeneratorWithStability(
67-
descClusterRoleLabelsName,
68-
descClusterRoleLabelsHelp,
69-
metric.Gauge,
70-
basemetrics.ALPHA,
71-
"",
72-
wrapClusterRoleFunc(func(r *rbacv1.ClusterRole) *metric.Family {
73-
if len(allowLabelsList) == 0 {
74-
return &metric.Family{}
75-
}
76-
labelKeys, labelValues := createPrometheusLabelKeysValues("label", r.Labels, allowLabelsList)
77-
return &metric.Family{
78-
Metrics: []*metric.Metric{
79-
{
80-
LabelKeys: labelKeys,
81-
LabelValues: labelValues,
82-
Value: 1,
83-
},
84-
},
85-
}
86-
}),
87-
),
39+
metadataFamilies := createMetadataMetricFamiliesGenerator(allowAnnotationsList, allowLabelsList, descClusterRoleLabelsDefaultLabels, "kube_clusterrole", wrapMetadataFunc)
40+
return append(metadataFamilies,
8841
*generator.NewFamilyGeneratorWithStability(
8942
"kube_clusterrole_info",
9043
"Information about cluster role.",
@@ -101,28 +54,6 @@ func clusterRoleMetricFamilies(allowAnnotationsList, allowLabelsList []string) [
10154
}
10255
}),
10356
),
104-
*generator.NewFamilyGeneratorWithStability(
105-
"kube_clusterrole_created",
106-
"Unix creation timestamp",
107-
metric.Gauge,
108-
basemetrics.ALPHA,
109-
"",
110-
wrapClusterRoleFunc(func(r *rbacv1.ClusterRole) *metric.Family {
111-
ms := []*metric.Metric{}
112-
113-
if !r.CreationTimestamp.IsZero() {
114-
ms = append(ms, &metric.Metric{
115-
LabelKeys: []string{},
116-
LabelValues: []string{},
117-
Value: float64(r.CreationTimestamp.Unix()),
118-
})
119-
}
120-
121-
return &metric.Family{
122-
Metrics: ms,
123-
}
124-
}),
125-
),
12657
*generator.NewFamilyGeneratorWithStability(
12758
"kube_clusterrole_metadata_resource_version",
12859
"Resource version representing a specific version of the cluster role.",
@@ -135,7 +66,7 @@ func clusterRoleMetricFamilies(allowAnnotationsList, allowLabelsList []string) [
13566
}
13667
}),
13768
),
138-
}
69+
)
13970
}
14071

14172
func createClusterRoleListWatch(kubeClient clientset.Interface, _ string, _ string) cache.ListerWatcher {

internal/store/clusterrolebinding.go

Lines changed: 4 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -32,59 +32,13 @@ import (
3232
)
3333

3434
var (
35-
descClusterRoleBindingAnnotationsName = "kube_clusterrolebinding_annotations"
36-
descClusterRoleBindingAnnotationsHelp = "Kubernetes annotations converted to Prometheus labels."
37-
descClusterRoleBindingLabelsName = "kube_clusterrolebinding_labels"
38-
descClusterRoleBindingLabelsHelp = "Kubernetes labels converted to Prometheus labels."
3935
descClusterRoleBindingLabelsDefaultLabels = []string{"clusterrolebinding"}
4036
)
4137

4238
func clusterRoleBindingMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generator.FamilyGenerator {
43-
return []generator.FamilyGenerator{
44-
*generator.NewFamilyGeneratorWithStability(
45-
descClusterRoleBindingAnnotationsName,
46-
descClusterRoleBindingAnnotationsHelp,
47-
metric.Gauge,
48-
basemetrics.ALPHA,
49-
"",
50-
wrapClusterRoleBindingFunc(func(r *rbacv1.ClusterRoleBinding) *metric.Family {
51-
if len(allowAnnotationsList) == 0 {
52-
return &metric.Family{}
53-
}
54-
annotationKeys, annotationValues := createPrometheusLabelKeysValues("annotation", r.Annotations, allowAnnotationsList)
55-
return &metric.Family{
56-
Metrics: []*metric.Metric{
57-
{
58-
LabelKeys: annotationKeys,
59-
LabelValues: annotationValues,
60-
Value: 1,
61-
},
62-
},
63-
}
64-
}),
65-
),
66-
*generator.NewFamilyGeneratorWithStability(
67-
descClusterRoleBindingLabelsName,
68-
descClusterRoleBindingLabelsHelp,
69-
metric.Gauge,
70-
basemetrics.ALPHA,
71-
"",
72-
wrapClusterRoleBindingFunc(func(r *rbacv1.ClusterRoleBinding) *metric.Family {
73-
if len(allowLabelsList) == 0 {
74-
return &metric.Family{}
75-
}
76-
labelKeys, labelValues := createPrometheusLabelKeysValues("label", r.Labels, allowLabelsList)
77-
return &metric.Family{
78-
Metrics: []*metric.Metric{
79-
{
80-
LabelKeys: labelKeys,
81-
LabelValues: labelValues,
82-
Value: 1,
83-
},
84-
},
85-
}
86-
}),
87-
),
39+
metadataFamilies := createMetadataMetricFamiliesGenerator(allowAnnotationsList, allowLabelsList, descClusterRoleBindingLabelsDefaultLabels, "kube_clusterrolebinding", wrapMetadataFunc)
40+
41+
return append(metadataFamilies,
8842
*generator.NewFamilyGeneratorWithStability(
8943
"kube_clusterrolebinding_info",
9044
"Information about clusterrolebinding.",
@@ -103,28 +57,6 @@ func clusterRoleBindingMetricFamilies(allowAnnotationsList, allowLabelsList []st
10357
}
10458
}),
10559
),
106-
*generator.NewFamilyGeneratorWithStability(
107-
"kube_clusterrolebinding_created",
108-
"Unix creation timestamp",
109-
metric.Gauge,
110-
basemetrics.ALPHA,
111-
"",
112-
wrapClusterRoleBindingFunc(func(r *rbacv1.ClusterRoleBinding) *metric.Family {
113-
ms := []*metric.Metric{}
114-
115-
if !r.CreationTimestamp.IsZero() {
116-
ms = append(ms, &metric.Metric{
117-
LabelKeys: []string{},
118-
LabelValues: []string{},
119-
Value: float64(r.CreationTimestamp.Unix()),
120-
})
121-
}
122-
123-
return &metric.Family{
124-
Metrics: ms,
125-
}
126-
}),
127-
),
12860
*generator.NewFamilyGeneratorWithStability(
12961
"kube_clusterrolebinding_metadata_resource_version",
13062
"Resource version representing a specific version of the clusterrolebinding.",
@@ -137,7 +69,7 @@ func clusterRoleBindingMetricFamilies(allowAnnotationsList, allowLabelsList []st
13769
}
13870
}),
13971
),
140-
}
72+
)
14173
}
14274

14375
func createClusterRoleBindingListWatch(kubeClient clientset.Interface, _ string, _ string) cache.ListerWatcher {

internal/store/configmap.go

Lines changed: 4 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -36,51 +36,9 @@ var (
3636
)
3737

3838
func configMapMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generator.FamilyGenerator {
39-
return []generator.FamilyGenerator{
40-
*generator.NewFamilyGeneratorWithStability(
41-
"kube_configmap_annotations",
42-
"Kubernetes annotations converted to Prometheus labels.",
43-
metric.Gauge,
44-
basemetrics.ALPHA,
45-
"",
46-
wrapConfigMapFunc(func(c *v1.ConfigMap) *metric.Family {
47-
if len(allowAnnotationsList) == 0 {
48-
return &metric.Family{}
49-
}
50-
annotationKeys, annotationValues := createPrometheusLabelKeysValues("annotation", c.Annotations, allowAnnotationsList)
51-
return &metric.Family{
52-
Metrics: []*metric.Metric{
53-
{
54-
LabelKeys: annotationKeys,
55-
LabelValues: annotationValues,
56-
Value: 1,
57-
},
58-
},
59-
}
60-
}),
61-
),
62-
*generator.NewFamilyGeneratorWithStability(
63-
"kube_configmap_labels",
64-
"Kubernetes labels converted to Prometheus labels.",
65-
metric.Gauge,
66-
basemetrics.STABLE,
67-
"",
68-
wrapConfigMapFunc(func(c *v1.ConfigMap) *metric.Family {
69-
if len(allowLabelsList) == 0 {
70-
return &metric.Family{}
71-
}
72-
labelKeys, labelValues := createPrometheusLabelKeysValues("label", c.Labels, allowLabelsList)
73-
return &metric.Family{
74-
Metrics: []*metric.Metric{
75-
{
76-
LabelKeys: labelKeys,
77-
LabelValues: labelValues,
78-
Value: 1,
79-
},
80-
},
81-
}
82-
}),
83-
),
39+
metadataFamilies := createMetadataMetricFamiliesGenerator(allowAnnotationsList, allowLabelsList, descConfigMapLabelsDefaultLabels, "kube_configmap", wrapMetadataFunc)
40+
41+
return append(metadataFamilies,
8442
*generator.NewFamilyGeneratorWithStability(
8543
"kube_configmap_info",
8644
"Information about configmap.",
@@ -97,28 +55,6 @@ func configMapMetricFamilies(allowAnnotationsList, allowLabelsList []string) []g
9755
}
9856
}),
9957
),
100-
*generator.NewFamilyGeneratorWithStability(
101-
"kube_configmap_created",
102-
"Unix creation timestamp",
103-
metric.Gauge,
104-
basemetrics.STABLE,
105-
"",
106-
wrapConfigMapFunc(func(c *v1.ConfigMap) *metric.Family {
107-
ms := []*metric.Metric{}
108-
109-
if !c.CreationTimestamp.IsZero() {
110-
ms = append(ms, &metric.Metric{
111-
LabelKeys: []string{},
112-
LabelValues: []string{},
113-
Value: float64(c.CreationTimestamp.Unix()),
114-
})
115-
}
116-
117-
return &metric.Family{
118-
Metrics: ms,
119-
}
120-
}),
121-
),
12258
*generator.NewFamilyGeneratorWithStability(
12359
"kube_configmap_metadata_resource_version",
12460
"Resource version representing a specific version of the configmap.",
@@ -131,7 +67,7 @@ func configMapMetricFamilies(allowAnnotationsList, allowLabelsList []string) []g
13167
}
13268
}),
13369
),
134-
}
70+
)
13571
}
13672

13773
func createConfigMapListWatch(kubeClient clientset.Interface, ns string, fieldSelector string) cache.ListerWatcher {

0 commit comments

Comments
 (0)