diff options
author | John Estabrook <jestabro@vyos.io> | 2025-05-23 10:31:18 -0500 |
---|---|---|
committer | John Estabrook <jestabro@vyos.io> | 2025-06-10 18:12:48 -0500 |
commit | c82b2b836b01c285576cc98ecf2b99ff3d8838ef (patch) | |
tree | 244be0a59856341181f28870a3956ab3893966a3 /src/services/vyos-configd | |
parent | b40e7a2de9daa866b6423391ba7fe5b1bfa7e67c (diff) | |
download | vyos-1x-c82b2b836b01c285576cc98ecf2b99ff3d8838ef.tar.gz vyos-1x-c82b2b836b01c285576cc98ecf2b99ff3d8838ef.zip |
configd: T7488: allow distinction of first-order error verify vs apply
Leave hint if vyos-configd encounters an error in the generate/apply
stages: this only detects 'first-order' differences, meaning those
originating from the called config mode script, and not its
dependencies. This is useful for supporting automatic rollback for
certain cases of apply stage error.
Diffstat (limited to 'src/services/vyos-configd')
-rwxr-xr-x | src/services/vyos-configd | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/services/vyos-configd b/src/services/vyos-configd index 28acccd2c..c45d492f9 100755 --- a/src/services/vyos-configd +++ b/src/services/vyos-configd @@ -68,6 +68,7 @@ class Response(Enum): ERROR_COMMIT = 2 ERROR_DAEMON = 4 PASS = 8 + ERROR_COMMIT_APPLY = 16 vyos_conf_scripts_dir = directories['conf_mode'] @@ -142,8 +143,6 @@ def run_script(script_name, config, args) -> tuple[Response, str]: try: c = script.get_config(config) script.verify(c) - script.generate(c) - script.apply(c) except ConfigError as e: logger.error(e) return Response.ERROR_COMMIT, str(e) @@ -152,6 +151,17 @@ def run_script(script_name, config, args) -> tuple[Response, str]: logger.error(tb) return Response.ERROR_COMMIT, tb + try: + script.generate(c) + script.apply(c) + except ConfigError as e: + logger.error(e) + return Response.ERROR_COMMIT_APPLY, str(e) + except Exception: + tb = traceback.format_exc() + logger.error(tb) + return Response.ERROR_COMMIT_APPLY, tb + return Response.SUCCESS, '' |