Skip to content

Commit 2f5b0f0

Browse files
committed
filter unset field and add unit test
1 parent 8e184f0 commit 2f5b0f0

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

internal/store/horizontalpodautoscaler.go

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -135,51 +135,54 @@ func hpaMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generat
135135
var metricName string
136136

137137
var v [metricTargetTypeCount]float64
138+
var ok [metricTargetTypeCount]bool
138139

139140
switch m.Type {
140141
case autoscaling.ObjectMetricSourceType:
141142
metricName = m.Object.Metric.Name
142143

143144
if m.Object.Target.Value != nil {
144-
v[value] = float64(m.Object.Target.Value.MilliValue()) / 1000
145+
v[value], ok[value] = float64(m.Object.Target.Value.MilliValue())/1000, true
145146
}
146147
if m.Object.Target.AverageValue != nil {
147-
v[average] = float64(m.Object.Target.AverageValue.MilliValue()) / 1000
148+
v[average], ok[average] = float64(m.Object.Target.AverageValue.MilliValue())/1000, true
148149
}
149150
case autoscaling.PodsMetricSourceType:
150151
metricName = m.Pods.Metric.Name
151152

152-
v[average] = float64(m.Pods.Target.AverageValue.MilliValue()) / 1000
153+
v[average], ok[average] = float64(m.Pods.Target.AverageValue.MilliValue())/1000, true
153154
case autoscaling.ResourceMetricSourceType:
154155
metricName = string(m.Resource.Name)
155156

156157
if m.Resource.Target.AverageUtilization != nil {
157-
v[utilization] = float64(*m.Resource.Target.AverageUtilization)
158+
v[utilization], ok[utilization] = float64(*m.Resource.Target.AverageUtilization), true
158159
}
159160

160161
if m.Resource.Target.AverageValue != nil {
161-
v[average] = float64(m.Resource.Target.AverageValue.MilliValue()) / 1000
162+
v[average], ok[average] = float64(m.Resource.Target.AverageValue.MilliValue())/1000, true
162163
}
163164
case autoscaling.ExternalMetricSourceType:
164165
metricName = m.External.Metric.Name
165166

166167
if m.External.Target.Value != nil {
167-
v[value] = float64(m.External.Target.Value.MilliValue()) / 1000
168+
v[value], ok[value] = float64(m.External.Target.Value.MilliValue())/1000, true
168169
}
169170
if m.External.Target.AverageValue != nil {
170-
v[average] = float64(m.External.Target.AverageValue.MilliValue()) / 1000
171+
v[average], ok[average] = float64(m.External.Target.AverageValue.MilliValue())/1000, true
171172
}
172173
default:
173174
// Skip unsupported metric type
174175
continue
175176
}
176177

177178
for i := range v {
178-
ms = append(ms, &metric.Metric{
179-
LabelKeys: targetMetricLabels,
180-
LabelValues: []string{metricName, metricTargetType(i).String()},
181-
Value: v[i],
182-
})
179+
if ok[i] {
180+
ms = append(ms, &metric.Metric{
181+
LabelKeys: targetMetricLabels,
182+
LabelValues: []string{metricName, metricTargetType(i).String()},
183+
Value: v[i],
184+
})
185+
}
183186
}
184187
}
185188
return &metric.Family{Metrics: ms}

internal/store/horizontalpodautoscaler_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func TestHPAStore(t *testing.T) {
8080
},
8181
Target: autoscaling.MetricTarget{
8282
Value: resourcePtr(resource.MustParse("10")),
83-
AverageValue: resourcePtr(resource.MustParse("12")),
83+
AverageValue: resourcePtr(resource.MustParse("0.5")),
8484
},
8585
},
8686
},
@@ -193,7 +193,7 @@ func TestHPAStore(t *testing.T) {
193193
kube_horizontalpodautoscaler_spec_min_replicas{horizontalpodautoscaler="hpa1",namespace="ns1"} 2
194194
kube_horizontalpodautoscaler_spec_target_metric{horizontalpodautoscaler="hpa1",metric_name="cpu",metric_target_type="utilization",namespace="ns1"} 80
195195
kube_horizontalpodautoscaler_spec_target_metric{horizontalpodautoscaler="hpa1",metric_name="events",metric_target_type="average",namespace="ns1"} 30
196-
kube_horizontalpodautoscaler_spec_target_metric{horizontalpodautoscaler="hpa1",metric_name="hits",metric_target_type="average",namespace="ns1"} 12
196+
kube_horizontalpodautoscaler_spec_target_metric{horizontalpodautoscaler="hpa1",metric_name="hits",metric_target_type="average",namespace="ns1"} 0.5
197197
kube_horizontalpodautoscaler_spec_target_metric{horizontalpodautoscaler="hpa1",metric_name="hits",metric_target_type="value",namespace="ns1"} 10
198198
kube_horizontalpodautoscaler_spec_target_metric{horizontalpodautoscaler="hpa1",metric_name="memory",metric_target_type="average",namespace="ns1"} 819200
199199
kube_horizontalpodautoscaler_spec_target_metric{horizontalpodautoscaler="hpa1",metric_name="memory",metric_target_type="utilization",namespace="ns1"} 80

0 commit comments

Comments
 (0)