Skip to content

Commit c63b6b3

Browse files
committed
Update HA validation and configuration:
1 parent e7b58ac commit c63b6b3

File tree

8 files changed

+150
-11
lines changed

8 files changed

+150
-11
lines changed

src/module_utils/get_pcmk_properties.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -561,20 +561,40 @@ def validate_from_constants(self):
561561

562562
if failed_parameters:
563563
overall_status = TestStatus.ERROR.value
564+
failed_param_names = []
565+
for param in failed_parameters:
566+
param_name = param.get("name", "")
567+
category = param.get("category", "")
568+
if param_name and category:
569+
failed_param_names.append(f"'{param_name}' ({category})")
570+
elif param_name:
571+
failed_param_names.append(f"'{param_name}'")
572+
573+
if failed_param_names:
574+
self.result["message"] += (
575+
f"HA parameter validation failed for {len(failed_parameters)} parameter(s): "
576+
f"{', '.join(failed_param_names)}. "
577+
)
578+
else:
579+
self.result[
580+
"message"
581+
] += f"HA parameter validation failed for {len(failed_parameters)} parameter(s). "
564582
elif warning_parameters:
565583
overall_status = TestStatus.WARNING.value
584+
self.result["message"] += "HA parameter validation completed with warnings. "
566585
elif self.result.get("status") == TestStatus.WARNING.value:
567586
overall_status = TestStatus.WARNING.value
587+
self.result["message"] += "HA parameter validation completed with warnings. "
568588
else:
569589
overall_status = TestStatus.SUCCESS.value
590+
self.result["message"] += "HA parameter validation completed successfully. "
570591

571592
self.result.update(
572593
{
573594
"details": {"parameters": parameters},
574595
"status": overall_status,
575596
}
576597
)
577-
self.result["message"] += "HA parameter validation completed successfully. "
578598
recommendation_message = self._generate_recommendation_message()
579599
if recommendation_message:
580600
self.result["message"] += recommendation_message

src/modules/get_pcmk_properties_scs.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ class HAClusterValidator(BaseHAClusterValidator):
166166
"ipaddr": ".//primitive[@type='IPaddr2']",
167167
"azurelb": ".//primitive[@type='azure-lb']",
168168
"azureevents": ".//primitive[@type='azure-events-az']",
169+
"filesystem": ".//primitive[@type='Filesystem']",
169170
}
170171

