Skip to content

Commit 46495fd

Browse files
authored
Remove old autodetection for openshift routes, cleanup (#2398)
* remove old autodetection, cleanup * remove unused
1 parent 4fa742a commit 46495fd

22 files changed

+151
-1118
lines changed
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
2+
change_type: enhancement
3+
4+
# The name of the component, or a single word describing the area of concern, (e.g. operator, target allocator, github action)
5+
component: operator
6+
7+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
8+
note: removes the old way of running autodetection for openshift routes being available
9+
10+
# One or more tracking issues related to the change
11+
issues: [2108]
12+
13+
# (Optional) One or more lines of additional information to render under the primary note.
14+
# These lines will be padded with 2 spaces and then inserted directly into the document.
15+
# Use pipe (|) for multiline entries.
16+
subtext:

controllers/opampbridge_controller_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ import (
3535

3636
"github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1"
3737
"github.com/open-telemetry/opentelemetry-operator/controllers"
38+
"github.com/open-telemetry/opentelemetry-operator/internal/autodetect/openshift"
3839
"github.com/open-telemetry/opentelemetry-operator/internal/config"
39-
"github.com/open-telemetry/opentelemetry-operator/pkg/autodetect"
4040
)
4141

4242
var opampBridgeLogger = logf.Log.WithName("opamp-bridge-controller-unit-tests")
4343
var opampBridgeMockAutoDetector = &mockAutoDetect{
44-
OpenShiftRoutesAvailabilityFunc: func() (autodetect.OpenShiftRoutesAvailability, error) {
45-
return autodetect.OpenShiftRoutesAvailable, nil
44+
OpenShiftRoutesAvailabilityFunc: func() (openshift.RoutesAvailability, error) {
45+
return openshift.RoutesAvailable, nil
4646
},
4747
}
4848

controllers/opentelemetrycollector_controller.go

-94
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ package controllers
1717

1818
import (
1919
"context"
20-
"fmt"
21-
"sync"
2220

2321
"github.com/go-logr/logr"
2422
monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
@@ -36,8 +34,6 @@ import (
3634
"github.com/open-telemetry/opentelemetry-operator/internal/config"
3735
"github.com/open-telemetry/opentelemetry-operator/internal/manifests"
3836
collectorStatus "github.com/open-telemetry/opentelemetry-operator/internal/status/collector"
39-
"github.com/open-telemetry/opentelemetry-operator/pkg/autodetect"
40-
"github.com/open-telemetry/opentelemetry-operator/pkg/collector/reconcile"
4137
"github.com/open-telemetry/opentelemetry-operator/pkg/featuregate"
4238
)
4339

@@ -48,16 +44,6 @@ type OpenTelemetryCollectorReconciler struct {
4844
scheme *runtime.Scheme
4945
log logr.Logger
5046
config config.Config
51-
52-
tasks []Task
53-
muTasks sync.RWMutex
54-
}
55-
56-
// Task represents a reconciliation task to be executed by the reconciler.
57-
type Task struct {
58-
Do func(context.Context, manifests.Params) error
59-
Name string
60-
BailOnError bool
6147
}
6248

6349
// Params is the set of options to build a new OpenTelemetryCollectorReconciler.
@@ -66,55 +52,9 @@ type Params struct {
6652
Recorder record.EventRecorder
6753
Scheme *runtime.Scheme
6854
Log logr.Logger
69-
Tasks []Task
7055
Config config.Config
7156
}
7257

73-
func (r *OpenTelemetryCollectorReconciler) onOpenShiftRoutesChange() error {
74-
plt := r.config.OpenShiftRoutes()
75-
var (
76-
routesIdx = -1
77-
)
78-
r.muTasks.Lock()
79-
for i, t := range r.tasks {
80-
// search for route reconciler
81-
switch t.Name {
82-
case "routes":
83-
routesIdx = i
84-
}
85-
}
86-
r.muTasks.Unlock()
87-
88-
if err := r.addRouteTask(plt, routesIdx); err != nil {
89-
return err
90-
}
91-
92-
return r.removeRouteTask(plt, routesIdx)
93-
}
94-
95-
func (r *OpenTelemetryCollectorReconciler) addRouteTask(ora autodetect.OpenShiftRoutesAvailability, routesIdx int) error {
96-
r.muTasks.Lock()
97-
defer r.muTasks.Unlock()
98-
// if exists and openshift routes are available
99-
if routesIdx == -1 && ora == autodetect.OpenShiftRoutesAvailable {
100-
r.tasks = append([]Task{{reconcile.Routes, "routes", true}}, r.tasks...)
101-
}
102-
return nil
103-
}
104-
105-
func (r *OpenTelemetryCollectorReconciler) removeRouteTask(ora autodetect.OpenShiftRoutesAvailability, routesIdx int) error {
106-
r.muTasks.Lock()
107-
defer r.muTasks.Unlock()
108-
if len(r.tasks) < routesIdx {
109-
return fmt.Errorf("can not remove route task from reconciler")
110-
}
111-
// if exists and openshift routes are not available
112-
if routesIdx != -1 && ora == autodetect.OpenShiftRoutesNotAvailable {
113-
r.tasks = append(r.tasks[:routesIdx], r.tasks[routesIdx+1:]...)
114-
}
115-
return nil
116-
}
117-
11858
func (r *OpenTelemetryCollectorReconciler) getParams(instance v1alpha1.OpenTelemetryCollector) manifests.Params {
11959
return manifests.Params{
12060
Config: r.config,
@@ -133,15 +73,8 @@ func NewReconciler(p Params) *OpenTelemetryCollectorReconciler {
13373
log: p.Log,
13474
scheme: p.Scheme,
13575
config: p.Config,
136-
tasks: p.Tasks,
13776
recorder: p.Recorder,
13877
}
139-
140-
if len(r.tasks) == 0 {
141-
// TODO: put this in line with the rest of how we generate manifests
142-
// https://github.com/open-telemetry/opentelemetry-operator/issues/2108
143-
r.config.RegisterOpenShiftRoutesChangeCallback(r.onOpenShiftRoutesChange)
144-
}
14578
return r
14679
}
14780

@@ -185,9 +118,6 @@ func (r *OpenTelemetryCollectorReconciler) Reconcile(ctx context.Context, req ct
185118
}
186119

187120
params := r.getParams(instance)
188-
if err := r.RunTasks(ctx, params); err != nil {
189-
return ctrl.Result{}, err
190-
}
191121

192122
desiredObjects, buildErr := BuildCollector(params)
193123
if buildErr != nil {
@@ -197,32 +127,8 @@ func (r *OpenTelemetryCollectorReconciler) Reconcile(ctx context.Context, req ct
197127
return collectorStatus.HandleReconcileStatus(ctx, log, params, err)
198128
}
199129

200-
// RunTasks runs all the tasks associated with this reconciler.
201-
func (r *OpenTelemetryCollectorReconciler) RunTasks(ctx context.Context, params manifests.Params) error {
202-
r.muTasks.RLock()
203-
defer r.muTasks.RUnlock()
204-
for _, task := range r.tasks {
205-
if err := task.Do(ctx, params); err != nil {
206-
// If we get an error that occurs because a pod is being terminated, then exit this loop
207-
if apierrors.IsForbidden(err) && apierrors.HasStatusCause(err, corev1.NamespaceTerminatingCause) {
208-
r.log.V(2).Info("Exiting reconcile loop because namespace is being terminated", "namespace", params.OtelCol.Namespace)
209-
return nil
210-
}
211-
r.log.Error(err, fmt.Sprintf("failed to reconcile %s", task.Name))
212-
if task.BailOnError {
213-
return err
214-
}
215-
}
216-
}
217-
return nil
218-
}
219-
220130
// SetupWithManager tells the manager what our controller is interested in.
221131
func (r *OpenTelemetryCollectorReconciler) SetupWithManager(mgr ctrl.Manager) error {
222-
err := r.config.AutoDetect() // We need to call this, so we can get the correct autodetect version
223-
if err != nil {
224-
return err
225-
}
226132
builder := ctrl.NewControllerManagedBy(mgr).
227133
For(&v1alpha1.OpenTelemetryCollector{}).
228134
Owns(&corev1.ConfigMap{}).

controllers/opentelemetrycollector_controller_test.go

-132
This file was deleted.

controllers/reconcile_test.go

+42
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,17 @@ import (
3131
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3232
"k8s.io/apimachinery/pkg/types"
3333
"k8s.io/apimachinery/pkg/util/intstr"
34+
"k8s.io/client-go/kubernetes/scheme"
3435
"k8s.io/client-go/tools/record"
3536
controllerruntime "sigs.k8s.io/controller-runtime"
3637
"sigs.k8s.io/controller-runtime/pkg/client"
38+
k8sconfig "sigs.k8s.io/controller-runtime/pkg/client/config"
39+
"sigs.k8s.io/controller-runtime/pkg/manager"
3740
k8sreconcile "sigs.k8s.io/controller-runtime/pkg/reconcile"
3841

3942
"github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1"
4043
"github.com/open-telemetry/opentelemetry-operator/controllers"
44+
"github.com/open-telemetry/opentelemetry-operator/internal/autodetect/openshift"
4145
"github.com/open-telemetry/opentelemetry-operator/internal/config"
4246
"github.com/open-telemetry/opentelemetry-operator/internal/manifests"
4347
ta "github.com/open-telemetry/opentelemetry-operator/internal/manifests/targetallocator/adapters"
@@ -530,6 +534,7 @@ func TestOpenTelemetryCollectorReconciler_Reconcile(t *testing.T) {
530534
Config: config.New(
531535
config.WithCollectorImage("default-collector"),
532536
config.WithTargetAllocatorImage("default-ta-allocator"),
537+
config.WithOpenShiftRoutesAvailability(openshift.RoutesAvailable),
533538
),
534539
})
535540

@@ -749,6 +754,43 @@ func TestOpAMPBridgeReconciler_Reconcile(t *testing.T) {
749754
}
750755
}
751756

757+
func TestSkipWhenInstanceDoesNotExist(t *testing.T) {
758+
// prepare
759+
cfg := config.New()
760+
nsn := types.NamespacedName{Name: "non-existing-my-instance", Namespace: "default"}
761+
reconciler := controllers.NewReconciler(controllers.Params{
762+
Client: k8sClient,
763+
Log: logger,
764+
Scheme: scheme.Scheme,
765+
Config: cfg,
766+
})
767+
768+
// test
769+
req := k8sreconcile.Request{
770+
NamespacedName: nsn,
771+
}
772+
_, err := reconciler.Reconcile(context.Background(), req)
773+
774+
// verify
775+
assert.NoError(t, err)
776+
}
777+
778+
func TestRegisterWithManager(t *testing.T) {
779+
t.Skip("this test requires a real cluster, otherwise the GetConfigOrDie will die")
780+
781+
// prepare
782+
mgr, err := manager.New(k8sconfig.GetConfigOrDie(), manager.Options{})
783+
require.NoError(t, err)
784+
785+
reconciler := controllers.NewReconciler(controllers.Params{})
786+
787+
// test
788+
err = reconciler.SetupWithManager(mgr)
789+
790+
// verify
791+
assert.NoError(t, err)
792+
}
793+
752794
func namespacedObjectName(name string, namespace string) types.NamespacedName {
753795
return types.NamespacedName{
754796
Namespace: namespace,

0 commit comments

Comments
 (0)