Skip to content

Commit ef7cd84

Browse files
committed
refactor: implement assertion JSON tasks as leaderboard role tasks
Signed-off-by: Gerard Vanloo <gerard.vanloo@ibm.com>
1 parent a283784 commit ef7cd84

15 files changed

+472
-87
lines changed

sre/playbooks/manage_applications.yaml

Lines changed: 43 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@
3535
when:
3636
- incident_id is defined
3737

38+
- name: Create leaderboard_incident dictionary
39+
ansible.builtin.set_fact:
40+
leaderboard_incident:
41+
id: "{{ incident_id }}"
42+
when:
43+
- incident_id is defined
44+
3845
- name: Create applications_enabled dictionary
3946
ansible.builtin.set_fact:
4047
applications_enabled:
@@ -44,29 +51,41 @@
4451
when:
4552
- incident_id is undefined
4653
tasks:
47-
- name: Import applications role
48-
ansible.builtin.import_role:
49-
name: applications
50-
vars:
51-
applications_cluster:
52-
cloud_provider: "{{ cluster_provider }}"
53-
kubeconfig: "{{ cluster.kubeconfig }}"
54-
platform: "{{ cluster_platform }}"
54+
- name: Import required roles
55+
block:
56+
- name: Import leaderboard role
57+
ansible.builtin.import_role:
58+
name: leaderboard
59+
vars:
60+
leaderboard_status:
61+
status: progressing
62+
63+
- name: Import applications role
64+
ansible.builtin.import_role:
65+
name: applications
66+
vars:
67+
applications_cluster:
68+
cloud_provider: "{{ cluster_provider }}"
69+
kubeconfig: "{{ cluster.kubeconfig }}"
70+
platform: "{{ cluster_platform }}"
5571

56-
# - name: Import e2e role
57-
# ansible.builtin.import_role:
58-
# name: e2e
59-
# tasks_from: register_deployment_time
60-
# tags:
61-
# - install_applications
62-
# when:
63-
# - incident.runner != 'local'
72+
- name: Import leaderboard role
73+
ansible.builtin.import_role:
74+
name: leaderboard
75+
vars:
76+
leaderboard_status:
77+
status: succeeded
78+
rescue:
79+
- name: Import leaderboard role
80+
ansible.builtin.import_role:
81+
name: leaderboard
82+
vars:
83+
leaderboard_status:
84+
failed_task:
85+
name: "{{ ansible_failed_task.name }}"
86+
result: "{{ ansible_failed_result }}"
87+
status: failed
6488

65-
# - name: Import e2e role
66-
# ansible.builtin.import_role:
67-
# name: e2e
68-
# tasks_from: register_deployment_failure
69-
# tags:
70-
# - capture_failed_deployment_state
71-
# when:
72-
# - incident.runner != 'local'
89+
- name: Fail playbook
90+
ansible.builtin.fail:
91+
msg: Failing playbook

sre/playbooks/manage_incidents.yaml

Lines changed: 69 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -41,46 +41,76 @@
4141
incidents_file:
4242
id: "{{ incident_id }}"
4343
tasks:
44-
# - name: Pause for 600 seconds pre-fault removal for alert recording
45-
# ansible.builtin.pause:
46-
# seconds: 600
47-
# tags:
48-
# - pre_fault_removal
49-
# when:
50-
# - incident.runner != 'local'
44+
- name: Import required roles
45+
block:
46+
- name: Import leaderboard role
47+
ansible.builtin.import_role:
48+
name: leaderboard
49+
vars:
50+
leaderboard_status:
51+
status: progressing
5152

52-
# - name: Import e2e role
53-
# ansible.builtin.import_role:
54-
# name: e2e
55-
# tasks_from: record_topology_information
56-
# tags:
57-
# - pre_fault_removal
58-
# when:
59-
# - incident.runner != 'local'
53+
# - name: Pause for 600 seconds pre-fault removal for alert recording
54+
# ansible.builtin.pause:
55+
# seconds: 600
56+
# tags:
57+
# - pre_fault_removal
58+
# when:
59+
# - incident.runner != 'local'
6060

61-
- name: Import incidents role
62-
ansible.builtin.import_role:
63-
name: incidents
64-
vars:
65-
incidents_cluster:
66-
kubeconfig: "{{ cluster.kubeconfig }}"
67-
platform: "{{ cluster_platform }}"
68-
incidents_spec: "{{ incident_spec }}"
61+
# - name: Import e2e role
62+
# ansible.builtin.import_role:
63+
# name: e2e
64+
# tasks_from: record_topology_information
65+
# tags:
66+
# - pre_fault_removal
67+
# when:
68+
# - incident.runner != 'local'
69+
70+
- name: Import incidents role
71+
ansible.builtin.import_role:
72+
name: incidents
73+
vars:
74+
incidents_cluster:
75+
kubeconfig: "{{ cluster.kubeconfig }}"
76+
platform: "{{ cluster_platform }}"
77+
incidents_spec: "{{ incident_spec }}"
78+
79+
# - name: Import e2e role
80+
# ansible.builtin.import_role:
81+
# name: e2e
82+
# tasks_from: record_topology_information
83+
# tags:
84+
# - post_fault_injection
85+
# when:
86+
# - incident.runner != 'local'
87+
88+
# - name: Import e2e role
89+
# ansible.builtin.import_role:
90+
# name: e2e
91+
# tasks_from: register_fault_injection_time
92+
# tags:
93+
# - inject_faults
94+
# when:
95+
# - incident.runner != 'local'
6996

