apache-airflow-providers-cncf-kubernetes 10.5.0rc1__py3-none-any.whl → 10.5.0rc2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -398,8 +398,8 @@ class AirflowKubernetesScheduler(LoggingMixin):
398
398
  "python",
399
399
  "-m",
400
400
  "airflow.sdk.execution_time.execute_workload",
401
- "--json-path",
402
- "/tmp/execute/input.json",
401
+ "--json-string",
402
+ ser_input,
403
403
  ]
404
404
  else:
405
405
  raise ValueError(
@@ -427,7 +427,6 @@ class AirflowKubernetesScheduler(LoggingMixin):
427
427
  date=None,
428
428
  run_id=run_id,
429
429
  args=list(command),
430
- content_json_for_volume=ser_input,
431
430
  pod_override_object=kube_executor_config,
432
431
  base_worker_pod=base_worker_pod,
433
432
  with_mutation_hook=True,
@@ -305,7 +305,7 @@ class KubernetesPodOperator(BaseOperator):
305
305
  node_selector: dict | None = None,
306
306
  image_pull_secrets: list[k8s.V1LocalObjectReference] | None = None,
307
307
  service_account_name: str | None = None,
308
- automount_service_account_token: bool = True,
308
+ automount_service_account_token: bool | None = None,
309
309
  hostnetwork: bool = False,
310
310
  host_aliases: list[k8s.V1HostAlias] | None = None,
311
311
  tolerations: list[k8s.V1Toleration] | None = None,
@@ -34,7 +34,7 @@ from functools import reduce
34
34
  from typing import TYPE_CHECKING
35
35
 
36
36
  from dateutil import parser
37
- from kubernetes.client import V1EmptyDirVolumeSource, V1Volume, V1VolumeMount, models as k8s
37
+ from kubernetes.client import models as k8s
38
38
  from kubernetes.client.api_client import ApiClient
39
39
 
40
40
  from airflow.exceptions import (
@@ -287,7 +287,6 @@ class PodGenerator:
287
287
  scheduler_job_id: str,
288
288
  run_id: str | None = None,
289
289
  map_index: int = -1,
290
- content_json_for_volume: str = "",
291
290
  *,
292
291
  with_mutation_hook: bool = False,
293
292
  ) -> k8s.V1Pod:
@@ -355,39 +354,6 @@ class PodGenerator:
355
354
  containers=[main_container],
356
355
  )
357
356
 
358
- if content_json_for_volume:
359
- import shlex
360
-
361
- input_file_path = "/tmp/execute/input.json"
362
- execute_volume = V1Volume(
363
- name="execute-volume",
364
- empty_dir=V1EmptyDirVolumeSource(),
365
- )
366
-
367
- execute_volume_mount = V1VolumeMount(
368
- name="execute-volume",
369
- mount_path="/tmp/execute",
370
- read_only=False,
371
- )
372
-
373
- escaped_json = shlex.quote(content_json_for_volume)
374
- init_container = k8s.V1Container(
375
- name="init-container",
376
- image="busybox",
377
- command=["/bin/sh", "-c", f"echo {escaped_json} > {input_file_path}"],
378
- volume_mounts=[execute_volume_mount],
379
- )
380
-
381
- main_container.volume_mounts = [execute_volume_mount]
382
- main_container.command = args[:-1]
383
- main_container.args = args[-1:]
384
-
385
- podspec = k8s.V1PodSpec(
386
- containers=[main_container],
387
- volumes=[execute_volume],
388
- init_containers=[init_container],
389
- )
390
-
391
357
  dynamic_pod.spec = podspec
392
358
 
393
359
  # Reconcile the pods starting with the first chronologically,
@@ -546,7 +512,7 @@ def merge_objects(base_obj, client_obj):
546
512
 
547
513
  for base_key in base_obj.to_dict():
548
514
  base_val = getattr(base_obj, base_key, None)
549
- if not getattr(client_obj, base_key, None) and base_val:
515
+ if not getattr(client_obj, base_key, None) and base_val is not None:
550
516
  if not isinstance(client_obj_cp, dict):
551
517
  setattr(client_obj_cp, base_key, base_val)
552
518
  else:
@@ -19,11 +19,14 @@ from __future__ import annotations
19
19
 
20
20
  from typing import TYPE_CHECKING
21
21
 
22
+ from jinja2 import TemplateAssertionError, UndefinedError
22
23
  from kubernetes.client.api_client import ApiClient
23
24
 
25
+ from airflow.exceptions import AirflowException
24
26
  from airflow.providers.cncf.kubernetes.kube_config import KubeConfig
25
27
  from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import create_unique_id
