Skip to content

Commit 88e0d3c

Browse files
committed
fixup! fixup! fix: identical endpoint name conflicts
Signed-off-by: Oleksii Kurinnyi <[email protected]>
1 parent 08a1a5e commit 88e0d3c

File tree

4 files changed

+37
-14
lines changed

4 files changed

+37
-14
lines changed

controllers/controller/devworkspacerouting/devworkspacerouting_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func (r *DevWorkspaceRoutingReconciler) Reconcile(ctx context.Context, req ctrl.
9393
return reconcile.Result{}, r.markRoutingFailed(instance, "DevWorkspaceRouting requires field routingClass to be set")
9494
}
9595

96-
solver, err := r.SolverGetter.GetSolver(r.Client, instance.Spec.RoutingClass)
96+
solver, err := r.SolverGetter.GetSolver(r.Client, reqLogger, instance.Spec.RoutingClass)
9797
if err != nil {
9898
if errors.Is(err, solvers.RoutingNotSupported) {
9999
reqLogger.Info("Routing class not supported by this controller, skipping reconciliation", "routingClass", instance.Spec.RoutingClass)
@@ -132,7 +132,7 @@ func (r *DevWorkspaceRoutingReconciler) Reconcile(ctx context.Context, req ctrl.
132132
}
133133

134134
restrictedAccess, setRestrictedAccess := instance.Annotations[constants.DevWorkspaceRestrictedAccessAnnotation]
135-
routingObjects, err := solver.GetSpecObjects(instance, workspaceMeta, r.Client, reqLogger)
135+
routingObjects, err := solver.GetSpecObjects(instance, workspaceMeta)
136136
if err != nil {
137137
var notReady *solvers.RoutingNotReady
138138
if errors.As(err, &notReady) {

controllers/controller/devworkspacerouting/solvers/basic_solver.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,21 @@ var nginxIngressAnnotations = func(endpointName string, endpointAnnotations map[
4949
// According to the current cluster there is different behavior:
5050
// Kubernetes: use Ingresses without TLS
5151
// OpenShift: use Routes with TLS enabled
52-
type BasicSolver struct{}
52+
type BasicSolver struct {
53+
client client.Client
54+
logger logr.Logger
55+
}
5356

5457
var _ RoutingSolver = (*BasicSolver)(nil)
5558

59+
// NewBasicSolver creates a new BasicSolver with the provided dependencies
60+
func NewBasicSolver(client client.Client, logger logr.Logger) *BasicSolver {
61+
return &BasicSolver{
62+
client: client,
63+
logger: logger,
64+
}
65+
}
66+
5667
func (s *BasicSolver) FinalizerRequired(*controllerv1alpha1.DevWorkspaceRouting) bool {
5768
return false
5869
}
@@ -61,7 +72,7 @@ func (s *BasicSolver) Finalize(*controllerv1alpha1.DevWorkspaceRouting) error {
6172
return nil
6273
}
6374

64-
func (s *BasicSolver) GetSpecObjects(routing *controllerv1alpha1.DevWorkspaceRouting, workspaceMeta DevWorkspaceMetadata, cl client.Client, log logr.Logger) (RoutingObjects, error) {
75+
func (s *BasicSolver) GetSpecObjects(routing *controllerv1alpha1.DevWorkspaceRouting, workspaceMeta DevWorkspaceMetadata) (RoutingObjects, error) {
6576
routingObjects := RoutingObjects{}
6677

6778
// TODO: Use workspace-scoped ClusterHostSuffix to allow overriding
@@ -72,7 +83,7 @@ func (s *BasicSolver) GetSpecObjects(routing *controllerv1alpha1.DevWorkspaceRou
7283

7384
spec := routing.Spec
7485
services := getServicesForEndpoints(spec.Endpoints, workspaceMeta)
75-
discoverableServices, err := GetDiscoverableServicesForEndpoints(spec.Endpoints, workspaceMeta, cl, log)
86+
discoverableServices, err := GetDiscoverableServicesForEndpoints(spec.Endpoints, workspaceMeta, s.client, s.logger)
7687
if err != nil {
7788
return RoutingObjects{}, err
7889
}

controllers/controller/devworkspacerouting/solvers/cluster_solver.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,22 @@ const (
3333
)
3434

3535
type ClusterSolver struct {
36-
TLS bool
36+
TLS bool
37+
client client.Client
38+
logger logr.Logger
3739
}
3840

3941
var _ RoutingSolver = (*ClusterSolver)(nil)
4042

43+
// NewClusterSolver creates a new ClusterSolver with the provided dependencies
44+
func NewClusterSolver(client client.Client, logger logr.Logger, tls bool) *ClusterSolver {
45+
return &ClusterSolver{
46+
TLS: tls,
47+
client: client,
48+
logger: logger,
49+
}
50+
}
51+
4152
func (s *ClusterSolver) FinalizerRequired(*controllerv1alpha1.DevWorkspaceRouting) bool {
4253
return false
4354
}
@@ -46,10 +57,10 @@ func (s *ClusterSolver) Finalize(*controllerv1alpha1.DevWorkspaceRouting) error
4657
return nil
4758
}
4859

49-
func (s *ClusterSolver) GetSpecObjects(routing *controllerv1alpha1.DevWorkspaceRouting, workspaceMeta DevWorkspaceMetadata, cl client.Client, log logr.Logger) (RoutingObjects, error) {
60+
func (s *ClusterSolver) GetSpecObjects(routing *controllerv1alpha1.DevWorkspaceRouting, workspaceMeta DevWorkspaceMetadata) (RoutingObjects, error) {
5061
spec := routing.Spec
5162
services := getServicesForEndpoints(spec.Endpoints, workspaceMeta)
52-
discoverableServices, err := GetDiscoverableServicesForEndpoints(spec.Endpoints, workspaceMeta, cl, log)
63+
discoverableServices, err := GetDiscoverableServicesForEndpoints(spec.Endpoints, workspaceMeta, s.client, s.logger)
5364
if err != nil {
5465
return RoutingObjects{}, err
5566
}

controllers/controller/devworkspacerouting/solvers/solver.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ type RoutingSolver interface {
5353
// The implementors can also create any additional objects not captured by the RoutingObjects struct. If that's
5454
// the case they are required to set the restricted access annotation on any objects created according to the
5555
// restricted access specified by the routing.
56-
GetSpecObjects(routing *controllerv1alpha1.DevWorkspaceRouting, workspaceMeta DevWorkspaceMetadata, client client.Client, log logr.Logger) (RoutingObjects, error)
56+
GetSpecObjects(routing *controllerv1alpha1.DevWorkspaceRouting, workspaceMeta DevWorkspaceMetadata) (RoutingObjects, error)
5757

5858
// GetExposedEndpoints retreives the URL for each endpoint in a devfile spec from a set of RoutingObjects.
5959
// Returns is a map from component ids (as defined in the devfile) to the list of endpoints for that component
@@ -78,7 +78,7 @@ type RoutingSolverGetter interface {
7878
// the routingClass is not recognized, and any other error if the routingClass is invalid (e.g. an OpenShift-only
7979
// routingClass on a vanilla Kubernetes platform). Note that an empty routingClass is handled by the DevWorkspace controller itself,
8080
// and should not be handled by external controllers.
81-
GetSolver(client client.Client, routingClass controllerv1alpha1.DevWorkspaceRoutingClass) (solver RoutingSolver, err error)
81+
GetSolver(client client.Client, logger logr.Logger, routingClass controllerv1alpha1.DevWorkspaceRoutingClass) (solver RoutingSolver, err error)
8282
}
8383

8484
type SolverGetter struct{}
@@ -101,18 +101,19 @@ func (_ *SolverGetter) HasSolver(routingClass controllerv1alpha1.DevWorkspaceRou
101101
}
102102
}
103103

104-
func (_ *SolverGetter) GetSolver(_ client.Client, routingClass controllerv1alpha1.DevWorkspaceRoutingClass) (RoutingSolver, error) {
104+
func (_ *SolverGetter) GetSolver(client client.Client, logger logr.Logger, routingClass controllerv1alpha1.DevWorkspaceRoutingClass) (RoutingSolver, error) {
105105
isOpenShift := infrastructure.IsOpenShift()
106+
106107
switch routingClass {
107108
case controllerv1alpha1.DevWorkspaceRoutingBasic:
108-
return &BasicSolver{}, nil
109+
return NewBasicSolver(client, logger), nil
109110
case controllerv1alpha1.DevWorkspaceRoutingCluster:
110-
return &ClusterSolver{}, nil
111+
return NewClusterSolver(client, logger, false), nil
111112
case controllerv1alpha1.DevWorkspaceRoutingClusterTLS, controllerv1alpha1.DevWorkspaceRoutingWebTerminal:
112113
if !isOpenShift {
113114
return nil, fmt.Errorf("routing class %s only supported on OpenShift", routingClass)
114115
}
115-
return &ClusterSolver{TLS: true}, nil
116+
return NewClusterSolver(client, logger, true), nil
116117
default:
117118
return nil, RoutingNotSupported
118119
}

0 commit comments

Comments
 (0)