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

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new b6115687ad0 Extra tests for db cleanup and fix cronjob image secrets 
(#58626)
b6115687ad0 is described below

commit b6115687ad0d4a0a59e7674601987bf9cb721184
Author: Ronaldo Campos <[email protected]>
AuthorDate: Tue Nov 25 20:00:28 2025 +0000

    Extra tests for db cleanup and fix cronjob image secrets (#58626)
---
 .../database-cleanup/database-cleanup-cronjob.yaml |  5 +---
 .../helm_tests/airflow_aux/test_airflow_common.py  | 20 +++++++++-----
 .../helm_tests/airflow_aux/test_annotations.py     | 30 +++++++++++++++++++++
 .../airflow_aux/test_basic_helm_chart.py           |  6 +++++
 helm-tests/tests/helm_tests/security/test_rbac.py  | 31 ++++++++++++++++++++++
 5 files changed, 82 insertions(+), 10 deletions(-)

diff --git a/chart/templates/database-cleanup/database-cleanup-cronjob.yaml 
b/chart/templates/database-cleanup/database-cleanup-cronjob.yaml
index 12e563284b8..78e4e61abd7 100644
--- a/chart/templates/database-cleanup/database-cleanup-cronjob.yaml
+++ b/chart/templates/database-cleanup/database-cleanup-cronjob.yaml
@@ -85,10 +85,7 @@ spec:
           tolerations: {{- toYaml $tolerations | nindent 12 }}
           topologySpreadConstraints: {{- toYaml $topologySpreadConstraints | 
nindent 12 }}
           serviceAccountName: {{ include "databaseCleanup.serviceAccountName" 
. }}
-          {{- if or .Values.registry.secretName .Values.registry.connection }}
-          imagePullSecrets:
-            - name: {{ template "registry_secret" . }}
-          {{- end }}
+          imagePullSecrets: {{- include "image_pull_secrets" . | nindent 12 }}
           securityContext: {{ $securityContext | nindent 12 }}
           containers:
             - name: database-cleanup
diff --git a/helm-tests/tests/helm_tests/airflow_aux/test_airflow_common.py 
b/helm-tests/tests/helm_tests/airflow_aux/test_airflow_common.py
index dac2f458242..5c0f4c8b8f1 100644
--- a/helm-tests/tests/helm_tests/airflow_aux/test_airflow_common.py
+++ b/helm-tests/tests/helm_tests/airflow_aux/test_airflow_common.py
@@ -194,6 +194,7 @@ class TestAirflowCommon:
             values={
                 "airflowPodAnnotations": {"test-annotation/safe-to-evict": 
"true"},
                 "cleanup": {"enabled": True},
+                "databaseCleanup": {"enabled": True},
                 "flower": {"enabled": True},
                 "dagProcessor": {"enabled": True},
             },
@@ -206,11 +207,12 @@ class TestAirflowCommon:
                 "templates/triggerer/triggerer-deployment.yaml",
                 "templates/dag-processor/dag-processor-deployment.yaml",
                 "templates/cleanup/cleanup-cronjob.yaml",
+                "templates/database-cleanup/database-cleanup-cronjob.yaml",
             ],
         )
 
-        # Objects in show_only are 8 but only one of Webserver or API server 
is created so we have 7 objects
-        assert len(k8s_objects) == 7
+        # Objects in show_only are 9 but only one of Webserver or API server 
is created so we have 8 objects
+        assert len(k8s_objects) == 8
 
         for k8s_object in k8s_objects:
             if k8s_object["kind"] == "CronJob":
@@ -226,6 +228,7 @@ class TestAirflowCommon:
         k8s_objects = render_chart(
             values={
                 "cleanup": {"enabled": True},
+                "databaseCleanup": {"enabled": True},
                 "flower": {"enabled": True},
                 "pgbouncer": {"enabled": True},
                 "dagProcessor": {"enabled": True},
@@ -257,6 +260,7 @@ class TestAirflowCommon:
             },
             show_only=[
                 "templates/cleanup/cleanup-cronjob.yaml",
+                "templates/database-cleanup/database-cleanup-cronjob.yaml",
                 "templates/flower/flower-deployment.yaml",
                 "templates/jobs/create-user-job.yaml",
                 "templates/jobs/migrate-database-job.yaml",
@@ -272,8 +276,8 @@ class TestAirflowCommon:
             ],
         )
 
