This is an automated email from the ASF dual-hosted git repository.

ccondit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yunikorn-k8shim.git


The following commit(s) were added to refs/heads/master by this push:
     new 66897491 [YUNIKORN-2292] Flaky E2E Test: Orphan pods still exist after 
TearDownNamespace() (#754)
66897491 is described below

commit 6689749110ae3926e2eca2ea667e430b8601678c
Author: Yu-Lin Chen <[email protected]>
AuthorDate: Wed Jan 3 15:37:24 2024 -0600

    [YUNIKORN-2292] Flaky E2E Test: Orphan pods still exist after 
TearDownNamespace() (#754)
    
    Closes: #754
    
    Signed-off-by: Craig Condit <[email protected]>
---
 test/e2e/framework/helpers/k8s/k8s_utils.go | 203 +++++++++++++++++++++++++++-
 1 file changed, 202 insertions(+), 1 deletion(-)

diff --git a/test/e2e/framework/helpers/k8s/k8s_utils.go 
b/test/e2e/framework/helpers/k8s/k8s_utils.go
index fc651f10..6d3f9fc2 100644
--- a/test/e2e/framework/helpers/k8s/k8s_utils.go
+++ b/test/e2e/framework/helpers/k8s/k8s_utils.go
@@ -165,6 +165,18 @@ func (k *KubeCtl) GetPodsByOptions(options 
metav1.ListOptions) (*v1.PodList, err
        return k.clientSet.CoreV1().Pods("").List(context.TODO(), options)
 }
 
+func (k *KubeCtl) GetDeployments(namespace string) (*appsv1.DeploymentList, 
error) {
+       return k.clientSet.AppsV1().Deployments(namespace).List(context.TODO(), 
metav1.ListOptions{})
+}
+
+func (k *KubeCtl) GetDaemonSets(namespace string) (*appsv1.DaemonSetList, 
error) {
+       return k.clientSet.AppsV1().DaemonSets(namespace).List(context.TODO(), 
metav1.ListOptions{})
+}
+
+func (k *KubeCtl) GetStatefulSets(namespace string) (*appsv1.StatefulSetList, 
error) {
+       return 
k.clientSet.AppsV1().StatefulSets(namespace).List(context.TODO(), 
metav1.ListOptions{})
+}
+
 func (k *KubeCtl) GetJobs(namespace string) (*batchv1.JobList, error) {
        return k.clientSet.BatchV1().Jobs(namespace).List(context.TODO(), 
metav1.ListOptions{})
 }
@@ -226,6 +238,54 @@ func (k *KubeCtl) GetPodNamesFromNS(namespace string) 
([]string, error) {
        return s, nil
 }
 
+func (k *KubeCtl) GetDeploymentNamesFromNS(namespace string) ([]string, error) 
{
+       var s []string
+       deployments, err := k.GetDeployments(namespace)
+       if err != nil {
+               return nil, err
+       }
+       for _, each := range deployments.Items {
+               s = append(s, each.Name)
+       }
+       return s, nil
+}
+
+func (k *KubeCtl) GetDaemonSetNamesFromNS(namespace string) ([]string, error) {
+       var s []string
+       daemonSets, err := k.GetDaemonSets(namespace)
+       if err != nil {
+               return nil, err
+       }
+       for _, each := range daemonSets.Items {
+               s = append(s, each.Name)
+       }
+       return s, nil
+}
+
+func (k *KubeCtl) GetReplicaSetNamesFromNS(namespace string) ([]string, error) 
{
+       var s []string
+       replicaSets, err := k.GetReplicaSets(namespace)
+       if err != nil {
+               return nil, err
+       }
+       for _, each := range replicaSets.Items {
+               s = append(s, each.Name)
+       }
+       return s, nil
+}
+
+func (k *KubeCtl) GetStatefulSetNamesFromNS(namespace string) ([]string, 
error) {
+       var s []string
+       statefulSets, err := k.GetStatefulSets(namespace)
+       if err != nil {
+               return nil, err
+       }
+       for _, each := range statefulSets.Items {
+               s = append(s, each.Name)
+       }
+       return s, nil
+}
+
 func (k *KubeCtl) GetJobNamesFromNS(namespace string) ([]string, error) {
        var s []string
        jobs, err := k.GetJobs(namespace)
@@ -391,7 +451,38 @@ func (k *KubeCtl) DeleteNamespace(namespace string) error {
 }
 
 func (k *KubeCtl) TearDownNamespace(namespace string) error {
-       err := k.DeletePods(namespace)
+       var err error
+       err = k.DeleteDeployments(namespace)
+       if err != nil {
+               return err
+       }
+
+       err = k.DeleteDaemonSets(namespace)
+       if err != nil {
+               return err
+       }
+
+       err = k.DeleteReplicaSets(namespace)
+       if err != nil {
+               return err
+       }
+
+       err = k.DeleteStatefulSets(namespace)
+       if err != nil {
+               return err
+       }
+
+       err = k.DeleteJobs(namespace)
+       if err != nil {
+               return err
+       }
+
+       err = k.DeletePods(namespace)
+       if err != nil {
+               return err
+       }
+
+       err = k.DeletePVCs(namespace)
        if err != nil {
                return err
        }
@@ -400,6 +491,116 @@ func (k *KubeCtl) TearDownNamespace(namespace string) 
error {
        return k.clientSet.CoreV1().Namespaces().Delete(context.TODO(), 
namespace, metav1.DeleteOptions{})
 }
 
+func (k *KubeCtl) DeleteDeployments(namespace string) error {
+       // Delete all Deployment in namespace
+       var deployments, err = k.GetDeploymentNamesFromNS(namespace)
+       if err != nil {
+               return err
+       }
+       for _, each := range deployments {
+               err = k.DeleteDeployment(each, namespace)
+               if err != nil {
+                       if statusErr, ok := err.(*k8serrors.StatusError); ok {
+                               if statusErr.ErrStatus.Reason == 
metav1.StatusReasonNotFound {
+                                       fmt.Fprintf(ginkgo.GinkgoWriter, 
"Failed to delete Deployment %s - reason is %s, it "+
+                                               "has been deleted in the 
meantime\n", each, statusErr.ErrStatus.Reason)
+                                       continue
+                               }
+                       }
+                       return err
+               }
+       }
+       return nil
+}
+
+func (k *KubeCtl) DeleteDaemonSets(namespace string) error {
+       // Delete all DaemonSet in namespace
+       var daemonSets, err = k.GetDaemonSetNamesFromNS(namespace)
+       if err != nil {
+               return err
+       }
+       for _, each := range daemonSets {
+               err = k.DeleteDaemonSet(each, namespace)
+               if err != nil {
+                       if statusErr, ok := err.(*k8serrors.StatusError); ok {
+                               if statusErr.ErrStatus.Reason == 
metav1.StatusReasonNotFound {
+                                       fmt.Fprintf(ginkgo.GinkgoWriter, 
"Failed to delete DaemonSet %s - reason is %s, it "+
+                                               "has been deleted in the 
meantime\n", each, statusErr.ErrStatus.Reason)
+                                       continue
+                               }
+                       }
+                       return err
+               }
+       }
+       return nil
+}
+
+func (k *KubeCtl) DeleteReplicaSets(namespace string) error {
+       // Delete all ReplicaSet in namespace
+       var replicaSets, err = k.GetReplicaSetNamesFromNS(namespace)
+       if err != nil {
+               return err
+       }
+       for _, each := range replicaSets {
+               err = k.DeleteReplicaSet(each, namespace)
+               if err != nil {
+                       if statusErr, ok := err.(*k8serrors.StatusError); ok {
+                               if statusErr.ErrStatus.Reason == 
metav1.StatusReasonNotFound {
+                                       fmt.Fprintf(ginkgo.GinkgoWriter, 
"Failed to delete ReplicaSet %s - reason is %s, it "+
+                                               "has been deleted in the 
meantime\n", each, statusErr.ErrStatus.Reason)
+                                       continue
+                               }
+                       }
+                       return err
+               }
+       }
+       return nil
+}
+
+func (k *KubeCtl) DeleteStatefulSets(namespace string) error {
+       // Delete all StatefulSet in namespace
+       var statefulSets, err = k.GetStatefulSetNamesFromNS(namespace)
+       if err != nil {
+               return err
+       }
+       for _, each := range statefulSets {
+               err = k.DeleteStatefulSet(each, namespace)
+               if err != nil {
+                       if statusErr, ok := err.(*k8serrors.StatusError); ok {
+                               if statusErr.ErrStatus.Reason == 
metav1.StatusReasonNotFound {
+                                       fmt.Fprintf(ginkgo.GinkgoWriter, 
"Failed to delete StatefulSet %s - reason is %s, it "+
+                                               "has been deleted in the 
meantime\n", each, statusErr.ErrStatus.Reason)
+                                       continue
+                               }
+                       }
+                       return err
+               }
+       }
+       return nil
+}
+
+func (k *KubeCtl) DeleteJobs(namespace string) error {
+       // Delete all jobs
+       var jobs, err = k.GetJobNamesFromNS(namespace)
+       if err != nil {
+               return err
+       }
+       for _, each := range jobs {
+               err = k.DeleteJob(each, namespace)
+               if err != nil {
+                       if statusErr, ok := err.(*k8serrors.StatusError); ok {
+                               if statusErr.ErrStatus.Reason == 
metav1.StatusReasonNotFound {
+                                       fmt.Fprintf(ginkgo.GinkgoWriter, 
"Failed to delete job %s - reason is %s, it "+
+                                               "has been deleted in the 
meantime\n", each, statusErr.ErrStatus.Reason)
+                                       continue
+                               }
+                       }
+                       return err
+               }
+       }
+       return nil
+}
+
 func (k *KubeCtl) DeletePods(namespace string) error {
        // Delete all pods
        var pods, err = k.GetPodNamesFromNS(namespace)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to