diff options
author | Christian Breunig <christian@breunig.cc> | 2024-07-15 08:57:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-15 08:57:00 +0200 |
commit | 2fdcf50263bc94e8e1742fd9450318fa021b2860 (patch) | |
tree | 07bfbc96fd8935066bd9fd3a6f2baaaadb0a78c3 /src | |
parent | 1071dd2177b8fa8b81a9f47b336ea3257049eb8b (diff) | |
parent | ad43aa885a8ef689da212088d6ebb37c32d72883 (diff) | |
download | vyos-1x-2fdcf50263bc94e8e1742fd9450318fa021b2860.tar.gz vyos-1x-2fdcf50263bc94e8e1742fd9450318fa021b2860.zip |
Merge pull request #3813 from jestabro/configdep-error
configdep: T6559: fix regression in dependent script error under configd
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 d92b539c8..87f7c0e25 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) @@ -219,6 +220,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): @@ -234,17 +236,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 |