apache-airflow-providers-cncf-kubernetes 10.8.0rc1__tar.gz → 10.10.0__tar.gz
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.
- apache_airflow_providers_cncf_kubernetes-10.10.0/NOTICE +5 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/PKG-INFO +44 -21
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/README.rst +33 -13
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/changelog.rst +108 -2
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/index.rst +40 -11
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/kubernetes_executor.rst +2 -2
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/operators.rst +2 -2
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/provider.yaml +14 -1
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/pyproject.toml +12 -8
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/__init__.py +1 -1
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/cli/kubernetes_command.py +1 -1
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/decorators/kubernetes.py +1 -1
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/decorators/kubernetes_cmd.py +1 -1
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/exceptions.py +8 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/executors/kubernetes_executor.py +24 -5
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/get_provider_info.py +6 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/hooks/kubernetes.py +73 -19
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/kube_config.py +24 -1
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/kubernetes_helper_functions.py +2 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/custom_object_launcher.py +3 -1
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/job.py +6 -1
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/kueue.py +6 -1
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/pod.py +73 -73
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/resource.py +6 -1
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py +79 -33
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/secret.py +3 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/sensors/spark_kubernetes.py +1 -1
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/triggers/pod.py +56 -24
- apache_airflow_providers_cncf_kubernetes-10.10.0/src/airflow/providers/cncf/kubernetes/utils/container.py +118 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/utils/pod_manager.py +252 -195
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/version_compat.py +1 -33
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/decorators/test_kubernetes_cmd.py +2 -2
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/decorators/test_kubernetes_commons.py +1 -1
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/executors/test_kubernetes_executor.py +31 -8
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/hooks/test_kubernetes.py +33 -33
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/log_handlers/test_log_handlers.py +3 -5
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/test_custom_object_launcher.py +21 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/test_job.py +5 -5
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/test_pod.py +173 -53
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/test_spark_kubernetes.py +283 -100
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/sensors/test_spark_kubernetes.py +10 -17
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/test_kubernetes_helper_functions.py +3 -3
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/test_pod_generator.py +7 -7
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/triggers/test_pod.py +94 -37
- apache_airflow_providers_cncf_kubernetes-10.10.0/tests/unit/cncf/kubernetes/utils/test_container.py +172 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/utils/test_pod_manager.py +304 -172
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1/src/airflow/providers/cncf/kubernetes → apache_airflow_providers_cncf_kubernetes-10.10.0}/LICENSE +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/.latest-doc-only-change.txt +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/cli-ref.rst +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/commits.rst +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/conf.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/configurations-ref.rst +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/connections/kubernetes.rst +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/img/arch-diag-kubernetes.png +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/img/arch-diag-kubernetes2.png +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/img/k8s-failed-pod.png +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/img/k8s-happy-path.png +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/integration-logos/Kubernetes.png +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/integration-logos/Spark-On-Kubernetes.png +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/local_kubernetes_executor.rst +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/redirects.txt +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/docs/security.rst +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/backcompat/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/backcompat/backwards_compat_converters.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/callbacks.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/cli/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/decorators/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/executors/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/executors/kubernetes_executor_types.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/executors/kubernetes_executor_utils.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/executors/local_kubernetes_executor.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/hooks/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/k8s_model.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/kube_client.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/kubernetes_executor_templates/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/kubernetes_executor_templates/basic_template.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/operators/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/pod_generator.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/pod_template_file_examples/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/pod_template_file_examples/dags_in_image_template.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/pod_template_file_examples/dags_in_volume_template.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/pod_template_file_examples/git_sync_template.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/python_kubernetes_script.jinja2 +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/python_kubernetes_script.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/resource_convert/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/resource_convert/configmap.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/resource_convert/env_variable.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/resource_convert/secret.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/sensors/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/template_rendering.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/triggers/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/triggers/job.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/utils/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/utils/delete_from.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/utils/k8s_resource_iterator.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/src/airflow/providers/cncf/kubernetes/utils/xcom_sidecar.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/conftest.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes_async.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes_cmd_decorator.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes_decorator.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes_job.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes_kueue.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_kubernetes_resource.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_spark_kubernetes.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/example_spark_kubernetes_spark_pi.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/system/cncf/kubernetes/spark_job_template.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/backcompat/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/backcompat/test_backwards_compat_converters.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/cli/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/cli/test_kubernetes_command.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/conftest.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/executor/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/executor/basic_template.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/kube_config +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/pods/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/pods/generator_base.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/pods/generator_base_with_secrets.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/pods/template.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/spark/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/spark/application_template.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/spark/application_test.json +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/spark/application_test.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/spark/application_test_with_no_name_from_config.json +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/data_files/spark/application_test_with_no_name_from_config.yaml +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/decorators/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/decorators/test_kubernetes.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/executors/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/executors/test_local_kubernetes_executor.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/hooks/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/log_handlers/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/models/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/models/test_secret.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/test_kueue.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/operators/test_resource.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/resource_convert/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/resource_convert/test_configmap.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/resource_convert/test_env_variable.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/resource_convert/test_secret.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/sensors/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/test_callbacks.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/test_client.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/test_template_rendering.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/triggers/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/triggers/test_job.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/utils/__init__.py +0 -0
- {apache_airflow_providers_cncf_kubernetes-10.8.0rc1 → apache_airflow_providers_cncf_kubernetes-10.10.0}/tests/unit/cncf/kubernetes/utils/test_k8s_resource_iterator.py +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-cncf-kubernetes
|
|
3
|
-
Version: 10.
|
|
3
|
+
Version: 10.10.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>
|
|
7
7
|
Maintainer-email: Apache Software Foundation <dev@airflow.apache.org>
|
|
8
8
|
Requires-Python: >=3.10
|
|
9
9
|
Description-Content-Type: text/x-rst
|
|
10
|
+
License-Expression: Apache-2.0
|
|
10
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
12
|
Classifier: Environment :: Console
|
|
12
13
|
Classifier: Environment :: Web Environment
|
|
@@ -14,21 +15,23 @@ Classifier: Intended Audience :: Developers
|
|
|
14
15
|
Classifier: Intended Audience :: System Administrators
|
|
15
16
|
Classifier: Framework :: Apache Airflow
|
|
16
17
|
Classifier: Framework :: Apache Airflow :: Provider
|
|
17
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.10
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.13
|
|
22
22
|
Classifier: Topic :: System :: Monitoring
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
License-File: NOTICE
|
|
23
25
|
Requires-Dist: aiofiles>=23.2.0
|
|
24
|
-
Requires-Dist: apache-airflow>=2.10.
|
|
26
|
+
Requires-Dist: apache-airflow>=2.10.0
|
|
27
|
+
Requires-Dist: apache-airflow-providers-common-compat>=1.8.0
|
|
25
28
|
Requires-Dist: asgiref>=3.5.2
|
|
26
|
-
Requires-Dist: cryptography>=41.0.0
|
|
27
|
-
Requires-Dist: kubernetes>=32.0.0,<
|
|
28
|
-
Requires-Dist: kubernetes_asyncio>=32.0.0,<
|
|
29
|
+
Requires-Dist: cryptography>=41.0.0,<46.0.0
|
|
30
|
+
Requires-Dist: kubernetes>=32.0.0,<35.0.0
|
|
31
|
+
Requires-Dist: kubernetes_asyncio>=32.0.0,<35.0.0
|
|
29
32
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
30
|
-
Project-URL: Changelog, https://airflow.
|
|
31
|
-
Project-URL: Documentation, https://airflow.
|
|
33
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0/changelog.html
|
|
34
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0
|
|
32
35
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
33
36
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
34
37
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
@@ -59,7 +62,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
|
59
62
|
|
|
60
63
|
Package ``apache-airflow-providers-cncf-kubernetes``
|
|
61
64
|
|
|
62
|
-
Release: ``10.
|
|
65
|
+
Release: ``10.10.0``
|
|
63
66
|
|
|
64
67
|
|
|
65
68
|
`Kubernetes <https://kubernetes.io/>`__
|
|
@@ -72,7 +75,7 @@ This is a provider package for ``cncf.kubernetes`` provider. All classes for thi
|
|
|
72
75
|
are in ``airflow.providers.cncf.kubernetes`` python package.
|
|
73
76
|
|
|
74
77
|
You can find package information and changelog for the provider
|
|
75
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.
|
|
78
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0/>`_.
|
|
76
79
|
|
|
77
80
|
Installation
|
|
78
81
|
------------
|
|
@@ -86,17 +89,37 @@ The package supports the following python versions: 3.10,3.11,3.12,3.13
|
|
|
86
89
|
Requirements
|
|
87
90
|
------------
|
|
88
91
|
|
|
89
|
-
|
|
90
|
-
PIP package
|
|
91
|
-
|
|
92
|
-
``aiofiles``
|
|
93
|
-
``apache-airflow``
|
|
94
|
-
``
|
|
95
|
-
``
|
|
96
|
-
``
|
|
97
|
-
``
|
|
98
|
-
|
|
92
|
+
========================================== ====================
|
|
93
|
+
PIP package Version required
|
|
94
|
+
========================================== ====================
|
|
95
|
+
``aiofiles`` ``>=23.2.0``
|
|
96
|
+
``apache-airflow`` ``>=2.10.0``
|
|
97
|
+
``apache-airflow-providers-common-compat`` ``>=1.8.0``
|
|
98
|
+
``asgiref`` ``>=3.5.2``
|
|
99
|
+
``cryptography`` ``>=41.0.0,<46.0.0``
|
|
100
|
+
``kubernetes`` ``>=32.0.0,<35.0.0``
|
|
101
|
+
``kubernetes_asyncio`` ``>=32.0.0,<35.0.0``
|
|
102
|
+
========================================== ====================
|
|
103
|
+
|
|
104
|
+
Cross provider package dependencies
|
|
105
|
+
-----------------------------------
|
|
106
|
+
|
|
107
|
+
Those are dependencies that might be needed in order to use all the features of the package.
|
|
108
|
+
You need to install the specified providers in order to use them.
|
|
109
|
+
|
|
110
|
+
You can install such cross-provider dependencies when installing from PyPI. For example:
|
|
111
|
+
|
|
112
|
+
.. code-block:: bash
|
|
113
|
+
|
|
114
|
+
pip install apache-airflow-providers-cncf-kubernetes[common.compat]
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
================================================================================================================== =================
|
|
118
|
+
Dependent package Extra
|
|
119
|
+
================================================================================================================== =================
|
|
120
|
+
`apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
|
|
121
|
+
================================================================================================================== =================
|
|
99
122
|
|
|
100
123
|
The changelog for the provider package can be found in the
|
|
101
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.
|
|
124
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0/changelog.html>`_.
|
|
102
125
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
Package ``apache-airflow-providers-cncf-kubernetes``
|
|
25
25
|
|
|
26
|
-
Release: ``10.
|
|
26
|
+
Release: ``10.10.0``
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
`Kubernetes <https://kubernetes.io/>`__
|
|
@@ -36,7 +36,7 @@ This is a provider package for ``cncf.kubernetes`` provider. All classes for thi
|
|
|
36
36
|
are in ``airflow.providers.cncf.kubernetes`` python package.
|
|
37
37
|
|
|
38
38
|
You can find package information and changelog for the provider
|
|
39
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.
|
|
39
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0/>`_.
|
|
40
40
|
|
|
41
41
|
Installation
|
|
42
42
|
------------
|
|
@@ -50,16 +50,36 @@ The package supports the following python versions: 3.10,3.11,3.12,3.13
|
|
|
50
50
|
Requirements
|
|
51
51
|
------------
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
PIP package
|
|
55
|
-
|
|
56
|
-
``aiofiles``
|
|
57
|
-
``apache-airflow``
|
|
58
|
-
``
|
|
59
|
-
``
|
|
60
|
-
``
|
|
61
|
-
``
|
|
62
|
-
|
|
53
|
+
========================================== ====================
|
|
54
|
+
PIP package Version required
|
|
55
|
+
========================================== ====================
|
|
56
|
+
``aiofiles`` ``>=23.2.0``
|
|
57
|
+
``apache-airflow`` ``>=2.10.0``
|
|
58
|
+
``apache-airflow-providers-common-compat`` ``>=1.8.0``
|
|
59
|
+
``asgiref`` ``>=3.5.2``
|
|
60
|
+
``cryptography`` ``>=41.0.0,<46.0.0``
|
|
61
|
+
``kubernetes`` ``>=32.0.0,<35.0.0``
|
|
62
|
+
``kubernetes_asyncio`` ``>=32.0.0,<35.0.0``
|
|
63
|
+
========================================== ====================
|
|
64
|
+
|
|
65
|
+
Cross provider package dependencies
|
|
66
|
+
-----------------------------------
|
|
67
|
+
|
|
68
|
+
Those are dependencies that might be needed in order to use all the features of the package.
|
|
69
|
+
You need to install the specified providers in order to use them.
|
|
70
|
+
|
|
71
|
+
You can install such cross-provider dependencies when installing from PyPI. For example:
|
|
72
|
+
|
|
73
|
+
.. code-block:: bash
|
|
74
|
+
|
|
75
|
+
pip install apache-airflow-providers-cncf-kubernetes[common.compat]
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
================================================================================================================== =================
|
|
79
|
+
Dependent package Extra
|
|
80
|
+
================================================================================================================== =================
|
|
81
|
+
`apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
|
|
82
|
+
================================================================================================================== =================
|
|
63
83
|
|
|
64
84
|
The changelog for the provider package can be found in the
|
|
65
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.
|
|
85
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0/changelog.html>`_.
|
|
@@ -28,11 +28,117 @@ Changelog
|
|
|
28
28
|
---------
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
10.
|
|
31
|
+
10.10.0
|
|
32
|
+
.......
|
|
33
|
+
|
|
34
|
+
Features
|
|
35
|
+
~~~~~~~~
|
|
36
|
+
|
|
37
|
+
* ``KubernetesPodTriggerer reads pod logs instead of KubernetesPodOperator (#57531)``
|
|
38
|
+
|
|
39
|
+
Bug Fixes
|
|
40
|
+
~~~~~~~~~
|
|
41
|
+
|
|
42
|
+
* ``Fix 'KubernetesPodOperator' fails to delete pods with None value labels (#53477)``
|
|
43
|
+
* ``Fix KubernetesExecutor open slots metric (#55797)``
|
|
44
|
+
* ``improve deferrable KPO handling of deleted pods in between polls (#56976)``
|
|
45
|
+
* ``KubernetesExecutor: retry pod creation on Kubernetes API 500 errors (#57054)``
|
|
46
|
+
|
|
47
|
+
Misc
|
|
48
|
+
~~~~
|
|
49
|
+
|
|
50
|
+
* ``Convert all airflow distributions to be compliant with ASF requirements (#58138)``
|
|
51
|
+
* ``Unify Pod Startup Tracking: KubernetesPodTriggerer and KubernetesPodOperator Now Share Common Startup Logic (#56875)``
|
|
52
|
+
* ``Relax Kubernetes client version support to <35.0.0 (#57413)``
|
|
53
|
+
* ``Identify duplicate kubernetes section airflow configuration and mark them as deprecated (#57028)``
|
|
54
|
+
|
|
55
|
+
Doc-only
|
|
56
|
+
~~~~~~~~
|
|
57
|
+
|
|
58
|
+
* ``CHG: image (#56593)``
|
|
59
|
+
|
|
60
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
61
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
62
|
+
* ``Fix main failing on cross-merged PR (#58270)``
|
|
63
|
+
* ``Delete all unnecessary LICENSE Files (#58191)``
|
|
64
|
+
* ``Enable PT006 rule to 19 files in providers (cncf,common) (#57995)``
|
|
65
|
+
* ``Fix docstring typos (#57840)``
|
|
66
|
+
* ``Fix MyPy type errors in providers in cncf/kubernetes provider (#57563)``
|
|
67
|
+
* ``Fix mypy static errors in main (#57755)``
|
|
68
|
+
* ``Attempt to resolve pip "ResolutionTooDeep" on cffi conflict (#57697)``
|
|
69
|
+
* ``Enable ruff PLW1641 rule (#57679)``
|
|
70
|
+
* ``Fix code formatting via ruff preview (#57641)``
|
|
71
|
+
* ``Enable ruff PLW0129 rule (#57516)``
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
10.9.0
|
|
32
75
|
......
|
|
33
76
|
|
|
77
|
+
Features
|
|
78
|
+
~~~~~~~~
|
|
79
|
+
|
|
80
|
+
* ``Move container-related functions from PodManager to a separate file (#56700)``
|
|
81
|
+
* ``Add KubernetesPodOperator deferred callbacks (#47108)``
|
|
82
|
+
|
|
83
|
+
Bug Fixes
|
|
84
|
+
~~~~~~~~~
|
|
85
|
+
|
|
86
|
+
* ``Fix KubernetesPodOperator termination_grace_period parameter not being applied to pod spec (#56402)``
|
|
87
|
+
* ``SparkKubernetesOperator: preserve existing metadata labels in SparkApplication manifest (#56063)``
|
|
88
|
+
|
|
89
|
+
Misc
|
|
90
|
+
~~~~
|
|
91
|
+
|
|
92
|
+
* ``Migrate cncf/kubernetes provider to ''common.compat'' (#57023)``
|
|
93
|
+
|
|
94
|
+
Doc-only
|
|
95
|
+
~~~~~~~~
|
|
96
|
+
|
|
97
|
+
* ``Correct 'Dag' to 'DAG' for code snippets in provider docs (#56727)``
|
|
98
|
+
|
|
99
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
100
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
101
|
+
* ``Remove placeholder Release Date in changelog and index files (#56056)``
|
|
102
|
+
* ``Enable PT011 rule to provider tests (#56578)``
|
|
103
|
+
|
|
104
|
+
10.8.2
|
|
105
|
+
......
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
Bug Fixes
|
|
109
|
+
~~~~~~~~~
|
|
110
|
+
|
|
111
|
+
* ``Don't check db migration needlessly for 'airflow celery' cli commands. (#55878)``
|
|
112
|
+
* ``Relax Kubernetes client version support to <34.0.0 (#55932)``
|
|
113
|
+
|
|
114
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
115
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
116
|
+
|
|
117
|
+
10.8.1
|
|
118
|
+
......
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
Bug Fixes
|
|
122
|
+
~~~~~~~~~
|
|
123
|
+
|
|
124
|
+
* ``Fix: Add task context labels to driver and executor pods for SparkKubernetesOperator reattach_on_restart functionality (#50803)``
|
|
125
|
+
* ``Add more error handling in pod_manager consume_logs (#55479)``
|
|
126
|
+
* ``Add more robust check of the container statuses (#55371)``
|
|
127
|
+
* ``Fix circular import in version_compat (#55809)``
|
|
128
|
+
|
|
129
|
+
Misc
|
|
130
|
+
~~~~
|
|
131
|
+
|
|
132
|
+
* ``Move the KubernetesPodOperator 'convert_config_file_to_dict' call (#55064)``
|
|
133
|
+
* ``Fix kpo log_events_on_failure logs warnings at warning level (#54967)``
|
|
134
|
+
|
|
135
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
136
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
137
|
+
* ``Switch all airflow logging to structlog (#52651)``
|
|
138
|
+
|
|
139
|
+
10.8.0
|
|
140
|
+
......
|
|
34
141
|
|
|
35
|
-
Release Date: ``|PypiReleaseDate|``
|
|
36
142
|
|
|
37
143
|
Features
|
|
38
144
|
~~~~~~~~
|
|
@@ -87,7 +87,7 @@ apache-airflow-providers-cncf-kubernetes package
|
|
|
87
87
|
`Kubernetes <https://kubernetes.io/>`__
|
|
88
88
|
|
|
89
89
|
|
|
90
|
-
Release: 10.
|
|
90
|
+
Release: 10.10.0
|
|
91
91
|
|
|
92
92
|
Provider package
|
|
93
93
|
----------------
|
|
@@ -107,13 +107,42 @@ Requirements
|
|
|
107
107
|
|
|
108
108
|
The minimum Apache Airflow version supported by this provider distribution is ``2.10.0``.
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
PIP package
|
|
112
|
-
|
|
113
|
-
``aiofiles``
|
|
114
|
-
``apache-airflow``
|
|
115
|
-
``
|
|
116
|
-
``
|
|
117
|
-
``
|
|
118
|
-
``
|
|
119
|
-
|
|
110
|
+
========================================== ====================
|
|
111
|
+
PIP package Version required
|
|
112
|
+
========================================== ====================
|
|
113
|
+
``aiofiles`` ``>=23.2.0``
|
|
114
|
+
``apache-airflow`` ``>=2.10.0``
|
|
115
|
+
``apache-airflow-providers-common-compat`` ``>=1.8.0``
|
|
116
|
+
``asgiref`` ``>=3.5.2``
|
|
117
|
+
``cryptography`` ``>=41.0.0,<46.0.0``
|
|
118
|
+
``kubernetes`` ``>=32.0.0,<35.0.0``
|
|
119
|
+
``kubernetes_asyncio`` ``>=32.0.0,<35.0.0``
|
|
120
|
+
========================================== ====================
|
|
121
|
+
|
|
122
|
+
Cross provider package dependencies
|
|
123
|
+
-----------------------------------
|
|
124
|
+
|
|
125
|
+
Those are dependencies that might be needed in order to use all the features of the package.
|
|
126
|
+
You need to install the specified provider distributions in order to use them.
|
|
127
|
+
|
|
128
|
+
You can install such cross-provider dependencies when installing from PyPI. For example:
|
|
129
|
+
|
|
130
|
+
.. code-block:: bash
|
|
131
|
+
|
|
132
|
+
pip install apache-airflow-providers-cncf-kubernetes[common.compat]
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
================================================================================================================== =================
|
|
136
|
+
Dependent package Extra
|
|
137
|
+
================================================================================================================== =================
|
|
138
|
+
`apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
|
|
139
|
+
================================================================================================================== =================
|
|
140
|
+
|
|
141
|
+
Downloading official packages
|
|
142
|
+
-----------------------------
|
|
143
|
+
|
|
144
|
+
You can download officially released packages and verify their checksums and signatures from the
|
|
145
|
+
`Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
|
|
146
|
+
|
|
147
|
+
* `The apache-airflow-providers-cncf-kubernetes 10.10.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.10.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.10.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.10.0.tar.gz.sha512>`__)
|
|
148
|
+
* `The apache-airflow-providers-cncf-kubernetes 10.10.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.10.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.10.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_cncf_kubernetes-10.10.0-py3-none-any.whl.sha512>`__)
|
|
@@ -165,14 +165,14 @@ Here is an example of a task with both features:
|
|
|
165
165
|
|
|
166
166
|
import pendulum
|
|
167
167
|
|
|
168
|
-
from airflow import
|
|
168
|
+
from airflow import DAG
|
|
169
169
|
from airflow.decorators import task
|
|
170
170
|
from airflow.example_dags.libs.helper import print_stuff
|
|
171
171
|
from airflow.settings import AIRFLOW_HOME
|
|
172
172
|
|
|
173
173
|
from kubernetes.client import models as k8s
|
|
174
174
|
|
|
175
|
-
with
|
|
175
|
+
with DAG(
|
|
176
176
|
dag_id="example_pod_template_file",
|
|
177
177
|
schedule=None,
|
|
178
178
|
start_date=pendulum.datetime(2021, 1, 1, tz="UTC"),
|
|
@@ -496,7 +496,7 @@ spark_job_template.yaml
|
|
|
496
496
|
|
|
497
497
|
* kubernetes: This segment encompasses the task's Kubernetes resource configuration, directly corresponding to the Kubernetes API Documentation. Each resource type includes an example within the template.
|
|
498
498
|
|
|
499
|
-
* The designated base image to be utilized is ``
|
|
499
|
+
* The designated base image to be utilized is ``apache/spark-py:v3.4.0``.
|
|
500
500
|
|
|
501
501
|
* Ensure that the Spark code is either embedded within the image, mounted using a persistentVolume, or accessible from an external location such as an S3 bucket.
|
|
502
502
|
|
|
@@ -506,7 +506,7 @@ Next, create the task using the following:
|
|
|
506
506
|
|
|
507
507
|
SparkKubernetesOperator(
|
|
508
508
|
task_id="spark_task",
|
|
509
|
-
image="
|
|
509
|
+
image="apache/spark-py:v3.4.0", # OR custom image using that
|
|
510
510
|
code_path="local://path/to/spark/code.py",
|
|
511
511
|
application_file="spark_job_template.yaml", # OR spark_job_template.json
|
|
512
512
|
dag=dag,
|
|
@@ -22,12 +22,16 @@ description: |
|
|
|
22
22
|
`Kubernetes <https://kubernetes.io/>`__
|
|
23
23
|
|
|
24
24
|
state: ready
|
|
25
|
-
source-date-epoch:
|
|
25
|
+
source-date-epoch: 1763068815
|
|
26
26
|
# Note that those versions are maintained by release manager - do not update them manually
|
|
27
27
|
# with the exception of case where other provider in sources has >= new provider version.
|
|
28
28
|
# In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
|
|
29
29
|
# to be done in the same PR
|
|
30
30
|
versions:
|
|
31
|
+
- 10.10.0
|
|
32
|
+
- 10.9.0
|
|
33
|
+
- 10.8.2
|
|
34
|
+
- 10.8.1
|
|
31
35
|
- 10.8.0
|
|
32
36
|
- 10.7.0
|
|
33
37
|
- 10.6.2
|
|
@@ -207,6 +211,9 @@ config:
|
|
|
207
211
|
type: string
|
|
208
212
|
example: ~
|
|
209
213
|
default: ""
|
|
214
|
+
deprecated: true
|
|
215
|
+
deprecation_reason: |
|
|
216
|
+
This configuration is deprecated. Use `pod_template_file` to specify container image instead.
|
|
210
217
|
worker_container_tag:
|
|
211
218
|
description: |
|
|
212
219
|
The tag of the Kubernetes Image for the Worker to Run
|
|
@@ -214,6 +221,9 @@ config:
|
|
|
214
221
|
type: string
|
|
215
222
|
example: ~
|
|
216
223
|
default: ""
|
|
224
|
+
deprecated: true
|
|
225
|
+
deprecation_reason: |
|
|
226
|
+
This configuration is deprecated. Use `pod_template_file` to specify the image tag instead.
|
|
217
227
|
namespace:
|
|
218
228
|
description: |
|
|
219
229
|
The Kubernetes namespace where airflow workers should be created. Defaults to ``default``
|
|
@@ -221,6 +231,9 @@ config:
|
|
|
221
231
|
type: string
|
|
222
232
|
example: ~
|
|
223
233
|
default: "default"
|
|
234
|
+
deprecated: true
|
|
235
|
+
deprecation_reason: |
|
|
236
|
+
This configuration is deprecated. Use `pod_template_file` to specify namespace instead.
|
|
224
237
|
delete_worker_pods:
|
|
225
238
|
description: |
|
|
226
239
|
If True, all worker pods will be deleted upon termination
|
|
@@ -25,9 +25,11 @@ build-backend = "flit_core.buildapi"
|
|
|
25
25
|
|
|
26
26
|
[project]
|
|
27
27
|
name = "apache-airflow-providers-cncf-kubernetes"
|
|
28
|
-
version = "10.
|
|
28
|
+
version = "10.10.0"
|
|
29
29
|
description = "Provider package apache-airflow-providers-cncf-kubernetes for Apache Airflow"
|
|
30
30
|
readme = "README.rst"
|
|
31
|
+
license = "Apache-2.0"
|
|
32
|
+
license-files = ['LICENSE', 'NOTICE']
|
|
31
33
|
authors = [
|
|
32
34
|
{name="Apache Software Foundation", email="dev@airflow.apache.org"},
|
|
33
35
|
]
|
|
@@ -43,7 +45,6 @@ classifiers = [
|
|
|
43
45
|
"Intended Audience :: System Administrators",
|
|
44
46
|
"Framework :: Apache Airflow",
|
|
45
47
|
"Framework :: Apache Airflow :: Provider",
|
|
46
|
-
"License :: OSI Approved :: Apache Software License",
|
|
47
48
|
"Programming Language :: Python :: 3.10",
|
|
48
49
|
"Programming Language :: Python :: 3.11",
|
|
49
50
|
"Programming Language :: Python :: 3.12",
|
|
@@ -58,9 +59,11 @@ requires-python = ">=3.10"
|
|
|
58
59
|
# After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
|
|
59
60
|
dependencies = [
|
|
60
61
|
"aiofiles>=23.2.0",
|
|
61
|
-
"apache-airflow>=2.10.
|
|
62
|
+
"apache-airflow>=2.10.0",
|
|
63
|
+
"apache-airflow-providers-common-compat>=1.8.0",
|
|
62
64
|
"asgiref>=3.5.2",
|
|
63
|
-
|
|
65
|
+
# TODO(potiuk): We should bump cryptography to >=46.0.0 when sqlalchemy>=2.0 is required
|
|
66
|
+
"cryptography>=41.0.0,<46.0.0",
|
|
64
67
|
# The Kubernetes API is known to introduce problems when upgraded to a MAJOR version. Airflow Core
|
|
65
68
|
# Uses Kubernetes for Kubernetes executor, and we also know that Kubernetes Python client follows SemVer
|
|
66
69
|
# (https://github.com/kubernetes-client/python#compatibility). This is a crucial component of Airflow
|
|
@@ -69,9 +72,9 @@ dependencies = [
|
|
|
69
72
|
# limiting minimum airflow version supported in cncf.kubernetes provider, due to the
|
|
70
73
|
# potential breaking changes in Airflow Core as well (kubernetes is added as extra, so Airflow
|
|
71
74
|
# core is not hard-limited via install-requirements, only by extra).
|
|
72
|
-
"kubernetes>=32.0.0,<
|
|
75
|
+
"kubernetes>=32.0.0,<35.0.0",
|
|
73
76
|
# the version is limited to the next MAJOR version and should by synced with the kubernetes version
|
|
74
|
-
"kubernetes_asyncio>=32.0.0,<
|
|
77
|
+
"kubernetes_asyncio>=32.0.0,<35.0.0",
|
|
75
78
|
]
|
|
76
79
|
|
|
77
80
|
[dependency-groups]
|
|
@@ -79,6 +82,7 @@ dev = [
|
|
|
79
82
|
"apache-airflow",
|
|
80
83
|
"apache-airflow-task-sdk",
|
|
81
84
|
"apache-airflow-devel-common",
|
|
85
|
+
"apache-airflow-providers-common-compat",
|
|
82
86
|
# Additional devel dependencies (do not remove this line and add extra development dependencies)
|
|
83
87
|
]
|
|
84
88
|
|
|
@@ -108,8 +112,8 @@ apache-airflow-providers-common-sql = {workspace = true}
|
|
|
108
112
|
apache-airflow-providers-standard = {workspace = true}
|
|
109
113
|
|
|
110
114
|
[project.urls]
|
|
111
|
-
"Documentation" = "https://airflow.
|
|
112
|
-
"Changelog" = "https://airflow.
|
|
115
|
+
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0"
|
|
116
|
+
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/10.10.0/changelog.html"
|
|
113
117
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
|
114
118
|
"Source Code" = "https://github.com/apache/airflow"
|
|
115
119
|
"Slack Chat" = "https://s.apache.org/airflow-slack"
|
|
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
|
|
|
29
29
|
|
|
30
30
|
__all__ = ["__version__"]
|
|
31
31
|
|
|
32
|
-
__version__ = "10.
|
|
32
|
+
__version__ = "10.10.0"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
35
|
"2.10.0"
|
|
@@ -104,7 +104,7 @@ def generate_pod_yaml(args):
|
|
|
104
104
|
print(f"YAML output can be found at {yaml_output_path}/airflow_yaml_output/")
|
|
105
105
|
|
|
106
106
|
|
|
107
|
-
@cli_utils.action_cli
|
|
107
|
+
@cli_utils.action_cli(check_db=False)
|
|
108
108
|
@providers_configuration_loaded
|
|
109
109
|
def cleanup_pods(args):
|
|
110
110
|
"""Clean up k8s pods in evicted/failed/succeeded/pending states."""
|
|
@@ -31,7 +31,7 @@ from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperato
|
|
|
31
31
|
from airflow.providers.cncf.kubernetes.python_kubernetes_script import (
|
|
32
32
|
write_python_script,
|
|
33
33
|
)
|
|
34
|
-
from airflow.providers.
|
|
34
|
+
from airflow.providers.common.compat.sdk import (
|
|
35
35
|
DecoratedOperator,
|
|
36
36
|
TaskDecorator,
|
|
37
37
|
task_decorator_factory,
|
|
@@ -21,7 +21,7 @@ from collections.abc import Callable, Sequence
|
|
|
21
21
|
from typing import TYPE_CHECKING
|
|
22
22
|
|
|
23
23
|
from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
|
|
24
|
-
from airflow.providers.
|
|
24
|
+
from airflow.providers.common.compat.sdk import (
|
|
25
25
|
DecoratedOperator,
|
|
26
26
|
TaskDecorator,
|
|
27
27
|
context_merge,
|
|
@@ -27,3 +27,11 @@ class PodMutationHookException(AirflowException):
|
|
|
27
27
|
|
|
28
28
|
class PodReconciliationError(AirflowException):
|
|
29
29
|
"""Raised when an error is encountered while trying to merge pod configs."""
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class KubernetesApiError(AirflowException):
|
|
33
|
+
"""Raised when an error is encountered while trying access Kubernetes API."""
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class KubernetesApiPermissionError(AirflowException):
|
|
37
|
+
"""Raised when an error is encountered while trying access Kubernetes API."""
|
|
@@ -165,6 +165,7 @@ class KubernetesExecutor(BaseExecutor):
|
|
|
165
165
|
self.task_publish_max_retries = conf.getint(
|
|
166
166
|
"kubernetes_executor", "task_publish_max_retries", fallback=0
|
|
167
167
|
)
|
|
168
|
+
self.completed: set[KubernetesResults] = set()
|
|
168
169
|
super().__init__(parallelism=self.kube_config.parallelism)
|
|
169
170
|
|
|
170
171
|
def _list_pods(self, query_kwargs):
|
|
@@ -343,6 +344,9 @@ class KubernetesExecutor(BaseExecutor):
|
|
|
343
344
|
finally:
|
|
344
345
|
self.result_queue.task_done()
|
|
345
346
|
|
|
347
|
+
for result in self.completed:
|
|
348
|
+
self._change_state(result)
|
|
349
|
+
|
|
346
350
|
from airflow.providers.cncf.kubernetes.executors.kubernetes_executor_utils import ResourceVersion
|
|
347
351
|
|
|
348
352
|
resource_instance = ResourceVersion()
|
|
@@ -385,6 +389,7 @@ class KubernetesExecutor(BaseExecutor):
|
|
|
385
389
|
if (
|
|
386
390
|
(str(e.status) == "403" and "exceeded quota" in message)
|
|
387
391
|
or (str(e.status) == "409" and "object has been modified" in message)
|
|
392
|
+
or str(e.status) == "500"
|
|
388
393
|
) and (self.task_publish_max_retries == -1 or retries < self.task_publish_max_retries):
|
|
389
394
|
self.log.warning(
|
|
390
395
|
"[Try %s of %s] Kube ApiException for Task: (%s). Reason: %r. Message: %s",
|
|
@@ -501,7 +506,11 @@ class KubernetesExecutor(BaseExecutor):
|
|
|
501
506
|
if state is None:
|
|
502
507
|
from airflow.models.taskinstance import TaskInstance
|
|
503
508
|
|
|
504
|
-
|
|
509
|
+
filter_for_tis = TaskInstance.filter_for_tis([key])
|
|
510
|
+
if filter_for_tis is not None:
|
|
511
|
+
state = session.scalar(select(TaskInstance.state).where(filter_for_tis))
|
|
512
|
+
else:
|
|
513
|
+
state = None
|
|
505
514
|
state = TaskInstanceState(state) if state else None
|
|
506
515
|
|
|
507
516
|
self.event_buffer[key] = state, None
|
|
@@ -511,7 +520,8 @@ class KubernetesExecutor(BaseExecutor):
|
|
|
511
520
|
pod_override = ti.executor_config.get("pod_override")
|
|
512
521
|
namespace = None
|
|
513
522
|
with suppress(Exception):
|
|
514
|
-
|
|
523
|
+
if pod_override is not None:
|
|
524
|
+
namespace = pod_override.metadata.namespace
|
|
515
525
|
return namespace or conf.get("kubernetes_executor", "namespace")
|
|
516
526
|
|
|
517
527
|
def get_task_log(self, ti: TaskInstance, try_number: int) -> tuple[list[str], list[str]]:
|
|
@@ -565,7 +575,7 @@ class KubernetesExecutor(BaseExecutor):
|
|
|
565
575
|
tis_to_flush_by_key = {ti.key: ti for ti in tis if ti.queued_by_job_id}
|
|
566
576
|
kube_client: client.CoreV1Api = self.kube_client
|
|
567
577
|
for scheduler_job_id in scheduler_job_ids:
|
|
568
|
-
|
|
578
|
+
scheduler_job_id_safe_label = self._make_safe_label_value(str(scheduler_job_id))
|
|
569
579
|
# We will look for any pods owned by the no-longer-running scheduler,
|
|
570
580
|
# but will exclude only successful pods, as those TIs will have a terminal state
|
|
571
581
|
# and not be up for adoption!
|
|
@@ -575,7 +585,7 @@ class KubernetesExecutor(BaseExecutor):
|
|
|
575
585
|
"field_selector": "status.phase!=Succeeded",
|
|
576
586
|
"label_selector": (
|
|
577
587
|
"kubernetes_executor=True,"
|
|
578
|
-
f"airflow-worker={
|
|
588
|
+
f"airflow-worker={scheduler_job_id_safe_label},{POD_EXECUTOR_DONE_KEY}!=True"
|
|
579
589
|
),
|
|
580
590
|
}
|
|
581
591
|
pod_list = self._list_pods(query_kwargs)
|
|
@@ -720,7 +730,16 @@ class KubernetesExecutor(BaseExecutor):
|
|
|
720
730
|
continue
|
|
721
731
|
|
|
722
732
|
ti_id = annotations_to_key(pod.metadata.annotations)
|
|
723
|
-
self.
|
|
733
|
+
self.completed.add(
|
|
734
|
+
KubernetesResults(
|
|
735
|
+
key=ti_id,
|
|
736
|
+
state="completed",
|
|
737
|
+
pod_name=pod.metadata.name,
|
|
738
|
+
namespace=pod.metadata.namespace,
|
|
739
|
+
resource_version=pod.metadata.resource_version,
|
|
740
|
+
failure_details=None,
|
|
741
|
+
)
|
|
742
|
+
)
|
|
724
743
|
|
|
725
744
|
def _flush_task_queue(self) -> None:
|
|
726
745
|
if TYPE_CHECKING:
|