Skip to content

Commit 2f79f65

Browse files
committed
fix: add config parameter to updateCollectorStatus and fix e2e test
- Add config parameter to updateCollectorStatus for consistent image resolution - Remove hardcoded version assertion from kubeletstats e2e test
1 parent 0fce94b commit 2f79f65

File tree

4 files changed

+85
-8
lines changed

4 files changed

+85
-8
lines changed

internal/status/collector/collector.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@ import (
1313
"sigs.k8s.io/controller-runtime/pkg/client"
1414

1515
"github.com/open-telemetry/opentelemetry-operator/apis/v1beta1"
16+
"github.com/open-telemetry/opentelemetry-operator/internal/config"
1617
"github.com/open-telemetry/opentelemetry-operator/internal/manifests/collector"
1718
"github.com/open-telemetry/opentelemetry-operator/internal/manifests/manifestutils"
1819
"github.com/open-telemetry/opentelemetry-operator/internal/naming"
1920
"github.com/open-telemetry/opentelemetry-operator/internal/version"
2021
)
2122

22-
func updateCollectorStatus(ctx context.Context, cli client.Client, changed *v1beta1.OpenTelemetryCollector) error {
23+
func updateCollectorStatus(ctx context.Context, cli client.Client, changed *v1beta1.OpenTelemetryCollector, cfg config.Config) error {
2324
if changed.Status.Version == "" {
2425
// a version is not set, otherwise let the upgrade mechanism take care of it!
2526
changed.Status.Version = version.OpenTelemetryCollector()
@@ -36,7 +37,11 @@ func updateCollectorStatus(ctx context.Context, cli client.Client, changed *v1be
3637
name := naming.Collector(changed.Name)
3738

3839
// Set the scale selector
39-
labels := manifestutils.Labels(changed.ObjectMeta, name, changed.Spec.Image, collector.ComponentOpenTelemetryCollector, []string{})
40+
image := changed.Spec.Image
41+
if image == "" {
42+
image = cfg.CollectorImage
43+
}
44+
labels := manifestutils.Labels(changed.ObjectMeta, name, image, collector.ComponentOpenTelemetryCollector, cfg.LabelsFilter)
4045
selector, err := metav1.LabelSelectorAsSelector(&metav1.LabelSelector{MatchLabels: labels})
4146
if err != nil {
4247
return fmt.Errorf("failed to get selector for labelSelector: %w", err)

internal/status/collector/collector_test.go

Lines changed: 77 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@ import (
1515
"sigs.k8s.io/controller-runtime/pkg/client/fake"
1616

1717
"github.com/open-telemetry/opentelemetry-operator/apis/v1beta1"
18+
"github.com/open-telemetry/opentelemetry-operator/internal/config"
1819
)
1920

2021
func TestUpdateCollectorStatusUnsupported(t *testing.T) {
2122
ctx := context.TODO()
2223
cli := client.Client(fake.NewFakeClient())
24+
cfg := config.Config{}
2325

2426
changed := &v1beta1.OpenTelemetryCollector{
2527
ObjectMeta: metav1.ObjectMeta{
@@ -31,7 +33,7 @@ func TestUpdateCollectorStatusUnsupported(t *testing.T) {
3133
},
3234
}
3335

34-
err := updateCollectorStatus(ctx, cli, changed)
36+
err := updateCollectorStatus(ctx, cli, changed, cfg)
3537
assert.NoError(t, err)
3638

3739
assert.Equal(t, int32(0), changed.Status.Scale.Replicas, "expected replicas to be 0")
@@ -67,6 +69,7 @@ func createMockKubernetesClientDeployment() client.Client {
6769
func TestUpdateCollectorStatusDeploymentMode(t *testing.T) {
6870
ctx := context.TODO()
6971
cli := createMockKubernetesClientDeployment()
72+
cfg := config.Config{}
7073

7174
changed := &v1beta1.OpenTelemetryCollector{
7275
ObjectMeta: metav1.ObjectMeta{
@@ -78,7 +81,7 @@ func TestUpdateCollectorStatusDeploymentMode(t *testing.T) {
7881
},
7982
}
8083

81-
err := updateCollectorStatus(ctx, cli, changed)
84+
err := updateCollectorStatus(ctx, cli, changed, cfg)
8285
assert.NoError(t, err)
8386

8487
assert.Equal(t, int32(1), changed.Status.Scale.Replicas, "expected replicas to be 1")
@@ -115,6 +118,7 @@ func createMockKubernetesClientStatefulset() client.Client {
115118
func TestUpdateCollectorStatusStatefulset(t *testing.T) {
116119
ctx := context.TODO()
117120
cli := createMockKubernetesClientStatefulset()
121+
cfg := config.Config{}
118122

119123
changed := &v1beta1.OpenTelemetryCollector{
120124
ObjectMeta: metav1.ObjectMeta{
@@ -126,7 +130,7 @@ func TestUpdateCollectorStatusStatefulset(t *testing.T) {
126130
},
127131
}
128132

129-
err := updateCollectorStatus(ctx, cli, changed)
133+
err := updateCollectorStatus(ctx, cli, changed, cfg)
130134
assert.NoError(t, err)
131135

132136
assert.Equal(t, int32(1), changed.Status.Scale.Replicas, "expected replicas to be 1")
@@ -163,6 +167,7 @@ func createMockKubernetesClientDaemonset() client.Client {
163167
func TestUpdateCollectorStatusDaemonsetMode(t *testing.T) {
164168
ctx := context.TODO()
165169
cli := createMockKubernetesClientDaemonset()
170+
cfg := config.Config{}
166171

167172
changed := &v1beta1.OpenTelemetryCollector{
168173
ObjectMeta: metav1.ObjectMeta{
@@ -177,11 +182,79 @@ func TestUpdateCollectorStatusDaemonsetMode(t *testing.T) {
177182
},
178183
}
179184

180-
err := updateCollectorStatus(ctx, cli, changed)
185+
err := updateCollectorStatus(ctx, cli, changed, cfg)
181186
assert.NoError(t, err)
182187

183188
assert.Equal(t, int32(1), changed.Status.Scale.Replicas, "expected replicas to be 1")
184189
assert.Equal(t, "1/1", changed.Status.Scale.StatusReplicas, "expected status replicas to be 1/1")
185190
assert.Contains(t, changed.Status.Scale.Selector, "customLabel=customValue", "expected selector to contain customlabel=customValue")
186191
assert.Equal(t, "app:latest", changed.Status.Image, "expected image to be app:latest")
187192
}
193+
194+
func TestUpdateCollectorStatusVersionLabelFromSpec(t *testing.T) {
195+
ctx := context.TODO()
196+
cli := createMockKubernetesClientDeployment()
197+
cfg := config.Config{}
198+
199+
changed := &v1beta1.OpenTelemetryCollector{
200+
ObjectMeta: metav1.ObjectMeta{
201+
Name: "test-deployment",
202+
Namespace: "default",
203+
},
204+
Spec: v1beta1.OpenTelemetryCollectorSpec{
205+
Mode: v1beta1.ModeDeployment,
206+
OpenTelemetryCommonFields: v1beta1.OpenTelemetryCommonFields{
207+
Image: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.129.1",
208+
},
209+
},
210+
}
211+
212+
err := updateCollectorStatus(ctx, cli, changed, cfg)
213+
assert.NoError(t, err)
214+
215+
assert.Contains(t, changed.Status.Scale.Selector, "app.kubernetes.io/version=0.129.1", "expected selector to contain version label from spec")
216+
}
217+
218+
func TestUpdateCollectorStatusVersionLabelFromConfig(t *testing.T) {
219+
ctx := context.TODO()
220+
cli := createMockKubernetesClientDeployment()
221+
cfg := config.Config{
222+
CollectorImage: "ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:0.130.0",
223+
}
224+
225+
changed := &v1beta1.OpenTelemetryCollector{
226+
ObjectMeta: metav1.ObjectMeta{
227+
Name: "test-deployment",
228+
Namespace: "default",
229+
},
230+
Spec: v1beta1.OpenTelemetryCollectorSpec{
231+
Mode: v1beta1.ModeDeployment,
232+
},
233+
}
234+
235+
err := updateCollectorStatus(ctx, cli, changed, cfg)
236+
assert.NoError(t, err)
237+
238+
assert.Contains(t, changed.Status.Scale.Selector, "app.kubernetes.io/version=0.130.0", "expected selector to contain version label from config")
239+
}
240+
241+
func TestUpdateCollectorStatusVersionLabelLatest(t *testing.T) {
242+
ctx := context.TODO()
243+
cli := createMockKubernetesClientDeployment()
244+
cfg := config.Config{}
245+
246+
changed := &v1beta1.OpenTelemetryCollector{
247+
ObjectMeta: metav1.ObjectMeta{
248+
Name: "test-deployment",
249+
Namespace: "default",
250+
},
251+
Spec: v1beta1.OpenTelemetryCollectorSpec{
252+
Mode: v1beta1.ModeDeployment,
253+
},
254+
}
255+
256+
err := updateCollectorStatus(ctx, cli, changed, cfg)
257+
assert.NoError(t, err)
258+
259+
assert.Contains(t, changed.Status.Scale.Selector, "app.kubernetes.io/version=latest", "expected selector to contain latest version label")
260+
}

internal/status/collector/handle.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func HandleReconcileStatus(ctx context.Context, log logr.Logger, params manifest
3131
}
3232

3333
changed := otelcol.DeepCopy()
34-
statusErr := updateCollectorStatus(ctx, params.Client, changed)
34+
statusErr := updateCollectorStatus(ctx, params.Client, changed, params.Config)
3535

3636
if statusErr != nil {
3737
params.Recorder.Event(changed, corev1.EventTypeWarning, reasonStatusFailure, statusErr.Error())

tests/e2e-automatic-rbac/receiver-kubeletstats/01-assert.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ metadata:
3535
app.kubernetes.io/managed-by: opentelemetry-operator
3636
app.kubernetes.io/name: simplest-collector
3737
app.kubernetes.io/part-of: opentelemetry
38-
app.kubernetes.io/version: latest
3938
namespace: chainsaw-kubeletstats
4039
spec:
4140
containers:

0 commit comments

Comments
 (0)