From 5f8d8ac97ff0d3e4880683f9dfa1d72ee1ed5ed4 Mon Sep 17 00:00:00 2001 From: Mohamed Ali Date: Thu, 9 Jan 2025 17:13:58 +0200 Subject: [PATCH 1/2] remove os.system --- generic_config_updater/services_validator.py | 23 +++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/generic_config_updater/services_validator.py b/generic_config_updater/services_validator.py index 25501f759f..3550ad009d 100644 --- a/generic_config_updater/services_validator.py +++ b/generic_config_updater/services_validator.py @@ -1,6 +1,6 @@ -import os import time from .gu_common import genericUpdaterLogging +import subprocess logger = genericUpdaterLogging.get_logger(title="Service Validator") @@ -15,18 +15,25 @@ def set_verbose(verbose=False): else: logger.set_min_log_priority_notice() +def run_command(cmd): + try: + subprocess.check_call(cmd) + except Exception as e: + return e.returncode + return 0 + def _service_restart(svc_name): - rc = os.system(f"systemctl restart {svc_name}") + rc = run_command(['systemctl', 'restart', svc_name]) if rc != 0: # This failure is likely due to too many restarts # - rc = os.system(f"systemctl reset-failed {svc_name}") + rc =run_command(['systemctl', 'reset-failed', svc_name]) logger.log(logger.LOG_PRIORITY_ERROR, f"Service has been reset. rc={rc}; Try restart again...", print_to_console) - rc = os.system(f"systemctl restart {svc_name}") + rc = run_command(['systemctl', 'restart', svc_name]) if rc != 0: # Even with reset-failed, restart fails. # Give a pause before retry. @@ -35,7 +42,7 @@ def _service_restart(svc_name): f"Restart failed for {svc_name} rc={rc} after reset; Pause for 10s & retry", print_to_console) time.sleep(10) - rc = os.system(f"systemctl restart {svc_name}") + rc = run_command(['systemctl', 'restart', svc_name]) if rc == 0: logger.log(logger.LOG_PRIORITY_NOTICE, @@ -53,8 +60,8 @@ def rsyslog_validator(old_config, upd_config, keys): upd_syslog = upd_config.get("SYSLOG_SERVER", {}) if old_syslog != upd_syslog: - os.system("systemctl reset-failed rsyslog-config rsyslog") - rc = os.system("systemctl restart rsyslog-config") + run_command(['systemctl', 'reset-failed', 'rsyslog-config', 'rsyslog']) + rc = run_command(['systemctl', 'restart', 'rsyslog-config']) if rc != 0: return False return True @@ -122,7 +129,7 @@ def vlanintf_validator(old_config, upd_config, keys): deleted_keys = list(set(old_keys) - set(upd_keys)) for key in deleted_keys: iface, iface_ip = key - rc = os.system(f"ip neigh flush dev {iface} {iface_ip}") + rc = run_command(['ip', 'neigh', 'flush', 'dev', iface, iface_ip]) if rc: return False return True From e74d5f8224750e1bcbc0800382203101cb8f0267 Mon Sep 17 00:00:00 2001 From: Mohamed Ali Date: Tue, 14 Jan 2025 15:09:16 +0200 Subject: [PATCH 2/2] enhance coding conventions --- generic_config_updater/services_validator.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/generic_config_updater/services_validator.py b/generic_config_updater/services_validator.py index 3550ad009d..1f10d09cca 100644 --- a/generic_config_updater/services_validator.py +++ b/generic_config_updater/services_validator.py @@ -15,6 +15,7 @@ def set_verbose(verbose=False): else: logger.set_min_log_priority_notice() + def run_command(cmd): try: subprocess.check_call(cmd) @@ -28,7 +29,7 @@ def _service_restart(svc_name): if rc != 0: # This failure is likely due to too many restarts # - rc =run_command(['systemctl', 'reset-failed', svc_name]) + rc = run_command(['systemctl', 'reset-failed', svc_name]) logger.log(logger.LOG_PRIORITY_ERROR, f"Service has been reset. rc={rc}; Try restart again...", print_to_console)