-        # Objects in show_only are 13 but only one of Webserver or API server 
is created so we have 12 objects
-        assert len(k8s_objects) == 12
+        # Objects in show_only are 14 but only one of Webserver or API server 
is created so we have 13 objects
+        assert len(k8s_objects) == 13
 
         for k8s_object in k8s_objects:
             if k8s_object["kind"] == "CronJob":
@@ -464,6 +468,7 @@ class TestAirflowCommon:
                 "webserver": {"priorityClassName": "low-priority-webserver"},
                 "workers": {"priorityClassName": "low-priority-worker"},
                 "cleanup": {"enabled": True, "priorityClassName": 
"low-priority-airflow-cleanup-pods"},
+                "databaseCleanup": {"enabled": True, "priorityClassName": 
"low-priority-database-cleanup"},
                 "migrateDatabaseJob": {"priorityClassName": 
"low-priority-run-airflow-migrations"},
                 "createUserJob": {"priorityClassName": 
"low-priority-create-user-job"},
             },
@@ -477,15 +482,16 @@ class TestAirflowCommon:
                 "templates/webserver/webserver-deployment.yaml",
                 "templates/workers/worker-deployment.yaml",
                 "templates/cleanup/cleanup-cronjob.yaml",
+                "templates/database-cleanup/database-cleanup-cronjob.yaml",
                 "templates/jobs/migrate-database-job.yaml",
                 "templates/jobs/create-user-job.yaml",
             ],
         )
 
-        assert len(docs) == 10
+        assert len(docs) == 11
         for doc in docs:
             component = doc["metadata"]["labels"]["component"]
-            if component == "airflow-cleanup-pods":
+            if component in ["airflow-cleanup-pods", "database-cleanup"]:
                 priority = 
doc["spec"]["jobTemplate"]["spec"]["template"]["spec"]["priorityClassName"]
             else:
                 priority = doc["spec"]["template"]["spec"]["priorityClassName"]
@@ -525,6 +531,7 @@ class TestAirflowCommon:
                 "flower": {"enabled": True},
                 "pgbouncer": {"enabled": True},
                 "cleanup": {"enabled": True},
+                "databaseCleanup": {"enabled": True},
             },
             show_only=[
                 "templates/flower/flower-deployment.yaml",
@@ -536,6 +543,7 @@ class TestAirflowCommon:
                 "templates/webserver/webserver-deployment.yaml",
                 "templates/workers/worker-deployment.yaml",
                 "templates/cleanup/cleanup-cronjob.yaml",
+                "templates/database-cleanup/database-cleanup-cronjob.yaml",
                 "templates/jobs/migrate-database-job.yaml",
                 "templates/jobs/create-user-job.yaml",
             ],
diff --git a/helm-tests/tests/helm_tests/airflow_aux/test_annotations.py 
b/helm-tests/tests/helm_tests/airflow_aux/test_annotations.py
index 50891fe65d0..a8bcacb60e2 100644
--- a/helm-tests/tests/helm_tests/airflow_aux/test_annotations.py
+++ b/helm-tests/tests/helm_tests/airflow_aux/test_annotations.py
@@ -56,6 +56,22 @@ class TestServiceAccountAnnotations:
                     "example": "cleanup",
                 },
             ),
