Skip to content

Commit 8ae1539

Browse files
authored
[chore][mdatagen] Use MustNewType for metadata.Type (#31038)
**Description:** Follow up to open-telemetry/opentelemetry-collector/pull/9414, adds the same changes in `mdatagen` regarding validation of `component.Type`s. On this PR the validation logic and templating is a bit more complex because of subcomponents. I will add these changes back on core once this PR is merged. **Link to tracking Issue:** open-telemetry/opentelemetry-collector/issues/9208
1 parent 0dc5c1f commit 8ae1539

File tree

284 files changed

+965
-349
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

284 files changed

+965
-349
lines changed

cmd/mdatagen/internal/metadata/generated_status.go

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/mdatagen/main_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,8 +328,11 @@ import (
328328
"go.opentelemetry.io/otel/trace"
329329
)
330330
331+
var (
332+
Type = component.MustNewType("foo")
333+
)
334+
331335
const (
332-
Type = "foo"
333336
MetricsStability = component.StabilityLevelBeta
334337
)
335338
@@ -362,8 +365,11 @@ import (
362365
"go.opentelemetry.io/otel/trace"
363366
)
364367
368+
var (
369+
Type = component.MustNewType("foo")
370+
)
371+
365372
const (
366-
Type = "foo"
367373
MetricsStability = component.StabilityLevelAlpha
368374
)
369375

cmd/mdatagen/templates/status.go.tmpl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,13 @@ import (
88
"go.opentelemetry.io/otel/trace"
99
)
1010

11+
{{ if eq .Parent "" }}
12+
var (
13+
Type = component.MustNewType("{{ .Type }}")
14+
)
15+
{{- end }}
16+
1117
const (
12-
Type = "{{ .Type }}"
1318
{{- range $stability, $signals := .Status.Stability }}
1419
{{- range $signal := $signals }}
1520
{{ toCamelCase $signal }}Stability = component.StabilityLevel{{ casesTitle $stability }}
@@ -23,4 +28,4 @@ func Meter(settings component.TelemetrySettings) metric.Meter {
2328

2429
func Tracer(settings component.TelemetrySettings) trace.Tracer {
2530
return settings.TracerProvider.Tracer("{{ .ScopeName }}")
26-
}
31+
}

cmd/mdatagen/validate.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package main
66
import (
77
"errors"
88
"fmt"
9+
"regexp"
910

1011
"go.opentelemetry.io/collector/pdata/pcommon"
1112
"go.uber.org/multierr"
@@ -28,10 +29,26 @@ func (md *metadata) Validate() error {
2829
return errs
2930
}
3031

32+
// typeRegexp is used to validate the type of a component.
33+
// A type must start with an ASCII alphabetic character and
34+
// can only contain ASCII alphanumeric characters and '_'.
35+
// We allow '/' for subcomponents.
36+
// This must be kept in sync with the regex in component/config.go.
37+
var typeRegexp = regexp.MustCompile(`^[a-zA-Z][0-9a-zA-Z_]*$`)
38+
3139
func (md *metadata) validateType() error {
3240
if md.Type == "" {
3341
return errors.New("missing type")
3442
}
43+
44+
if md.Parent != "" {
45+
// subcomponents are allowed to have a '/' in their type.
46+
return nil
47+
}
48+
49+
if !typeRegexp.MatchString(md.Type) {
50+
return fmt.Errorf("invalid character(s) in type %q", md.Type)
51+
}
3552
return nil
3653
}
3754

connector/countconnector/internal/metadata/generated_status.go

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

connector/datadogconnector/internal/metadata/generated_status.go

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

connector/exceptionsconnector/internal/metadata/generated_status.go

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

connector/failoverconnector/internal/metadata/generated_status.go

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

connector/routingconnector/internal/metadata/generated_status.go

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

connector/servicegraphconnector/connector.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ type serviceGraphConnector struct {
8484
}
8585

8686
func customMetricName(name string) string {
87-
return "connector/" + metadata.Type + "/" + name
87+
return "connector/" + metadata.Type.String() + "/" + name
8888
}
8989

9090
func newConnector(set component.TelemetrySettings, config component.Config) *serviceGraphConnector {

0 commit comments

Comments
 (0)