diff options
author | Daniil Baturin <daniil@vyos.io> | 2024-07-18 13:09:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-18 13:09:03 +0100 |
commit | bb7c376659afde1294973dd2fde43840b10c919d (patch) | |
tree | 59aaca808007142249f3d85ba37619846ea697b4 /src | |
parent | b81fa2e6ca3f90caeddb5ff6e5d8b2b021653756 (diff) | |
parent | 65d4ee33269f18a5a4ebab34e6e3866623a6a043 (diff) | |
download | vyos-1x-bb7c376659afde1294973dd2fde43840b10c919d.tar.gz vyos-1x-bb7c376659afde1294973dd2fde43840b10c919d.zip |
Merge pull request #3824 from vyos/mergify/bp/sagitta/pr-3813
configdep: T6559: fix regression in dependent script error under configd (backport #3813)
Diffstat (limited to 'src')
-rwxr-xr-x | src/services/vyos-configd | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/services/vyos-configd b/src/services/vyos-configd index c89c486e5..a7306afd1 100755 --- a/src/services/vyos-configd +++ b/src/services/vyos-configd @@ -30,7 +30,6 @@ from vyos.defaults import directories from vyos.utils.boot import boot_configuration_complete from vyos.configsource import ConfigSourceString from vyos.configsource import ConfigSourceError -from vyos.configdep import call_dependents from vyos.config import Config from vyos import ConfigError @@ -134,7 +133,8 @@ def explicit_print(path, mode, msg): except OSError: logger.critical("error explicit_print") -def run_script(script, config, args) -> int: +def run_script(script_name, config, args) -> int: + script = conf_mode_scripts[script_name] script.argv = args config.set_level([]) try: @@ -143,8 +143,9 @@ def run_script(script, config, args) -> int: script.generate(c) script.apply(c) except ConfigError as e: - logger.critical(e) - explicit_print(session_out, session_mode, str(e)) + s = f'{script_name}: {repr(e)}' + logger.error(s) + explicit_print(session_out, session_mode, s) return R_ERROR_COMMIT except Exception as e: logger.critical(e) @@ -212,6 +213,7 @@ def process_node_data(config, data, last: bool = False) -> int: script_name = None args = [] + config.dependency_list.clear() res = re.match(r'^(VYOS_TAGNODE_VALUE=[^/]+)?.*\/([^/]+).py(.*)', data) if res.group(1): @@ -227,17 +229,10 @@ def process_node_data(config, data, last: bool = False) -> int: args.insert(0, f'{script_name}.py') if script_name not in include_set: - # call dependents now if last element of prio queue is run - # independent of configd - if last: - call_dependents(dependent_func=config.dependent_func) return R_PASS with stdout_redirected(session_out, session_mode): - result = run_script(conf_mode_scripts[script_name], config, args) - - if last and result == R_SUCCESS: - call_dependents(dependent_func=config.dependent_func) + result = run_script(script_name, config, args) return result |