From 10cffc5032171b53db6c0cd19f51baae5625e525 Mon Sep 17 00:00:00 2001 From: abikouo <79859644+abikouo@users.noreply.github.com> Date: Mon, 17 Jan 2022 13:04:27 +0100 Subject: [PATCH] Enable turbo mode for k8s lookup plugin (#335) Enable turbo mode for k8s lookup plugin SUMMARY Enable Turbo mode for k8s lookup plugin This resolves partially #291 ISSUE TYPE Feature Pull Request COMPONENT NAME k8s lookup Reviewed-by: Abhijeet Kasurde Reviewed-by: None Reviewed-by: None --- README.md | 5 ++++- ...-k8s-lookup-add-support-for-turbo-mode.yml | 3 +++ plugins/lookup/k8s.py | 22 +++++++++++++++++-- 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 changelogs/fragments/335-k8s-lookup-add-support-for-turbo-mode.yml diff --git a/README.md b/README.md index c988d11941..f236fd550f 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ For documentation on how to use individual modules and other content included in ## Ansible Turbo mode Tech Preview -The ``kubernetes.core`` collection supports Ansible Turbo mode as a tech preview via the ``cloud.common`` collection. By default, this feature is disabled. To enable Turbo mode, set the environment variable `ENABLE_TURBO_MODE=1` on the managed node. For example: +The ``kubernetes.core`` collection supports Ansible Turbo mode as a tech preview via the ``cloud.common`` collection. By default, this feature is disabled. To enable Turbo mode for modules, set the environment variable `ENABLE_TURBO_MODE=1` on the managed node. For example: ```yaml --- @@ -180,6 +180,9 @@ The ``kubernetes.core`` collection supports Ansible Turbo mode as a tech preview ... ``` +To enable Turbo mode for k8s lookup plugin, set the environment variable `ENABLE_TURBO_MODE=1` on the managed node. This is not working when +defined in the playbook using `environment` keyword as above, you must set it using `export ENABLE_TURBO_MODE=1`. + Please read more about Ansible Turbo mode - [here](https://github.com/ansible-collections/kubernetes.core/blob/main/docs/ansible_turbo_mode.rst). ## Testing and Development diff --git a/changelogs/fragments/335-k8s-lookup-add-support-for-turbo-mode.yml b/changelogs/fragments/335-k8s-lookup-add-support-for-turbo-mode.yml new file mode 100644 index 0000000000..0749d8a6c8 --- /dev/null +++ b/changelogs/fragments/335-k8s-lookup-add-support-for-turbo-mode.yml @@ -0,0 +1,3 @@ +--- +minor_changes: + - k8s lookup plugin - Enable turbo mode via environment variable (https://github.com/ansible-collections/kubernetes.core/issues/291). diff --git a/plugins/lookup/k8s.py b/plugins/lookup/k8s.py index b8a9047a0d..bc315dd83e 100644 --- a/plugins/lookup/k8s.py +++ b/plugins/lookup/k8s.py @@ -183,15 +183,31 @@ type: complex """ +import os + from ansible.errors import AnsibleError from ansible.module_utils.common._collections_compat import KeysView -from ansible.plugins.lookup import LookupBase +from ansible.module_utils.common.validation import check_type_bool from ansible_collections.kubernetes.core.plugins.module_utils.common import ( K8sAnsibleMixin, get_api_client, ) +try: + enable_turbo_mode = check_type_bool(os.environ.get("ENABLE_TURBO_MODE")) +except TypeError: + enable_turbo_mode = False + +if enable_turbo_mode: + try: + from ansible_collections.cloud.common.plugins.plugin_utils.turbo.lookup import ( + TurboLookupBase as LookupBase, + ) + except ImportError: + from ansible.plugins.lookup import LookupBase # noqa: F401 +else: + from ansible.plugins.lookup import LookupBase # noqa: F401 try: from kubernetes.dynamic.exceptions import NotFoundError @@ -283,5 +299,7 @@ def run(self, terms, variables=None, **kwargs): class LookupModule(LookupBase): - def run(self, terms, variables=None, **kwargs): + def _run(self, terms, variables=None, **kwargs): return KubernetesLookup().run(terms, variables=variables, **kwargs) + + run = _run if not hasattr(LookupBase, "run_on_daemon") else LookupBase.run_on_daemon