171172
def __init__(

src/roles/configuration_checks/tasks/files/hana.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ checks:
159159
user: *root
160160
validator_type: *list
161161
validator_args:
162-
valid_list: ["reboot", "stonith-action=reboot"]
162+
valid_list: ["reboot", "stonith-action=reboot", "stonith-action=reboot (default)"]
163163
report: *check
164164

165165
- id: "DB-HANA-0004"

src/roles/ha_db_hana/tasks/files/constants.yaml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ CRM_CONFIG_DEFAULTS:
3434
azure-events-az_globalPullState:
3535
value: "IDLE"
3636
required: false
37+
have-watchdog:
38+
value: "true"
39+
required: false
3740

3841
# === Operation Defaults ===
3942
# cibadmin --query --scope op_defaults
@@ -50,7 +53,7 @@ OP_DEFAULTS:
5053
RSC_DEFAULTS:
5154
migration-threshold:
5255
value: "5000"
53-
required: false
56+
required: true
5457
priority:
5558
value: "1"
5659
required: false
@@ -868,18 +871,18 @@ GLOBAL_INI:
868871
execution_order:
869872
value: "1"
870873
required: true
871-
ha_dr_provider_suschksrv:
874+
ha_dr_provider_chksrv:
872875
provider:
873-
value: "susChkSrv"
876+
value: "ChkSrv"
874877
required: true
875878
path:
876879
value: ["/usr/share/SAPHanaSR", "/hana/shared/myHooks"]
877880
required: true
878881
execution_order:
879-
value: "3"
882+
value: "2"
880883
required: true
881884
action_on_host:
882-
value: "fence"
885+
value: "kill"
883886
required: true
884887
trace:
885888
ha_dr_saphanasr:

src/roles/ha_db_hana/tasks/ha-config.yml

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,37 @@
77
- name: "Test Setup Tasks"
88
ansible.builtin.include_tasks: "roles/misc/tasks/test-case-setup.yml"
99

10+
- name: "Capture cluster configuration snapshot"
11+
become: true
12+
ansible.builtin.shell: >-
13+
set -o pipefail && {{
14+
commands
15+
| selectattr('name', 'equalto', 'ha_cluster_config_dump')
16+
| map(attribute=(ansible_os_family | upper))
17+
| list | first | default('')
18+
}}
19+
args:
20+
executable: /bin/bash
21+
register: ha_cluster_config_dump_result
22+
changed_when: false
23+
failed_when: false
24+
25+
- name: "Prepare cluster configuration payload"
26+
ansible.builtin.set_fact:
27+
ha_cluster_config_snapshot: |-
28+
Command: {{
29+
commands
30+
| selectattr('name', 'equalto', 'ha_cluster_config_dump')
31+
| map(attribute=(ansible_os_family | upper))
32+
| list | first | default('Not defined')
33+
}}
34+
---
35+
{{
36+
(ha_cluster_config_dump_result.stdout | default('') | trim)
37+
if (ha_cluster_config_dump_result.stdout is defined and (ha_cluster_config_dump_result.stdout | trim | length > 0))
38+
else (ha_cluster_config_dump_result.stderr | default('No output captured.'))
39+
}}
40+
1041
- name: "Ensure a list of package version is available for logging"
1142
no_log: true
1243
block:
@@ -151,22 +182,22 @@
151182

152183
- name: "Set the test case status to PASSED"
153184
ansible.builtin.set_fact:
154-
test_case_name: "{{ item.name }}: {{ virtual_host }}"
155185
test_case_status: "{{ test_result.status }}"
156186
test_case_message: "{{ test_result.message }}"
157187
test_case_details: "{{ test_result.details }}"
158188
test_case_hostname: "{{ virtual_host }}"
159189
package_versions: "{{ packages_list.details }}"
190+
test_case_var_log_messages: "{{ ha_cluster_config_snapshot | default('Cluster configuration snapshot unavailable') }}"
160191

161192
rescue:
162193
- name: "Test case failed"
163194
ansible.builtin.set_fact:
164-
test_case_name: "{{ item.name }}: {{ virtual_host }}"
165195
test_case_status: "FAILED"
166196
test_case_details: "{{ test_result }}"
167197
test_case_message: "{{ ansible_failed_result }}"
168198
test_case_hostname: "{{ virtual_host }}"
169199
package_versions: "{{ packages_list.details }}"
200+
test_case_var_log_messages: "{{ ha_cluster_config_snapshot | default('Cluster configuration snapshot unavailable') }}"
170201

171202
- name: "Post Telemetry Data"
172203
ansible.builtin.include_tasks: "roles/misc/tasks/post-telemetry-data.yml"

src/roles/ha_scs/tasks/files/constants.yaml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,31 @@ RESOURCE_DEFAULTS:
384384
value: ["0", "0s"]
385385
required: false
386386

387+
filesystem:
388+
required: false
389+
operations:
390+
monitor:
391+
interval:
392+
value: ["20", "20s"]
393+
required: false
394+
timeout:
395+
value: ["40", "40s"]
396+
required: false
397+
start:
398+
interval:
399+
value: ["0", "0s"]
400+
required: false
401+
timeout:
402+
value: ["60", "60s"]
403+
required: false
404+
stop:
405+
interval:
406+
value: ["0", "0s"]
407+
required: false
408+
timeout:
409+
value: ["60", "60s"]
410+
required: false
411+
387412
REDHAT:
388413
fence_agent:
389414
instance_attributes:
@@ -677,6 +702,30 @@ RESOURCE_DEFAULTS:
677702
value: ["10", "10s"]
678703
required: false
679704

705+
filesystem:
706+
required: false
707+
operations:
708+
monitor:
709+
interval:
710+
value: ["20", "20s"]
711+
required: false
712+
timeout:
713+
value: ["40", "40s"]
714+
required: false
715+
start:
716+
interval:
717+
value: ["0", "0s"]
718+
required: false
719+
timeout:
720+
value: ["60", "60s"]
721+
required: false
722+
stop:
723+
interval:
724+
value: ["0", "0s"]
725+
required: false
726+
timeout:
727+
value: ["120", "120s"]
728+
required: false
680729

681730
# === OS Parameters ===
682731
# Run command as root. Format of command is: "parent_key child_key"

src/roles/ha_scs/tasks/ha-config.yml

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,37 @@
77
- name: "Test Setup Tasks"
88
ansible.builtin.include_tasks: "roles/misc/tasks/test-case-setup.yml"
99

10+
- name: "Capture cluster configuration snapshot"
11+
become: true
12+
ansible.builtin.shell: >-
13+
set -o pipefail && {{
14+
commands
15+
| selectattr('name', 'equalto', 'ha_cluster_config_dump')
16+
| map(attribute=(ansible_os_family | upper))
17+
| list | first | default('')
18+
}}
19+
args:
20+
executable: /bin/bash
21+
register: ha_cluster_config_dump_result
22+
changed_when: false
23+
failed_when: false
24+
25+
- name: "Prepare cluster configuration payload"
26+
ansible.builtin.set_fact:
27+
ha_cluster_config_snapshot: |-
28+
Command: {{
29+
commands
30+
| selectattr('name', 'equalto', 'ha_cluster_config_dump')
31+
| map(attribute=(ansible_os_family | upper))
32+
| list | first | default('Not defined')
33+
}}
34+
---
35+
{{
36+
(ha_cluster_config_dump_result.stdout | default(''))
37+
if (ha_cluster_config_dump_result.stdout is defined and (ha_cluster_config_dump_result.stdout | length > 0))
38+
else (ha_cluster_config_dump_result.stderr | default('No output captured.'))
39+
}}
40+
1041
- name: "Pre Validations: Validate parameters for the SCS nodes"
1142
become: true
1243
become_user: root
@@ -32,19 +63,19 @@
3263

3364
- name: "Set the test case status to PASSED"
3465
ansible.builtin.set_fact:
35-
test_case_name: "{{ item.name }}: {{ virtual_host }}"
3666
test_case_status: "{{ test_result.status }}"
3767
test_case_message: "{{ test_result.message }}"
3868
test_case_details: "{{ test_result.details }}"
3969
test_case_hostname: "{{ virtual_host }}"
70+
test_case_var_log_messages: "{{ ha_cluster_config_snapshot | default('Cluster configuration snapshot unavailable') }}"
4071
rescue:
4172
- name: "Test case failed"
4273
ansible.builtin.set_fact:
43-
test_case_name: "{{ item.name }}: {{ virtual_host }}"
4474
test_case_status: "FAILED"
4575
test_case_details: "{{ test_result }}"
4676
test_case_message: "{{ ansible_failed_result }}"
4777
test_case_hostname: "{{ virtual_host }}"
78+
test_case_var_log_messages: "{{ ha_cluster_config_snapshot | default('Cluster configuration snapshot unavailable') }}"
4879

4980
- name: "Post Telemetry Data"
5081
ansible.builtin.include_tasks: "roles/misc/tasks/post-telemetry-data.yml"

src/vars/input-api.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,3 +315,7 @@ commands:
315315
- name: ascs_resource_unmigrate_cmd
316316
SUSE: "crm resource clear {{ cluster_status_pre.ascs_resource_id | default('rsc_sap_' ~ sap_sid ~ '_ASCS' ~ scs_instance_number) }}"
317317
REDHAT: "pcs resource clear {{ cluster_status_pre.ascs_resource_id | default('rsc_sap_' ~ sap_sid ~ '_ASCS' ~ scs_instance_number) }}"
318+
319+
- name: ha_cluster_config_dump
320+
SUSE: "crm config show"
321+
REDHAT: "pcs config show"

0 commit comments

Comments
 (0)