mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 21:47:07 +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
|
// prior to final deletion, we must ensure that finalizers is empty
|
||||||
if len(namespace.Spec.Finalizers) != 0 {
|
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 namespace, false, nil
|
||||||
return nil, false, err
|
|
||||||
}
|
}
|
||||||
return r.store.Delete(ctx, name, deleteValidation, options)
|
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 {
|
if err := storage.store.Storage.Create(ctx, key, namespace, nil, 0, false); err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
if _, _, err := storage.Delete(ctx, "foo", rest.ValidateAllObjectFunc, nil); err == nil {
|
obj, immediate, err := storage.Delete(ctx, "foo", rest.ValidateAllObjectFunc, nil)
|
||||||
t.Errorf("unexpected no error")
|
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
|
// should still exist
|
||||||
_, err := storage.Get(ctx, "foo", &metav1.GetOptions{})
|
if _, err := storage.Get(ctx, "foo", &metav1.GetOptions{}); err != nil {
|
||||||
if err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user