Skip to content

Commit 096e0ca

Browse files
authored
fix regression bug (kubesphere#6269)
Signed-off-by: hongming <[email protected]>
1 parent cfebd96 commit 096e0ca

File tree

1 file changed

+20
-23
lines changed

1 file changed

+20
-23
lines changed

Diff for: pkg/controller/namespace/namespace_controller.go

+20-23
Original file line numberDiff line numberDiff line change
@@ -71,40 +71,37 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Resu
7171
return ctrl.Result{}, client.IgnoreNotFound(err)
7272
}
7373

74-
// Skip the namespace that is not created in workspace
75-
if _, ok := namespace.Labels[constants.WorkspaceLabelKey]; !ok {
76-
return ctrl.Result{}, nil
77-
}
78-
79-
if namespace.ObjectMeta.DeletionTimestamp.IsZero() {
80-
// The object is not being deleted, so if it does not have our finalizer,
81-
// then lets add the finalizer and update the object.
82-
if !controllerutil.ContainsFinalizer(namespace, constants.CascadingDeletionFinalizer) {
83-
if err := r.initCreatorRoleBinding(ctx, namespace); err != nil {
84-
return ctrl.Result{}, err
85-
}
86-
updated := namespace.DeepCopy()
87-
// Remove legacy finalizer
88-
controllerutil.RemoveFinalizer(updated, "finalizers.kubesphere.io/namespaces")
89-
// Remove legacy ownerReferences
90-
updated.OwnerReferences = make([]metav1.OwnerReference, 0)
91-
controllerutil.AddFinalizer(updated, constants.CascadingDeletionFinalizer)
92-
return ctrl.Result{}, r.Patch(ctx, updated, client.MergeFrom(namespace))
93-
}
94-
} else {
74+
if !namespace.ObjectMeta.DeletionTimestamp.IsZero() {
9575
// The object is being deleted
9676
if controllerutil.ContainsFinalizer(namespace, constants.CascadingDeletionFinalizer) {
9777
controllerutil.RemoveFinalizer(namespace, constants.CascadingDeletionFinalizer)
9878
if err := r.Update(ctx, namespace); err != nil {
99-
return ctrl.Result{}, err
79+
return ctrl.Result{}, fmt.Errorf("failed to remove finalizer: %v", err)
10080
}
10181
}
10282
// Our finalizer has finished, so the reconciler can do nothing.
10383
return ctrl.Result{}, nil
10484
}
10585

86+
_, workspaceLabelExists := namespace.Labels[constants.WorkspaceLabelKey]
87+
88+
// The object is not being deleted, so if it does not have our finalizer,
89+
// then lets add the finalizer and update the object.
90+
if workspaceLabelExists && !controllerutil.ContainsFinalizer(namespace, constants.CascadingDeletionFinalizer) {
91+
if err := r.initCreatorRoleBinding(ctx, namespace); err != nil {
92+
return ctrl.Result{}, fmt.Errorf("failed to init creator role binding: %v", err)
93+
}
94+
updated := namespace.DeepCopy()
95+
// Remove legacy finalizer
96+
controllerutil.RemoveFinalizer(updated, "finalizers.kubesphere.io/namespaces")
97+
// Remove legacy ownerReferences
98+
updated.OwnerReferences = make([]metav1.OwnerReference, 0)
99+
controllerutil.AddFinalizer(updated, constants.CascadingDeletionFinalizer)
100+
return ctrl.Result{}, r.Patch(ctx, updated, client.MergeFrom(namespace))
101+
}
102+
106103
if err := r.initRoles(ctx, namespace); err != nil {
107-
return ctrl.Result{}, err
104+
return ctrl.Result{}, fmt.Errorf("failed to init builtin roles: %v", err)
108105
}
109106

110107
r.recorder.Event(namespace, corev1.EventTypeNormal, kscontroller.Synced, kscontroller.MessageResourceSynced)

0 commit comments

Comments
 (0)