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]