@@ -21,6 +21,7 @@ import (
21
21
"strings"
22
22
23
23
"k8s.io/kube-state-metrics/v2/pkg/metric"
24
+ basemetrics "k8s.io/component-base/metrics"
24
25
)
25
26
26
27
// FamilyGenerator provides everything needed to generate a metric family with a
@@ -33,16 +34,19 @@ type FamilyGenerator struct {
33
34
Type metric.Type
34
35
OptIn bool
35
36
DeprecatedVersion string
37
+ StabilityLevel basemetrics.StabilityLevel
36
38
GenerateFunc func (obj interface {}) * metric.Family
37
39
}
38
40
39
- // NewFamilyGenerator creates new FamilyGenerator instances.
40
- func NewFamilyGenerator (name string , help string , metricType metric.Type , deprecatedVersion string , generateFunc func (obj interface {}) * metric.Family ) * FamilyGenerator {
41
+ // NewFamilyGenerator creates new FamilyGenerator instances with metric
42
+ // stabilityLevel.
43
+ func NewFamilyGeneratorWithStability (name string , help string , metricType metric.Type , stabilityLevel basemetrics.StabilityLevel , deprecatedVersion string , generateFunc func (obj interface {}) * metric.Family ) * FamilyGenerator {
41
44
f := & FamilyGenerator {
42
45
Name : name ,
43
46
Type : metricType ,
44
47
Help : help ,
45
48
OptIn : false ,
49
+ StabilityLevel : stabilityLevel ,
46
50
DeprecatedVersion : deprecatedVersion ,
47
51
GenerateFunc : generateFunc ,
48
52
}
@@ -52,6 +56,11 @@ func NewFamilyGenerator(name string, help string, metricType metric.Type, deprec
52
56
return f
53
57
}
54
58
59
+ // NewFamilyGenerator creates new FamilyGenerator instances.
60
+ func NewFamilyGenerator (name string , help string , metricType metric.Type , deprecatedVersion string , generateFunc func (obj interface {}) * metric.Family ) * FamilyGenerator {
61
+ return NewFamilyGeneratorWithStability (name , help , metricType , basemetrics .ALPHA , deprecatedVersion , generateFunc )
62
+ }
63
+
55
64
// NewOptInFamilyGenerator creates new FamilyGenerator instances for opt-in metric families.
56
65
func NewOptInFamilyGenerator (name string , help string , metricType metric.Type , deprecatedVersion string , generateFunc func (obj interface {}) * metric.Family ) * FamilyGenerator {
57
66
f := NewFamilyGenerator (name , help , metricType , deprecatedVersion , generateFunc )
@@ -75,7 +84,13 @@ func (g *FamilyGenerator) generateHeader() string {
75
84
header .WriteString ("# HELP " )
76
85
header .WriteString (g .Name )
77
86
header .WriteByte (' ' )
78
- header .WriteString (g .Help )
87
+ // Will remove if-else after all metrics are attached with right
88
+ // StabilityLevel.
89
+ if g .StabilityLevel == basemetrics .STABLE {
90
+ header .WriteString (fmt .Sprintf ("[%v] %v" , g .StabilityLevel , g .Help ))
91
+ } else {
92
+ header .WriteString (g .Help )
93
+ }
79
94
header .WriteByte ('\n' )
80
95
header .WriteString ("# TYPE " )
81
96
header .WriteString (g .Name )
0 commit comments