70-
# - name: Import e2e role
71-
# ansible.builtin.import_role:
72-
# name: e2e
73-
# tasks_from: record_topology_information
74-
# tags:
75-
# - post_fault_injection
76-
# when:
77-
# - incident.runner != 'local'
97+
- name: Import leaderboard role
98+
ansible.builtin.import_role:
99+
name: leaderboard
100+
vars:
101+
leaderboard_status:
102+
status: succeeded
103+
rescue:
104+
- name: Import leaderboard role
105+
ansible.builtin.import_role:
106+
name: leaderboard
107+
vars:
108+
leaderboard_status:
109+
failed_task:
110+
name: "{{ ansible_failed_task.name }}"
111+
result: "{{ ansible_failed_result }}"
112+
status: failed
78113

79-
# - name: Import e2e role
80-
# ansible.builtin.import_role:
81-
# name: e2e
82-
# tasks_from: register_fault_injection_time
83-
# tags:
84-
# - inject_faults
85-
# when:
86-
# - incident.runner != 'local'
114+
- name: Fail playbook
115+
ansible.builtin.fail:
116+
msg: Failing playbook

sre/playbooks/manage_tools.yaml

Lines changed: 43 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@
3535
when:
3636
- incident_id is defined
3737

38+
- name: Create leaderboard_incident dictionary
39+
ansible.builtin.set_fact:
40+
leaderboard_incident:
41+
id: "{{ incident_id }}"
42+
when:
43+
- incident_id is defined
44+
3845
- name: Create tools_enabled dictionary
3946
ansible.builtin.set_fact:
4047
tools_enabled:
@@ -53,29 +60,41 @@
5360
when:
5461
- incident_id is undefined
5562
tasks:
56-
# - name: Import e2e role
57-
# ansible.builtin.import_role:
58-
# name: e2e
59-
# tasks_from: initialize_assertion_json
60-
# tags:
61-
# - install_tools
62-
# when:
63-
# - incident.runner != 'local'
63+
- name: Import required roles
64+
block:
65+
- name: Import leaderboard role
66+
ansible.builtin.import_role:
67+
name: leaderboard
68+
vars:
69+
leaderboard_status:
70+
status: progressing
6471

65-
- name: Import tools role
66-
ansible.builtin.import_role:
67-
name: tools
68-
vars:
69-
tools_cluster:
70-
provider: "{{ cluster_provider }}"
71-
kubeconfig: "{{ cluster.kubeconfig }}"
72-
platform: "{{ cluster_platform }}"
72+
- name: Import tools role
73+
ansible.builtin.import_role:
74+
name: tools
75+
vars:
76+
tools_cluster:
77+
provider: "{{ cluster_provider }}"
78+
kubeconfig: "{{ cluster.kubeconfig }}"
79+
platform: "{{ cluster_platform }}"
80+
81+
- name: Import leaderboard role
82+
ansible.builtin.import_role:
83+
name: leaderboard
84+
vars:
85+
leaderboard_status:
86+
status: succeeded
87+
rescue:
88+
- name: Import leaderboard role
89+
ansible.builtin.import_role:
90+
name: leaderboard
91+
vars:
92+
leaderboard_status:
93+
failed_task:
94+
name: "{{ ansible_failed_task.name }}"
95+
result: "{{ ansible_failed_result }}"
96+
status: failed
7397

74-
# - name: Import e2e role
75-
# ansible.builtin.import_role:
76-
# name: e2e
77-
# tasks_from: finalize_assertion_json
78-
# tags:
79-
# - uninstall_tools
80-
# when:
81-
# - incident.runner != 'local'
98+
- name: Fail playbook
99+
ansible.builtin.fail:
100+
msg: Failing playbook
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
leaderboard_status_file:
3+
legacy:
4+
name: "status_legacy"
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
argument_specs:
3+
main:
4+
short_description: Main entry point for leaderboard role
5+
description:
6+
- This is the main entry point for the leaderboard role.
7+
- This role is responsible for updating the status tracker.
8+
author:
9+
- Gerard Vanloo
10+
options:
11+
leaderboard_incident:
12+
required: false
13+
type: dict
14+
options:
15+
id:
16+
required: true
17+
type: int
18+
leaderboard_status:
19+
required: true
20+
type: dict
21+
options:
22+
failed_task:
23+
required: false
24+
type: dict
25+
options:
26+
name:
27+
required: true
28+
type: str
29+
result:
30+
required: true
31+
type: dict
32+
status:
33+
choices:
34+
- failed
35+
- progressing
36+
- succeeded
37+
required: true
38+
type: str
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
- name: Create leaderboard status content
3+
ansible.builtin.set_fact:
4+
leaderboard_current_status:
5+
incident: "{{ leaderboard_incident.id | default(omit) }}"
6+
events: []
7+
leaderboard_legacy_status:
8+
status:
9+
conditions: []
10+
11+
- name: Create status file in legacy format
12+
ansible.builtin.copy:
13+
content: "{{ leaderboard_legacy_status | to_nice_json(indent=2) }}"
14+
dest: "/tmp/status_legacy.json"
15+
mode: "0644"
16+
17+
- name: Create status file in v1 format
18+
ansible.builtin.copy:
19+
content: "{{ leaderboard_current_status | to_nice_json }}"
20+
dest: "/tmp/status.json"
21+
mode: "0644"

0 commit comments

Comments
 (0)