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

jscheffl pushed a commit to branch chart/v1-2x-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/chart/v1-2x-test by this push:
     new 8018e5a3d25 [chart/v1-2x-test] fix(helm-chart): fix go-template if 
statements for log groomer retention values (#66012) (#66050)
8018e5a3d25 is described below

commit 8018e5a3d25473d22c66fa3bfcd59d191e2bdc3e
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Apr 28 23:50:37 2026 +0200

    [chart/v1-2x-test] fix(helm-chart): fix go-template if statements for log 
groomer retention values (#66012) (#66050)
    
    * fix(helm-chart): fix go-template if statements for log groomer retention 
values
    
    * refactor(helm-chart): simplify go-template if statements for log groomer 
retention values as empty string is already excluded via JSON schema
    
    * test(helm-chart): fix log groomer helm-tests by adding test for 
logGroomerSidecar.retentionMinutes
    (cherry picked from commit 56b364bd2561583204a7d29739fcb36358c70348)
    
    Co-authored-by: n-badtke-cg <[email protected]>
---
 chart/templates/NOTES.txt                          | 10 +++---
 .../dag-processor/dag-processor-deployment.yaml    |  4 +--
 .../templates/scheduler/scheduler-deployment.yaml  |  4 +--
 .../templates/triggerer/triggerer-deployment.yaml  |  4 +--
 chart/templates/workers/worker-deployment.yaml     |  4 +--
 chart/values.schema.json                           | 18 ++++++----
 helm-tests/tests/chart_utils/log_groomer.py        | 42 ++++++++++++++++++++--
 7 files changed, 64 insertions(+), 22 deletions(-)

diff --git a/chart/templates/NOTES.txt b/chart/templates/NOTES.txt
index 57d94edf22c..7ae67ff09cf 100644
--- a/chart/templates/NOTES.txt
+++ b/chart/templates/NOTES.txt
@@ -861,7 +861,7 @@ DEPRECATION WARNING:
 
 {{- end }}
 
-{{- if ne (int .Values.workers.logGroomerSidecar.retentionDays) 15 }}
+{{- if ne .Values.workers.logGroomerSidecar.retentionDays nil }}
 
  DEPRECATION WARNING:
     `workers.logGroomerSidecar.retentionDays` has been renamed to 
`workers.celery.logGroomerSidecar.retentionDays`.
@@ -869,7 +869,7 @@ DEPRECATION WARNING:
 
 {{- end }}
 
-{{- if ne (int .Values.workers.logGroomerSidecar.retentionMinutes) 0 }}
+{{- if ne .Values.workers.logGroomerSidecar.retentionMinutes nil }}
 
  DEPRECATION WARNING:
     `workers.logGroomerSidecar.retentionMinutes` has been renamed to 
`workers.celery.logGroomerSidecar.retentionMinutes`.
@@ -877,7 +877,7 @@ DEPRECATION WARNING:
 
 {{- end }}
 
-{{- if ne (int .Values.workers.logGroomerSidecar.frequencyMinutes) 15 }}
+{{- if ne .Values.workers.logGroomerSidecar.frequencyMinutes nil }}
 
  DEPRECATION WARNING:
     `workers.logGroomerSidecar.frequencyMinutes` has been renamed to 
`workers.celery.logGroomerSidecar.frequencyMinutes`.
@@ -885,7 +885,7 @@ DEPRECATION WARNING:
 
 {{- end }}
 
-{{- if ne (int .Values.workers.logGroomerSidecar.maxSizeBytes) 0 }}
+{{- if ne .Values.workers.logGroomerSidecar.maxSizeBytes nil }}
 
  DEPRECATION WARNING:
     `workers.logGroomerSidecar.maxSizeBytes` has been renamed to 
`workers.celery.logGroomerSidecar.maxSizeBytes`.
@@ -893,7 +893,7 @@ DEPRECATION WARNING:
 
 {{- end }}
 
-{{- if ne (int .Values.workers.logGroomerSidecar.maxSizePercent) 0 }}
+{{- if ne .Values.workers.logGroomerSidecar.maxSizePercent nil }}
 
  DEPRECATION WARNING:
     `workers.logGroomerSidecar.maxSizePercent` has been renamed to 
`workers.celery.logGroomerSidecar.maxSizePercent`.
diff --git a/chart/templates/dag-processor/dag-processor-deployment.yaml 
b/chart/templates/dag-processor/dag-processor-deployment.yaml
index f2286315bf4..f228d0b7ef5 100644
--- a/chart/templates/dag-processor/dag-processor-deployment.yaml
+++ b/chart/templates/dag-processor/dag-processor-deployment.yaml
@@ -210,11 +210,11 @@ spec:
           args: {{- tpl (toYaml .Values.dagProcessor.logGroomerSidecar.args) . 
| nindent 12 }}
           {{- end }}
           env:
-          {{- if .Values.dagProcessor.logGroomerSidecar.retentionDays }}
+          {{- if ne .Values.dagProcessor.logGroomerSidecar.retentionDays nil }}
             - name: AIRFLOW__LOG_RETENTION_DAYS
               value: "{{ .Values.dagProcessor.logGroomerSidecar.retentionDays 
}}"
           {{- end }}
