mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #84122 from smarterclayton/delete_success
storage: Deleting a namespace while spec.finalizers pending should not error
This commit is contained in:
commit
748a866d56
@ -238,8 +238,7 @@ func (r *REST) Delete(ctx context.Context, name string, deleteValidation rest.Va
|
||||
|
||||
// prior to final deletion, we must ensure that finalizers is empty
|
||||
if len(namespace.Spec.Finalizers) != 0 {
|
||||
err = apierrors.NewConflict(api.Resource("namespaces"), namespace.Name, fmt.Errorf("The system is ensuring all content is removed from this namespace. Upon completion, this namespace will automatically be purged by the system."))
|
||||
return nil, false, err
|
||||
return namespace, false, nil
|
||||
}
|
||||
return r.store.Delete(ctx, name, deleteValidation, options)
|
||||
}
|
||||
|
@ -165,12 +165,18 @@ func TestDeleteNamespaceWithIncompleteFinalizers(t *testing.T) {
|
||||
if err := storage.store.Storage.Create(ctx, key, namespace, nil, 0, false); err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
if _, _, err := storage.Delete(ctx, "foo", rest.ValidateAllObjectFunc, nil); err == nil {
|
||||
t.Errorf("unexpected no error")
|
||||
obj, immediate, err := storage.Delete(ctx, "foo", rest.ValidateAllObjectFunc, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error")
|
||||
}
|
||||
if immediate {
|
||||
t.Fatalf("unexpected immediate flag")
|
||||
}
|
||||
if ns, ok := obj.(*api.Namespace); !ok || obj == nil || ns == nil || ns.Name != namespace.Name {
|
||||
t.Fatalf("object not returned by delete")
|
||||
}
|
||||
// should still exist
|
||||
_, err := storage.Get(ctx, "foo", &metav1.GetOptions{})
|
||||
if err != nil {
|
||||
if _, err := storage.Get(ctx, "foo", &metav1.GetOptions{}); err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user