apache-airflow-providers-cncf-kubernetes 10.1.0rc2__py3-none-any.whl → 10.2.0__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.
Potentially problematic release.
This version of apache-airflow-providers-cncf-kubernetes might be problematic. Click here for more details.
- airflow/providers/cncf/kubernetes/LICENSE +0 -52
- airflow/providers/cncf/kubernetes/__init__.py +1 -1
- airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py +2 -3
- airflow/providers/cncf/kubernetes/callbacks.py +90 -8
- airflow/providers/cncf/kubernetes/cli/kubernetes_command.py +3 -4
- airflow/providers/cncf/kubernetes/decorators/kubernetes.py +10 -5
- airflow/providers/cncf/kubernetes/exceptions.py +29 -0
- airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py +36 -113
- airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py +27 -15
- airflow/providers/cncf/kubernetes/get_provider_info.py +14 -21
- airflow/providers/cncf/kubernetes/hooks/kubernetes.py +20 -10
- airflow/providers/cncf/kubernetes/kube_config.py +0 -4
- airflow/providers/cncf/kubernetes/kubernetes_helper_functions.py +1 -1
- airflow/providers/cncf/kubernetes/operators/custom_object_launcher.py +3 -3
- airflow/providers/cncf/kubernetes/operators/job.py +4 -4
- airflow/providers/cncf/kubernetes/operators/kueue.py +2 -2
- airflow/providers/cncf/kubernetes/operators/pod.py +102 -44
- airflow/providers/cncf/kubernetes/operators/resource.py +1 -1
- airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py +23 -19
- airflow/providers/cncf/kubernetes/pod_generator.py +51 -21
- airflow/providers/cncf/kubernetes/resource_convert/env_variable.py +1 -2
- airflow/providers/cncf/kubernetes/secret.py +1 -2
- airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py +1 -2
- airflow/providers/cncf/kubernetes/template_rendering.py +10 -2
- airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py +1 -2
- airflow/providers/cncf/kubernetes/utils/pod_manager.py +12 -11
- {apache_airflow_providers_cncf_kubernetes-10.1.0rc2.dist-info → apache_airflow_providers_cncf_kubernetes-10.2.0.dist-info}/METADATA +10 -27
- {apache_airflow_providers_cncf_kubernetes-10.1.0rc2.dist-info → apache_airflow_providers_cncf_kubernetes-10.2.0.dist-info}/RECORD +30 -30
- airflow/providers/cncf/kubernetes/pod_generator_deprecated.py +0 -309
- {apache_airflow_providers_cncf_kubernetes-10.1.0rc2.dist-info → apache_airflow_providers_cncf_kubernetes-10.2.0.dist-info}/WHEEL +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.1.0rc2.dist-info → apache_airflow_providers_cncf_kubernetes-10.2.0.dist-info}/entry_points.txt +0 -0
|
@@ -34,14 +34,12 @@ from typing import TYPE_CHECKING
|
|
|
34
34
|
|
|
35
35
|
import re2
|
|
36
36
|
from dateutil import parser
|
|
37
|
-
from kubernetes.client import models as k8s
|
|
38
|
-
from kubernetes.client.api_client import ApiClient
|
|
39
37
|
|
|
40
38
|
from airflow.exceptions import (
|
|
41
39
|
AirflowConfigException,
|
|
42
|
-
AirflowException,
|
|
43
40
|
)
|
|
44
41
|
from airflow.providers.cncf.kubernetes.backcompat import get_logical_date_key
|
|
42
|
+
from airflow.providers.cncf.kubernetes.exceptions import PodMutationHookException, PodReconciliationError
|
|
45
43
|
from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import (
|
|
46
44
|
POD_NAME_MAX_LENGTH,
|
|
47
45
|
add_unique_suffix,
|
|
@@ -49,6 +47,8 @@ from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import (
|
|
|
49
47
|
from airflow.utils import yaml
|
|
50
48
|
from airflow.utils.hashlib_wrapper import md5
|
|
51
49
|
from airflow.version import version as airflow_version
|
|
50
|
+
from kubernetes.client import V1EmptyDirVolumeSource, V1Volume, V1VolumeMount, models as k8s
|
|
51
|
+
from kubernetes.client.api_client import ApiClient
|
|
52
52
|
|
|
53
53
|
if TYPE_CHECKING:
|
|
54
54
|
import datetime
|
|
@@ -58,14 +58,6 @@ log = logging.getLogger(__name__)
|
|
|
58
58
|
MAX_LABEL_LEN = 63
|
|
59
59
|
|
|
60
60
|
|
|
61
|
-
class PodMutationHookException(AirflowException):
|
|
62
|
-
"""Raised when exception happens during Pod Mutation Hook execution."""
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
class PodReconciliationError(AirflowException):
|
|
66
|
-
"""Raised when an error is encountered while trying to merge pod configs."""
|
|
67
|
-
|
|
68
|
-
|
|
69
61
|
def make_safe_label_value(string: str) -> str:
|
|
70
62
|
"""
|
|
71
63
|
Normalize a provided label to be of valid length and characters.
|
|
@@ -296,6 +288,7 @@ class PodGenerator:
|
|
|
296
288
|
scheduler_job_id: str,
|
|
297
289
|
run_id: str | None = None,
|
|
298
290
|
map_index: int = -1,
|
|
291
|
+
content_json_for_volume: str = "",
|
|
299
292
|
*,
|
|
300
293
|
with_mutation_hook: bool = False,
|
|
301
294
|
) -> k8s.V1Pod:
|
|
@@ -334,6 +327,14 @@ class PodGenerator:
|
|
|
334
327
|
if run_id:
|
|
335
328
|
annotations["run_id"] = run_id
|
|
336
329
|
|
|
330
|
+
main_container = k8s.V1Container(
|
|
331
|
+
name="base",
|
|
332
|
+
args=args,
|
|
333
|
+
image=image,
|
|
334
|
+
env=[
|
|
335
|
+
k8s.V1EnvVar(name="AIRFLOW_IS_K8S_EXECUTOR_POD", value="True"),
|
|
336
|
+
],
|
|
337
|
+
)
|
|
337
338
|
dynamic_pod = k8s.V1Pod(
|
|
338
339
|
metadata=k8s.V1ObjectMeta(
|
|
339
340
|
namespace=namespace,
|
|
@@ -349,18 +350,47 @@ class PodGenerator:
|
|
|
349
350
|
run_id=run_id,
|
|
350
351
|
),
|
|
351
352
|
),
|
|
352
|
-
spec=k8s.V1PodSpec(
|
|
353
|
-
containers=[
|
|
354
|
-
k8s.V1Container(
|
|
355
|
-
name="base",
|
|
356
|
-
args=args,
|
|
357
|
-
image=image,
|
|
358
|
-
env=[k8s.V1EnvVar(name="AIRFLOW_IS_K8S_EXECUTOR_POD", value="True")],
|
|
359
|
-
)
|
|
360
|
-
]
|
|
361
|
-
),
|
|
362
353
|
)
|
|
363
354
|
|
|
355
|
+
podspec = k8s.V1PodSpec(
|
|
356
|
+
containers=[main_container],
|
|
357
|
+
)
|
|
358
|
+
|
|
359
|
+
if content_json_for_volume:
|
|
360
|
+
import shlex
|
|
361
|
+
|
|
362
|
+
input_file_path = "/tmp/execute/input.json"
|
|
363
|
+
execute_volume = V1Volume(
|
|
364
|
+
name="execute-volume",
|
|
365
|
+
empty_dir=V1EmptyDirVolumeSource(),
|
|
366
|
+
)
|
|
367
|
+
|
|
368
|
+
execute_volume_mount = V1VolumeMount(
|
|
369
|
+
name="execute-volume",
|
|
370
|
+
mount_path="/tmp/execute",
|
|
371
|
+
read_only=False,
|
|
372
|
+
)
|
|
373
|
+
|
|
374
|
+
escaped_json = shlex.quote(content_json_for_volume)
|
|
375
|
+
init_container = k8s.V1Container(
|
|
376
|
+
name="init-container",
|
|
377
|
+
image="busybox",
|
|
378
|
+
command=["/bin/sh", "-c", f"echo {escaped_json} > {input_file_path}"],
|
|
379
|
+
volume_mounts=[execute_volume_mount],
|
|
380
|
+
)
|
|
381
|
+
|
|
382
|
+
main_container.volume_mounts = [execute_volume_mount]
|
|
383
|
+
main_container.command = args[:-1]
|
|
384
|
+
main_container.args = args[-1:]
|
|
385
|
+
|
|
386
|
+
podspec = k8s.V1PodSpec(
|
|
387
|
+
containers=[main_container],
|
|
388
|
+
volumes=[execute_volume],
|
|
389
|
+
init_containers=[init_container],
|
|
390
|
+
)
|
|
391
|
+
|
|
392
|
+
dynamic_pod.spec = podspec
|
|
393
|
+
|
|
364
394
|
# Reconcile the pods starting with the first chronologically,
|
|
365
395
|
# Pod from the pod_template_File -> Pod from the K8s executor -> Pod from executor_config arg
|
|
366
396
|
pod_list = [base_worker_pod, dynamic_pod, pod_override_object]
|
|
@@ -16,9 +16,8 @@
|
|
|
16
16
|
# under the License.
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
|
-
from kubernetes.client import models as k8s
|
|
20
|
-
|
|
21
19
|
from airflow.exceptions import AirflowException
|
|
20
|
+
from kubernetes.client import models as k8s
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
def convert_env_vars(env_vars) -> list[k8s.V1EnvVar]:
|
|
@@ -21,10 +21,9 @@ from __future__ import annotations
|
|
|
21
21
|
import copy
|
|
22
22
|
import uuid
|
|
23
23
|
|
|
24
|
-
from kubernetes.client import models as k8s
|
|
25
|
-
|
|
26
24
|
from airflow.exceptions import AirflowConfigException
|
|
27
25
|
from airflow.providers.cncf.kubernetes.k8s_model import K8SModel
|
|
26
|
+
from kubernetes.client import models as k8s
|
|
28
27
|
|
|
29
28
|
|
|
30
29
|
class Secret(K8SModel):
|
|
@@ -21,11 +21,10 @@ from collections.abc import Sequence
|
|
|
21
21
|
from functools import cached_property
|
|
22
22
|
from typing import TYPE_CHECKING
|
|
23
23
|
|
|
24
|
-
from kubernetes import client
|
|
25
|
-
|
|
26
24
|
from airflow.exceptions import AirflowException
|
|
27
25
|
from airflow.providers.cncf.kubernetes.hooks.kubernetes import KubernetesHook
|
|
28
26
|
from airflow.sensors.base import BaseSensorOperator
|
|
27
|
+
from kubernetes import client
|
|
29
28
|
|
|
30
29
|
if TYPE_CHECKING:
|
|
31
30
|
from airflow.utils.context import Context
|
|
@@ -20,13 +20,13 @@ from __future__ import annotations
|
|
|
20
20
|
from typing import TYPE_CHECKING
|
|
21
21
|
|
|
22
22
|
from jinja2 import TemplateAssertionError, UndefinedError
|
|
23
|
-
from kubernetes.client.api_client import ApiClient
|
|
24
23
|
|
|
25
24
|
from airflow.exceptions import AirflowException
|
|
26
25
|
from airflow.providers.cncf.kubernetes.kube_config import KubeConfig
|
|
27
26
|
from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import create_unique_id
|
|
28
27
|
from airflow.providers.cncf.kubernetes.pod_generator import PodGenerator
|
|
29
28
|
from airflow.utils.session import NEW_SESSION, provide_session
|
|
29
|
+
from kubernetes.client.api_client import ApiClient
|
|
30
30
|
|
|
31
31
|
if TYPE_CHECKING:
|
|
32
32
|
from airflow.models.taskinstance import TaskInstance
|
|
@@ -35,6 +35,14 @@ if TYPE_CHECKING:
|
|
|
35
35
|
def render_k8s_pod_yaml(task_instance: TaskInstance) -> dict | None:
|
|
36
36
|
"""Render k8s pod yaml."""
|
|
37
37
|
kube_config = KubeConfig()
|
|
38
|
+
if task_instance.executor_config and task_instance.executor_config.get("pod_template_file"):
|
|
39
|
+
# If a specific pod_template_file was passed to the executor, we make
|
|
40
|
+
# sure to render the k8s pod spec using this one, and not the default one.
|
|
41
|
+
pod_template_file = task_instance.executor_config["pod_template_file"]
|
|
42
|
+
else:
|
|
43
|
+
# If no such pod_template_file override was passed, we can simply render
|
|
44
|
+
# The pod spec using the default template.
|
|
45
|
+
pod_template_file = kube_config.pod_template_file
|
|
38
46
|
pod = PodGenerator.construct_pod(
|
|
39
47
|
dag_id=task_instance.dag_id,
|
|
40
48
|
run_id=task_instance.run_id,
|
|
@@ -48,7 +56,7 @@ def render_k8s_pod_yaml(task_instance: TaskInstance) -> dict | None:
|
|
|
48
56
|
pod_override_object=PodGenerator.from_obj(task_instance.executor_config),
|
|
49
57
|
scheduler_job_id="0",
|
|
50
58
|
namespace=kube_config.executor_namespace,
|
|
51
|
-
base_worker_pod=PodGenerator.deserialize_model_file(
|
|
59
|
+
base_worker_pod=PodGenerator.deserialize_model_file(pod_template_file),
|
|
52
60
|
with_mutation_hook=True,
|
|
53
61
|
)
|
|
54
62
|
sanitized_pod = ApiClient().sanitize_for_serialization(pod)
|
|
@@ -19,9 +19,8 @@ from __future__ import annotations
|
|
|
19
19
|
from collections.abc import Iterator
|
|
20
20
|
from typing import Callable
|
|
21
21
|
|
|
22
|
-
from kubernetes.utils import FailToCreateError
|
|
23
|
-
|
|
24
22
|
from airflow.providers.cncf.kubernetes.utils.delete_from import FailToDeleteError
|
|
23
|
+
from kubernetes.utils import FailToCreateError
|
|
25
24
|
|
|
26
25
|
|
|
27
26
|
def k8s_resource_iterator(callback: Callable[[dict], None], resources: Iterator) -> None:
|
|
@@ -31,9 +31,6 @@ from typing import TYPE_CHECKING, Protocol, cast
|
|
|
31
31
|
|
|
32
32
|
import pendulum
|
|
33
33
|
import tenacity
|
|
34
|
-
from kubernetes import client, watch
|
|
35
|
-
from kubernetes.client.rest import ApiException
|
|
36
|
-
from kubernetes.stream import stream as kubernetes_stream
|
|
37
34
|
from pendulum import DateTime
|
|
38
35
|
from pendulum.parsing.exceptions import ParserError
|
|
39
36
|
from typing_extensions import Literal
|
|
@@ -44,12 +41,16 @@ from airflow.providers.cncf.kubernetes.callbacks import ExecutionMode, Kubernete
|
|
|
44
41
|
from airflow.providers.cncf.kubernetes.utils.xcom_sidecar import PodDefaults
|
|
45
42
|
from airflow.utils.log.logging_mixin import LoggingMixin
|
|
46
43
|
from airflow.utils.timezone import utcnow
|
|
44
|
+
from kubernetes import client, watch
|
|
45
|
+
from kubernetes.client.rest import ApiException
|
|
46
|
+
from kubernetes.stream import stream as kubernetes_stream
|
|
47
47
|
|
|
48
48
|
if TYPE_CHECKING:
|
|
49
|
+
from urllib3.response import HTTPResponse
|
|
50
|
+
|
|
49
51
|
from kubernetes.client.models.core_v1_event_list import CoreV1EventList
|
|
50
52
|
from kubernetes.client.models.v1_container_status import V1ContainerStatus
|
|
51
53
|
from kubernetes.client.models.v1_pod import V1Pod
|
|
52
|
-
from urllib3.response import HTTPResponse
|
|
53
54
|
|
|
54
55
|
|
|
55
56
|
EMPTY_XCOM_RESULT = "__airflow_xcom_result_empty__"
|
|
@@ -320,7 +321,7 @@ class PodManager(LoggingMixin):
|
|
|
320
321
|
def __init__(
|
|
321
322
|
self,
|
|
322
323
|
kube_client: client.CoreV1Api,
|
|
323
|
-
callbacks: type[KubernetesPodOperatorCallback] | None = None,
|
|
324
|
+
callbacks: list[type[KubernetesPodOperatorCallback]] | None = None,
|
|
324
325
|
):
|
|
325
326
|
"""
|
|
326
327
|
Create the launcher.
|
|
@@ -331,7 +332,7 @@ class PodManager(LoggingMixin):
|
|
|
331
332
|
super().__init__()
|
|
332
333
|
self._client = kube_client
|
|
333
334
|
self._watch = watch.Watch()
|
|
334
|
-
self._callbacks = callbacks
|
|
335
|
+
self._callbacks = callbacks or []
|
|
335
336
|
|
|
336
337
|
def run_pod_async(self, pod: V1Pod, **kwargs) -> V1Pod:
|
|
337
338
|
"""Run POD asynchronously."""
|
|
@@ -466,8 +467,8 @@ class PodManager(LoggingMixin):
|
|
|
466
467
|
progress_callback_lines.append(line)
|
|
467
468
|
else: # previous log line is complete
|
|
468
469
|
for line in progress_callback_lines:
|
|
469
|
-
|
|
470
|
-
|
|
470
|
+
for callback in self._callbacks:
|
|
471
|
+
callback.progress_callback(
|
|
471
472
|
line=line, client=self._client, mode=ExecutionMode.SYNC
|
|
472
473
|
)
|
|
473
474
|
if message_to_log is not None:
|
|
@@ -485,8 +486,8 @@ class PodManager(LoggingMixin):
|
|
|
485
486
|
finally:
|
|
486
487
|
# log the last line and update the last_captured_timestamp
|
|
487
488
|
for line in progress_callback_lines:
|
|
488
|
-
|
|
489
|
-
|
|
489
|
+
for callback in self._callbacks:
|
|
490
|
+
callback.progress_callback(
|
|
490
491
|
line=line, client=self._client, mode=ExecutionMode.SYNC
|
|
491
492
|
)
|
|
492
493
|
if message_to_log is not None:
|
|
@@ -855,7 +856,7 @@ class PodManager(LoggingMixin):
|
|
|
855
856
|
_preload_content=False,
|
|
856
857
|
)
|
|
857
858
|
) as resp:
|
|
858
|
-
self._exec_pod_command(resp, "kill -2 $(pgrep -u $(
|
|
859
|
+
self._exec_pod_command(resp, "kill -2 $(pgrep -u $(id -u) -f 'sh')")
|
|
859
860
|
|
|
860
861
|
def _exec_pod_command(self, resp, command: str) -> str | None:
|
|
861
862
|
res = ""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: apache-airflow-providers-cncf-kubernetes
|
|
3
|
-
Version: 10.
|
|
3
|
+
Version: 10.2.0
|
|
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>
|
|
@@ -21,38 +21,21 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
22
22
|
Classifier: Topic :: System :: Monitoring
|
|
23
23
|
Requires-Dist: aiofiles>=23.2.0
|
|
24
|
-
Requires-Dist: apache-airflow>=2.9.
|
|
24
|
+
Requires-Dist: apache-airflow>=2.9.0
|
|
25
25
|
Requires-Dist: asgiref>=3.5.2
|
|
26
26
|
Requires-Dist: cryptography>=41.0.0
|
|
27
|
-
Requires-Dist: google-re2>=1.0
|
|
28
27
|
Requires-Dist: kubernetes>=29.0.0,<=31.0.0
|
|
29
28
|
Requires-Dist: kubernetes_asyncio>=29.0.0,<=31.0.0
|
|
29
|
+
Requires-Dist: google-re2>=1.0
|
|
30
30
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
31
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.
|
|
32
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.
|
|
31
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.2.0/changelog.html
|
|
32
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.2.0
|
|
33
33
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
34
34
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
35
35
|
Project-URL: Twitter, https://x.com/ApacheAirflow
|
|
36
36
|
Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
.. Licensed to the Apache Software Foundation (ASF) under one
|
|
40
|
-
or more contributor license agreements. See the NOTICE file
|
|
41
|
-
distributed with this work for additional information
|
|
42
|
-
regarding copyright ownership. The ASF licenses this file
|
|
43
|
-
to you under the Apache License, Version 2.0 (the
|
|
44
|
-
"License"); you may not use this file except in compliance
|
|
45
|
-
with the License. You may obtain a copy of the License at
|
|
46
|
-
|
|
47
|
-
.. http://www.apache.org/licenses/LICENSE-2.0
|
|
48
|
-
|
|
49
|
-
.. Unless required by applicable law or agreed to in writing,
|
|
50
|
-
software distributed under the License is distributed on an
|
|
51
|
-
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
52
|
-
KIND, either express or implied. See the License for the
|
|
53
|
-
specific language governing permissions and limitations
|
|
54
|
-
under the License.
|
|
55
|
-
|
|
56
39
|
.. Licensed to the Apache Software Foundation (ASF) under one
|
|
57
40
|
or more contributor license agreements. See the NOTICE file
|
|
58
41
|
distributed with this work for additional information
|
|
@@ -70,8 +53,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
|
70
53
|
specific language governing permissions and limitations
|
|
71
54
|
under the License.
|
|
72
55
|
|
|
73
|
-
.. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE
|
|
74
|
-
OVERWRITTEN WHEN PREPARING PACKAGES.
|
|
56
|
+
.. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
|
|
75
57
|
|
|
76
58
|
.. IF YOU WANT TO MODIFY TEMPLATE FOR THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
|
|
77
59
|
`PROVIDER_README_TEMPLATE.rst.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
|
|
@@ -79,7 +61,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
|
79
61
|
|
|
80
62
|
Package ``apache-airflow-providers-cncf-kubernetes``
|
|
81
63
|
|
|
82
|
-
Release: ``10.
|
|
64
|
+
Release: ``10.2.0``
|
|
83
65
|
|
|
84
66
|
|
|
85
67
|
`Kubernetes <https://kubernetes.io/>`__
|
|
@@ -92,7 +74,7 @@ This is a provider package for ``cncf.kubernetes`` provider. All classes for thi
|
|
|
92
74
|
are in ``airflow.providers.cncf.kubernetes`` python package.
|
|
93
75
|
|
|
94
76
|
You can find package information and changelog for the provider
|
|
95
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.
|
|
77
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.2.0/>`_.
|
|
96
78
|
|
|
97
79
|
Installation
|
|
98
80
|
------------
|
|
@@ -119,4 +101,5 @@ PIP package Version required
|
|
|
119
101
|
====================== =====================
|
|
120
102
|
|
|
121
103
|
The changelog for the provider package can be found in the
|
|
122
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.
|
|
104
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.2.0/changelog.html>`_.
|
|
105
|
+
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
airflow/providers/cncf/kubernetes/LICENSE,sha256=
|
|
2
|
-
airflow/providers/cncf/kubernetes/__init__.py,sha256=
|
|
3
|
-
airflow/providers/cncf/kubernetes/callbacks.py,sha256=
|
|
4
|
-
airflow/providers/cncf/kubernetes/
|
|
1
|
+
airflow/providers/cncf/kubernetes/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
|
|
2
|
+
airflow/providers/cncf/kubernetes/__init__.py,sha256=SRlNXgjF86Flb6HQHDxxT-C7tEwTgeWmZVMVXOauafA,1503
|
|
3
|
+
airflow/providers/cncf/kubernetes/callbacks.py,sha256=7sZx4eujOJs82TxAxNS8Pu6dfAlBSnHqUu5inwdYnjQ,6077
|
|
4
|
+
airflow/providers/cncf/kubernetes/exceptions.py,sha256=3cNEZTnrltBsqwzHiLfckwYYc_IWY1g4PcRs6zuMWWA,1137
|
|
5
|
+
airflow/providers/cncf/kubernetes/get_provider_info.py,sha256=wgXAW2SGaEBtCsK9NZ3PeVpXZSF1_fDXcujbTHDX8qI,17723
|
|
5
6
|
airflow/providers/cncf/kubernetes/k8s_model.py,sha256=xmdFhX29DjegoZ-cq8-KDL9soVYXf4OpU6fAGr3cPTU,2101
|
|
6
7
|
airflow/providers/cncf/kubernetes/kube_client.py,sha256=yflZxLousXA9d7t67KrEy55qzb1cUhEyy6yCPkEem28,5329
|
|
7
|
-
airflow/providers/cncf/kubernetes/kube_config.py,sha256=
|
|
8
|
-
airflow/providers/cncf/kubernetes/kubernetes_helper_functions.py,sha256=
|
|
9
|
-
airflow/providers/cncf/kubernetes/pod_generator.py,sha256=
|
|
10
|
-
airflow/providers/cncf/kubernetes/pod_generator_deprecated.py,sha256=aukRdia0Wtv0FVZXgvaIWQxdWfnT9cxzH0UwOVph8dE,11998
|
|
8
|
+
airflow/providers/cncf/kubernetes/kube_config.py,sha256=3qWdCp2z4g8gX_sIOProgwp52UxM5kAIYabkxaX297g,5079
|
|
9
|
+
airflow/providers/cncf/kubernetes/kubernetes_helper_functions.py,sha256=DyBxDNltnBG2txljnih7nrOxeQo4OyX1SOaKPJiX0PA,5524
|
|
10
|
+
airflow/providers/cncf/kubernetes/pod_generator.py,sha256=9329jtwCY0k_l2HiP4ApPyeNOdE2UW5L8q-G9sfZSG4,20889
|
|
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
|
-
airflow/providers/cncf/kubernetes/secret.py,sha256=
|
|
14
|
-
airflow/providers/cncf/kubernetes/template_rendering.py,sha256=
|
|
13
|
+
airflow/providers/cncf/kubernetes/secret.py,sha256=TZoCxV7d3r2avpRs3zzqB4Az_nGeM2B7LweMzYwA-6s,5208
|
|
14
|
+
airflow/providers/cncf/kubernetes/template_rendering.py,sha256=ae00DroxxXEtkaSux49sCYCT_aR_d56y77HsSFzeFrQ,3490
|
|
15
15
|
airflow/providers/cncf/kubernetes/version_compat.py,sha256=aHg90_DtgoSnQvILFICexMyNlHlALBdaeWqkX3dFDug,1605
|
|
16
16
|
airflow/providers/cncf/kubernetes/backcompat/__init__.py,sha256=KXF76f3v1jIFUBNz8kwxVMvm7i4mNo35LbIG9IijBNc,1299
|
|
17
|
-
airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py,sha256=
|
|
17
|
+
airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py,sha256=bJV-Itf_RcN8_eJw2LkZU_edhlqElmbeOB7OP09MPrk,4348
|
|
18
18
|
airflow/providers/cncf/kubernetes/cli/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
19
|
-
airflow/providers/cncf/kubernetes/cli/kubernetes_command.py,sha256=
|
|
19
|
+
airflow/providers/cncf/kubernetes/cli/kubernetes_command.py,sha256=5hVT18pCu0kGStQ5sJYO4pd8rRTmCZWedBBvxe5rSMY,7251
|
|
20
20
|
airflow/providers/cncf/kubernetes/decorators/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
|
|
21
|
-
airflow/providers/cncf/kubernetes/decorators/kubernetes.py,sha256
|
|
21
|
+
airflow/providers/cncf/kubernetes/decorators/kubernetes.py,sha256=Tfxn0FiAoUJUQlvYAoxdDYbwYXfLV1XzzrPJsxN9XY8,6174
|
|
22
22
|
airflow/providers/cncf/kubernetes/executors/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
|
|
23
|
-
airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py,sha256=
|
|
23
|
+
airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py,sha256=715AIfLanGjmK_Qm1lNzfa7A6rurTmLxyz2m1RS4KSQ,31712
|
|
24
24
|
airflow/providers/cncf/kubernetes/executors/kubernetes_executor_types.py,sha256=L8_8HOHd_4O8WW6xT2tp49-yOj0EMKCYK5YqMOOx_bI,1973
|
|
25
|
-
airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py,sha256=
|
|
25
|
+
airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py,sha256=PLb7S2Ra0bQfydst23efxp5wmu67L_LPNsMWiOZjvgo,24772
|
|
26
26
|
airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py,sha256=kx6pHAfSnKiDgT6iDOS4fJRq49DodFnyxUyd-iJsuI8,11512
|
|
27
27
|
airflow/providers/cncf/kubernetes/hooks/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
28
|
-
airflow/providers/cncf/kubernetes/hooks/kubernetes.py,sha256=
|
|
28
|
+
airflow/providers/cncf/kubernetes/hooks/kubernetes.py,sha256=i7l7q4DK9c7CFF1KTf_Qtjk_H1tyXoOhwDFwVnq-pBU,36784
|
|
29
29
|
airflow/providers/cncf/kubernetes/kubernetes_executor_templates/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
30
30
|
airflow/providers/cncf/kubernetes/kubernetes_executor_templates/basic_template.yaml,sha256=yzJmXN4ZyB4aDwI_GIugpL9-f1YMVy__X-LQSbeU95A,2567
|
|
31
31
|
airflow/providers/cncf/kubernetes/operators/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
|
|
32
|
-
airflow/providers/cncf/kubernetes/operators/custom_object_launcher.py,sha256=
|
|
33
|
-
airflow/providers/cncf/kubernetes/operators/job.py,sha256=
|
|
34
|
-
airflow/providers/cncf/kubernetes/operators/kueue.py,sha256=
|
|
35
|
-
airflow/providers/cncf/kubernetes/operators/pod.py,sha256=
|
|
36
|
-
airflow/providers/cncf/kubernetes/operators/resource.py,sha256=
|
|
37
|
-
airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py,sha256=
|
|
32
|
+
airflow/providers/cncf/kubernetes/operators/custom_object_launcher.py,sha256=wSFpJ1s0dmmpBCL6_qhhbc50Bk6Ya23Mm5Jy_RKG_vE,15315
|
|
33
|
+
airflow/providers/cncf/kubernetes/operators/job.py,sha256=UUkw_5Y8HQ92GyihzOIK_iFWmcajISoc5NZS48AHJo8,23772
|
|
34
|
+
airflow/providers/cncf/kubernetes/operators/kueue.py,sha256=hY-tHjpeVnRyoTNEdxanb8kI8Na_oTWNzlX2m5TUWIM,4564
|
|
35
|
+
airflow/providers/cncf/kubernetes/operators/pod.py,sha256=BeZt2OTKB7THZyw-_MC0Le_q69KwOE3sMtwlTOvBIh0,57027
|
|
36
|
+
airflow/providers/cncf/kubernetes/operators/resource.py,sha256=graV9wcvhtbRnUuxXQP_oJBCSx1SYt_08JGwQ0GFVVw,7597
|
|
37
|
+
airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py,sha256=GPsKBKT0YM4DYfehLjBGjkiEsNsqZ3ccaZ8YUjSGzKU,13846
|
|
38
38
|
airflow/providers/cncf/kubernetes/pod_template_file_examples/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
39
39
|
airflow/providers/cncf/kubernetes/pod_template_file_examples/dags_in_image_template.yaml,sha256=7JdppZ-XDBpv2Bnde2SthhcME8w3b8xQdPAK1fJGW60,2256
|
|
40
40
|
airflow/providers/cncf/kubernetes/pod_template_file_examples/dags_in_volume_template.yaml,sha256=-Pk_EwKpyWRYZKOnumUxVrDeAfFJ0nr3WZ7JNnvppzg,2442
|
|
41
41
|
airflow/providers/cncf/kubernetes/pod_template_file_examples/git_sync_template.yaml,sha256=Pxpa1AiBlf4H8aIc7tUTmH2XNOz84cO0ttMQdlfMJ2c,3020
|
|
42
42
|
airflow/providers/cncf/kubernetes/resource_convert/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
43
43
|
airflow/providers/cncf/kubernetes/resource_convert/configmap.py,sha256=gf7DdVeD0yKRNCTVCM-SywJDxwEJTYx3ogykAqbxRoU,1873
|
|
44
|
-
airflow/providers/cncf/kubernetes/resource_convert/env_variable.py,sha256=
|
|
44
|
+
airflow/providers/cncf/kubernetes/resource_convert/env_variable.py,sha256=sCjpD8AbVqhq5hDDnKwn-Qo3mNHLWpY152S3JWpEpEk,1463
|
|
45
45
|
airflow/providers/cncf/kubernetes/resource_convert/secret.py,sha256=ElZCMbTWeTKoPeIJ1fTvlqRXM8nGkWj2MrIlVckX6Ag,1494
|
|
46
46
|
airflow/providers/cncf/kubernetes/sensors/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
47
|
-
airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py,sha256=
|
|
47
|
+
airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py,sha256=qsU1mAEnHXKNaI6DaGnTzcXR17aGzPGnT3eWOZICnl0,5379
|
|
48
48
|
airflow/providers/cncf/kubernetes/triggers/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
49
49
|
airflow/providers/cncf/kubernetes/triggers/job.py,sha256=DGbC1FZktBF-00Lb0pU9iIKQnmdW8HWklp5Wwq54OEY,6754
|
|
50
50
|
airflow/providers/cncf/kubernetes/triggers/pod.py,sha256=7vLj9SvOOwh9p5XSZIr7mj47YWe_aPQgtN7uEZhma68,12653
|
|
51
51
|
airflow/providers/cncf/kubernetes/utils/__init__.py,sha256=ClZN0VPjWySdVwS_ktH7rrgL9VLAcs3OSJSB9s3zaYw,863
|
|
52
52
|
airflow/providers/cncf/kubernetes/utils/delete_from.py,sha256=poObZSoEJwQyaYWilEURs8f4CDY2sn_pfwS31Lf579A,5195
|
|
53
|
-
airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py,sha256=
|
|
54
|
-
airflow/providers/cncf/kubernetes/utils/pod_manager.py,sha256
|
|
53
|
+
airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py,sha256=wiqkHS8WbSZGEtSCO8ENMtKbAVpboODKb29wU96Ffk0,1954
|
|
54
|
+
airflow/providers/cncf/kubernetes/utils/pod_manager.py,sha256=_76aQ2BkY1XK2mtHpW_g8jj1n7vuR9iX0rQIqI7IVek,36475
|
|
55
55
|
airflow/providers/cncf/kubernetes/utils/xcom_sidecar.py,sha256=k6bdmVJ21OrAwGmWwledRrAmaty9ZrmbuM-IbaI4mqo,2519
|
|
56
|
-
apache_airflow_providers_cncf_kubernetes-10.
|
|
57
|
-
apache_airflow_providers_cncf_kubernetes-10.
|
|
58
|
-
apache_airflow_providers_cncf_kubernetes-10.
|
|
59
|
-
apache_airflow_providers_cncf_kubernetes-10.
|
|
56
|
+
apache_airflow_providers_cncf_kubernetes-10.2.0.dist-info/entry_points.txt,sha256=ByD3QJJyP9CfmTYtpNI1953akD38RUDgpGXLaq9vpOw,111
|
|
57
|
+
apache_airflow_providers_cncf_kubernetes-10.2.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
|
|
58
|
+
apache_airflow_providers_cncf_kubernetes-10.2.0.dist-info/METADATA,sha256=8qTJt41-D6_NmOXV1Of5avyBUCXikEM9Z7_tiQcaraY,4381
|
|
59
|
+
apache_airflow_providers_cncf_kubernetes-10.2.0.dist-info/RECORD,,
|