Skip to content

Commit 905b5d7

Browse files
author
Israel Blancas
authored
Merge branch 'main' into bug/3281
2 parents 8820e14 + 7ee69c5 commit 905b5d7

File tree

5 files changed

+40
-3
lines changed

5 files changed

+40
-3
lines changed

.chloggen/add_all_receiver_defaults.yaml

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,6 @@ issues: [3126]
1313
# (Optional) One or more lines of additional information to render under the primary note.
1414
# These lines will be padded with 2 spaces and then inserted directly into the document.
1515
# Use pipe (|) for multiline entries.
16-
subtext:
16+
subtext: |
17+
This feature is enabled by default. It can be disabled by specifying
18+
`--feature-gates=-operator.collector.default.config`.

apis/v1beta1/collector_webhook.go

+4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"github.com/open-telemetry/opentelemetry-operator/internal/fips"
3131
ta "github.com/open-telemetry/opentelemetry-operator/internal/manifests/targetallocator/adapters"
3232
"github.com/open-telemetry/opentelemetry-operator/internal/rbac"
33+
"github.com/open-telemetry/opentelemetry-operator/pkg/featuregate"
3334
)
3435

3536
var (
@@ -100,6 +101,9 @@ func (c CollectorWebhook) Default(_ context.Context, obj runtime.Object) error {
100101
if len(otelcol.Spec.ManagementState) == 0 {
101102
otelcol.Spec.ManagementState = ManagementStateManaged
102103
}
104+
if !featuregate.EnableConfigDefaulting.IsEnabled() {
105+
return nil
106+
}
103107
return otelcol.Spec.Config.ApplyDefaults(c.logger)
104108
}
105109

internal/components/generic_parser.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,15 @@ func (g *GenericParser[T]) GetDefaultConfig(logger logr.Logger, config interface
4444
return config, nil
4545
}
4646

47-
if g.settings.defaultRecAddr == "" {
47+
if g.settings.defaultRecAddr == "" || g.settings.port == 0 {
4848
return config, nil
4949
}
5050

5151
var parsed T
5252
if err := mapstructure.Decode(config, &parsed); err != nil {
5353
return nil, err
5454
}
55-
return g.defaultsApplier(logger, g.settings.defaultRecAddr, g.settings.GetServicePort().Port, parsed)
55+
return g.defaultsApplier(logger, g.settings.defaultRecAddr, g.settings.port, parsed)
5656
}
5757

5858
func (g *GenericParser[T]) GetLivenessProbe(logger logr.Logger, config interface{}) (*corev1.Probe, error) {

internal/components/receivers/single_endpoint_receiver_test.go

+24
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package receivers_test
1616

1717
import (
18+
"fmt"
1819
"testing"
1920

2021
"github.com/stretchr/testify/assert"
@@ -82,6 +83,7 @@ func TestDownstreamParsers(t *testing.T) {
8283
{"awsxray", "awsxray", "__awsxray", 2000, false},
8384
{"tcplog", "tcplog", "__tcplog", 0, true},
8485
{"udplog", "udplog", "__udplog", 0, true},
86+
{"k8s_cluster", "k8s_cluster", "__k8s_cluster", 0, false},
8587
} {
8688
t.Run(tt.receiverName, func(t *testing.T) {
8789
t.Run("builds successfully", func(t *testing.T) {
@@ -143,6 +145,28 @@ func TestDownstreamParsers(t *testing.T) {
143145
assert.EqualValues(t, 65535, ports[0].Port)
144146
assert.Equal(t, naming.PortName(tt.receiverName, int32(tt.defaultPort)), ports[0].Name)
145147
})
148+
149+
t.Run("returns a default config", func(t *testing.T) {
150+
// prepare
151+
parser := receivers.ReceiverFor(tt.receiverName)
152+
153+
// test
154+
config, err := parser.GetDefaultConfig(logger, map[string]interface{}{})
155+
156+
// verify
157+
assert.NoError(t, err)
158+
configMap, ok := config.(map[string]interface{})
159+
assert.True(t, ok)
160+
if tt.defaultPort == 0 {
161+
assert.Empty(t, configMap, 0)
162+
return
163+
}
164+
if tt.listenAddrParser {
165+
assert.Equal(t, configMap["listen_address"], fmt.Sprintf("0.0.0.0:%d", tt.defaultPort))
166+
} else {
167+
assert.Equal(t, configMap["endpoint"], fmt.Sprintf("0.0.0.0:%d", tt.defaultPort))
168+
}
169+
})
146170
})
147171
}
148172
}

pkg/featuregate/featuregate.go

+7
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ var (
4040
featuregate.WithRegisterDescription("enables feature to set GOMEMLIMIT and GOMAXPROCS automatically"),
4141
featuregate.WithRegisterFromVersion("v0.100.0"),
4242
)
43+
// EnableConfigDefaulting is the feature gate that enables the operator to default the endpoint for known components.
44+
EnableConfigDefaulting = featuregate.GlobalRegistry().MustRegister(
45+
"operator.collector.default.config",
46+
featuregate.StageBeta,
47+
featuregate.WithRegisterDescription("enables the operator to default the endpoint for known components"),
48+
featuregate.WithRegisterFromVersion("v0.110.0"),
49+
)
4350
)
4451

4552
// Flags creates a new FlagSet that represents the available featuregate flags using the supplied featuregate registry.

0 commit comments

Comments
 (0)