26
28
  from airflow.providers.cncf.kubernetes.pod_generator import PodGenerator
29
+ from airflow.utils.session import NEW_SESSION, provide_session
27
30
 
28
31
  if TYPE_CHECKING:
29
32
  from airflow.models.taskinstance import TaskInstance
@@ -58,3 +61,17 @@ def render_k8s_pod_yaml(task_instance: TaskInstance) -> dict | None:
58
61
  )
59
62
  sanitized_pod = ApiClient().sanitize_for_serialization(pod)
60
63
  return sanitized_pod
64
+
65
+
66
+ @provide_session
67
+ def get_rendered_k8s_spec(task_instance: TaskInstance, session=NEW_SESSION) -> dict | None:
68
+ """Fetch rendered template fields from DB."""
69
+ from airflow.models.renderedtifields import RenderedTaskInstanceFields
70
+
71
+ rendered_k8s_spec = RenderedTaskInstanceFields.get_k8s_pod_yaml(task_instance, session=session)
72
+ if not rendered_k8s_spec:
73
+ try:
74
+ rendered_k8s_spec = render_k8s_pod_yaml(task_instance)
75
+ except (TemplateAssertionError, UndefinedError) as e:
76
+ raise AirflowException(f"Unable to render a k8s spec for this taskinstance: {e}") from e
77
+ return rendered_k8s_spec
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-cncf-kubernetes
3
- Version: 10.5.0rc1
3
+ Version: 10.5.0rc2
4
4
  Summary: Provider package apache-airflow-providers-cncf-kubernetes for Apache Airflow
5
5
  Keywords: airflow-provider,cncf.kubernetes,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
@@ -7,11 +7,11 @@ airflow/providers/cncf/kubernetes/k8s_model.py,sha256=xmdFhX29DjegoZ-cq8-KDL9soV
7
7
  airflow/providers/cncf/kubernetes/kube_client.py,sha256=yflZxLousXA9d7t67KrEy55qzb1cUhEyy6yCPkEem28,5329
8
8
  airflow/providers/cncf/kubernetes/kube_config.py,sha256=3qWdCp2z4g8gX_sIOProgwp52UxM5kAIYabkxaX297g,5079
9
9
  airflow/providers/cncf/kubernetes/kubernetes_helper_functions.py,sha256=opxof6wxHEAHwa_zRB47QJBBrV5St4rIZzAiptA9Rek,5510
10
- airflow/providers/cncf/kubernetes/pod_generator.py,sha256=f24Qdg4QA9d8gaHA0X78jDojtm9swEgLLqcG6yEx2rc,20857
10
+ airflow/providers/cncf/kubernetes/pod_generator.py,sha256=TFlNkn3PCytjxnhQduOxNAVdFjwne9-PupV6Gfun5A4,19649
11
11
  airflow/providers/cncf/kubernetes/python_kubernetes_script.jinja2,sha256=I0EHRGwLHjSiX85e51HBIoddRDnC8TJPFrDBqQq_NJg,1776
12
12
  airflow/providers/cncf/kubernetes/python_kubernetes_script.py,sha256=KnTlZSWCZhwvj89fSc2kgIRTaI4iLNKPquHc2wXnluo,3460
13
13
  airflow/providers/cncf/kubernetes/secret.py,sha256=wj-T9gouqau_X14slAstGmnSxqXJQzdLwUdURzHna0I,5209
14
- airflow/providers/cncf/kubernetes/template_rendering.py,sha256=NyrAc2rsZ0oyXxtRHiY8qkaH4tftHlexTpr7YE4UQY0,2682
14
+ airflow/providers/cncf/kubernetes/template_rendering.py,sha256=pV6lX8DW3dLNB945mxwM8E0Vynis2-chMCwHlnHeIVY,3490
15
15
  airflow/providers/cncf/kubernetes/version_compat.py,sha256=j5PCtXvZ71aBjixu-EFTNtVDPsngzzs7os0ZQDgFVDk,1536
16
16
  airflow/providers/cncf/kubernetes/backcompat/__init__.py,sha256=KXF76f3v1jIFUBNz8kwxVMvm7i4mNo35LbIG9IijBNc,1299
17
17
  airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py,sha256=FkRRtIEucp2hYrecGVYVgyPI6-b7hE7X7L17Z3r459Y,4303
@@ -23,7 +23,7 @@ airflow/providers/cncf/kubernetes/decorators/kubernetes_cmd.py,sha256=Rsak_cPl_-
23
23
  airflow/providers/cncf/kubernetes/executors/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
24
24
  airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py,sha256=TomXdMCdtnnsKOWZiNR2lrh0ZmHghfbzXjpjeRDJTFA,31976
