Skip to content

Commit 19b72f7

Browse files
authored
[chore] simplify extension code (#3640)
1 parent d5cbcf6 commit 19b72f7

File tree

4 files changed

+34
-58
lines changed

4 files changed

+34
-58
lines changed

internal/components/extensions/healthcheckv1.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,27 @@ import (
1212
)
1313

1414
const (
15-
DefaultHealthcheckV1Path = "/"
16-
DefaultHealthcheckV1Port = 13133
15+
defaultHealthcheckV1Path = "/"
16+
defaultHealthcheckV1Port = 13133
1717
)
1818

1919
type healthcheckV1Config struct {
2020
components.SingleEndpointConfig `mapstructure:",squash"`
2121
Path string `mapstructure:"path"`
2222
}
2323

24-
// HealthCheckV1Probe returns the probe configuration for the healthcheck v1 extension.
24+
// healthCheckV1Probe returns the probe configuration for the healthcheck v1 extension.
2525
// Right now no TLS config is parsed.
26-
func HealthCheckV1Probe(logger logr.Logger, config healthcheckV1Config) (*corev1.Probe, error) {
26+
func healthCheckV1Probe(logger logr.Logger, config healthcheckV1Config) (*corev1.Probe, error) {
2727
path := config.Path
2828
if len(path) == 0 {
29-
path = DefaultHealthcheckV1Path
29+
path = defaultHealthcheckV1Path
3030
}
3131
return &corev1.Probe{
3232
ProbeHandler: corev1.ProbeHandler{
3333
HTTPGet: &corev1.HTTPGetAction{
3434
Path: path,
35-
Port: intstr.FromInt32(config.GetPortNumOrDefault(logger, DefaultHealthcheckV1Port)),
35+
Port: intstr.FromInt32(config.GetPortNumOrDefault(logger, defaultHealthcheckV1Port)),
3636
},
3737
},
3838
}, nil

internal/components/extensions/healthcheckv1_test.go

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright The OpenTelemetry Authors
22
// SPDX-License-Identifier: Apache-2.0
33

4-
package extensions_test
4+
package extensions
55

66
import (
77
"fmt"
@@ -11,8 +11,6 @@ import (
1111
"github.com/stretchr/testify/assert"
1212
corev1 "k8s.io/api/core/v1"
1313
"k8s.io/apimachinery/pkg/util/intstr"
14-
15-
"github.com/open-telemetry/opentelemetry-operator/internal/components/extensions"
1614
)
1715

1816
func TestHealthCheckV1Probe(t *testing.T) {
@@ -55,7 +53,7 @@ func TestHealthCheckV1Probe(t *testing.T) {
5553
ProbeHandler: corev1.ProbeHandler{
5654
HTTPGet: &corev1.HTTPGetAction{
5755
Path: "/healthz",
58-
Port: intstr.FromInt32(extensions.DefaultHealthcheckV1Port),
56+
Port: intstr.FromInt32(defaultHealthcheckV1Port),
5957
},
6058
},
6159
},
@@ -91,7 +89,7 @@ func TestHealthCheckV1Probe(t *testing.T) {
9189
ProbeHandler: corev1.ProbeHandler{
9290
HTTPGet: &corev1.HTTPGetAction{
9391
Path: "/",
94-
Port: intstr.FromInt32(extensions.DefaultHealthcheckV1Port),
92+
Port: intstr.FromInt32(defaultHealthcheckV1Port),
9593
},
9694
},
9795
},
@@ -125,7 +123,7 @@ func TestHealthCheckV1Probe(t *testing.T) {
125123
ProbeHandler: corev1.ProbeHandler{
126124
HTTPGet: &corev1.HTTPGetAction{
127125
Path: "/",
128-
Port: intstr.FromInt32(extensions.DefaultHealthcheckV1Port),
126+
Port: intstr.FromInt32(defaultHealthcheckV1Port),
129127
},
130128
},
131129
},
@@ -154,7 +152,7 @@ func TestHealthCheckV1Probe(t *testing.T) {
154152
ProbeHandler: corev1.ProbeHandler{
155153
HTTPGet: &corev1.HTTPGetAction{
156154
Path: "/healthz",
157-
Port: intstr.FromInt32(extensions.DefaultHealthcheckV1Port),
155+
Port: intstr.FromInt32(defaultHealthcheckV1Port),
158156
},
159157
},
160158
},
@@ -164,7 +162,7 @@ func TestHealthCheckV1Probe(t *testing.T) {
164162

165163
for _, tt := range tests {
166164
t.Run(tt.name, func(t *testing.T) {
167-
parser := extensions.ParserFor("health_check")
165+
parser := ParserFor("health_check")
168166
got, err := parser.GetLivenessProbe(logr.Discard(), tt.args.config)
169167
if !tt.wantErr(t, err, fmt.Sprintf("GetLivenessProbe(%v)", tt.args.config)) {
170168
return

internal/components/extensions/helpers.go

+13-34
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,19 @@ import (
1111
)
1212

1313
// registry holds a record of all known receiver parsers.
14-
var registry = make(map[string]components.Parser)
15-
16-
// Register adds a new parser builder to the list of known builders.
17-
func Register(name string, p components.Parser) {
18-
registry[name] = p
19-
}
20-
21-
// IsRegistered checks whether a parser is registered with the given name.
22-
func IsRegistered(name string) bool {
23-
_, ok := registry[name]
24-
return ok
14+
var registry = map[string]components.Parser{
15+
"health_check": components.NewBuilder[healthcheckV1Config]().
16+
WithName("health_check").
17+
WithPort(13133).
18+
WithReadinessGen(healthCheckV1Probe).
19+
WithLivenessGen(healthCheckV1Probe).
20+
WithPortParser(func(logger logr.Logger, name string, defaultPort *corev1.ServicePort, config healthcheckV1Config) ([]corev1.ServicePort, error) {
21+
return components.ParseSingleEndpointSilent(logger, name, defaultPort, &config.SingleEndpointConfig)
22+
}).
23+
MustBuild(),
24+
"jaeger_query": components.NewSinglePortParserBuilder("jaeger_query", 16686).
25+
WithTargetPort(16686).
26+
MustBuild(),
2527
}
2628

2729
// ParserFor returns a parser builder for the given exporter name.
@@ -32,26 +34,3 @@ func ParserFor(name string) components.Parser {
3234
// We want the default for exporters to fail silently.
3335
return components.NewBuilder[any]().WithName(name).MustBuild()
3436
}
35-
36-
var (
37-
componentParsers = []components.Parser{
38-
components.NewBuilder[healthcheckV1Config]().
39-
WithName("health_check").
40-
WithPort(13133).
41-
WithReadinessGen(HealthCheckV1Probe).
42-
WithLivenessGen(HealthCheckV1Probe).
43-
WithPortParser(func(logger logr.Logger, name string, defaultPort *corev1.ServicePort, config healthcheckV1Config) ([]corev1.ServicePort, error) {
44-
return components.ParseSingleEndpointSilent(logger, name, defaultPort, &config.SingleEndpointConfig)
45-
}).
46-
MustBuild(),
47-
components.NewSinglePortParserBuilder("jaeger_query", 16686).
48-
WithTargetPort(16686).
49-
MustBuild(),
50-
}
51-
)
52-
53-
func init() {
54-
for _, parser := range componentParsers {
55-
Register(parser.ParserType(), parser)
56-
}
57-
}

internal/components/extensions/helpers_test.go

+9-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright The OpenTelemetry Authors
22
// SPDX-License-Identifier: Apache-2.0
33

4-
package extensions_test
4+
package extensions
55

66
import (
77
"testing"
@@ -10,13 +10,12 @@ import (
1010
"github.com/stretchr/testify/assert"
1111

1212
"github.com/open-telemetry/opentelemetry-operator/internal/components"
13-
"github.com/open-telemetry/opentelemetry-operator/internal/components/extensions"
1413
"github.com/open-telemetry/opentelemetry-operator/internal/naming"
1514
)
1615

1716
func TestParserForReturns(t *testing.T) {
1817
const testComponentName = "test"
19-
parser := extensions.ParserFor(testComponentName)
18+
parser := ParserFor(testComponentName)
2019
assert.Equal(t, "test", parser.ParserType())
2120
assert.Equal(t, "__test", parser.ParserName())
2221
ports, err := parser.Ports(logr.Discard(), testComponentName, map[string]interface{}{
@@ -28,9 +27,8 @@ func TestParserForReturns(t *testing.T) {
2827

2928
func TestCanRegister(t *testing.T) {
3029
const testComponentName = "test"
31-
extensions.Register(testComponentName, components.NewSinglePortParserBuilder(testComponentName, 9000).MustBuild())
32-
assert.True(t, extensions.IsRegistered(testComponentName))
33-
parser := extensions.ParserFor(testComponentName)
30+
registry[testComponentName] = components.NewSinglePortParserBuilder(testComponentName, 9000).MustBuild()
31+
parser := ParserFor(testComponentName)
3432
assert.Equal(t, "test", parser.ParserType())
3533
assert.Equal(t, "__test", parser.ParserName())
3634
ports, err := parser.Ports(logr.Discard(), testComponentName, map[string]interface{}{})
@@ -49,11 +47,12 @@ func TestExtensionsComponentParsers(t *testing.T) {
4947
} {
5048
t.Run(tt.exporterName, func(t *testing.T) {
5149
t.Run("is registered", func(t *testing.T) {
52-
assert.True(t, extensions.IsRegistered(tt.exporterName))
50+
_, ok := registry[tt.exporterName]
51+
assert.True(t, ok)
5352
})
5453
t.Run("bad config errors", func(t *testing.T) {
5554
// prepare
56-
parser := extensions.ParserFor(tt.exporterName)
55+
parser := ParserFor(tt.exporterName)
5756

5857
// test throwing in pure junk
5958
_, err := parser.Ports(logr.Discard(), tt.exporterName, func() {})
@@ -64,7 +63,7 @@ func TestExtensionsComponentParsers(t *testing.T) {
6463

6564
t.Run("assigns the expected port", func(t *testing.T) {
6665
// prepare
67-
parser := extensions.ParserFor(tt.exporterName)
66+
parser := ParserFor(tt.exporterName)
6867

6968
// test
7069
ports, err := parser.Ports(logr.Discard(), tt.exporterName, map[string]interface{}{})
@@ -82,7 +81,7 @@ func TestExtensionsComponentParsers(t *testing.T) {
8281

8382
t.Run("allows port to be overridden", func(t *testing.T) {
8483
// prepare
85-
parser := extensions.ParserFor(tt.exporterName)
84+
parser := ParserFor(tt.exporterName)
8685

8786
// test
8887
ports, err := parser.Ports(logr.Discard(), tt.exporterName, map[string]interface{}{

0 commit comments

Comments
 (0)