Skip to content

Commit

Permalink
[chore] enable exhaustive lint for k8sclusterreceiver (open-telemetry…
Browse files Browse the repository at this point in the history
  • Loading branch information
atoulme authored Jun 28, 2023
1 parent 0820256 commit f50151e
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 3 deletions.
3 changes: 0 additions & 3 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -170,9 +170,6 @@ issues:
- path: googlecloudspannerreceiver
linters:
- exhaustive
- path: k8sclusterreceiver
linters:
- exhaustive
- path: kubeletstatsreceiver
linters:
- exhaustive
Expand Down
34 changes: 34 additions & 0 deletions receiver/k8sclusterreceiver/internal/collection/metricsstore.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,19 +82,53 @@ func applyCurrentTime(md pmetric.Metrics, t pcommon.Timestamp) {
applyCurrentTimeNumberDataPoint(ms.At(k).Gauge().DataPoints(), t)
case pmetric.MetricTypeSum:
applyCurrentTimeNumberDataPoint(ms.At(k).Sum().DataPoints(), t)
case pmetric.MetricTypeEmpty:
case pmetric.MetricTypeHistogram:
applyCurrentTimeHistogramDataPoint(ms.At(k).Histogram().DataPoints(), t)
case pmetric.MetricTypeExponentialHistogram:
applyCurrentTimeExponentialHistogramDataPoint(ms.At(k).ExponentialHistogram().DataPoints(), t)
case pmetric.MetricTypeSummary:
applyCurrentTimeSummaryDataPoint(ms.At(k).Summary().DataPoints(), t)
}
}
}
}
}

func applyCurrentTimeSummaryDataPoint(dps pmetric.SummaryDataPointSlice, t pcommon.Timestamp) {
for i := 0; i < dps.Len(); i++ {
dp := dps.At(i)
dp.SetTimestamp(t)
}
}
func applyCurrentTimeHistogramDataPoint(dps pmetric.HistogramDataPointSlice, t pcommon.Timestamp) {
for i := 0; i < dps.Len(); i++ {
dp := dps.At(i)
dp.SetTimestamp(t)
for j := 0; j < dp.Exemplars().Len(); j++ {
dp.Exemplars().At(j).SetTimestamp(t)
}
}
}

func applyCurrentTimeExponentialHistogramDataPoint(dps pmetric.ExponentialHistogramDataPointSlice, t pcommon.Timestamp) {
for i := 0; i < dps.Len(); i++ {
dp := dps.At(i)
dp.SetTimestamp(t)
for j := 0; j < dp.Exemplars().Len(); j++ {
dp.Exemplars().At(j).SetTimestamp(t)
}
}
}

func applyCurrentTimeNumberDataPoint(dps pmetric.NumberDataPointSlice, t pcommon.Timestamp) {
for i := 0; i < dps.Len(); i++ {
switch dps.At(i).ValueType() {
case pmetric.NumberDataPointValueTypeDouble:
dps.At(i).SetTimestamp(t)
case pmetric.NumberDataPointValueTypeInt:
dps.At(i).SetTimestamp(t)
case pmetric.NumberDataPointValueTypeEmpty:
}
}
}
7 changes: 7 additions & 0 deletions receiver/k8sclusterreceiver/internal/container/containers.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"go.opentelemetry.io/collector/pdata/pmetric"
"go.opentelemetry.io/collector/receiver"
conventions "go.opentelemetry.io/collector/semconv/v1.6.1"
"go.uber.org/zap"
corev1 "k8s.io/api/core/v1"

"github.com/open-telemetry/opentelemetry-collector-contrib/internal/common/docker"
Expand All @@ -36,6 +37,7 @@ func GetSpecMetrics(set receiver.CreateSettings, c corev1.Container, pod *corev1
mb := imetadata.NewMetricsBuilder(imetadata.DefaultMetricsBuilderConfig(), set)
ts := pcommon.NewTimestampFromTime(time.Now())
for k, r := range c.Resources.Requests {
//exhaustive:ignore
switch k {
case corev1.ResourceCPU:
mb.RecordK8sContainerCPURequestDataPoint(ts, float64(r.MilliValue())/1000.0)
Expand All @@ -45,9 +47,12 @@ func GetSpecMetrics(set receiver.CreateSettings, c corev1.Container, pod *corev1
mb.RecordK8sContainerStorageRequestDataPoint(ts, r.Value())
case corev1.ResourceEphemeralStorage:
mb.RecordK8sContainerEphemeralstorageRequestDataPoint(ts, r.Value())
default:
set.Logger.Debug("unsupported request type", zap.Any("type", k))
}
}
for k, l := range c.Resources.Limits {
//exhaustive:ignore
switch k {
case corev1.ResourceCPU:
mb.RecordK8sContainerCPULimitDataPoint(ts, float64(l.MilliValue())/1000.0)
Expand All @@ -57,6 +62,8 @@ func GetSpecMetrics(set receiver.CreateSettings, c corev1.Container, pod *corev1
mb.RecordK8sContainerStorageLimitDataPoint(ts, l.Value())
case corev1.ResourceEphemeralStorage:
mb.RecordK8sContainerEphemeralstorageLimitDataPoint(ts, l.Value())
default:
set.Logger.Debug("unsupported request type", zap.Any("type", k))
}
}
var containerID string
Expand Down
3 changes: 3 additions & 0 deletions receiver/k8sclusterreceiver/internal/node/nodes.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ func GetMetrics(set receiver.CreateSettings, node *corev1.Node, nodeConditionTyp
node.GetName()).Error())
continue
}
//exhaustive:ignore
switch v1NodeAllocatableTypeValue {
case corev1.ResourceCPU:
// cpu metrics must be of the double type to adhere to opentelemetry system.cpu metric specifications
Expand All @@ -85,6 +86,8 @@ func GetMetrics(set receiver.CreateSettings, node *corev1.Node, nodeConditionTyp
mb.RecordK8sNodeAllocatableEphemeralStorageDataPoint(ts, quantity.Value())
case corev1.ResourceStorage:
mb.RecordK8sNodeAllocatableStorageDataPoint(ts, quantity.Value())
default:
set.Logger.Warn("unknown node condition type", zap.Any("conditionType", v1NodeAllocatableTypeValue))
}
}
return mb.Emit(imetadata.WithK8sNodeUID(string(node.UID)), imetadata.WithK8sNodeName(node.Name), imetadata.WithOpencensusResourcetype("k8s"))
Expand Down
8 changes: 8 additions & 0 deletions receiver/k8sclusterreceiver/internal/testutils/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,14 @@ func assertMetric(t testing.TB, m pmetric.Metric, expectedMetric string, expecte
dps = m.Gauge().DataPoints()
case pmetric.MetricTypeSum:
dps = m.Sum().DataPoints()
case pmetric.MetricTypeHistogram:
require.Fail(t, "unsupported")
case pmetric.MetricTypeExponentialHistogram:
require.Fail(t, "unsupported")
case pmetric.MetricTypeSummary:
require.Fail(t, "unsupported")
case pmetric.MetricTypeEmpty:
require.Fail(t, "unsupported")
}
require.Equal(t, 1, dps.Len())
return dps
Expand Down

0 comments on commit f50151e

Please sign in to comment.