25
25
  airflow/providers/cncf/kubernetes/executors/kubernetes_executor_types.py,sha256=L8_8HOHd_4O8WW6xT2tp49-yOj0EMKCYK5YqMOOx_bI,1973
26
- airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py,sha256=2xqLS8DQhnwVwxnv4an8cjv4HPqP_TSiVFjjADPMeHM,24750
26
+ airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py,sha256=U2mCkPy-MnPLLdPHil5_rLOsb-K_Xnn5YwNUVzD96i4,24689
27
27
  airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py,sha256=TuFRbs1zqKajJoZmo25kT4AGd-_-iD-UbhfOY30EOck,11591
28
28
  airflow/providers/cncf/kubernetes/hooks/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
29
29
  airflow/providers/cncf/kubernetes/hooks/kubernetes.py,sha256=KPv5t7Xpvx9Nw9uampf1VCMdnq_ySqRzFbt07NKIjZY,37107
@@ -33,7 +33,7 @@ airflow/providers/cncf/kubernetes/operators/__init__.py,sha256=mlJxuZLkd5x-iq2SB
33
33
  airflow/providers/cncf/kubernetes/operators/custom_object_launcher.py,sha256=jTVHQt1vp5gELrLNyM-DrZ1ywgmTy3Hh1i6wyl7AGS0,15314
34
34
  airflow/providers/cncf/kubernetes/operators/job.py,sha256=aK2MogooZ6K7uVC0hWRYhCGgzwHOERrgPyknWu5mp7c,23771
35
35
  airflow/providers/cncf/kubernetes/operators/kueue.py,sha256=eEfl__06k15-21Y86qHOLAsY2zR1OWM4QgQhDteDBP0,4563
36
- airflow/providers/cncf/kubernetes/operators/pod.py,sha256=kTWxSQQvxHI3rzVDx-Z1jEQa4g4ZN7o_7smkMRyOw8U,58632
36
+ airflow/providers/cncf/kubernetes/operators/pod.py,sha256=yO4gz_9cHYAn-7mjJKEu3KUf_7nxtUvaEAaL7NQ92nc,58639
37
37
  airflow/providers/cncf/kubernetes/operators/resource.py,sha256=Q5WssuDyjtzo1Op1pzUmYG4JZZdzCKTe-vTZEy8HSNA,7579
38
38
  airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py,sha256=0TO86G-gbWAkQvaWBfhCp6ZJwoQzciH-UGR5kgw9fmg,13847
39
39
  airflow/providers/cncf/kubernetes/pod_template_file_examples/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
@@ -54,7 +54,7 @@ airflow/providers/cncf/kubernetes/utils/delete_from.py,sha256=poObZSoEJwQyaYWilE
54
54
  airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py,sha256=DLypjkD_3YDixRTcsxEjgvHZNbbG9qamlz05eBqaWzU,1955
55
55
  airflow/providers/cncf/kubernetes/utils/pod_manager.py,sha256=8edX-K9t2YgGHYsEeqUmKodHv4jsEHdPjii89KlE0dw,39436
56
56
  airflow/providers/cncf/kubernetes/utils/xcom_sidecar.py,sha256=k6bdmVJ21OrAwGmWwledRrAmaty9ZrmbuM-IbaI4mqo,2519
57
- apache_airflow_providers_cncf_kubernetes-10.5.0rc1.dist-info/entry_points.txt,sha256=ByD3QJJyP9CfmTYtpNI1953akD38RUDgpGXLaq9vpOw,111
58
- apache_airflow_providers_cncf_kubernetes-10.5.0rc1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
59
- apache_airflow_providers_cncf_kubernetes-10.5.0rc1.dist-info/METADATA,sha256=N5m9VD9yH_AjVp57oab1u-GkxOae0YlvC5FxJyRItHk,4328
60
- apache_airflow_providers_cncf_kubernetes-10.5.0rc1.dist-info/RECORD,,
57
+ apache_airflow_providers_cncf_kubernetes-10.5.0rc2.dist-info/entry_points.txt,sha256=ByD3QJJyP9CfmTYtpNI1953akD38RUDgpGXLaq9vpOw,111
58
+ apache_airflow_providers_cncf_kubernetes-10.5.0rc2.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
59
+ apache_airflow_providers_cncf_kubernetes-10.5.0rc2.dist-info/METADATA,sha256=8_LmnQyGyRNNoRJrOpvgi8vL4UGBr6ta5KTkZW-SEBk,4328
60
+ apache_airflow_providers_cncf_kubernetes-10.5.0rc2.dist-info/RECORD,,