Files
kubernetes.core/molecule/default/tasks/json_patch.yml
abikouo 3c36b6fa0f k8s support diff mode (#146)
* support diff mode for k8s module

* Update and rename 145-k8s-add-support-diff-mode.yml to 146-k8s-add-support-diff-mode.yml

* Update 146-k8s-add-support-diff-mode.yml

* Update changelogs/fragments/146-k8s-add-support-diff-mode.yml

Co-authored-by: Mike Graves <mgraves@redhat.com>

* update k8s_scale and k8s_json_patch

* diff for k8s_scale  and k8s_json_patch

Co-authored-by: Mike Graves <mgraves@redhat.com>
2021-07-21 14:29:28 +02:00

174 lines
4.5 KiB
YAML

- vars:
namespace: json-patch
pod: json-patch
deployment: json-patch
block:
- name: Ensure namespace exists
kubernetes.core.k8s:
kind: namespace
name: "{{ namespace }}"
- name: Create a simple pod
kubernetes.core.k8s:
definition:
apiVersion: v1
kind: Pod
metadata:
namespace: "{{ namespace }}"
name: "{{ pod }}"
labels:
label1: foo
spec:
containers:
- image: busybox:musl
name: busybox
command:
- sh
- -c
- while true; do echo $(date); sleep 10; done
wait: yes
- name: Add a label and replace the image in checkmode
kubernetes.core.k8s_json_patch:
kind: Pod
namespace: "{{ namespace }}"
name: "{{ pod }}"
patch:
- op: add
path: /metadata/labels/label2
value: bar
- op: replace
path: /spec/containers/0/image
value: busybox:glibc
check_mode: yes
register: result
diff: yes
- name: Assert patch was made
assert:
that:
- result.changed
- result.result.metadata.labels.label2 == "bar"
- result.result.spec.containers[0].image == "busybox:glibc"
- result.diff
- name: Describe pod
kubernetes.core.k8s_info:
kind: Pod
name: "{{ pod }}"
namespace: "{{ namespace }}"
register: result
- name: Assert pod has not changed
assert:
that:
- result.resources[0].metadata.labels.label2 is not defined
- result.resources[0].spec.containers[0].image == "busybox:musl"
- name: Add a label and replace the image
kubernetes.core.k8s_json_patch:
kind: Pod
namespace: "{{ namespace }}"
name: "{{ pod }}"
patch:
- op: add
path: /metadata/labels/label2
value: bar
- op: replace
path: /spec/containers/0/image
value: busybox:glibc
register: result
- name: Assert patch was made
assert:
that:
- result.changed
- result.diff is not defined
- name: Describe pod
kubernetes.core.k8s_info:
kind: Pod
name: "{{ pod }}"
namespace: "{{ namespace }}"
register: result
- name: Assert that both patch operations have been applied
assert:
that:
- result.resources[0].metadata.labels.label2 == "bar"
- result.resources[0].spec.containers[0].image == "busybox:glibc"
- name: Apply the same patch to the pod
kubernetes.core.k8s_json_patch:
kind: Pod
namespace: "{{ namespace }}"
name: "{{ pod }}"
patch:
- op: add
path: /metadata/labels/label2
value: bar
- op: replace
path: /spec/containers/0/image
value: busybox:glibc
register: result
- name: Assert that no changes were made
assert:
that:
- not result.changed
- name: Create a simple deployment
kubernetes.core.k8s:
wait: yes
definition:
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: "{{ namespace }}"
name: "{{ deployment }}"
labels:
name: "{{ deployment }}"
spec:
replicas: 2
selector:
matchLabels:
app: busybox
template:
metadata:
labels:
app: busybox
spec:
containers:
- name: busybox
image: busybox
command:
- sh
- -c
- while true; do echo $(date); sleep 10; done
- name: Apply patch and wait for deployment to be ready
kubernetes.core.k8s_json_patch:
kind: Deployment
namespace: "{{ namespace }}"
name: "{{ deployment }}"
patch:
- op: replace
path: /spec/replicas
value: 3
wait: yes
register: result
- name: Assert all replicas are available
assert:
that:
- result.result.status.availableReplicas == 3
always:
- name: Ensure namespace has been deleted
kubernetes.core.k8s:
kind: Namespace
name: "{{ namespace }}"
state: absent
ignore_errors: yes