diff options
author | Christian Breunig <christian@breunig.cc> | 2024-06-15 08:44:54 +0200 |
---|---|---|
committer | Mergify <37929162+mergify[bot]@users.noreply.github.com> | 2024-06-24 14:08:27 +0000 |
commit | 8603967cbd7eb1ecdbad2e0960d1a18c667d38a3 (patch) | |
tree | c9049d3911b4bfbeec7c938122213dd47cad0a62 /python/vyos/utils/configfs.py | |
parent | 6baee9809a0626f9f555060cfb7b173388377deb (diff) | |
download | vyos-1x-8603967cbd7eb1ecdbad2e0960d1a18c667d38a3.tar.gz vyos-1x-8603967cbd7eb1ecdbad2e0960d1a18c667d38a3.zip |
T6489: add abstraction vyos.utils.configfs to work natively with the config filesystem
(cherry picked from commit d7a18a3da949bfa3df89661cc0871e8f23b18a10)
Diffstat (limited to 'python/vyos/utils/configfs.py')
-rw-r--r-- | python/vyos/utils/configfs.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/python/vyos/utils/configfs.py b/python/vyos/utils/configfs.py new file mode 100644 index 000000000..8617f0129 --- /dev/null +++ b/python/vyos/utils/configfs.py @@ -0,0 +1,37 @@ +# Copyright 2024 VyOS maintainers and contributors <maintainers@vyos.io> +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see <http://www.gnu.org/licenses/>. + +import os + +def delete_cli_node(cli_path: list): + from shutil import rmtree + for config_dir in ['VYATTA_TEMP_CONFIG_DIR', 'VYATTA_CHANGES_ONLY_DIR']: + tmp = os.path.join(os.environ[config_dir], '/'.join(cli_path)) + # delete CLI node + if os.path.exists(tmp): + rmtree(tmp) + +def add_cli_node(cli_path: list, value: str=None): + from vyos.utils.auth import get_current_user + from vyos.utils.file import write_file + + current_user = get_current_user() + for config_dir in ['VYATTA_TEMP_CONFIG_DIR', 'VYATTA_CHANGES_ONLY_DIR']: + # store new value + tmp = os.path.join(os.environ[config_dir], '/'.join(cli_path)) + write_file(f'{tmp}/node.val', value, user=current_user, group='vyattacfg', mode=0o664) + # mark CLI node as modified + if config_dir == 'VYATTA_CHANGES_ONLY_DIR': + write_file(f'{tmp}/.modified', '', user=current_user, group='vyattacfg', mode=0o664) |