Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Simplify binding sub-controllers interface
Browse files Browse the repository at this point in the history
Remove the `service instance` argument from `ReconcileResource`. It was
unused in the managed sub-controller, the upsi one can look the instance
up itself.

This helps for a cleaner interface

fixes #3273
danail-branekov committed Jan 27, 2025
1 parent 5cf0df0 commit 3d1ed19
Showing 3 changed files with 13 additions and 5 deletions.
6 changes: 3 additions & 3 deletions controllers/controllers/services/bindings/controller.go
Original file line number Diff line number Diff line change
@@ -43,7 +43,7 @@ const (
)

type DelegateReconciler interface {
ReconcileResource(ctx context.Context, cfServiceBinding *korifiv1alpha1.CFServiceBinding, cfServiceInstance *korifiv1alpha1.CFServiceInstance) (ctrl.Result, error)
ReconcileResource(ctx context.Context, cfServiceBinding *korifiv1alpha1.CFServiceBinding) (ctrl.Result, error)
}

type Reconciler struct {
@@ -151,10 +151,10 @@ func (r *Reconciler) ReconcileResource(ctx context.Context, cfServiceBinding *ko

func (r *Reconciler) reconcileByType(ctx context.Context, cfServiceInstance *korifiv1alpha1.CFServiceInstance, cfServiceBinding *korifiv1alpha1.CFServiceBinding) (ctrl.Result, error) {
if cfServiceInstance.Spec.Type == korifiv1alpha1.UserProvidedType {
return r.upsiReconciler.ReconcileResource(ctx, cfServiceBinding, cfServiceInstance)
return r.upsiReconciler.ReconcileResource(ctx, cfServiceBinding)
}

return r.managedReconciler.ReconcileResource(ctx, cfServiceBinding, cfServiceInstance)
return r.managedReconciler.ReconcileResource(ctx, cfServiceBinding)
}

func needsRequeue(res ctrl.Result, err error) bool {
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ func NewReconciler(k8sClient client.Client, brokerClientFactory osbapi.BrokerCli
}
}

func (r *ManagedBindingsReconciler) ReconcileResource(ctx context.Context, cfServiceBinding *korifiv1alpha1.CFServiceBinding, _ *korifiv1alpha1.CFServiceInstance) (ctrl.Result, error) {
func (r *ManagedBindingsReconciler) ReconcileResource(ctx context.Context, cfServiceBinding *korifiv1alpha1.CFServiceBinding) (ctrl.Result, error) {
log := logr.FromContextOrDiscard(ctx).WithName("reconcile-managed-service-binding")

assets, err := r.assets.GetServiceBindingAssets(ctx, cfServiceBinding)
10 changes: 9 additions & 1 deletion controllers/controllers/services/bindings/upsi/controller.go
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@ import (
"github.com/go-logr/logr"
"github.com/pkg/errors"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"

@@ -34,7 +35,7 @@ func NewReconciler(k8sClient client.Client, scheme *runtime.Scheme) *UPSIBinding
}
}

func (r *UPSIBindingReconciler) ReconcileResource(ctx context.Context, cfServiceBinding *korifiv1alpha1.CFServiceBinding, cfServiceInstance *korifiv1alpha1.CFServiceInstance) (ctrl.Result, error) {
func (r *UPSIBindingReconciler) ReconcileResource(ctx context.Context, cfServiceBinding *korifiv1alpha1.CFServiceBinding) (ctrl.Result, error) {
log := logr.FromContextOrDiscard(ctx)

if !cfServiceBinding.GetDeletionTimestamp().IsZero() {
@@ -45,6 +46,13 @@ func (r *UPSIBindingReconciler) ReconcileResource(ctx context.Context, cfService
return ctrl.Result{}, nil
}

cfServiceInstance := new(korifiv1alpha1.CFServiceInstance)
err := r.k8sClient.Get(ctx, types.NamespacedName{Name: cfServiceBinding.Spec.Service.Name, Namespace: cfServiceBinding.Namespace}, cfServiceInstance)
if err != nil {
log.Info("service instance not found", "service-instance", cfServiceBinding.Spec.Service.Name, "error", err)
return ctrl.Result{}, err
}

if cfServiceInstance.Status.Credentials.Name == "" {
return ctrl.Result{}, k8s.NewNotReadyError().
WithReason("CredentialsSecretNotAvailable").

0 comments on commit 3d1ed19

Please sign in to comment.