-          {{- if .Values.dagProcessor.logGroomerSidecar.retentionMinutes }}
+          {{- if ne .Values.dagProcessor.logGroomerSidecar.retentionMinutes 
nil }}
             - name: AIRFLOW__LOG_RETENTION_MINUTES
               value: "{{ 
.Values.dagProcessor.logGroomerSidecar.retentionMinutes }}"
           {{- end }}
diff --git a/chart/templates/scheduler/scheduler-deployment.yaml 
b/chart/templates/scheduler/scheduler-deployment.yaml
index 4371b09beb2..650fbdc315a 100644
--- a/chart/templates/scheduler/scheduler-deployment.yaml
+++ b/chart/templates/scheduler/scheduler-deployment.yaml
@@ -282,11 +282,11 @@ spec:
           env:
             - name: AIRFLOW_HOME
               value: "{{ .Values.airflowHome }}"
-          {{- if .Values.scheduler.logGroomerSidecar.retentionDays }}
+          {{- if ne .Values.scheduler.logGroomerSidecar.retentionDays nil }}
             - name: AIRFLOW__LOG_RETENTION_DAYS
               value: "{{ .Values.scheduler.logGroomerSidecar.retentionDays }}"
           {{- end }}
-          {{- if .Values.scheduler.logGroomerSidecar.retentionMinutes }}
+          {{- if ne .Values.scheduler.logGroomerSidecar.retentionMinutes nil }}
             - name: AIRFLOW__LOG_RETENTION_MINUTES
               value: "{{ .Values.scheduler.logGroomerSidecar.retentionMinutes 
}}"
           {{- end }}
diff --git a/chart/templates/triggerer/triggerer-deployment.yaml 
b/chart/templates/triggerer/triggerer-deployment.yaml
index fa7a90c033f..b7f50ad4925 100644
--- a/chart/templates/triggerer/triggerer-deployment.yaml
+++ b/chart/templates/triggerer/triggerer-deployment.yaml
@@ -241,11 +241,11 @@ spec:
           args: {{- tpl (toYaml .Values.triggerer.logGroomerSidecar.args) . | 
nindent 12 }}
           {{- end }}
           env:
-          {{- if .Values.triggerer.logGroomerSidecar.retentionDays }}
+          {{- if ne .Values.triggerer.logGroomerSidecar.retentionDays nil }}
             - name: AIRFLOW__LOG_RETENTION_DAYS
               value: "{{ .Values.triggerer.logGroomerSidecar.retentionDays }}"
           {{- end }}
