From a739b988981dcf7d103a09a3c37b989939c01046 Mon Sep 17 00:00:00 2001 From: "Giau. Tran Minh" <12751435+giautm@users.noreply.github.com> Date: Tue, 1 Oct 2024 23:48:07 +0700 Subject: [PATCH] devdb: fixed pod conflict when the resource same has name cross ns (#191) --- .github/workflows/integration.yaml | 1 + internal/controller/devdb.go | 25 +++++++++++++++---------- test/e2e/e2e_test.go | 2 ++ 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/.github/workflows/integration.yaml b/.github/workflows/integration.yaml index 61cc6ea..0c2b044 100644 --- a/.github/workflows/integration.yaml +++ b/.github/workflows/integration.yaml @@ -31,6 +31,7 @@ jobs: - name: Run e2e tests run: | make docker-build test-e2e \ + ATLAS_TOKEN=${{ secrets.ATLAS_TOKEN }} \ IMG=ariga/atlas-operator:e2e \ KIND_CLUSTER=chart-testing test: diff --git a/internal/controller/devdb.go b/internal/controller/devdb.go index 8bdffa4..fc474ba 100644 --- a/internal/controller/devdb.go +++ b/internal/controller/devdb.go @@ -73,10 +73,10 @@ func newDevDB(mgr Manager, r record.EventRecorder, prewarm bool) *devDBReconcile // cleanUp clean up any resources created by the controller func (r *devDBReconciler) cleanUp(ctx context.Context, sc client.Object) { + key := nameDevDB(sc) // If prewarmDevDB is false, scale down the deployment to 0 if !r.prewarm { deploy := &appsv1.Deployment{} - key := nameDevDB(sc) err := r.Get(ctx, key, deploy) if err != nil { r.recorder.Eventf(sc, corev1.EventTypeWarning, "CleanUpDevDB", "Error getting devDB deployment: %v", err) @@ -90,11 +90,14 @@ func (r *devDBReconciler) cleanUp(ctx context.Context, sc client.Object) { } // delete pods to clean up pods := &corev1.PodList{} - err := r.List(ctx, pods, client.MatchingLabels(map[string]string{ - labelInstance: nameDevDB(sc).Name, - })) - if err != nil { + if err := r.List(ctx, pods, + client.InNamespace(key.Namespace), + client.MatchingLabels(map[string]string{ + labelInstance: key.Name, + }), + ); err != nil { r.recorder.Eventf(sc, corev1.EventTypeWarning, "CleanUpDevDB", "Error listing devDB pods: %v", err) + return } for _, p := range pods.Items { if err := r.Delete(ctx, &p); err != nil { @@ -146,11 +149,13 @@ func (r *devDBReconciler) devURL(ctx context.Context, sc client.Object, targetUR return "", err } pods := &corev1.PodList{} - err := r.List(ctx, pods, client.MatchingLabels(map[string]string{ - labelEngine: drv, - labelInstance: key.Name, - })) - switch { + switch err := r.List(ctx, pods, + client.InNamespace(key.Namespace), + client.MatchingLabels(map[string]string{ + labelEngine: drv, + labelInstance: key.Name, + }), + ); { case err != nil: return "", transient(err) case len(pods.Items) == 0: diff --git a/test/e2e/e2e_test.go b/test/e2e/e2e_test.go index 12d1dd4..e4bb9b4 100644 --- a/test/e2e/e2e_test.go +++ b/test/e2e/e2e_test.go @@ -70,6 +70,8 @@ func TestOperator(t *testing.T) { Dir: filepath.Join("testdata", "atlas-schema"), Setup: func(e *testscript.Env) (err error) { e.Setenv("CONTROLLER", "deployment/atlas-operator-controller-manager") + // Sharing the atlas token with the test + e.Setenv("ATLAS_TOKEN", os.Getenv("ATLAS_TOKEN")) // Ensure the test in running in the right kube context e.Setenv("KUBECONFIG", kubeconfig) // Creating a namespace for the test