diff options
author | John Estabrook <jestabro@vyos.io> | 2023-01-20 15:29:30 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-20 15:29:30 -0600 |
commit | 9b99f22df3f00715108b462bb66c8f4c9c502528 (patch) | |
tree | be0bcc352fc9e3a4db7fbe0df1d5e29b7958e453 /src/op_mode | |
parent | bf38bb14f0698b030fa49429ec70ab2edc51c85e (diff) | |
parent | 30f572af43bb645c91cda8edd648f039a56b1a8f (diff) | |
download | vyos-1x-9b99f22df3f00715108b462bb66c8f4c9c502528.tar.gz vyos-1x-9b99f22df3f00715108b462bb66c8f4c9c502528.zip |
Merge pull request #1767 from jestabro/config-mgmt
config-mgmt: T4942: rewrite vyatta-config-mgmt to Python/XML
Diffstat (limited to 'src/op_mode')
-rwxr-xr-x | src/op_mode/config_mgmt.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/op_mode/config_mgmt.py b/src/op_mode/config_mgmt.py new file mode 100755 index 000000000..0ffb1468b --- /dev/null +++ b/src/op_mode/config_mgmt.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2023 VyOS maintainers and contributors +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 or later as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import sys +import typing + +import vyos.opmode +from vyos.config_mgmt import ConfigMgmt + +def show_commit_diff(raw: bool, rev: int, revb: typing.Optional[int], + commands: bool): + config_mgmt = ConfigMgmt() + config_diff = config_mgmt.show_commit_diff(rev, revb, commands) + + if raw: + revb = (rev+1) if revb is None else revb + if commands: + d = {f'config_command_diff_{revb}_{rev}': config_diff} + else: + d = {f'config_file_diff_{revb}_{rev}': config_diff} + return d + + return config_diff + +def show_commit_file(raw: bool, rev: int): + config_mgmt = ConfigMgmt() + config_file = config_mgmt.show_commit_file(rev) + + if raw: + d = {f'config_revision_{rev}': config_file} + return d + + return config_file + +def show_commit_log(raw: bool): + config_mgmt = ConfigMgmt() + + msg = '' + if config_mgmt.max_revisions == 0: + msg = ('commit-revisions is not configured;\n' + 'commit log is empty or stale:\n\n') + + data = config_mgmt.get_raw_log_data() + if raw: + return data + + out = config_mgmt.format_log_data(data) + out = msg + out + + return out + +def show_commit_log_brief(raw: bool): + # used internally for completion help for 'rollback' + # option 'raw' will return same as 'show_commit_log' + config_mgmt = ConfigMgmt() + + data = config_mgmt.get_raw_log_data() + if raw: + return data + + out = config_mgmt.format_log_data_brief(data) + + return out + +if __name__ == '__main__': + try: + res = vyos.opmode.run(sys.modules[__name__]) + if res: + print(res) + except (ValueError, vyos.opmode.Error) as e: + print(e) + sys.exit(1) |