aboutsummaryrefslogtreecommitdiffstats
path: root/roles/onap-chaos-tests/tasks/node-drain.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/onap-chaos-tests/tasks/node-drain.yaml')
-rw-r--r--roles/onap-chaos-tests/tasks/node-drain.yaml105
1 files changed, 105 insertions, 0 deletions
diff --git a/roles/onap-chaos-tests/tasks/node-drain.yaml b/roles/onap-chaos-tests/tasks/node-drain.yaml
new file mode 100644
index 0000000..84d53c4
--- /dev/null
+++ b/roles/onap-chaos-tests/tasks/node-drain.yaml
@@ -0,0 +1,105 @@
+---
+- name: create directory for drain scenario
+ ansible.builtin.file:
+ path: /tmp/resiliency/node-drain
+ state: directory
+ mode: '0755'
+ tags: prepare
+
+- name: Get compute node list
+ community.kubernetes.k8s_info:
+ kind: Node
+ label_selectors: "! node-role.kubernetes.io/master"
+ register: kubernetes_computer_node_list
+ tags: prepare
+
+- name: Set Fact first compute node Internal IP
+ ansible.builtin.set_fact:
+ first_node_ip: "{{ item.address }}"
+ when: "'Hostname' in item.type"
+ with_items:
+ "{{ (kubernetes_computer_node_list.resources | first).status.addresses }}"
+ tags: prepare
+
+- name: Set Compute for the drain chaos
+ ansible.builtin.set_fact:
+ compute_chaos: "{{ first_node_ip }}"
+ when: compute_chaos is not defined
+ tags: prepare
+
+- name: Prepare rbac file for drain experiment
+ ansible.builtin.template:
+ src: node-drain-rbac.yaml.j2
+ dest: /tmp/resiliency/node-drain/node-drain-rbac.yaml
+ mode: 0600
+ tags: prepare
+
+- name: Prepare chaos file for drain experiment
+ ansible.builtin.template:
+ src: node-drain-chaos.yaml.j2
+ dest: /tmp/resiliency/node-drain/node-drain-chaos.yaml
+ mode: 0600
+ tags: prepare
+
+- name: Apply drain rbac
+ community.kubernetes.k8s:
+ state: present
+ src: /tmp/resiliency/node-drain/node-drain-rbac.yaml
+ tags: apply
+
+- name: Cordon the Chosen node
+ ansible.builtin.shell: "kubectl cordon {{ compute_chaos }}"
+
+- name: Apply chaos drain experiment
+ community.kubernetes.k8s:
+ state: present
+ src: /tmp/resiliency/node-drain/node-drain-chaos.yaml
+ tags: apply
+
+- name: wait for the end of chaos
+ run_once: true
+ community.kubernetes.k8s_info:
+ kind: ChaosEngine
+ api_version: litmuschaos.io/v1alpha1
+ name: onap-chaos-drain
+ namespace: "{{ onap_namespace }}"
+ register: chaosengine_status
+ changed_when:
+ &chaos_test chaosengine_status is defined and
+ chaosengine_status.resources[0].status.engineStatus == "completed"
+ until: *chaos_test
+ retries: 5
+ delay: 120
+ tags: wait
+# - name: Print the chaos engine object
+# ansible.builtin.debug:
+# msg: "{{chaosengine_status.resources[0].status.engineStatus }}"
+
+
+- name: get results
+ run_once: true
+ community.kubernetes.k8s_info:
+ kind: ChaosResult
+ api_version: litmuschaos.io/v1alpha1
+ name: onap-chaos-drain-node-drain
+ namespace: "{{ onap_namespace }}"
+ register: chaosresult_drain
+ changed_when:
+ &chaos_result chaosresult_drain is defined and
+ (chaosresult_drain.resources[0].status.experimentStatus.verdict == "Pass" or
+ chaosresult_drain.resources[0].status.experimentStatus.verdict == "Fail" )
+ until: *chaos_result
+ retries: 5
+ delay: 10
+ tags: wait
+
+- name: Print the chaos result object
+ ansible.builtin.debug:
+ msg: "{{ chaosresult_drain.resources[0].status.experimentStatus.verdict}}"
+
+- name: Print the chaos result verdict
+ ansible.builtin.debug:
+ msg: " The test is {{ chaosresult_drain.resources[0].status.experimentStatus.verdict}}-ed"
+
+- name: Uncordon the Chosen node
+ ansible.builtin.shell: "kubectl uncordon {{ compute_chaos }}"