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

shahar1 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 4acd42fbe6b Build KubernetesInstallKueueOperator manifest URL after 
rendering (#70335)
4acd42fbe6b is described below

commit 4acd42fbe6b28d3d8dd17e9915e07a52f6e95edc
Author: Stefan Wang <[email protected]>
AuthorDate: Fri Jul 24 12:54:32 2026 -0700

    Build KubernetesInstallKueueOperator manifest URL after rendering (#70335)
    
    Build KubernetesInstallKueueOperator manifest URL after 
renderingkueue_version is a template field, so it is rendered after __init__ 
runs. The constructor baked it into self._kueue_yaml_url, so a templated 
kueue_version
    produced a URL containing the un-rendered Jinja expression. Compute the URL 
in a
    property instead, so it uses the rendered version.
    
    related: #70296
---
 .../airflow/providers/cncf/kubernetes/operators/kueue.py  |  5 ++++-
 .../tests/unit/cncf/kubernetes/operators/test_kueue.py    | 15 +++++++++++++++
 scripts/ci/prek/validate_operators_init_exemptions.txt    |  1 -
 3 files changed, 19 insertions(+), 2 deletions(-)

diff --git 
a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/kueue.py
 
b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/kueue.py
index c45b940df5c..4b126163757 100644
--- 
a/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/kueue.py
+++ 
b/providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/kueue.py
@@ -57,7 +57,10 @@ class KubernetesInstallKueueOperator(BaseOperator):
         super().__init__(*args, **kwargs)
         self.kubernetes_conn_id = kubernetes_conn_id
         self.kueue_version = kueue_version
-        self._kueue_yaml_url = (
+
+    @property
+    def _kueue_yaml_url(self) -> str:
+        return (
             
f"https://github.com/kubernetes-sigs/kueue/releases/download/{self.kueue_version}/manifests.yaml";
         )
 
diff --git 
a/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_kueue.py 
b/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_kueue.py
index 95fe7b42c39..907d0e44023 100644
--- 
a/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_kueue.py
+++ 
b/providers/cncf/kubernetes/tests/unit/cncf/kubernetes/operators/test_kueue.py
@@ -17,11 +17,13 @@
 from __future__ import annotations
 
 import json
+from datetime import datetime
 from unittest import mock
 
 import pytest
 from kubernetes.utils import FailToCreateError
 
+from airflow.models.dag import DAG
 from airflow.providers.cncf.kubernetes.operators.job import 
KubernetesJobOperator
 from airflow.providers.cncf.kubernetes.operators.kueue import (
     KubernetesInstallKueueOperator,
@@ -52,6 +54,19 @@ class TestKubernetesInstallKueueOperator:
         expected_template_fields = {"kueue_version", "kubernetes_conn_id"}
         assert set(KubernetesInstallKueueOperator.template_fields) == 
expected_template_fields
 
+    def test_kueue_yaml_url_uses_rendered_version(self):
+        with DAG("kueue", schedule=None, start_date=datetime(2020, 1, 1)):
+            op = KubernetesInstallKueueOperator(
+                task_id=TEST_TASK_ID,
+                kueue_version="{{ params.v }}",
+                kubernetes_conn_id=TEST_K8S_CONN_ID,
+            )
+        op.render_template_fields({"params": {"v": "v0.9.1"}})
+        assert (
+            op._kueue_yaml_url
+            == 
"https://github.com/kubernetes-sigs/kueue/releases/download/v0.9.1/manifests.yaml";
+        )
+
     @mock.patch(KUEUE_OPERATORS_PATH.format("KubernetesHook"))
     def test_hook(self, mock_hook):
         mock_hook_instance = mock_hook.return_value
diff --git a/scripts/ci/prek/validate_operators_init_exemptions.txt 
b/scripts/ci/prek/validate_operators_init_exemptions.txt
index a1ee49e1431..cfd6fd0ea3e 100644
--- a/scripts/ci/prek/validate_operators_init_exemptions.txt
+++ b/scripts/ci/prek/validate_operators_init_exemptions.txt
@@ -22,7 +22,6 @@ 
providers/amazon/src/airflow/providers/amazon/aws/transfers/gcs_to_s3.py::GCSToS
 
providers/amazon/src/airflow/providers/amazon/aws/transfers/s3_to_redshift.py::S3ToRedshiftOperator
 
providers/anthropic/src/airflow/providers/anthropic/operators/agent.py::AnthropicAgentSessionOperator
 
providers/apache/kafka/src/airflow/providers/apache/kafka/operators/produce.py::ProduceToTopicOperator
-providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/kueue.py::KubernetesInstallKueueOperator
 
providers/cncf/kubernetes/src/airflow/providers/cncf/kubernetes/operators/pod.py::KubernetesPodOperator
 
providers/databricks/src/airflow/providers/databricks/operators/databricks_repos.py::DatabricksReposCreateOperator
 
providers/databricks/src/airflow/providers/databricks/operators/databricks_repos.py::DatabricksReposDeleteOperator

Reply via email to