-          {{- if .Values.triggerer.logGroomerSidecar.retentionMinutes }}
+          {{- if ne .Values.triggerer.logGroomerSidecar.retentionMinutes nil }}
             - name: AIRFLOW__LOG_RETENTION_MINUTES
               value: "{{ .Values.triggerer.logGroomerSidecar.retentionMinutes 
}}"
           {{- end }}
diff --git a/chart/templates/workers/worker-deployment.yaml 
b/chart/templates/workers/worker-deployment.yaml
index 92f30253b23..58879077e7c 100644
--- a/chart/templates/workers/worker-deployment.yaml
+++ b/chart/templates/workers/worker-deployment.yaml
@@ -364,11 +364,11 @@ spec:
           args: {{ tpl (toYaml .Values.workers.logGroomerSidecar.args) . | 
nindent 12 }}
           {{- end }}
           env:
-          {{- if .Values.workers.logGroomerSidecar.retentionDays }}
+          {{- if ne .Values.workers.logGroomerSidecar.retentionDays nil }}
             - name: AIRFLOW__LOG_RETENTION_DAYS
               value: "{{ .Values.workers.logGroomerSidecar.retentionDays }}"
           {{- end }}
-          {{- if .Values.workers.logGroomerSidecar.retentionMinutes }}
+          {{- if ne .Values.workers.logGroomerSidecar.retentionMinutes nil }}
             - name: AIRFLOW__LOG_RETENTION_MINUTES
               value: "{{ .Values.workers.logGroomerSidecar.retentionMinutes }}"
           {{- end }}
diff --git a/chart/values.schema.json b/chart/values.schema.json
index c85923b2120..05ff1a99eaa 100644
--- a/chart/values.schema.json
+++ b/chart/values.schema.json
@@ -2478,12 +2478,14 @@
                         "retentionDays": {
                             "description": "Number of days to retain the logs 
when running the Airflow log groomer sidecar (deprecated, use 
``workers.celery.logGroomerSidecar.retentionDays`` instead). Total retention 
time is ``retentionDays`` + ``retentionMinutes``.",
                             "type": "integer",
-                            "default": 15
+                            "default": 15,
+                            "minimum": 0
                         },
                         "retentionMinutes": {
                             "description": "Number of minutes to retain the 
logs when running the Airflow log groomer sidecar (deprecated, use 
``workers.celery.logGroomerSidecar.retentionMinutes`` instead). Total retention 
time is ``retentionDays`` + ``retentionMinutes``.",
                             "type": "integer",
-                            "default": 0
+                            "default": 0,
+                            "minimum": 0
                         },
                         "frequencyMinutes": {
                             "description": "Number of minutes between attempts 
to groom the Airflow logs in log groomer sidecar (deprecated, use 
``workers.celery.logGroomerSidecar.frequencyMinutes`` instead).",
@@ -3710,7 +3712,8 @@
                                         "integer",
                                         "null"
                                     ],
-                                    "default": null
+                                    "default": null,
+                                    "minimum": 0
                                 },
                                 "retentionMinutes": {
                                     "description": "Number of minutes to 
retain the logs when running the Airflow log groomer sidecar. Total retention 
time is ``retentionDays`` + ``retentionMinutes``.",
@@ -3718,7 +3721,8 @@
                                         "integer",
                                         "null"
                                     ],
