From aad4696f205cc21a3d264083fa16a0eb24d75ee5 Mon Sep 17 00:00:00 2001 From: jaydesl <35102795+jaydesl@users.noreply.github.com> Date: Thu, 22 Oct 2020 20:41:51 +0100 Subject: [PATCH] Fix default configuration getter in client v12.0.0 (#276) Fixes #273 --- plugins/module_utils/common.py | 7 ++++++- .../targets/kubernetes/tasks/main.yml | 21 +++++++++++++++++++ .../kubernetes/tasks/new_config_getter.yml | 16 ++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 tests/integration/targets/kubernetes/tasks/new_config_getter.yml diff --git a/plugins/module_utils/common.py b/plugins/module_utils/common.py index d303eab6..5c6a0a02 100644 --- a/plugins/module_utils/common.py +++ b/plugins/module_utils/common.py @@ -252,7 +252,12 @@ class K8sAnsibleMixin(object): self.fail(msg='Failed to load kubeconfig due to %s' % to_native(err)) # Override any values in the default configuration with Ansible parameters - configuration = kubernetes.client.Configuration() + # As of kubernetes-client v12.0.0, get_default_copy() is required here + try: + configuration = kubernetes.client.Configuration().get_default_copy() + except AttributeError: + configuration = kubernetes.client.Configuration() + for key, value in iteritems(auth): if key in AUTH_ARG_MAP.keys() and value is not None: if key == 'api_key': diff --git a/tests/integration/targets/kubernetes/tasks/main.yml b/tests/integration/targets/kubernetes/tasks/main.yml index b50df180..17a25f78 100644 --- a/tests/integration/targets/kubernetes/tasks/main.yml +++ b/tests/integration/targets/kubernetes/tasks/main.yml @@ -51,6 +51,27 @@ state: absent no_log: yes +# Test new config getter (kubernetes==12.0.0) + +- pip: + name: + - kubernetes==12.0.0 + - openshift>=0.9.2 + - coverage + virtualenv: "{{ virtualenv }}" + virtualenv_command: "{{ virtualenv_command }}" + virtualenv_site_packages: no + +- include_tasks: new_config_getter.yml + vars: + ansible_python_interpreter: "{{ virtualenv_interpreter }}" + playbook_namespace: ansible-test-k8s-config-getter + +- file: + path: "{{ virtualenv }}" + state: absent + no_log: yes + # Test graceful failure for older versions of openshift - pip: diff --git a/tests/integration/targets/kubernetes/tasks/new_config_getter.yml b/tests/integration/targets/kubernetes/tasks/new_config_getter.yml new file mode 100644 index 00000000..7a534882 --- /dev/null +++ b/tests/integration/targets/kubernetes/tasks/new_config_getter.yml @@ -0,0 +1,16 @@ +--- +- block: + - name: Create a namespace + k8s: + name: "{{ playbook_namespace }}" + kind: Namespace + + - name: Delete namespace + k8s: + state: absent + definition: + - kind: Namespace + apiVersion: v1 + metadata: + name: "{{ playbook_namespace }}" + ignore_errors: yes