From 77775f25a750d2ede8c5425474ed96de465bd1c5 Mon Sep 17 00:00:00 2001 From: Mike Graves Date: Fri, 20 Aug 2021 11:49:49 -0400 Subject: [PATCH] Re-enable support for turbo mode (#169) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Re-enable support for turbo mode SUMMARY This re-enables the ability to add turbo mode. It also adds a few more tests to cover some cases that had been broken in turbo mode previously. Testing with turbo mode is not currently enabled, and would fail until ansible-collections/cloud.common#69 can be merged and a new cloud.common release is done. This also does not add cloud.common to the collection dependencies until a decision has been made about how enabling/disabling turbo mode will work when cloud.common is already installed. ISSUE TYPE Bugfix Pull Request COMPONENT NAME ADDITIONAL INFORMATION Reviewed-by: Abhijeet Kasurde Reviewed-by: Mike Graves Reviewed-by: Gonéri Le Bouder Reviewed-by: None --- .../fragments/169-reenable-turbo-mode.yaml | 3 ++ molecule/default/tasks/full.yml | 50 +++++++++++++++++++ plugins/module_utils/ansiblemodule.py | 20 +++++++- requirements.yml | 3 ++ 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/169-reenable-turbo-mode.yaml create mode 100644 requirements.yml diff --git a/changelogs/fragments/169-reenable-turbo-mode.yaml b/changelogs/fragments/169-reenable-turbo-mode.yaml new file mode 100644 index 00000000..0df8f047 --- /dev/null +++ b/changelogs/fragments/169-reenable-turbo-mode.yaml @@ -0,0 +1,3 @@ +--- +minor_changes: + - re-enable turbo mode for collection. The default is initially set to off (https://github.com/ansible-collections/kubernetes.core/pull/169). diff --git a/molecule/default/tasks/full.yml b/molecule/default/tasks/full.yml index 65dfba01..554b3efb 100644 --- a/molecule/default/tasks/full.yml +++ b/molecule/default/tasks/full.yml @@ -36,12 +36,30 @@ path: ~/.kube/config state: absent + - name: Try to create namespace without default kube config + kubernetes.core.k8s: + name: testing + kind: Namespace + ignore_errors: true + register: result + + - name: No default kube config should fail + assert: + that: result is not successful + - name: Using custom config location should succeed kubernetes.core.k8s: name: testing kind: Namespace kubeconfig: ~/.kube/customconfig + - name: Using an env var to set config location should succeed + kubernetes.core.k8s: + name: testing + kind: Namespace + environment: + K8S_AUTH_KUBECONFIG: ~/.kube/customconfig + always: - name: Return kubeconfig copy: @@ -365,6 +383,38 @@ register: k8s_info_testing6 failed_when: not k8s_info_testing6.resources or k8s_info_testing6.resources[0].status.phase != "Active" + - name: Create large configmap data + command: dd if=/dev/urandom bs=500K count=1 + register: cmap_data + + - name: Create configmap with large value + k8s: + definition: + apiVersion: v1 + kind: ConfigMap + metadata: + name: testmap + namespace: testing + data: + testkey: "{{ cmap_data.stdout | b64encode }}" + wait: true + register: result + + - assert: + that: + - result is changed + + - name: Retrieve configmap + k8s_info: + kind: ConfigMap + namespace: testing + name: testmap + register: result + + - assert: + that: + - result.resources[0].data.testkey == "{{ cmap_data.stdout | b64encode }}" + always: - name: Delete all namespaces k8s: diff --git a/plugins/module_utils/ansiblemodule.py b/plugins/module_utils/ansiblemodule.py index a647b163..a983cad9 100644 --- a/plugins/module_utils/ansiblemodule.py +++ b/plugins/module_utils/ansiblemodule.py @@ -3,4 +3,22 @@ from __future__ import (absolute_import, division, print_function) __metaclass__ = type -from ansible.module_utils.basic import AnsibleModule # noqa: F401 +import os + +from ansible.module_utils.common.validation import check_type_bool + +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.module_utils.turbo.module import ( + AnsibleTurboModule as AnsibleModule, + ) # noqa: F401 + AnsibleModule.collection_name = "kubernetes.core" + except ImportError: + from ansible.module_utils.basic import AnsibleModule # noqa: F401 +else: + from ansible.module_utils.basic import AnsibleModule # noqa: F401 diff --git a/requirements.yml b/requirements.yml new file mode 100644 index 00000000..1c4b370d --- /dev/null +++ b/requirements.yml @@ -0,0 +1,3 @@ +collections: + - name: cloud.common + version: ">=2.0.4"