Skip to content

Commit ad6fa27

Browse files
authored
[chore] move collectdreceiver shared code to an internal package (open-telemetry#28856)
This allows the collectdreceiver to pass checkapi.
1 parent 1bfbb18 commit ad6fa27

File tree

20 files changed

+89
-110
lines changed

20 files changed

+89
-110
lines changed

.github/CODEOWNERS

+1
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ extension/storage/dbstorage/ @open-te
120120
extension/storage/filestorage/ @open-telemetry/collector-contrib-approvers @djaglowski
121121

122122
internal/aws/ @open-telemetry/collector-contrib-approvers @Aneurysm9 @mxiamxia
123+
internal/collectd/ @open-telemetry/collector-contrib-approvers @atoulme
123124
internal/coreinternal/ @open-telemetry/collector-contrib-approvers @open-telemetry/collector-approvers
124125
internal/datadog/ @open-telemetry/collector-contrib-approvers @mx-psi @gbbr @dineshg13
125126
internal/docker/ @open-telemetry/collector-contrib-approvers @rmfitzpatrick @jamesmoessis

.github/ISSUE_TEMPLATE/bug_report.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ body:
111111
- extension/storage/dbstorage
112112
- extension/storage/filestorage
113113
- internal/aws
114+
- internal/collectd
114115
- internal/core
115116
- internal/datadog
116117
- internal/docker

.github/ISSUE_TEMPLATE/feature_request.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ body:
105105
- extension/storage/dbstorage
106106
- extension/storage/filestorage
107107
- internal/aws
108+
- internal/collectd
108109
- internal/core
109110
- internal/datadog
110111
- internal/docker

.github/ISSUE_TEMPLATE/other.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ body:
105105
- extension/storage/dbstorage
106106
- extension/storage/filestorage
107107
- internal/aws
108+
- internal/collectd
108109
- internal/core
109110
- internal/datadog
110111
- internal/docker

.github/dependabot.yml

+5-5
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,11 @@ updates:
367367
schedule:
368368
interval: "weekly"
369369
day: "wednesday"
370+
- package-ecosystem: "gomod"
371+
directory: "/internal/collectd"
372+
schedule:
373+
interval: "weekly"
374+
day: "wednesday"
370375
- package-ecosystem: "gomod"
371376
directory: "/internal/coreinternal"
372377
schedule:
@@ -1012,11 +1017,6 @@ updates:
10121017
schedule:
10131018
interval: "weekly"
10141019
day: "wednesday"
1015-
- package-ecosystem: "gomod"
1016-
directory: "/receiver/splunkenterprisereceiver"
1017-
schedule:
1018-
interval: "weekly"
1019-
day: "wednesday"
10201020
- package-ecosystem: "gomod"
10211021
directory: "/receiver/splunkhecreceiver"
10221022
schedule:

cmd/checkapi/allowlist.txt

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ connector/servicegraphconnector
22
extension/encoding
33
extension/observer
44
processor/servicegraphprocessor
5-
receiver/collectdreceiver
65
receiver/dockerstatsreceiver
76
receiver/journaldreceiver
87
receiver/kafkareceiver

cmd/configschema/go.mod

+3
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,7 @@ require (
493493
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics v0.88.0 // indirect
494494
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy v0.88.0 // indirect
495495
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray v0.88.0 // indirect
496+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd v0.0.0-00010101000000-000000000000 // indirect
496497
github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.88.0 // indirect
497498
github.com/open-telemetry/opentelemetry-collector-contrib/internal/datadog v0.88.0 // indirect
498499
github.com/open-telemetry/opentelemetry-collector-contrib/internal/kafka v0.88.0 // indirect
@@ -1126,3 +1127,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib => ../..
11261127
replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azureeventhubreceiver => ../../receiver/azureeventhubreceiver
11271128

11281129
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
1130+
1131+
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd => ../../internal/collectd

cmd/otelcontribcol/builder-config.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -421,3 +421,4 @@ replaces:
421421
- github.com/outcaste-io/ristretto v0.2.0 => github.com/outcaste-io/ristretto v0.2.1
422422
- github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure => ../../pkg/translator/azure
423423
- github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/skywalking => ../../pkg/translator/skywalking
424+
- github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd => ../../internal/collectd

cmd/otelcontribcol/go.mod

+3
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,7 @@ require (
520520
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics v0.88.0 // indirect
521521
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy v0.88.0 // indirect
522522
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray v0.88.0 // indirect
523+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd v0.0.0-00010101000000-000000000000 // indirect
523524
github.com/open-telemetry/opentelemetry-collector-contrib/internal/datadog v0.88.0 // indirect
524525
github.com/open-telemetry/opentelemetry-collector-contrib/internal/docker v0.88.0 // indirect
525526
github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.88.0 // indirect
@@ -1143,3 +1144,5 @@ replace github.com/outcaste-io/ristretto v0.2.0 => github.com/outcaste-io/ristre
11431144
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/azure => ../../pkg/translator/azure
11441145

11451146
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/skywalking => ../../pkg/translator/skywalking
1147+
1148+
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd => ../../internal/collectd

go.mod

+3
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,7 @@ require (
495495
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/metrics v0.88.0 // indirect
496496
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/proxy v0.88.0 // indirect
497497
github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/xray v0.88.0 // indirect
498+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd v0.0.0-00010101000000-000000000000 // indirect
498499
github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.88.0 // indirect
499500
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.88.0 // indirect
500501
github.com/open-telemetry/opentelemetry-collector-contrib/internal/datadog v0.88.0 // indirect
@@ -1130,3 +1131,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/snowf
11301131
replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azureeventhubreceiver => ./receiver/azureeventhubreceiver
11311132

11321133
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ./pkg/golden
1134+
1135+
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd => ./internal/collectd

internal/collectd/Makefile

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
include ../../Makefile.Common

internal/collectd/go.mod

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd
2+
3+
go 1.20

internal/collectd/labels.go

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package collectd // import "github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd"
5+
6+
import (
7+
"strings"
8+
)
9+
10+
// LabelsFromName tries to pull out dimensions out of name in the format
11+
// "name[k=v,f=x]-more_name".
12+
// For the example above it would return "name-more_name" and extract dimensions
13+
// (k,v) and (f,x).
14+
// If something unexpected is encountered it returns the original metric name.
15+
//
16+
// The code tries to avoid allocation by using local slices and avoiding calls
17+
// to functions like strings.Slice.
18+
func LabelsFromName(val *string) (metricName string, labels map[string]string) {
19+
metricName = *val
20+
index := strings.Index(*val, "[")
21+
if index > -1 {
22+
left := (*val)[:index]
23+
rest := (*val)[index+1:]
24+
index = strings.Index(rest, "]")
25+
if index > -1 {
26+
working := make(map[string]string)
27+
dimensions := rest[:index]
28+
rest = rest[index+1:]
29+
cindex := strings.Index(dimensions, ",")
30+
prev := 0
31+
for {
32+
if cindex < prev {
33+
cindex = len(dimensions)
34+
}
35+
piece := dimensions[prev:cindex]
36+
tindex := strings.Index(piece, "=")
37+
if tindex == -1 || strings.Contains(piece[tindex+1:], "=") {
38+
return
39+
}
40+
working[piece[:tindex]] = piece[tindex+1:]
41+
if cindex == len(dimensions) {
42+
break
43+
}
44+
prev = cindex + 1
45+
cindex = strings.Index(dimensions[prev:], ",") + prev
46+
}
47+
labels = working
48+
metricName = left + rest
49+
}
50+
}
51+
return
52+
}

internal/collectd/metadata.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
status:
2+
codeowners:
3+
active: [atoulme]

receiver/collectdreceiver/collectd.go

+3-47
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ package collectdreceiver // import "github.com/open-telemetry/opentelemetry-coll
66
import (
77
"encoding/json"
88
"fmt"
9-
"strings"
109
"time"
1110

1211
"go.opentelemetry.io/collector/pdata/pcommon"
1312
"go.opentelemetry.io/collector/pdata/pmetric"
1413
"go.uber.org/zap"
1514

15+
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd"
1616
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/common/sanitize"
1717
)
1818

@@ -187,7 +187,7 @@ func (cdr *collectDRecord) pointTypeInstance(attrs map[string]string, parts []by
187187
return parts
188188
}
189189

190-
instanceName, extractedAttrs := LabelsFromName(cdr.TypeInstance)
190+
instanceName, extractedAttrs := collectd.LabelsFromName(cdr.TypeInstance)
191191
if instanceName != "" {
192192
if len(parts) > 0 {
193193
parts = append(parts, '.')
@@ -203,50 +203,6 @@ func (cdr *collectDRecord) pointTypeInstance(attrs map[string]string, parts []by
203203
return parts
204204
}
205205

206-
// LabelsFromName tries to pull out dimensions out of name in the format
207-
// "name[k=v,f=x]-more_name".
208-
// For the example above it would return "name-more_name" and extract dimensions
209-
// (k,v) and (f,x).
210-
// If something unexpected is encountered it returns the original metric name.
211-
//
212-
// The code tries to avoid allocation by using local slices and avoiding calls
213-
// to functions like strings.Slice.
214-
func LabelsFromName(val *string) (metricName string, labels map[string]string) {
215-
metricName = *val
216-
index := strings.Index(*val, "[")
217-
if index > -1 {
218-
left := (*val)[:index]
219-
rest := (*val)[index+1:]
220-
index = strings.Index(rest, "]")
221-
if index > -1 {
222-
working := make(map[string]string)
223-
dimensions := rest[:index]
224-
rest = rest[index+1:]
225-
cindex := strings.Index(dimensions, ",")
226-
prev := 0
227-
for {
228-
if cindex < prev {
229-
cindex = len(dimensions)
230-
}
231-
piece := dimensions[prev:cindex]
232-
tindex := strings.Index(piece, "=")
233-
if tindex == -1 || strings.Contains(piece[tindex+1:], "=") {
234-
return
235-
}
236-
working[piece[:tindex]] = piece[tindex+1:]
237-
if cindex == len(dimensions) {
238-
break
239-
}
240-
prev = cindex + 1
241-
cindex = strings.Index(dimensions[prev:], ",") + prev
242-
}
243-
labels = working
244-
metricName = left + rest
245-
}
246-
}
247-
return
248-
}
249-
250206
func isNilOrEmpty(str *string) bool {
251207
return str == nil || *str == ""
252208
}
@@ -263,7 +219,7 @@ func parseAndAddLabels(labels map[string]string, pluginInstance *string, host *s
263219
}
264220

265221
func parseNameForLabels(labels map[string]string, key string, val *string) {
266-
instanceName, toAddDims := LabelsFromName(val)
222+
instanceName, toAddDims := collectd.LabelsFromName(val)
267223

268224
for k, v := range toAddDims {
269225
if _, exists := labels[k]; !exists {

receiver/collectdreceiver/go.mod

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collec
33
go 1.20
44

55
require (
6+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd v0.0.0-00010101000000-000000000000
67
github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.88.0
78
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.0.0-00010101000000-000000000000
89
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.88.0
@@ -77,3 +78,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest
7778
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil => ../../pkg/pdatautil
7879

7980
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
81+
82+
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd => ../../internal/collectd

receiver/wavefrontreceiver/go.mod

+2-24
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/wavefr
33
go 1.20
44

55
require (
6+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd v0.0.0-00010101000000-000000000000
67
github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.88.0
78
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver v0.88.0
8-
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver v0.0.0-00010101000000-000000000000
99
github.com/stretchr/testify v1.8.4
1010
go.opentelemetry.io/collector/component v0.88.1-0.20231026220224-6405e152a2d9
1111
go.opentelemetry.io/collector/config/confignet v0.88.1-0.20231026220224-6405e152a2d9
@@ -17,16 +17,10 @@ require (
1717

1818
require (
1919
github.com/davecgh/go-spew v1.1.1 // indirect
20-
github.com/felixge/httpsnoop v1.0.3 // indirect
21-
github.com/fsnotify/fsnotify v1.7.0 // indirect
22-
github.com/go-logr/logr v1.2.4 // indirect
23-
github.com/go-logr/stdr v1.2.2 // indirect
2420
github.com/gogo/protobuf v1.3.2 // indirect
2521
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
2622
github.com/golang/protobuf v1.5.3 // indirect
27-
github.com/golang/snappy v0.0.4 // indirect
2823
github.com/json-iterator/go v1.1.12 // indirect
29-
github.com/klauspost/compress v1.17.2 // indirect
3024
github.com/knadh/koanf/maps v0.1.1 // indirect
3125
github.com/knadh/koanf/providers/confmap v0.1.0 // indirect
3226
github.com/knadh/koanf/v2 v2.0.1 // indirect
@@ -36,20 +30,10 @@ require (
3630
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
3731
github.com/modern-go/reflect2 v1.0.2 // indirect
3832
github.com/pmezard/go-difflib v1.0.0 // indirect
39-
github.com/rs/cors v1.10.1 // indirect
4033
go.opencensus.io v0.24.0 // indirect
4134
go.opentelemetry.io/collector v0.88.1-0.20231026220224-6405e152a2d9 // indirect
42-
go.opentelemetry.io/collector/config/configauth v0.88.1-0.20231026220224-6405e152a2d9 // indirect
43-
go.opentelemetry.io/collector/config/configcompression v0.88.1-0.20231026220224-6405e152a2d9 // indirect
44-
go.opentelemetry.io/collector/config/confighttp v0.88.1-0.20231026220224-6405e152a2d9 // indirect
45-
go.opentelemetry.io/collector/config/configopaque v0.88.1-0.20231026220224-6405e152a2d9 // indirect
4635
go.opentelemetry.io/collector/config/configtelemetry v0.88.1-0.20231026220224-6405e152a2d9 // indirect
47-
go.opentelemetry.io/collector/config/configtls v0.88.1-0.20231026220224-6405e152a2d9 // indirect
48-
go.opentelemetry.io/collector/config/internal v0.88.1-0.20231026220224-6405e152a2d9 // indirect
49-
go.opentelemetry.io/collector/extension v0.88.1-0.20231026220224-6405e152a2d9 // indirect
50-
go.opentelemetry.io/collector/extension/auth v0.88.1-0.20231026220224-6405e152a2d9 // indirect
5136
go.opentelemetry.io/collector/featuregate v1.0.0-rcv0017.0.20231026220224-6405e152a2d9 // indirect
52-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 // indirect
5337
go.opentelemetry.io/otel v1.19.0 // indirect
5438
go.opentelemetry.io/otel/metric v1.19.0 // indirect
5539
go.opentelemetry.io/otel/trace v1.19.0 // indirect
@@ -64,8 +48,6 @@ require (
6448
gopkg.in/yaml.v3 v3.0.1 // indirect
6549
)
6650

67-
replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/collectdreceiver => ../collectdreceiver
68-
6951
replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver => ../carbonreceiver
7052

7153
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/common => ../../internal/common
@@ -76,8 +58,4 @@ retract (
7658
v0.65.0
7759
)
7860

79-
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest => ../../pkg/pdatatest
80-
81-
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil => ../../pkg/pdatautil
82-
83-
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
61+
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/collectd => ../../internal/collectd

0 commit comments

Comments
 (0)