Skip to content

Commit 4d26028

Browse files
authored
Clean up signatures (#2621)
* mostly working signatures * Clean up types to only marshal once * linting * rename methods
1 parent c534eaf commit 4d26028

Some content is hidden

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

46 files changed

+978
-1006
lines changed

controllers/builder_test.go

+56-36
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/go-logr/logr"
2222
monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
2323
"github.com/stretchr/testify/require"
24+
go_yaml "gopkg.in/yaml.v3"
2425
appsv1 "k8s.io/api/apps/v1"
2526
corev1 "k8s.io/api/core/v1"
2627
networkingv1 "k8s.io/api/networking/v1"
@@ -33,6 +34,7 @@ import (
3334
colfeaturegate "go.opentelemetry.io/collector/featuregate"
3435

3536
"github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1"
37+
"github.com/open-telemetry/opentelemetry-operator/apis/v1alpha2"
3638
"github.com/open-telemetry/opentelemetry-operator/internal/config"
3739
"github.com/open-telemetry/opentelemetry-operator/internal/manifests"
3840
"github.com/open-telemetry/opentelemetry-operator/pkg/featuregate"
@@ -73,7 +75,7 @@ var (
7375
)
7476

7577
func TestBuildCollector(t *testing.T) {
76-
var goodConfig = `receivers:
78+
var goodConfigYaml = `receivers:
7779
examplereceiver:
7880
endpoint: "0.0.0.0:12345"
7981
exporters:
@@ -84,9 +86,13 @@ service:
8486
receivers: [examplereceiver]
8587
exporters: [logging]
8688
`
89+
90+
goodConfig := v1alpha2.Config{}
91+
err := go_yaml.Unmarshal([]byte(goodConfigYaml), &goodConfig)
92+
require.NoError(t, err)
8793
one := int32(1)
8894
type args struct {
89-
instance v1alpha1.OpenTelemetryCollector
95+
instance v1alpha2.OpenTelemetryCollector
9096
}
9197
tests := []struct {
9298
name string
@@ -97,16 +103,18 @@ service:
97103
{
98104
name: "base case",
99105
args: args{
100-
instance: v1alpha1.OpenTelemetryCollector{
106+
instance: v1alpha2.OpenTelemetryCollector{
101107
ObjectMeta: metav1.ObjectMeta{
102108
Name: "test",
103109
Namespace: "test",
104110
},
105-
Spec: v1alpha1.OpenTelemetryCollectorSpec{
106-
Replicas: &one,
107-
Mode: "deployment",
108-
Image: "test",
109-
Config: goodConfig,
111+
Spec: v1alpha2.OpenTelemetryCollectorSpec{
112+
OpenTelemetryCommonFields: v1alpha2.OpenTelemetryCommonFields{
113+
Image: "test",
114+
Replicas: &one,
115+
},
116+
Mode: "deployment",
117+
Config: goodConfig,
110118
},
111119
},
112120
},
@@ -334,17 +342,19 @@ service:
334342
{
335343
name: "ingress",
336344
args: args{
337-
instance: v1alpha1.OpenTelemetryCollector{
345+
instance: v1alpha2.OpenTelemetryCollector{
338346
ObjectMeta: metav1.ObjectMeta{
339347
Name: "test",
340348
Namespace: "test",
341349
},
342-
Spec: v1alpha1.OpenTelemetryCollectorSpec{
343-
Replicas: &one,
344-
Mode: "deployment",
345-
Image: "test",
346-
Ingress: v1alpha1.Ingress{
347-
Type: v1alpha1.IngressTypeNginx,
350+
Spec: v1alpha2.OpenTelemetryCollectorSpec{
351+
OpenTelemetryCommonFields: v1alpha2.OpenTelemetryCommonFields{
352+
Image: "test",
353+
Replicas: &one,
354+
},
355+
Mode: "deployment",
356+
Ingress: v1alpha2.Ingress{
357+
Type: v1alpha2.IngressTypeNginx,
348358
Hostname: "example.com",
349359
Annotations: map[string]string{
350360
"something": "true",
@@ -617,17 +627,19 @@ service:
617627
{
618628
name: "specified service account case",
619629
args: args{
620-
instance: v1alpha1.OpenTelemetryCollector{
630+
instance: v1alpha2.OpenTelemetryCollector{
621631
ObjectMeta: metav1.ObjectMeta{
622632
Name: "test",
623633
Namespace: "test",
624634
},
625-
Spec: v1alpha1.OpenTelemetryCollectorSpec{
626-
Replicas: &one,
627-
Mode: "deployment",
628-
Image: "test",
629-
Config: goodConfig,
630-
ServiceAccount: "my-special-sa",
635+
Spec: v1alpha2.OpenTelemetryCollectorSpec{
636+
OpenTelemetryCommonFields: v1alpha2.OpenTelemetryCommonFields{
637+
Image: "test",
638+
Replicas: &one,
639+
ServiceAccount: "my-special-sa",
640+
},
641+
Mode: "deployment",
642+
Config: goodConfig,
631643
},
632644
},
633645
},
@@ -1083,7 +1095,7 @@ endpoint: ws://opamp-server:4320/v1/opamp
10831095
}
10841096

10851097
func TestBuildTargetAllocator(t *testing.T) {
1086-
var goodConfig = `
1098+
var goodConfigYaml = `
10871099
receivers:
10881100
prometheus:
10891101
config:
@@ -1108,9 +1120,13 @@ service:
11081120
receivers: [prometheus]
11091121
exporters: [logging]
11101122
`
1123+
1124+
goodConfig := v1alpha2.Config{}
1125+
err := go_yaml.Unmarshal([]byte(goodConfigYaml), &goodConfig)
1126+
require.NoError(t, err)
11111127
one := int32(1)
11121128
type args struct {
1113-
instance v1alpha1.OpenTelemetryCollector
1129+
instance v1alpha2.OpenTelemetryCollector
11141130
}
11151131
tests := []struct {
11161132
name string
@@ -1122,16 +1138,18 @@ service:
11221138
{
11231139
name: "base case",
11241140
args: args{
1125-
instance: v1alpha1.OpenTelemetryCollector{
1141+
instance: v1alpha2.OpenTelemetryCollector{
11261142
ObjectMeta: metav1.ObjectMeta{
11271143
Name: "test",
11281144
Namespace: "test",
11291145
},
1130-
Spec: v1alpha1.OpenTelemetryCollectorSpec{
1131-
Replicas: &one,
1132-
Mode: "statefulset",
1133-
Image: "test",
1134-
Config: goodConfig,
1146+
Spec: v1alpha2.OpenTelemetryCollectorSpec{
1147+
OpenTelemetryCommonFields: v1alpha2.OpenTelemetryCommonFields{
1148+
Image: "test",
1149+
Replicas: &one,
1150+
},
1151+
Mode: "statefulset",
1152+
Config: goodConfig,
11351153
TargetAllocator: v1alpha1.OpenTelemetryTargetAllocator{
11361154
Enabled: true,
11371155
FilterStrategy: "relabel-config",
@@ -1516,16 +1534,18 @@ prometheus_cr:
15161534
{
15171535
name: "enable metrics case",
15181536
args: args{
1519-
instance: v1alpha1.OpenTelemetryCollector{
1537+
instance: v1alpha2.OpenTelemetryCollector{
15201538
ObjectMeta: metav1.ObjectMeta{
15211539
Name: "test",
15221540
Namespace: "test",
15231541
},
1524-
Spec: v1alpha1.OpenTelemetryCollectorSpec{
1525-
Replicas: &one,
1526-
Mode: "statefulset",
1527-
Image: "test",
1528-
Config: goodConfig,
1542+
Spec: v1alpha2.OpenTelemetryCollectorSpec{
1543+
OpenTelemetryCommonFields: v1alpha2.OpenTelemetryCommonFields{
1544+
Image: "test",
1545+
Replicas: &one,
1546+
},
1547+
Mode: "statefulset",
1548+
Config: goodConfig,
15291549
TargetAllocator: v1alpha1.OpenTelemetryTargetAllocator{
15301550
Enabled: true,
15311551
PrometheusCR: v1alpha1.OpenTelemetryTargetAllocatorPrometheusCR{

controllers/opentelemetrycollector_controller.go

+17-6
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"sigs.k8s.io/controller-runtime/pkg/client"
3333

3434
"github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1"
35+
"github.com/open-telemetry/opentelemetry-operator/internal/api/convert"
3536
"github.com/open-telemetry/opentelemetry-operator/internal/config"
3637
"github.com/open-telemetry/opentelemetry-operator/internal/manifests"
3738
collectorStatus "github.com/open-telemetry/opentelemetry-operator/internal/status/collector"
@@ -56,15 +57,19 @@ type Params struct {
5657
Config config.Config
5758
}
5859

59-
func (r *OpenTelemetryCollectorReconciler) getParams(instance v1alpha1.OpenTelemetryCollector) manifests.Params {
60+
func (r *OpenTelemetryCollectorReconciler) getParams(instance v1alpha1.OpenTelemetryCollector) (manifests.Params, error) {
61+
otelCol, err := convert.V1Alpha1to2(instance)
62+
if err != nil {
63+
return manifests.Params{}, err
64+
}
6065
return manifests.Params{
6166
Config: r.config,
6267
Client: r.Client,
63-
OtelCol: instance,
68+
OtelCol: otelCol,
6469
Log: r.log,
6570
Scheme: r.scheme,
6671
Recorder: r.recorder,
67-
}
72+
}, nil
6873
}
6974

7075
// NewReconciler creates a new reconciler for OpenTelemetryCollector objects.
@@ -119,14 +124,20 @@ func (r *OpenTelemetryCollectorReconciler) Reconcile(ctx context.Context, req ct
119124
return ctrl.Result{}, nil
120125
}
121126

122-
params := r.getParams(instance)
127+
params, err := r.getParams(instance)
128+
if err != nil {
129+
log.Error(err, "Failed to create manifest.Params")
130+
return ctrl.Result{}, err
131+
}
123132

124133
desiredObjects, buildErr := BuildCollector(params)
125134
if buildErr != nil {
126135
return ctrl.Result{}, buildErr
127136
}
128-
err := reconcileDesiredObjects(ctx, r.Client, log, &params.OtelCol, params.Scheme, desiredObjects...)
129-
return collectorStatus.HandleReconcileStatus(ctx, log, params, err)
137+
// TODO: https://github.com/open-telemetry/opentelemetry-operator/issues/2620
138+
// TODO: Change &instance to use params.OtelCol
139+
err = reconcileDesiredObjects(ctx, r.Client, log, &instance, params.Scheme, desiredObjects...)
140+
return collectorStatus.HandleReconcileStatus(ctx, log, params, instance, err)
130141
}
131142

132143
// SetupWithManager tells the manager what our controller is interested in.

0 commit comments

Comments
 (0)