Merge pull request #84 from willthames/k8s_apply_check_mode_fix

K8s apply check mode fix
This commit is contained in:
Fabian von Feilitzsch
2020-05-15 12:58:40 -04:00
committed by GitHub
3 changed files with 35 additions and 5 deletions

View File

@@ -21,6 +21,8 @@ provisioner:
ansible_python_interpreter: '{{ ansible_playbook_python }}' ansible_python_interpreter: '{{ ansible_playbook_python }}'
env: env:
ANSIBLE_FORCE_COLOR: 'true' ANSIBLE_FORCE_COLOR: 'true'
options:
vvv: True
scenario: scenario:
name: default name: default
test_sequence: test_sequence:

View File

@@ -154,6 +154,30 @@
that: that:
- k8s_service_2 is not changed - k8s_service_2 is not changed
- name: Add exactly same service in check mode
k8s:
definition:
apiVersion: v1
kind: Service
metadata:
name: apply-svc
namespace: "{{ apply_namespace }}"
spec:
selector:
app: whatever
ports:
- name: http
port: 8080
targetPort: 8080
apply: yes
register: k8s_service_3
check_mode: yes
- name: Check nothing changed
assert:
that:
- k8s_service_3 is not changed
- name: Change service ports - name: Change service ports
k8s: k8s:
definition: definition:
@@ -170,14 +194,14 @@
port: 8081 port: 8081
targetPort: 8081 targetPort: 8081
apply: yes apply: yes
register: k8s_service_3 register: k8s_service_4
- name: Check ports are correct - name: Check ports are correct
assert: assert:
that: that:
- k8s_service_3 is changed - k8s_service_4 is changed
- k8s_service_3.result.spec.ports | length == 1 - k8s_service_4.result.spec.ports | length == 1
- k8s_service_3.result.spec.ports[0].port == 8081 - k8s_service_4.result.spec.ports[0].port == 8081
always: always:
- name: Remove namespace - name: Remove namespace

View File

@@ -299,7 +299,11 @@ class KubernetesRawModule(KubernetesAnsibleModule):
else: else:
if self.apply: if self.apply:
if self.check_mode: if self.check_mode:
ignored, k8s_obj = apply_object(resource, definition) ignored, patch = apply_object(resource, definition)
if existing:
k8s_obj = dict_merge(existing.to_dict(), patch)
else:
k8s_obj = patch
else: else:
try: try:
k8s_obj = resource.apply(definition, namespace=namespace).to_dict() k8s_obj = resource.apply(definition, namespace=namespace).to_dict()