diff --git a/changelogs/fragments/k8s-support-kubernetes-v12.yml b/changelogs/fragments/k8s-support-kubernetes-v12.yml new file mode 100644 index 00000000000..ae6d03c60f0 --- /dev/null +++ b/changelogs/fragments/k8s-support-kubernetes-v12.yml @@ -0,0 +1,3 @@ +bugfixes: + - k8s - add support for python-kubernetes v12 and later - backport of + support in community.kubernetes diff --git a/lib/ansible/module_utils/k8s/common.py b/lib/ansible/module_utils/k8s/common.py index eccef99066b..9ae32828edd 100644 --- a/lib/ansible/module_utils/k8s/common.py +++ b/lib/ansible/module_utils/k8s/common.py @@ -188,7 +188,12 @@ class K8sAnsibleMixin(object): kubernetes.config.load_kube_config(auth.get('kubeconfig'), auth.get('context')) # 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/test/integration/targets/k8s/tasks/basic_validation.yml b/test/integration/targets/k8s/tasks/basic_validation.yml new file mode 100644 index 00000000000..5a42b352091 --- /dev/null +++ b/test/integration/targets/k8s/tasks/basic_validation.yml @@ -0,0 +1,8 @@ +--- + +# just test that authentication works +- name: Ensure testing1 namespace exists + k8s: + api_version: v1 + kind: Namespace + name: testing1 diff --git a/test/integration/targets/k8s/tasks/main.yml b/test/integration/targets/k8s/tasks/main.yml index bb11bbc6862..60c0850acb8 100644 --- a/test/integration/targets/k8s/tasks/main.yml +++ b/test/integration/targets/k8s/tasks/main.yml @@ -65,6 +65,40 @@ recreate_crd_default_merge_expectation: recreate_crd is failed playbook_namespace: ansible-test-k8s-older-openshift +- file: + path: "{{ virtualenv }}" + state: absent + no_log: yes + +# Test works with kubernetes==11.* and kubernetes>11 + +- pip: + name: + - openshift + - kubernetes==11.* + - coverage + virtualenv: "{{ virtualenv }}" + virtualenv_command: "{{ virtualenv_command }}" + virtualenv_site_packages: no + +- include_tasks: basic_validation.yml + +- file: + path: "{{ virtualenv }}" + state: absent + no_log: yes + +- pip: + name: + - openshift + - kubernetes>11 + - coverage + virtualenv: "{{ virtualenv }}" + virtualenv_command: "{{ virtualenv_command }}" + virtualenv_site_packages: no + +- include_tasks: basic_validation.yml + - file: path: "{{ virtualenv }}" state: absent