This is an automated email from the ASF dual-hosted git repository. kaxilnaik pushed a commit to branch v1-10-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit bfa089d4adff5a0892c7e2ef2c9639938e86cdb1 Author: Kaxil Naik <[email protected]> AuthorDate: Fri Jul 31 09:34:18 2020 +0100 Add pre 1.10.11 Kubernetes Paths back with Deprecation Warning (#10067) --- airflow/contrib/kubernetes/__init__.py | 2 -- .../contrib/kubernetes/{__init__.py => kube_client.py} | 14 ++++++++++---- .../kubernetes}/pod.py | 17 +++++++++++++++-- .../kubernetes/{__init__.py => pod_runtime_info_env.py} | 14 ++++++++++---- .../kubernetes/{__init__.py => refresh_config.py} | 16 ++++++++++++---- .../__init__.py => contrib/kubernetes/secret.py} | 11 +++++++++++ airflow/contrib/kubernetes/{__init__.py => volume.py} | 14 ++++++++++---- .../contrib/kubernetes/{__init__.py => volume_mount.py} | 14 ++++++++++---- airflow/kubernetes/pod_launcher.py | 5 +++++ airflow/kubernetes/pod_launcher_helper.py | 2 +- airflow/kubernetes/pod_runtime_info_env.py | 2 +- airflow/kubernetes/secret.py | 4 +++- airflow/kubernetes/volume_mount.py | 3 +-- tests/kubernetes/models/test_pod.py | 2 +- tests/kubernetes/test_pod_launcher_helper.py | 5 +++-- 15 files changed, 93 insertions(+), 32 deletions(-) diff --git a/airflow/contrib/kubernetes/__init__.py b/airflow/contrib/kubernetes/__init__.py index ef7074c..b7f8352 100644 --- a/airflow/contrib/kubernetes/__init__.py +++ b/airflow/contrib/kubernetes/__init__.py @@ -17,5 +17,3 @@ # specific language governing permissions and limitations # under the License. # - -from airflow.kubernetes import * # noqa diff --git a/airflow/contrib/kubernetes/__init__.py b/airflow/contrib/kubernetes/kube_client.py similarity index 71% copy from airflow/contrib/kubernetes/__init__.py copy to airflow/contrib/kubernetes/kube_client.py index ef7074c..d785fac 100644 --- a/airflow/contrib/kubernetes/__init__.py +++ b/airflow/contrib/kubernetes/kube_client.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information @@ -16,6 +14,14 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -# +"""This module is deprecated. Please use `airflow.kubernetes.kube_client`.""" + +import warnings + +# pylint: disable=unused-import +from airflow.kubernetes.kube_client import * # noqa -from airflow.kubernetes import * # noqa +warnings.warn( + "This module is deprecated. Please use `airflow.kubernetes.kube_client`.", + DeprecationWarning, stacklevel=2 +) diff --git a/airflow/kubernetes_deprecated/pod.py b/airflow/contrib/kubernetes/pod.py similarity index 92% rename from airflow/kubernetes_deprecated/pod.py rename to airflow/contrib/kubernetes/pod.py index 22a8c12..0ab3616 100644 --- a/airflow/kubernetes_deprecated/pod.py +++ b/airflow/contrib/kubernetes/pod.py @@ -14,9 +14,17 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. +"""This module is deprecated. Please use `airflow.kubernetes.pod`.""" -import kubernetes.client.models as k8s -from airflow.kubernetes.pod import Resources +import warnings + +# pylint: disable=unused-import +from airflow.kubernetes.pod import Port, Resources # noqa + +warnings.warn( + "This module is deprecated. Please use `airflow.kubernetes.pod`.", + DeprecationWarning, stacklevel=2 +) class Pod(object): @@ -86,6 +94,10 @@ class Pod(object): pod_runtime_info_envs=None, dnspolicy=None ): + warnings.warn( + "Using `airflow.contrib.kubernetes.pod.Pod` is deprecated. Please use `k8s.V1Pod`.", + DeprecationWarning, stacklevel=2 + ) self.image = image self.envs = envs or {} self.cmds = cmds @@ -119,6 +131,7 @@ class Pod(object): :return: k8s.V1Pod """ + import kubernetes.client.models as k8s meta = k8s.V1ObjectMeta( labels=self.labels, name=self.name, diff --git a/airflow/contrib/kubernetes/__init__.py b/airflow/contrib/kubernetes/pod_runtime_info_env.py similarity index 68% copy from airflow/contrib/kubernetes/__init__.py copy to airflow/contrib/kubernetes/pod_runtime_info_env.py index ef7074c..0dc8aed 100644 --- a/airflow/contrib/kubernetes/__init__.py +++ b/airflow/contrib/kubernetes/pod_runtime_info_env.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information @@ -16,6 +14,14 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -# +"""This module is deprecated. Please use `airflow.kubernetes.pod_runtime_info_env`.""" + +import warnings + +# pylint: disable=unused-import +from airflow.kubernetes.pod_runtime_info_env import PodRuntimeInfoEnv # noqa -from airflow.kubernetes import * # noqa +warnings.warn( + "This module is deprecated. Please use `airflow.kubernetes.pod_runtime_info_env`.", + DeprecationWarning, stacklevel=2 +) diff --git a/airflow/contrib/kubernetes/__init__.py b/airflow/contrib/kubernetes/refresh_config.py similarity index 66% copy from airflow/contrib/kubernetes/__init__.py copy to airflow/contrib/kubernetes/refresh_config.py index ef7074c..f88069e 100644 --- a/airflow/contrib/kubernetes/__init__.py +++ b/airflow/contrib/kubernetes/refresh_config.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information @@ -16,6 +14,16 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -# +"""This module is deprecated. Please use `airflow.kubernetes.refresh_config`.""" + +import warnings + +# pylint: disable=unused-import +from airflow.kubernetes.refresh_config import ( # noqa + RefreshConfiguration, RefreshKubeConfigLoader, load_kube_config +) -from airflow.kubernetes import * # noqa +warnings.warn( + "This module is deprecated. Please use `airflow.kubernetes.refresh_config`.", + DeprecationWarning, stacklevel=2 +) diff --git a/airflow/kubernetes_deprecated/__init__.py b/airflow/contrib/kubernetes/secret.py similarity index 71% rename from airflow/kubernetes_deprecated/__init__.py rename to airflow/contrib/kubernetes/secret.py index 13a8339..ad41d4d 100644 --- a/airflow/kubernetes_deprecated/__init__.py +++ b/airflow/contrib/kubernetes/secret.py @@ -14,3 +14,14 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. +"""This module is deprecated. Please use `airflow.kubernetes.secret`.""" + +import warnings + +# pylint: disable=unused-import +from airflow.kubernetes.secret import Secret # noqa + +warnings.warn( + "This module is deprecated. Please use `airflow.kubernetes.secret`.", + DeprecationWarning, stacklevel=2 +) diff --git a/airflow/contrib/kubernetes/__init__.py b/airflow/contrib/kubernetes/volume.py similarity index 72% copy from airflow/contrib/kubernetes/__init__.py copy to airflow/contrib/kubernetes/volume.py index ef7074c..c72e208 100644 --- a/airflow/contrib/kubernetes/__init__.py +++ b/airflow/contrib/kubernetes/volume.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information @@ -16,6 +14,14 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -# +"""This module is deprecated. Please use `airflow.kubernetes.volume`.""" + +import warnings + +# pylint: disable=unused-import +from airflow.kubernetes.volume import Volume # noqa -from airflow.kubernetes import * # noqa +warnings.warn( + "This module is deprecated. Please use `airflow.kubernetes.volume`.", + DeprecationWarning, stacklevel=2 +) diff --git a/airflow/contrib/kubernetes/__init__.py b/airflow/contrib/kubernetes/volume_mount.py similarity index 70% copy from airflow/contrib/kubernetes/__init__.py copy to airflow/contrib/kubernetes/volume_mount.py index ef7074c..a474e3b 100644 --- a/airflow/contrib/kubernetes/__init__.py +++ b/airflow/contrib/kubernetes/volume_mount.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information @@ -16,6 +14,14 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -# +"""This module is deprecated. Please use `airflow.kubernetes.volume_mount`.""" + +import warnings + +# pylint: disable=unused-import +from airflow.kubernetes.volume_mount import VolumeMount # noqa -from airflow.kubernetes import * # noqa +warnings.warn( + "This module is deprecated. Please use `airflow.kubernetes.volume_mount`.", + DeprecationWarning, stacklevel=2 +) diff --git a/airflow/kubernetes/pod_launcher.py b/airflow/kubernetes/pod_launcher.py index 05df204..d6507df 100644 --- a/airflow/kubernetes/pod_launcher.py +++ b/airflow/kubernetes/pod_launcher.py @@ -17,6 +17,7 @@ """Launches PODs""" import json import time +import warnings from datetime import datetime as dt import tenacity @@ -93,6 +94,10 @@ class PodLauncher(LoggingMixin): # attempts to run pod_mutation_hook using k8s.V1Pod, if this # fails we attempt to run by converting pod to Old Pod except AttributeError: + warnings.warn( + "Using `airflow.contrib.kubernetes.pod.Pod` is deprecated. " + "Please use `k8s.V1Pod` instead.", DeprecationWarning, stacklevel=2 + ) dummy_pod = convert_to_airflow_pod(pod) settings.pod_mutation_hook(dummy_pod) dummy_pod = dummy_pod.to_v1_kubernetes_pod() diff --git a/airflow/kubernetes/pod_launcher_helper.py b/airflow/kubernetes/pod_launcher_helper.py index d8b2698..8c9fc6e 100644 --- a/airflow/kubernetes/pod_launcher_helper.py +++ b/airflow/kubernetes/pod_launcher_helper.py @@ -21,7 +21,7 @@ import kubernetes.client.models as k8s # noqa from airflow.kubernetes.volume import Volume from airflow.kubernetes.volume_mount import VolumeMount from airflow.kubernetes.pod import Port -from airflow.kubernetes_deprecated.pod import Pod +from airflow.contrib.kubernetes.pod import Pod def convert_to_airflow_pod(pod): diff --git a/airflow/kubernetes/pod_runtime_info_env.py b/airflow/kubernetes/pod_runtime_info_env.py index 7d23a7e..72e2151 100644 --- a/airflow/kubernetes/pod_runtime_info_env.py +++ b/airflow/kubernetes/pod_runtime_info_env.py @@ -19,7 +19,6 @@ Classes for interacting with Kubernetes API """ import copy -import kubernetes.client.models as k8s from airflow.kubernetes.k8s_model import K8SModel @@ -43,6 +42,7 @@ class PodRuntimeInfoEnv(K8SModel): """ :return: kubernetes.client.models.V1EnvVar """ + import kubernetes.client.models as k8s return k8s.V1EnvVar( name=self.name, value_from=k8s.V1EnvVarSource( diff --git a/airflow/kubernetes/secret.py b/airflow/kubernetes/secret.py index 8591a88..9ff1927 100644 --- a/airflow/kubernetes/secret.py +++ b/airflow/kubernetes/secret.py @@ -20,7 +20,6 @@ Classes for interacting with Kubernetes API import uuid import copy -import kubernetes.client.models as k8s from airflow.exceptions import AirflowConfigException from airflow.kubernetes.k8s_model import K8SModel @@ -65,6 +64,7 @@ class Secret(K8SModel): self.key = key def to_env_secret(self): + import kubernetes.client.models as k8s return k8s.V1EnvVar( name=self.deploy_target, value_from=k8s.V1EnvVarSource( @@ -76,11 +76,13 @@ class Secret(K8SModel): ) def to_env_from_secret(self): + import kubernetes.client.models as k8s return k8s.V1EnvFromSource( secret_ref=k8s.V1SecretEnvSource(name=self.secret) ) def to_volume_secret(self): + import kubernetes.client.models as k8s vol_id = 'secretvol{}'.format(uuid.uuid4()) return ( k8s.V1Volume( diff --git a/airflow/kubernetes/volume_mount.py b/airflow/kubernetes/volume_mount.py index ab87ba9..ab9c34a 100644 --- a/airflow/kubernetes/volume_mount.py +++ b/airflow/kubernetes/volume_mount.py @@ -19,7 +19,6 @@ Classes for interacting with Kubernetes API """ import copy -import kubernetes.client.models as k8s from airflow.kubernetes.k8s_model import K8SModel @@ -49,8 +48,8 @@ class VolumeMount(K8SModel): Converts to k8s object. :return Volume Mount k8s object - """ + import kubernetes.client.models as k8s return k8s.V1VolumeMount( name=self.name, mount_path=self.mount_path, diff --git a/tests/kubernetes/models/test_pod.py b/tests/kubernetes/models/test_pod.py index 096b5f0..2e53d60 100644 --- a/tests/kubernetes/models/test_pod.py +++ b/tests/kubernetes/models/test_pod.py @@ -76,7 +76,7 @@ class TestPod(unittest.TestCase): }, result) def test_to_v1_pod(self): - from airflow.kubernetes_deprecated.pod import Pod as DeprecatedPod + from airflow.contrib.kubernetes.pod import Pod as DeprecatedPod from airflow.kubernetes.volume import Volume from airflow.kubernetes.volume_mount import VolumeMount from airflow.kubernetes.pod import Resources diff --git a/tests/kubernetes/test_pod_launcher_helper.py b/tests/kubernetes/test_pod_launcher_helper.py index a308ac3..761d138 100644 --- a/tests/kubernetes/test_pod_launcher_helper.py +++ b/tests/kubernetes/test_pod_launcher_helper.py @@ -20,7 +20,7 @@ from airflow.kubernetes.pod import Port from airflow.kubernetes.volume_mount import VolumeMount from airflow.kubernetes.volume import Volume from airflow.kubernetes.pod_launcher_helper import convert_to_airflow_pod -from airflow.kubernetes_deprecated.pod import Pod +from airflow.contrib.kubernetes.pod import Pod import kubernetes.client.models as k8s @@ -84,7 +84,8 @@ class TestPodLauncherHelper(unittest.TestCase): self.assertDictEqual(expected_dict, result_dict) - def pull_out_volumes(self, result_dict): + @staticmethod + def pull_out_volumes(result_dict): parsed_configs = [] for volume in result_dict['volumes']: vol = {'name': volume['name']}