-                                    "default": null
+                                    "default": null,
+                                    "minimum": 0
                                 },
                                 "frequencyMinutes": {
                                     "description": "Number of minutes between 
attempts to groom the Airflow logs in log groomer sidecar.",
@@ -15268,12 +15272,14 @@
                 "retentionDays": {
                     "description": "Number of days to retain the logs when 
running the Airflow log groomer sidecar. Total retention time is 
``retentionDays`` + ``retentionMinutes``.",
                     "type": "integer",
-                    "default": 15
+                    "default": 15,
+                    "minimum": 0
                 },
                 "retentionMinutes": {
                     "description": "Number of minutes to retain the logs when 
running the Airflow log groomer sidecar. Total retention time is 
``retentionDays`` + ``retentionMinutes``.",
                     "type": "integer",
-                    "default": 0
+                    "default": 0,
+                    "minimum": 0
                 },
                 "frequencyMinutes": {
                     "description": "Number of minutes between attempts to 
groom the Airflow logs in log groomer sidecar.",
diff --git a/helm-tests/tests/chart_utils/log_groomer.py 
b/helm-tests/tests/chart_utils/log_groomer.py
index 36a2c1eb7ae..c5018fd482d 100644
--- a/helm-tests/tests/chart_utils/log_groomer.py
+++ b/helm-tests/tests/chart_utils/log_groomer.py
@@ -187,7 +187,7 @@ class LogGroomerTestBase:
         assert jmespath.search("spec.template.spec.containers[1].command", 
docs[0]) == ["release-name"]
         assert jmespath.search("spec.template.spec.containers[1].args", 
docs[0]) == ["Helm"]
 
-    @pytest.mark.parametrize(("retention_days", "retention_result"), [(None, 
None), (30, "30")])
+    @pytest.mark.parametrize(("retention_days", "retention_result"), [(None, 
None), (30, "30"), (0, "0")])
     def test_log_groomer_retention_days_overrides(self, retention_days, 
retention_result):
         if self.obj_name == "dag-processor":
             values = {
@@ -218,7 +218,43 @@ class LogGroomerTestBase:
                 == "15"
             )
         else:
-            assert len(jmespath.search("spec.template.spec.containers[1].env", 
docs[0])) == 2
+            assert len(jmespath.search("spec.template.spec.containers[1].env", 
docs[0])) == 3
+
+    @pytest.mark.parametrize(("retention_minutes", "retention_result"), 
[(None, None), (0, "0"), (60, "60")])
+    def test_log_groomer_retention_minutes_overrides(self, retention_minutes, 
retention_result):
+        if self.obj_name == "dag-processor":
+            values = {
+                "dagProcessor": {
+                    "enabled": True,
+                    "logGroomerSidecar": {"retentionMinutes": 
retention_minutes},
+                }
+            }
+        elif self.obj_name == "workers-celery":
+            values = {"workers": {"celery": {"logGroomerSidecar": 
{"retentionMinutes": retention_minutes}}}}
+        else:
+            values = {f"{self.folder}": {"logGroomerSidecar": 
{"retentionMinutes": retention_minutes}}}
+
+        docs = render_chart(values=values, show_only=self.get_show_only())
+
+        if retention_result:
+            assert (
+                jmespath.search(
+                    
"spec.template.spec.containers[1].env[?name=='AIRFLOW__LOG_RETENTION_MINUTES'].value
 | [0]",
+                    docs[0],
+                )
+                == retention_result
+            )
+        elif self.obj_name == "workers-celery" and retention_result is None:
+            # Testing backward compatibility of move from workers to 
workers.celery
+            assert (
+                jmespath.search(
+                    
"spec.template.spec.containers[1].env[?name=='AIRFLOW__LOG_RETENTION_MINUTES'].value
 | [0]",
+                    docs[0],
+                )
+                == "0"
+            )
+        else:
+            assert len(jmespath.search("spec.template.spec.containers[1].env", 
docs[0])) == 3
 
     @pytest.mark.parametrize(("frequency_minutes", "frequency_result"), 
[(None, None), (20, "20")])
     def test_log_groomer_frequency_minutes_overrides(self, frequency_minutes, 
frequency_result):
@@ -254,7 +290,7 @@ class LogGroomerTestBase:
                 == "15"
             )
         else:
-            assert len(jmespath.search("spec.template.spec.containers[1].env", 
docs[0])) == 2
+            assert len(jmespath.search("spec.template.spec.containers[1].env", 
docs[0])) == 3
 
     @pytest.mark.parametrize(
         ("max_size_bytes", "max_size_result"), [(None, None), (1234567890, 
"1234567890")]

Reply via email to