From 195de8b4600916ff2fd02ed0a3e0204e27e0f03e Mon Sep 17 00:00:00 2001 From: Will Thames Date: Fri, 25 Jan 2019 20:08:46 +1000 Subject: [PATCH] k8s: turn off wait in check_mode (#51310) --- lib/ansible/module_utils/k8s/raw.py | 14 +++++----- .../k8s/playbooks/roles/k8s/tasks/waiter.yml | 27 +++++++++++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/lib/ansible/module_utils/k8s/raw.py b/lib/ansible/module_utils/k8s/raw.py index 4bd6f2129d..080235fc43 100644 --- a/lib/ansible/module_utils/k8s/raw.py +++ b/lib/ansible/module_utils/k8s/raw.py @@ -224,6 +224,7 @@ class KubernetesRawModule(KubernetesAnsibleModule): return result else: # Delete the object + result['changed'] = True if not self.check_mode: try: k8s_obj = resource.delete(**params) @@ -231,12 +232,11 @@ class KubernetesRawModule(KubernetesAnsibleModule): except DynamicApiError as exc: self.fail_json(msg="Failed to delete object: {0}".format(exc.body), error=exc.status, status=exc.status, reason=exc.reason) - result['changed'] = True - if wait: - success, resource, duration = self.wait(resource, definition, wait_timeout, 'absent') - result['duration'] = duration - if not success: - self.fail_json(msg="Resource deletion timed out", **result) + if wait: + success, resource, duration = self.wait(resource, definition, wait_timeout, 'absent') + result['duration'] = duration + if not success: + self.fail_json(msg="Resource deletion timed out", **result) return result else: if not existing: @@ -259,7 +259,7 @@ class KubernetesRawModule(KubernetesAnsibleModule): self.fail_json(msg=msg, error=exc.status, status=exc.status, reason=exc.reason) success = True result['result'] = k8s_obj - if wait: + if wait and not self.check_mode: success, result['result'], result['duration'] = self.wait(resource, definition, wait_timeout) result['changed'] = True result['method'] = 'create' diff --git a/test/integration/targets/k8s/playbooks/roles/k8s/tasks/waiter.yml b/test/integration/targets/k8s/playbooks/roles/k8s/tasks/waiter.yml index ecc8223614..cbb6f82542 100644 --- a/test/integration/targets/k8s/playbooks/roles/k8s/tasks/waiter.yml +++ b/test/integration/targets/k8s/playbooks/roles/k8s/tasks/waiter.yml @@ -63,6 +63,33 @@ that: - ds.result.status.currentNumberScheduled == ds.result.status.desiredNumberScheduled + - name: update a daemonset in check_mode + k8s: + definition: + apiVersion: extensions/v1beta1 + kind: DaemonSet + metadata: + name: wait-daemonset + namespace: "{{ wait_namespace }}" + spec: + selector: + matchLabels: + app: "{{ wait_pod_name }}" + updateStrategy: + type: RollingUpdate + template: "{{ wait_pod_template }}" + wait: yes + wait_timeout: 180 + vars: + wait_pod_name: wait-ds + wait_pod_image: gcr.io/kuar-demo/kuard-amd64:2 + register: update_ds_check_mode + + - name: check that check_mode returned changed + assert: + that: + - update_ds_check_mode is changed + - name: update a daemonset k8s: definition: