mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 10:51:29 +00:00
Merge pull request #112891 from ii/create-namespace-finalizer-test
Write e2e test for replaceCoreV1NamespaceFinalize +1 Endpoints
This commit is contained in:
commit
83c2585716
@ -30,6 +30,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
utilrand "k8s.io/apimachinery/pkg/util/rand"
|
||||
"k8s.io/apimachinery/pkg/util/uuid"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
clientscheme "k8s.io/client-go/kubernetes/scheme"
|
||||
@ -381,6 +382,69 @@ var _ = SIGDescribe("Namespaces [Serial]", func() {
|
||||
framework.ExpectEqual(updatedNamespace.ObjectMeta.Labels[ns], "updated", "Failed to update namespace %q. Current Labels: %#v", ns, updatedNamespace.Labels)
|
||||
framework.Logf("Namespace %q now has labels, %#v", ns, updatedNamespace.Labels)
|
||||
})
|
||||
|
||||
ginkgo.It("should apply a finalizer to a Namespace", func() {
|
||||
|
||||
fakeFinalizer := v1.FinalizerName("e2e.example.com/fakeFinalizer")
|
||||
var updatedNamespace *v1.Namespace
|
||||
nsName := "e2e-ns-" + utilrand.String(5)
|
||||
|
||||
ginkgo.By(fmt.Sprintf("Creating namespace %q", nsName))
|
||||
testNamespace, err := f.CreateNamespace(nsName, nil)
|
||||
framework.ExpectNoError(err, "failed creating Namespace")
|
||||
ns := testNamespace.ObjectMeta.Name
|
||||
nsClient := f.ClientSet.CoreV1().Namespaces()
|
||||
framework.Logf("Namespace %q has %#v", testNamespace.Name, testNamespace.Spec.Finalizers)
|
||||
|
||||
ginkgo.By(fmt.Sprintf("Adding e2e finalizer to namespace %q", ns))
|
||||
err = retry.RetryOnConflict(retry.DefaultRetry, func() error {
|
||||
updateNamespace, err := nsClient.Get(context.TODO(), ns, metav1.GetOptions{})
|
||||
framework.ExpectNoError(err, "Unable to get Namespace %q", ns)
|
||||
|
||||
updateNamespace.Spec.Finalizers = append(updateNamespace.Spec.Finalizers, fakeFinalizer)
|
||||
updatedNamespace, err = nsClient.Finalize(context.TODO(), updateNamespace, metav1.UpdateOptions{})
|
||||
return err
|
||||
})
|
||||
framework.ExpectNoError(err, "failed to add finalizer to the namespace: %q", ns)
|
||||
|
||||
var foundFinalizer bool
|
||||
for _, item := range updatedNamespace.Spec.Finalizers {
|
||||
if item == fakeFinalizer {
|
||||
foundFinalizer = true
|
||||
break
|
||||
}
|
||||
}
|
||||
framework.ExpectEqual(foundFinalizer, true, "Finalizer %q was not found. Namespace %q has %#v", fakeFinalizer, updatedNamespace.Spec.Finalizers)
|
||||
framework.Logf("Namespace %q has %#v", updatedNamespace.Name, updatedNamespace.Spec.Finalizers)
|
||||
|
||||
ginkgo.By(fmt.Sprintf("Removing e2e finalizer from namespace %q", ns))
|
||||
err = retry.RetryOnConflict(retry.DefaultRetry, func() error {
|
||||
updatedNamespace, err = nsClient.Get(context.TODO(), ns, metav1.GetOptions{})
|
||||
framework.ExpectNoError(err, "Unable to get namespace %q", ns)
|
||||
|
||||
var finalizerList []v1.FinalizerName
|
||||
for _, item := range updatedNamespace.Spec.Finalizers {
|
||||
if item != fakeFinalizer {
|
||||
finalizerList = append(finalizerList, item)
|
||||
}
|
||||
}
|
||||
updatedNamespace.Spec.Finalizers = finalizerList
|
||||
updatedNamespace, err = nsClient.Finalize(context.TODO(), updatedNamespace, metav1.UpdateOptions{})
|
||||
return err
|
||||
})
|
||||
framework.ExpectNoError(err, "failed to remove finalizer from namespace: %q", ns)
|
||||
|
||||
foundFinalizer = false
|
||||
for _, item := range updatedNamespace.Spec.Finalizers {
|
||||
if item == fakeFinalizer {
|
||||
foundFinalizer = true
|
||||
break
|
||||
}
|
||||
}
|
||||
framework.ExpectEqual(foundFinalizer, false, "Finalizer %q was found. Namespace %q has %#v", fakeFinalizer, updatedNamespace.Spec.Finalizers)
|
||||
framework.Logf("Namespace %q has %#v", updatedNamespace.Name, updatedNamespace.Spec.Finalizers)
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
func unstructuredToNamespace(obj *unstructured.Unstructured) (*v1.Namespace, error) {
|
||||
|
Loading…
Reference in New Issue
Block a user