diff options
author | John Estabrook <jestabro@vyos.io> | 2024-10-08 16:57:25 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-08 16:57:25 -0500 |
commit | 3bc900722892dba525b7cd6bada4e6327b01fffe (patch) | |
tree | 2dfb03e3f60c7d18bfda90380df80c4b4d298bf3 /src/conf_mode | |
parent | 7d4264365e487d37115cff0633b25e4b2012a126 (diff) | |
parent | dfba19b3e89f47690c0abdee5f6410278237122e (diff) | |
download | vyos-1x-3bc900722892dba525b7cd6bada4e6327b01fffe.tar.gz vyos-1x-3bc900722892dba525b7cd6bada4e6327b01fffe.zip |
Merge pull request #4128 from jestabro/commit-confirm-soft-rollback
config-mgmt: T5976: add option for commit-confirm to use 'soft' rollback
Diffstat (limited to 'src/conf_mode')
-rwxr-xr-x | src/conf_mode/system_config-management.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/conf_mode/system_config-management.py b/src/conf_mode/system_config-management.py index c681a8405..8de4e5342 100755 --- a/src/conf_mode/system_config-management.py +++ b/src/conf_mode/system_config-management.py @@ -22,6 +22,7 @@ from vyos.config import Config from vyos.config_mgmt import ConfigMgmt from vyos.config_mgmt import commit_post_hook_dir, commit_hooks + def get_config(config=None): if config: conf = config @@ -36,22 +37,29 @@ def get_config(config=None): return mgmt -def verify(_mgmt): + +def verify(mgmt): + d = mgmt.config_dict + confirm = d.get('commit_confirm', {}) + if confirm.get('action', '') == 'reload' and 'commit_revisions' not in d: + raise ConfigError('commit-confirm reload requires non-zero commit-revisions') + return + def generate(mgmt): if mgmt is None: return mgmt.initialize_revision() + def apply(mgmt): if mgmt is None: return locations = mgmt.locations - archive_target = os.path.join(commit_post_hook_dir, - commit_hooks['commit_archive']) + archive_target = os.path.join(commit_post_hook_dir, commit_hooks['commit_archive']) if locations: try: os.symlink('/usr/bin/config-mgmt', archive_target) @@ -68,8 +76,9 @@ def apply(mgmt): raise ConfigError from exc revisions = mgmt.max_revisions - revision_target = os.path.join(commit_post_hook_dir, - commit_hooks['commit_revision']) + revision_target = os.path.join( + commit_post_hook_dir, commit_hooks['commit_revision'] + ) if revisions > 0: try: os.symlink('/usr/bin/config-mgmt', revision_target) @@ -85,6 +94,7 @@ def apply(mgmt): except OSError as exc: raise ConfigError from exc + if __name__ == '__main__': try: c = get_config() |