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