From 9632ee3279d93a36824180e4fe3e756c83bfa4f9 Mon Sep 17 00:00:00 2001 From: jingwenxie Date: Wed, 18 Oct 2023 12:35:46 +0800 Subject: [PATCH] Revert "Remove syslog service validator in GCU (#2991)" This reverts commit 6ba6ddf6d559e7f0c6f3cfd3d9918eeab9ab3b52. --- .../gcu_services_validator.conf.json | 6 ++++++ generic_config_updater/services_validator.py | 8 ++++++++ .../service_validator_test.py | 18 +++++++++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/generic_config_updater/gcu_services_validator.conf.json b/generic_config_updater/gcu_services_validator.conf.json index b504cf5d26..852b587286 100644 --- a/generic_config_updater/gcu_services_validator.conf.json +++ b/generic_config_updater/gcu_services_validator.conf.json @@ -31,6 +31,9 @@ "PORT": { "services_to_validate": [ "port_service" ] }, + "SYSLOG_SERVER":{ + "services_to_validate": [ "rsyslog" ] + }, "DHCP_RELAY": { "services_to_validate": [ "dhcp-relay" ] }, @@ -57,6 +60,9 @@ "port_service": { "validate_commands": [ ] }, + "rsyslog": { + "validate_commands": [ "generic_config_updater.services_validator.rsyslog_validator" ] + }, "dhcp-relay": { "validate_commands": [ "generic_config_updater.services_validator.dhcp_validator" ] }, diff --git a/generic_config_updater/services_validator.py b/generic_config_updater/services_validator.py index 29a887da89..497cb4ee74 100644 --- a/generic_config_updater/services_validator.py +++ b/generic_config_updater/services_validator.py @@ -48,6 +48,14 @@ def _service_restart(svc_name): return rc == 0 +def rsyslog_validator(old_config, upd_config, keys): + rc = os.system("/usr/bin/rsyslog-config.sh") + if rc != 0: + return _service_restart("rsyslog") + else: + return True + + def dhcp_validator(old_config, upd_config, keys): return _service_restart("dhcp_relay") diff --git a/tests/generic_config_updater/service_validator_test.py b/tests/generic_config_updater/service_validator_test.py index 802bc2dc15..f14a3ad7b0 100644 --- a/tests/generic_config_updater/service_validator_test.py +++ b/tests/generic_config_updater/service_validator_test.py @@ -6,7 +6,7 @@ from collections import defaultdict from unittest.mock import patch -from generic_config_updater.services_validator import vlan_validator, caclmgrd_validator, vlanintf_validator +from generic_config_updater.services_validator import vlan_validator, rsyslog_validator, caclmgrd_validator, vlanintf_validator import generic_config_updater.gu_common @@ -142,6 +142,16 @@ def mock_time_sleep_call(sleep_time): }, ] +test_rsyslog_fail = [ + # Fail the calls, to get the entire fail path calls invoked + # + { "cmd": "/usr/bin/rsyslog-config.sh", "rc": 1 }, # config update; fails + { "cmd": "systemctl restart rsyslog", "rc": 1 }, # rsyslog restart; fails + { "cmd": "systemctl reset-failed rsyslog", "rc": 1 }, # reset; failure here just logs + { "cmd": "systemctl restart rsyslog", "rc": 1 }, # restart again; fails + { "cmd": "systemctl restart rsyslog", "rc": 1 }, # restart again; fails + ] + test_vlanintf_data = [ { "old": {}, "upd": {}, "cmd": "" }, { @@ -201,6 +211,12 @@ def test_change_apply_os_system(self, mock_os_sys): # Test failure case # + os_system_calls = test_rsyslog_fail + os_system_call_index = 0 + + rc = rsyslog_validator("", "", "") + assert not rc, "rsyslog_validator expected to fail" + os_system_calls = [] os_system_call_index = 0 for entry in test_vlanintf_data: