Skip to content
This repository was archived by the owner on Jun 26, 2024. It is now read-only.

Commit 3bb3ede

Browse files
committed
fix issue SBR can not be deleted if backend service has been deleted #832
1 parent 92752f5 commit 3bb3ede

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

pkg/controller/servicebinding/reconciler.go

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,34 @@ func (r *reconciler) Reconcile(request reconcile.Request) (reconcile.Result, err
113113
return doneOnNotFound(err)
114114
}
115115

116+
if sbr.GetDeletionTimestamp() != nil && sbr.GetOwnerReferences() != nil {
117+
logger := logger.WithName("Deleting SBR when it has ownerReference")
118+
logger.Debug("Removing resource finalizers...")
119+
removeFinalizer(sbr)
120+
if _, err := updateServiceBinding(r.dynClient, sbr); err != nil {
121+
return requeueError(err)
122+
}
123+
return done()
124+
}
125+
if sbr.GetDeletionTimestamp() != nil {
126+
logger := logger.WithName("unbind")
127+
logger.Info("Executing unbinding steps...")
128+
// here just build a servicebinder with necessary fields to do unbind
129+
ensureDefaults(sbr.Spec.Application)
130+
sb := &serviceBinder{
131+
dynClient: r.dynClient,
132+
sbr: sbr,
133+
logger: logger,
134+
binder: &binder{
135+
dynClient: r.dynClient,
136+
restMapper: r.restMapper,
137+
sbr: sbr,
138+
logger: logger,
139+
},
140+
}
141+
return sb.unbind()
142+
}
143+
116144
// validate namespaced ServiceBinding instance (this check has been disabled until test data has been
117145
// adjusted to reflect the validation)
118146
//
@@ -247,21 +275,6 @@ func (r *reconciler) Reconcile(request reconcile.Request) (reconcile.Result, err
247275
}
248276
}
249277

250-
if sbr.GetDeletionTimestamp() != nil && sbr.GetOwnerReferences() != nil {
251-
logger := logger.WithName("Deleting SBR when it has ownerReference")
252-
logger.Debug("Removing resource finalizers...")
253-
removeFinalizer(sbr)
254-
if _, err := updateServiceBinding(r.dynClient, sbr); err != nil {
255-
return requeueError(err)
256-
}
257-
return done()
258-
}
259-
if sbr.GetDeletionTimestamp() != nil {
260-
logger := logger.WithName("unbind")
261-
logger.Info("Executing unbinding steps...")
262-
return sb.unbind()
263-
}
264-
265278
logger.Info("Binding applications with intermediary secret...")
266279
return sb.bind()
267280
}

0 commit comments

Comments
 (0)