apache-airflow-providers-cncf-kubernetes 8.3.0rc2__py3-none-any.whl → 8.3.1rc1__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.
- airflow/providers/cncf/kubernetes/LICENSE +4 -4
- airflow/providers/cncf/kubernetes/__init__.py +1 -1
- airflow/providers/cncf/kubernetes/cli/kubernetes_command.py +2 -2
- airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py +16 -2
- airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py +8 -1
- airflow/providers/cncf/kubernetes/get_provider_info.py +3 -2
- airflow/providers/cncf/kubernetes/operators/pod.py +60 -21
- airflow/providers/cncf/kubernetes/triggers/pod.py +6 -4
- {apache_airflow_providers_cncf_kubernetes-8.3.0rc2.dist-info → apache_airflow_providers_cncf_kubernetes-8.3.1rc1.dist-info}/METADATA +8 -8
- {apache_airflow_providers_cncf_kubernetes-8.3.0rc2.dist-info → apache_airflow_providers_cncf_kubernetes-8.3.1rc1.dist-info}/RECORD +12 -12
- {apache_airflow_providers_cncf_kubernetes-8.3.0rc2.dist-info → apache_airflow_providers_cncf_kubernetes-8.3.1rc1.dist-info}/WHEEL +0 -0
- {apache_airflow_providers_cncf_kubernetes-8.3.0rc2.dist-info → apache_airflow_providers_cncf_kubernetes-8.3.1rc1.dist-info}/entry_points.txt +0 -0
|
@@ -215,7 +215,7 @@ Third party Apache 2.0 licenses
|
|
|
215
215
|
|
|
216
216
|
The following components are provided under the Apache 2.0 License.
|
|
217
217
|
See project link for details. The text of each license is also included
|
|
218
|
-
at licenses/LICENSE-[project].txt.
|
|
218
|
+
at 3rd-party-licenses/LICENSE-[project].txt.
|
|
219
219
|
|
|
220
220
|
(ALv2 License) hue v4.3.0 (https://github.com/cloudera/hue/)
|
|
221
221
|
(ALv2 License) jqclock v2.3.0 (https://github.com/JohnRDOrazio/jQuery-Clock-Plugin)
|
|
@@ -227,7 +227,7 @@ MIT licenses
|
|
|
227
227
|
========================================================================
|
|
228
228
|
|
|
229
229
|
The following components are provided under the MIT License. See project link for details.
|
|
230
|
-
The text of each license is also included at licenses/LICENSE-[project].txt.
|
|
230
|
+
The text of each license is also included at 3rd-party-licenses/LICENSE-[project].txt.
|
|
231
231
|
|
|
232
232
|
(MIT License) jquery v3.5.1 (https://jquery.org/license/)
|
|
233
233
|
(MIT License) dagre-d3 v0.6.4 (https://github.com/cpettitt/dagre-d3)
|
|
@@ -243,11 +243,11 @@ The text of each license is also included at licenses/LICENSE-[project].txt.
|
|
|
243
243
|
BSD 3-Clause licenses
|
|
244
244
|
========================================================================
|
|
245
245
|
The following components are provided under the BSD 3-Clause license. See project links for details.
|
|
246
|
-
The text of each license is also included at licenses/LICENSE-[project].txt.
|
|
246
|
+
The text of each license is also included at 3rd-party-licenses/LICENSE-[project].txt.
|
|
247
247
|
|
|
248
248
|
(BSD 3 License) d3 v5.16.0 (https://d3js.org)
|
|
249
249
|
(BSD 3 License) d3-shape v2.1.0 (https://github.com/d3/d3-shape)
|
|
250
250
|
(BSD 3 License) cgroupspy 0.2.1 (https://github.com/cloudsigma/cgroupspy)
|
|
251
251
|
|
|
252
252
|
========================================================================
|
|
253
|
-
See licenses/LICENSES-ui.txt for packages used in `/airflow/www`
|
|
253
|
+
See 3rd-party-licenses/LICENSES-ui.txt for packages used in `/airflow/www`
|
|
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
|
|
|
29
29
|
|
|
30
30
|
__all__ = ["__version__"]
|
|
31
31
|
|
|
32
|
-
__version__ = "8.3.
|
|
32
|
+
__version__ = "8.3.1"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
35
|
"2.7.0"
|
|
@@ -30,7 +30,7 @@ from airflow.models import DagRun, TaskInstance
|
|
|
30
30
|
from airflow.providers.cncf.kubernetes import pod_generator
|
|
31
31
|
from airflow.providers.cncf.kubernetes.executors.kubernetes_executor import KubeConfig
|
|
32
32
|
from airflow.providers.cncf.kubernetes.kube_client import get_kube_client
|
|
33
|
-
from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import
|
|
33
|
+
from airflow.providers.cncf.kubernetes.kubernetes_helper_functions import create_unique_id
|
|
34
34
|
from airflow.providers.cncf.kubernetes.pod_generator import PodGenerator
|
|
35
35
|
from airflow.utils import cli as cli_utils, yaml
|
|
36
36
|
from airflow.utils.cli import get_dag
|
|
@@ -52,7 +52,7 @@ def generate_pod_yaml(args):
|
|
|
52
52
|
pod = PodGenerator.construct_pod(
|
|
53
53
|
dag_id=args.dag_id,
|
|
54
54
|
task_id=ti.task_id,
|
|
55
|
-
pod_id=
|
|
55
|
+
pod_id=create_unique_id(args.dag_id, ti.task_id),
|
|
56
56
|
try_number=ti.try_number,
|
|
57
57
|
kube_image=kube_config.kube_image,
|
|
58
58
|
date=ti.execution_date,
|
|
@@ -83,7 +83,6 @@ if TYPE_CHECKING:
|
|
|
83
83
|
AirflowKubernetesScheduler,
|
|
84
84
|
)
|
|
85
85
|
|
|
86
|
-
|
|
87
86
|
# CLI Args
|
|
88
87
|
ARG_NAMESPACE = Arg(
|
|
89
88
|
("--namespace",),
|
|
@@ -577,7 +576,22 @@ class KubernetesExecutor(BaseExecutor):
|
|
|
577
576
|
for pod in pod_list:
|
|
578
577
|
self.adopt_launched_task(kube_client, pod, tis_to_flush_by_key)
|
|
579
578
|
self._adopt_completed_pods(kube_client)
|
|
580
|
-
|
|
579
|
+
|
|
580
|
+
# as this method can be retried within a short time frame
|
|
581
|
+
# (wrapped in a run_with_db_retries of scheduler_job_runner,
|
|
582
|
+
# and get retried due to an OperationalError, for example),
|
|
583
|
+
# there is a chance that in second attempt, adopt_launched_task will not be called even once
|
|
584
|
+
# as all pods are already adopted in the first attempt.
|
|
585
|
+
# and tis_to_flush_by_key will contain TIs that are already adopted.
|
|
586
|
+
# therefore, we need to check if the TIs are already adopted by the first attempt and remove them.
|
|
587
|
+
def _iter_tis_to_flush():
|
|
588
|
+
for key, ti in tis_to_flush_by_key.items():
|
|
589
|
+
if key in self.running:
|
|
590
|
+
self.log.info("%s is already adopted, no need to flush.", ti)
|
|
591
|
+
else:
|
|
592
|
+
yield ti
|
|
593
|
+
|
|
594
|
+
tis_to_flush.extend(_iter_tis_to_flush())
|
|
581
595
|
return tis_to_flush
|
|
582
596
|
|
|
583
597
|
def cleanup_stuck_queued_tasks(self, tis: list[TaskInstance]) -> list[str]:
|
|
@@ -230,7 +230,6 @@ class KubernetesJobWatcher(multiprocessing.Process, LoggingMixin):
|
|
|
230
230
|
self.kube_config.worker_pod_pending_fatal_container_state_reasons
|
|
231
231
|
and "status" in event["raw_object"]
|
|
232
232
|
):
|
|
233
|
-
self.log.info("Event: %s Pending, annotations: %s", pod_name, annotations_string)
|
|
234
233
|
# Init containers and base container statuses to check.
|
|
235
234
|
# Skipping the other containers statuses check.
|
|
236
235
|
container_statuses_to_check = []
|
|
@@ -250,10 +249,18 @@ class KubernetesJobWatcher(multiprocessing.Process, LoggingMixin):
|
|
|
250
249
|
and container_status_state["waiting"]["message"] == "pull QPS exceeded"
|
|
251
250
|
):
|
|
252
251
|
continue
|
|
252
|
+
self.log.error(
|
|
253
|
+
"Event: %s has container %s with fatal reason %s",
|
|
254
|
+
pod_name,
|
|
255
|
+
container_status["name"],
|
|
256
|
+
container_status_state["waiting"]["reason"],
|
|
257
|
+
)
|
|
253
258
|
self.watcher_queue.put(
|
|
254
259
|
(pod_name, namespace, TaskInstanceState.FAILED, annotations, resource_version)
|
|
255
260
|
)
|
|
256
261
|
break
|
|
262
|
+
else:
|
|
263
|
+
self.log.info("Event: %s Pending, annotations: %s", pod_name, annotations_string)
|
|
257
264
|
else:
|
|
258
265
|
self.log.debug("Event: %s Pending, annotations: %s", pod_name, annotations_string)
|
|
259
266
|
elif status == "Failed":
|
|
@@ -28,8 +28,9 @@ def get_provider_info():
|
|
|
28
28
|
"name": "Kubernetes",
|
|
29
29
|
"description": "`Kubernetes <https://kubernetes.io/>`__\n",
|
|
30
30
|
"state": "ready",
|
|
31
|
-
"source-date-epoch":
|
|
31
|
+
"source-date-epoch": 1717567104,
|
|
32
32
|
"versions": [
|
|
33
|
+
"8.3.1",
|
|
33
34
|
"8.3.0",
|
|
34
35
|
"8.2.0",
|
|
35
36
|
"8.1.1",
|
|
@@ -92,7 +93,7 @@ def get_provider_info():
|
|
|
92
93
|
"aiofiles>=23.2.0",
|
|
93
94
|
"apache-airflow>=2.7.0",
|
|
94
95
|
"asgiref>=3.5.2",
|
|
95
|
-
"cryptography>=
|
|
96
|
+
"cryptography>=41.0.0",
|
|
96
97
|
"kubernetes>=28.1.0,<=29.0.0",
|
|
97
98
|
"kubernetes_asyncio>=28.1.0,<=29.0.0",
|
|
98
99
|
"google-re2>=1.0",
|
|
@@ -469,7 +469,9 @@ class KubernetesPodOperator(BaseOperator):
|
|
|
469
469
|
"""
|
|
470
470
|
Generate labels for the pod to track the pod in case of Operator crash.
|
|
471
471
|
|
|
472
|
-
:param context: task context provided by airflow DAG
|
|
472
|
+
:param context: task context provided by airflow DAG.
|
|
473
|
+
:param include_try_number: if set to True will add the try number
|
|
474
|
+
from the task context to the pod labels.
|
|
473
475
|
:return: dict
|
|
474
476
|
"""
|
|
475
477
|
if not context:
|
|
@@ -534,24 +536,31 @@ class KubernetesPodOperator(BaseOperator):
|
|
|
534
536
|
|
|
535
537
|
pod = None
|
|
536
538
|
num_pods = len(pod_list)
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
elif num_pods == 1:
|
|
539
|
+
|
|
540
|
+
if num_pods == 1:
|
|
540
541
|
pod = pod_list[0]
|
|
541
|
-
self.
|
|
542
|
-
|
|
543
|
-
self.
|
|
542
|
+
self.log_matching_pod(pod=pod, context=context)
|
|
543
|
+
elif num_pods > 1:
|
|
544
|
+
if self.reattach_on_restart:
|
|
545
|
+
raise AirflowException(f"More than one pod running with labels {label_selector}")
|
|
546
|
+
self.log.warning("Found more than one pod running with labels %s, resolving ...", label_selector)
|
|
547
|
+
pod = self.process_duplicate_label_pods(pod_list)
|
|
548
|
+
self.log_matching_pod(pod=pod, context=context)
|
|
549
|
+
|
|
544
550
|
return pod
|
|
545
551
|
|
|
552
|
+
def log_matching_pod(self, pod: k8s.V1Pod, context: Context) -> None:
|
|
553
|
+
self.log.info("Found matching pod %s with labels %s", pod.metadata.name, pod.metadata.labels)
|
|
554
|
+
self.log.info("`try_number` of task_instance: %s", context["ti"].try_number)
|
|
555
|
+
self.log.info("`try_number` of pod: %s", pod.metadata.labels["try_number"])
|
|
556
|
+
|
|
546
557
|
def get_or_create_pod(self, pod_request_obj: k8s.V1Pod, context: Context) -> k8s.V1Pod:
|
|
547
558
|
if self.reattach_on_restart:
|
|
548
559
|
pod = self.find_pod(self.namespace or pod_request_obj.metadata.namespace, context=context)
|
|
549
560
|
if pod:
|
|
550
561
|
return pod
|
|
551
|
-
|
|
552
562
|
self.log.debug("Starting pod:\n%s", yaml.safe_dump(pod_request_obj.to_dict()))
|
|
553
563
|
self.pod_manager.create_pod(pod=pod_request_obj)
|
|
554
|
-
|
|
555
564
|
return pod_request_obj
|
|
556
565
|
|
|
557
566
|
def await_pod_start(self, pod: k8s.V1Pod) -> None:
|
|
@@ -612,16 +621,7 @@ class KubernetesPodOperator(BaseOperator):
|
|
|
612
621
|
mode=ExecutionMode.SYNC,
|
|
613
622
|
)
|
|
614
623
|
|
|
615
|
-
|
|
616
|
-
self.pod_manager.fetch_requested_container_logs(
|
|
617
|
-
pod=self.pod,
|
|
618
|
-
containers=self.container_logs,
|
|
619
|
-
follow_logs=True,
|
|
620
|
-
)
|
|
621
|
-
if not self.get_logs or (
|
|
622
|
-
self.container_logs is not True and self.base_container_name not in self.container_logs
|
|
623
|
-
):
|
|
624
|
-
self.await_container_completion(pod=self.pod, container_name=self.base_container_name)
|
|
624
|
+
self.await_pod_completion(pod=self.pod)
|
|
625
625
|
if self.callbacks:
|
|
626
626
|
self.callbacks.on_pod_completion(
|
|
627
627
|
pod=self.find_pod(self.pod.metadata.namespace, context=context),
|
|
@@ -654,9 +654,18 @@ class KubernetesPodOperator(BaseOperator):
|
|
|
654
654
|
retry=tenacity.retry_if_exception(lambda exc: check_exception_is_kubernetes_api_unauthorized(exc)),
|
|
655
655
|
reraise=True,
|
|
656
656
|
)
|
|
657
|
-
def
|
|
657
|
+
def await_pod_completion(self, pod: k8s.V1Pod):
|
|
658
658
|
try:
|
|
659
|
-
self.
|
|
659
|
+
if self.get_logs:
|
|
660
|
+
self.pod_manager.fetch_requested_container_logs(
|
|
661
|
+
pod=pod,
|
|
662
|
+
containers=self.container_logs,
|
|
663
|
+
follow_logs=True,
|
|
664
|
+
)
|
|
665
|
+
if not self.get_logs or (
|
|
666
|
+
self.container_logs is not True and self.base_container_name not in self.container_logs
|
|
667
|
+
):
|
|
668
|
+
self.pod_manager.await_container_completion(pod=pod, container_name=self.base_container_name)
|
|
660
669
|
except kubernetes.client.exceptions.ApiException as exc:
|
|
661
670
|
if exc.status and str(exc.status) == "401":
|
|
662
671
|
self.log.warning(
|
|
@@ -1138,6 +1147,36 @@ class KubernetesPodOperator(BaseOperator):
|
|
|
1138
1147
|
def execute_complete(self, context: Context, event: dict, **kwargs):
|
|
1139
1148
|
return self.trigger_reentry(context=context, event=event)
|
|
1140
1149
|
|
|
1150
|
+
def process_duplicate_label_pods(self, pod_list: list[k8s.V1Pod]) -> k8s.V1Pod:
|
|
1151
|
+
"""
|
|
1152
|
+
Patch or delete the existing pod with duplicate labels.
|
|
1153
|
+
|
|
1154
|
+
This is to handle an edge case that can happen only if reattach_on_restart
|
|
1155
|
+
flag is False, and the previous run attempt has failed because the task
|
|
1156
|
+
process has been killed externally by the cluster or another process.
|
|
1157
|
+
|
|
1158
|
+
If the task process is killed externally, it breaks the code execution and
|
|
1159
|
+
immediately exists the task. As a result the pod created in the previous attempt
|
|
1160
|
+
will not be properly deleted or patched by cleanup() method.
|
|
1161
|
+
|
|
1162
|
+
Return the newly created pod to be used for the next run attempt.
|
|
1163
|
+
"""
|
|
1164
|
+
new_pod = pod_list.pop(self._get_most_recent_pod_index(pod_list))
|
|
1165
|
+
old_pod = pod_list[0]
|
|
1166
|
+
self.patch_already_checked(old_pod, reraise=False)
|
|
1167
|
+
if self.on_finish_action == OnFinishAction.DELETE_POD:
|
|
1168
|
+
self.process_pod_deletion(old_pod)
|
|
1169
|
+
return new_pod
|
|
1170
|
+
|
|
1171
|
+
@staticmethod
|
|
1172
|
+
def _get_most_recent_pod_index(pod_list: list[k8s.V1Pod]) -> int:
|
|
1173
|
+
"""Loop through a list of V1Pod objects and get the index of the most recent one."""
|
|
1174
|
+
pod_start_times: list[datetime.datetime] = [
|
|
1175
|
+
pod.to_dict().get("status").get("start_time") for pod in pod_list
|
|
1176
|
+
]
|
|
1177
|
+
most_recent_start_time = max(pod_start_times)
|
|
1178
|
+
return pod_start_times.index(most_recent_start_time)
|
|
1179
|
+
|
|
1141
1180
|
|
|
1142
1181
|
class _optionally_suppress(AbstractContextManager):
|
|
1143
1182
|
"""
|
|
@@ -219,15 +219,17 @@ class KubernetesPodTrigger(BaseTrigger):
|
|
|
219
219
|
|
|
220
220
|
async def _wait_for_pod_start(self) -> ContainerState:
|
|
221
221
|
"""Loops until pod phase leaves ``PENDING`` If timeout is reached, throws error."""
|
|
222
|
-
|
|
223
|
-
while self.startup_timeout >= delta.total_seconds():
|
|
222
|
+
while True:
|
|
224
223
|
pod = await self.hook.get_pod(self.pod_name, self.pod_namespace)
|
|
225
224
|
if not pod.status.phase == "Pending":
|
|
226
225
|
return self.define_container_state(pod)
|
|
226
|
+
|
|
227
|
+
delta = datetime.datetime.now(tz=datetime.timezone.utc) - self.trigger_start_time
|
|
228
|
+
if self.startup_timeout < delta.total_seconds():
|
|
229
|
+
raise PodLaunchTimeoutException("Pod did not leave 'Pending' phase within specified timeout")
|
|
230
|
+
|
|
227
231
|
self.log.info("Still waiting for pod to start. The pod state is %s", pod.status.phase)
|
|
228
232
|
await asyncio.sleep(self.startup_check_interval)
|
|
229
|
-
delta = datetime.datetime.now(tz=datetime.timezone.utc) - self.trigger_start_time
|
|
230
|
-
raise PodLaunchTimeoutException("Pod did not leave 'Pending' phase within specified timeout")
|
|
231
233
|
|
|
232
234
|
async def _wait_for_container_completion(self) -> TriggerEvent:
|
|
233
235
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: apache-airflow-providers-cncf-kubernetes
|
|
3
|
-
Version: 8.3.
|
|
3
|
+
Version: 8.3.1rc1
|
|
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>
|
|
@@ -24,13 +24,13 @@ Classifier: Topic :: System :: Monitoring
|
|
|
24
24
|
Requires-Dist: aiofiles>=23.2.0
|
|
25
25
|
Requires-Dist: apache-airflow>=2.7.0rc0
|
|
26
26
|
Requires-Dist: asgiref>=3.5.2
|
|
27
|
-
Requires-Dist: cryptography>=
|
|
27
|
+
Requires-Dist: cryptography>=41.0.0
|
|
28
28
|
Requires-Dist: google-re2>=1.0
|
|
29
29
|
Requires-Dist: kubernetes>=28.1.0,<=29.0.0
|
|
30
30
|
Requires-Dist: kubernetes_asyncio>=28.1.0,<=29.0.0
|
|
31
31
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
32
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/8.3.
|
|
33
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/8.3.
|
|
32
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/8.3.1/changelog.html
|
|
33
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/8.3.1
|
|
34
34
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
35
35
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
36
36
|
Project-URL: Twitter, https://twitter.com/ApacheAirflow
|
|
@@ -80,7 +80,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
|
80
80
|
|
|
81
81
|
Package ``apache-airflow-providers-cncf-kubernetes``
|
|
82
82
|
|
|
83
|
-
Release: ``8.3.
|
|
83
|
+
Release: ``8.3.1.rc1``
|
|
84
84
|
|
|
85
85
|
|
|
86
86
|
`Kubernetes <https://kubernetes.io/>`__
|
|
@@ -93,7 +93,7 @@ This is a provider package for ``cncf.kubernetes`` provider. All classes for thi
|
|
|
93
93
|
are in ``airflow.providers.cncf.kubernetes`` python package.
|
|
94
94
|
|
|
95
95
|
You can find package information and changelog for the provider
|
|
96
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/8.3.
|
|
96
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/8.3.1/>`_.
|
|
97
97
|
|
|
98
98
|
Installation
|
|
99
99
|
------------
|
|
@@ -113,11 +113,11 @@ PIP package Version required
|
|
|
113
113
|
``aiofiles`` ``>=23.2.0``
|
|
114
114
|
``apache-airflow`` ``>=2.7.0``
|
|
115
115
|
``asgiref`` ``>=3.5.2``
|
|
116
|
-
``cryptography`` ``>=
|
|
116
|
+
``cryptography`` ``>=41.0.0``
|
|
117
117
|
``kubernetes`` ``>=28.1.0,<=29.0.0``
|
|
118
118
|
``kubernetes_asyncio`` ``>=28.1.0,<=29.0.0``
|
|
119
119
|
``google-re2`` ``>=1.0``
|
|
120
120
|
====================== =====================
|
|
121
121
|
|
|
122
122
|
The changelog for the provider package can be found in the
|
|
123
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/8.3.
|
|
123
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/8.3.1/changelog.html>`_.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
airflow/providers/cncf/kubernetes/LICENSE,sha256=
|
|
2
|
-
airflow/providers/cncf/kubernetes/__init__.py,sha256=
|
|
1
|
+
airflow/providers/cncf/kubernetes/LICENSE,sha256=FFb4jd2AXnOOf7XLP04pQW6jbdhG49TxlGY6fFpCV1Y,13609
|
|
2
|
+
airflow/providers/cncf/kubernetes/__init__.py,sha256=dMoDAIRbZ-DMwIALcZ5M3UYqbx6Gw7ZhN8Mo2VMrF-g,1502
|
|
3
3
|
airflow/providers/cncf/kubernetes/callbacks.py,sha256=s3DRwNmQJSBlbeUwhSUJwfRFFMdJ9h_PnBzVl881r-8,4094
|
|
4
|
-
airflow/providers/cncf/kubernetes/get_provider_info.py,sha256=
|
|
4
|
+
airflow/providers/cncf/kubernetes/get_provider_info.py,sha256=TPvVUx3tKOoc--63gWAdPPx0WnHFhR6InUNWAyHwuYM,17818
|
|
5
5
|
airflow/providers/cncf/kubernetes/k8s_model.py,sha256=xmdFhX29DjegoZ-cq8-KDL9soVYXf4OpU6fAGr3cPTU,2101
|
|
6
6
|
airflow/providers/cncf/kubernetes/kube_client.py,sha256=yflZxLousXA9d7t67KrEy55qzb1cUhEyy6yCPkEem28,5329
|
|
7
7
|
airflow/providers/cncf/kubernetes/kube_config.py,sha256=FAmhZZ_Z2JtoVzL6wENSjcwrlwAenHttTX_Ild9aEms,5225
|
|
@@ -16,13 +16,13 @@ airflow/providers/cncf/kubernetes/template_rendering.py,sha256=AZesc6MDfpFHoN1Pv
|
|
|
16
16
|
airflow/providers/cncf/kubernetes/backcompat/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
17
17
|
airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py,sha256=2jIehZsixt4ZGwTkj7kC8Uq3w8XwFAEzZV4g8SyIUZI,4340
|
|
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=W49hsWZ3XWUJgFLte56tMNGqmOvcFitl7iFjmFR8Ezo,6990
|
|
20
20
|
airflow/providers/cncf/kubernetes/decorators/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
|
|
21
21
|
airflow/providers/cncf/kubernetes/decorators/kubernetes.py,sha256=YGEdDNZhxeq8dpAaKpwMS2oGRvN1sN0xzf8mYotMk1E,5780
|
|
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=-BqHEVsXik6J-4JUJR02B9g19m3ENwJnxXvXzP0HT_I,34117
|
|
24
24
|
airflow/providers/cncf/kubernetes/executors/kubernetes_executor_types.py,sha256=9rRhfRuujGtSE73Ax0kC12whZCgWF2m6j5w9G9e0F_I,1673
|
|
25
|
-
airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py,sha256=
|
|
25
|
+
airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py,sha256=uJ_w7HoTRuMz4d_jS9dy9TPnE5UK_uF1Ig_7O1I6tvQ,23802
|
|
26
26
|
airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py,sha256=r5cvhj9NUTreQScn3Y8NlPFoYIa_NaAVQ27WqtOrJvw,10014
|
|
27
27
|
airflow/providers/cncf/kubernetes/hooks/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
28
28
|
airflow/providers/cncf/kubernetes/hooks/kubernetes.py,sha256=2etfKXuBASdOEGP8VDxUL-l-6RRrS5JM9VJyYpL7bwk,31879
|
|
@@ -32,7 +32,7 @@ airflow/providers/cncf/kubernetes/operators/__init__.py,sha256=mlJxuZLkd5x-iq2SB
|
|
|
32
32
|
airflow/providers/cncf/kubernetes/operators/custom_object_launcher.py,sha256=ZEXw_PqGItO47AEgGKqAqwFHFo-gb9-7jgEMRJgOfNU,15311
|
|
33
33
|
airflow/providers/cncf/kubernetes/operators/job.py,sha256=qbhaytWCoi2XdkWZnDFfFPOt1CsNDk7wyrCWtn1nxlk,21432
|
|
34
34
|
airflow/providers/cncf/kubernetes/operators/kubernetes_pod.py,sha256=EFwHEdEqq4I18BeV9hgp_GFxrLI78ihZAccbyGLSjtY,1269
|
|
35
|
-
airflow/providers/cncf/kubernetes/operators/pod.py,sha256=
|
|
35
|
+
airflow/providers/cncf/kubernetes/operators/pod.py,sha256=WefwtVffBnP5jMHhXXILZPlS6je0yF99ATd7-Ig44oY,54027
|
|
36
36
|
airflow/providers/cncf/kubernetes/operators/resource.py,sha256=ccbZQKB1B5N4Y-ruItacB5Q105Tc0uNSoEmUAaSCrGQ,7570
|
|
37
37
|
airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py,sha256=xHuxlcGeMg3afAHEW1JSU9oTdJJ_p07EiqUdA4oxJuU,13262
|
|
38
38
|
airflow/providers/cncf/kubernetes/pod_template_file_examples/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
@@ -48,13 +48,13 @@ airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py,sha256=AFml2CgXTV1
|
|
|
48
48
|
airflow/providers/cncf/kubernetes/triggers/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
49
49
|
airflow/providers/cncf/kubernetes/triggers/job.py,sha256=kNxPW19yV6TcrXe6Xio_g38YneBGvAiMuHV43-nsUds,4060
|
|
50
50
|
airflow/providers/cncf/kubernetes/triggers/kubernetes_pod.py,sha256=Cfq-gmdXsW2QGFiX-EYAGsCpN_MDvofbfr3bK7QfQho,1266
|
|
51
|
-
airflow/providers/cncf/kubernetes/triggers/pod.py,sha256=
|
|
51
|
+
airflow/providers/cncf/kubernetes/triggers/pod.py,sha256=XTIPCUr61WU81-s14l6xDqf1AvsOzpAct2Yk0IBd0xQ,13610
|
|
52
52
|
airflow/providers/cncf/kubernetes/utils/__init__.py,sha256=ClZN0VPjWySdVwS_ktH7rrgL9VLAcs3OSJSB9s3zaYw,863
|
|
53
53
|
airflow/providers/cncf/kubernetes/utils/delete_from.py,sha256=poObZSoEJwQyaYWilEURs8f4CDY2sn_pfwS31Lf579A,5195
|
|
54
54
|
airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py,sha256=-Pgc5i2WEDl7ZBvtJZ4eWDqqlSj8WdULqwUyOWmsRp8,1928
|
|
55
55
|
airflow/providers/cncf/kubernetes/utils/pod_manager.py,sha256=g4JZpRJONuWFLdSlc7VyBtDGoST7H4W9LAt2nqNtDpg,33669
|
|
56
56
|
airflow/providers/cncf/kubernetes/utils/xcom_sidecar.py,sha256=k6bdmVJ21OrAwGmWwledRrAmaty9ZrmbuM-IbaI4mqo,2519
|
|
57
|
-
apache_airflow_providers_cncf_kubernetes-8.3.
|
|
58
|
-
apache_airflow_providers_cncf_kubernetes-8.3.
|
|
59
|
-
apache_airflow_providers_cncf_kubernetes-8.3.
|
|
60
|
-
apache_airflow_providers_cncf_kubernetes-8.3.
|
|
57
|
+
apache_airflow_providers_cncf_kubernetes-8.3.1rc1.dist-info/entry_points.txt,sha256=ByD3QJJyP9CfmTYtpNI1953akD38RUDgpGXLaq9vpOw,111
|
|
58
|
+
apache_airflow_providers_cncf_kubernetes-8.3.1rc1.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
|
59
|
+
apache_airflow_providers_cncf_kubernetes-8.3.1rc1.dist-info/METADATA,sha256=bH-PbaLkBH5xdyISoZ9l9RJrHPY0pLrnVYQv2mk2bBk,5270
|
|
60
|
+
apache_airflow_providers_cncf_kubernetes-8.3.1rc1.dist-info/RECORD,,
|
|
File without changes
|