Skip to content

Commit 1383334

Browse files
committed
Enhance resource validation in HA cluster validator to check for required parameters and update warning messages for missing resources
1 parent f72f1ec commit 1383334

File tree

4 files changed

+27
-6
lines changed

4 files changed

+27
-6
lines changed

src/module_utils/get_pcmk_properties.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,22 @@ def _create_parameter(
190190
expected_config = (expected_value, False)
191191

192192
status = self._determine_parameter_status(value, expected_config)
193+
if status == TestStatus.WARNING.value and (not value or value == ""):
194+
is_required = False
195+
if isinstance(expected_config, tuple) and len(expected_config) == 2:
196+
is_required = expected_config[1]
197+
elif isinstance(expected_config, dict):
198+
is_required = expected_config.get("required", False)
199+
200+
if is_required:
201+
param_display_name = f"{op_name}_{name}" if op_name else name
202+
category_display = f"{category}_{subcategory}" if subcategory else category
203+
warning_msg = (
204+
f"Required parameter '{param_display_name}' in category '{category_display}' "
205+
+ "has no value configured.\n"
206+
)
207+
self.result["message"] += warning_msg
208+
self.log(logging.WARNING, warning_msg)
193209

194210
display_expected_value = None
195211
if expected_config is None:
@@ -512,6 +528,8 @@ def validate_from_constants(self):
512528
overall_status = TestStatus.ERROR.value
513529
elif warning_parameters:
514530
overall_status = TestStatus.WARNING.value
531+
elif self.result.get("status") == TestStatus.WARNING.value:
532+
overall_status = TestStatus.WARNING.value
515533
else:
516534
overall_status = TestStatus.SUCCESS.value
517535

@@ -653,10 +671,12 @@ def _check_required_resources(self):
653671

654672
if not elements:
655673
warning_msg = (
656-
f"Required resource '{resource_type}' not"
657-
+ " found in cluster configuration. "
674+
f"Required resource {resource_type} of xpath "
675+
+ f"'{self.RESOURCE_CATEGORIES[resource_type]}' not"
676+
+ " found in pacemaker cluster configuration.\n"
658677
)
659678
self.result["message"] += warning_msg
679+
self.result["status"] = TestStatus.WARNING.value
660680
self.log(logging.WARNING, warning_msg)
661681

662682
except Exception as ex:

src/modules/get_pcmk_properties_db.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,6 @@ def _validate_resource_constants(self):
234234
:rtype: list
235235
"""
236236
parameters = []
237-
self._check_required_resources()
238237

239238
try:
240239
if self.cib_output:
@@ -246,6 +245,7 @@ def _validate_resource_constants(self):
246245
if resource_scope is not None:
247246
parameters.extend(self._parse_resources_section(resource_scope))
248247

248+
self._check_required_resources()
249249
except Exception as ex:
250250
self.result["message"] += f"Error validating resource constants: {str(ex)} "
251251

src/modules/get_pcmk_properties_scs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,6 @@ def _validate_resource_constants(self):
230230
:rtype: list
231231
"""
232232
parameters = []
233-
self._check_required_resources()
234233

235234
try:
236235
if self.cib_output:
@@ -242,6 +241,7 @@ def _validate_resource_constants(self):
242241

243242
if resource_scope is not None:
244243
parameters.extend(self._parse_resources_section(resource_scope))
244+
self._check_required_resources()
245245

246246
except Exception as ex:
247247
self.result["message"] += f"Error validating resource constants: {str(ex)} "

tests/module_utils/get_pcmk_properties_test.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,9 +445,10 @@ def test_check_required_resources_missing(self, validator):
445445
)
446446
validator._check_required_resources()
447447
assert (
448-
"Required resource 'required_missing_resource' not found in cluster configuration"
449-
in validator.result["message"]
448+
"Required resource required_missing_resource" in validator.result["message"]
449+
and "not found in pacemaker cluster configuration" in validator.result["message"]
450450
)
451+
assert validator.result["status"] == TestStatus.WARNING.value
451452

452453
def test_check_required_resources_present(self, validator):
453454
"""

0 commit comments

Comments
 (0)