+            (
+                {
+                    "databaseCleanup": {
+                        "enabled": True,
+                        "serviceAccount": {
+                            "annotations": {
+                                "example": "database-cleanup",
+                            },
+                        },
+                    },
+                },
+                
"templates/database-cleanup/database-cleanup-serviceaccount.yaml",
+                {
+                    "example": "database-cleanup",
+                },
+            ),
             (
                 {
                     "scheduler": {
@@ -446,6 +462,20 @@ class TestServiceAccountAnnotations:
                 "example": "cleanup",
             },
         ),
+        (
+            {
+                "databaseCleanup": {
+                    "enabled": True,
+                    "podAnnotations": {
+                        "example": "database-cleanup",
+                    },
+                }
+            },
+            "templates/database-cleanup/database-cleanup-cronjob.yaml",
+            {
+                "example": "database-cleanup",
+            },
+        ),
         (
             {
                 "redis": {
diff --git a/helm-tests/tests/helm_tests/airflow_aux/test_basic_helm_chart.py 
b/helm-tests/tests/helm_tests/airflow_aux/test_basic_helm_chart.py
index 08fe577ef2e..5fc22f00feb 100644
--- a/helm-tests/tests/helm_tests/airflow_aux/test_basic_helm_chart.py
+++ b/helm-tests/tests/helm_tests/airflow_aux/test_basic_helm_chart.py
@@ -411,6 +411,7 @@ class TestBaseChartTest:
             "ingress": {"enabled": True},
             "networkPolicies": {"enabled": True},
             "cleanup": {"enabled": True},
+            "databaseCleanup": {"enabled": True},
             "flower": {"enabled": True},
             "dagProcessor": {"enabled": True},
             "logs": {"persistence": {"enabled": True}},
@@ -429,6 +430,7 @@ class TestBaseChartTest:
 
         kind_names_tuples = [
             (f"{release_name}-airflow-cleanup", "ServiceAccount", 
"airflow-cleanup-pods"),
+            (f"{release_name}-airflow-database-cleanup", "ServiceAccount", 
"database-cleanup"),
             (f"{release_name}-config", "ConfigMap", "config"),
             (f"{release_name}-airflow-create-user-job", "ServiceAccount", 
"create-user-job"),
             (f"{release_name}-airflow-flower", "ServiceAccount", "flower"),
@@ -446,6 +448,9 @@ class TestBaseChartTest:
             (f"{release_name}-cleanup", "CronJob", "airflow-cleanup-pods"),
             (f"{release_name}-cleanup-role", "Role", None),
             (f"{release_name}-cleanup-rolebinding", "RoleBinding", None),
+            (f"{release_name}-database-cleanup", "CronJob", 
"database-cleanup"),
+            (f"{release_name}-database-cleanup-role", "Role", None),
+            (f"{release_name}-database-cleanup-rolebinding", "RoleBinding", 
None),
             (f"{release_name}-create-user", "Job", "create-user-job"),
             (f"{release_name}-fernet-key", "Secret", None),
             (f"{release_name}-flower", "Deployment", "flower"),
@@ -532,6 +537,7 @@ class TestBaseChartTest:
                 "redis": {"enabled": True},
                 "networkPolicies": {"enabled": True},
                 "cleanup": {"enabled": True},
+                "databaseCleanup": {"enabled": True},
                 "flower": {"enabled": True},
                 "postgresql": {"enabled": False},  # We won't check the 
objects created by the postgres chart
             },
diff --git a/helm-tests/tests/helm_tests/security/test_rbac.py 
b/helm-tests/tests/helm_tests/security/test_rbac.py
index 819483459b3..6ddd078e726 100644
--- a/helm-tests/tests/helm_tests/security/test_rbac.py
+++ b/helm-tests/tests/helm_tests/security/test_rbac.py
@@ -50,15 +50,18 @@ DEPLOYMENT_NO_RBAC_NO_SA_KIND_NAME_TUPLES = [
     ("Job", "test-rbac-create-user"),
     ("Job", "test-rbac-run-airflow-migrations"),
     ("CronJob", "test-rbac-cleanup"),
+    ("CronJob", "test-rbac-database-cleanup"),
 ]
 
 RBAC_ENABLED_KIND_NAME_TUPLES = [
     ("Role", "test-rbac-pod-launcher-role"),
     ("Role", "test-rbac-cleanup-role"),
+    ("Role", "test-rbac-database-cleanup-role"),
     ("Role", "test-rbac-pod-log-reader-role"),
     ("RoleBinding", "test-rbac-pod-launcher-rolebinding"),
     ("RoleBinding", "test-rbac-pod-log-reader-rolebinding"),
     ("RoleBinding", "test-rbac-cleanup-rolebinding"),
+    ("RoleBinding", "test-rbac-database-cleanup-rolebinding"),
 ]
 
 SERVICE_ACCOUNT_NAME_TUPLES = [
@@ -66,6 +69,7 @@ SERVICE_ACCOUNT_NAME_TUPLES = [
     ("ServiceAccount", "test-rbac-scheduler"),
     ("ServiceAccount", "test-rbac-triggerer"),
     ("ServiceAccount", "test-rbac-pgbouncer"),
+    ("ServiceAccount", "test-rbac-database-cleanup"),
     ("ServiceAccount", "test-rbac-flower"),
     ("ServiceAccount", "test-rbac-statsd"),
     ("ServiceAccount", "test-rbac-create-user-job"),
@@ -80,6 +84,7 @@ CUSTOM_SERVICE_ACCOUNT_NAMES = (
     (CUSTOM_WORKER_NAME := "TestWorker"),
     (CUSTOM_TRIGGERER_NAME := "TestTriggerer"),
     (CUSTOM_CLEANUP_NAME := "TestCleanup"),
+    (CUSTOM_DATABASE_CLEANUP_NAME := "TestDatabaseCleanup"),
     (CUSTOM_FLOWER_NAME := "TestFlower"),
     (CUSTOM_PGBOUNCER_NAME := "TestPGBouncer"),
     (CUSTOM_STATSD_NAME := "TestStatsd"),
@@ -174,6 +179,12 @@ class TestRBAC:
                             "create": False,
                         },
                     },
+                    "databaseCleanup": {
+                        "enabled": True,
+                        "serviceAccount": {
+                            "create": False,
+                        },
+                    },
                     "pgbouncer": {
                         "enabled": True,
                         "serviceAccount": {
@@ -211,6 +222,7 @@ class TestRBAC:
                     "executor": "CeleryExecutor,KubernetesExecutor",
                     "rbac": {"create": False},
                     "cleanup": {"enabled": True},
+                    "databaseCleanup": {"enabled": True},
                     "flower": {"enabled": True},
                     "pgbouncer": {"enabled": True},
                     "workers": {"useWorkerDedicatedServiceAccounts": 
dedicated_workers_sa},
@@ -252,6 +264,12 @@ class TestRBAC:
                             "create": False,
                         },
                     },
+                    "databaseCleanup": {
+                        "enabled": True,
+                        "serviceAccount": {
+                            "create": False,
+                        },
+                    },
                     "scheduler": {"serviceAccount": {"create": False}},
                     "dagProcessor": {"serviceAccount": {"create": False}},
                     "webserver": {"serviceAccount": {"create": False}},
@@ -289,6 +307,7 @@ class TestRBAC:
                     "fullnameOverride": "test-rbac",
                     "executor": "CeleryExecutor,KubernetesExecutor",
                     "cleanup": {"enabled": True},
+                    "databaseCleanup": {"enabled": True},
                     "flower": {"enabled": True},
                     "pgbouncer": {"enabled": True},
                     "workers": {"useWorkerDedicatedServiceAccounts": 
dedicated_workers_sa},
@@ -318,6 +337,12 @@ class TestRBAC:
                         "name": CUSTOM_CLEANUP_NAME,
                     },
                 },
+                "databaseCleanup": {
+                    "enabled": True,
+                    "serviceAccount": {
+                        "name": CUSTOM_DATABASE_CLEANUP_NAME,
+                    },
+                },
                 "scheduler": {"serviceAccount": {"name": 
CUSTOM_SCHEDULER_NAME}},
                 "dagProcessor": {"serviceAccount": {"name": 
CUSTOM_DAG_PROCESSOR_NAME}},
                 "apiServer": {"serviceAccount": {"name": 
CUSTOM_API_SERVER_NAME}},
@@ -396,6 +421,12 @@ class TestRBAC:
                         "name": CUSTOM_CLEANUP_NAME,
                     },
                 },
+                "databaseCleanup": {
+                    "enabled": True,
+                    "serviceAccount": {
+                        "name": CUSTOM_DATABASE_CLEANUP_NAME,
+                    },
+                },
                 "scheduler": {"serviceAccount": {"name": 
CUSTOM_SCHEDULER_NAME}},
                 "dagProcessor": {"serviceAccount": {"name": 
CUSTOM_DAG_PROCESSOR_NAME}},
                 "apiServer": {"serviceAccount": {"name": 
CUSTOM_API_SERVER_NAME}},

Reply via email to