diff options
| author | John Estabrook <jestabro@vyos.io> | 2025-09-10 21:03:06 -0500 |
|---|---|---|
| committer | John Estabrook <jestabro@vyos.io> | 2025-09-18 07:43:20 -0500 |
| commit | 8ca1475b2b1c43819be74c94b53f9cc3509fdc81 (patch) | |
| tree | 8152855d87de9179fcb6cee108cbaa0bb280a07a /python | |
| parent | 563656a29d969a198d8c27eb1f718d0117d4fe99 (diff) | |
| download | vyos-1x-8ca1475b2b1c43819be74c94b53f9cc3509fdc81.tar.gz vyos-1x-8ca1475b2b1c43819be74c94b53f9cc3509fdc81.zip | |
T7737: add vyconf aware versions of add/delete_cli_node
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/utils/session.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/python/vyos/utils/session.py b/python/vyos/utils/session.py index bc5240fc7..80691a378 100644 --- a/python/vyos/utils/session.py +++ b/python/vyos/utils/session.py @@ -15,6 +15,9 @@ # pylint: disable=import-outside-toplevel +import os +from inspect import stack + def in_config_session(): """Vyatta bash completion uses the following environment variable for @@ -23,3 +26,45 @@ def in_config_session(): from os import environ return '_OFR_CONFIGURE' in environ + + +# utility for functions below +def get_caller_name() -> str: + filename = stack()[2].filename + return os.path.basename(filename) + + +# OOB operations used (rarely) to update the session config during commit +# execution of config mode scripts. +# The standard use is for replacing plaintext with encrypted passwords in +# the session config during commit. +def delete_cli_node(cli_path: list): + from vyos.vyconf_session import VyconfSession + from vyos.configsession import ConfigSessionError + + pid = os.environ.get('SESSION_PID', '') + if not pid: + raise ValueError('Missing env var SESSION_PID') + + script_name = get_caller_name() + tag_value = os.environ.get('VYOS_TAGNODE_VALUE', None) + + vs = VyconfSession(pid=pid, on_error=ConfigSessionError) + vs.aux_delete(cli_path, script_name, tag_value) + + +def add_cli_node(cli_path: list, value: str = None): + from vyos.vyconf_session import VyconfSession + from vyos.configsession import ConfigSessionError + + pid = os.environ.get('SESSION_PID', '') + if not pid: + raise ValueError('Missing env var SESSION_PID') + + script_name = get_caller_name() + tag_value = os.environ.get('VYOS_TAGNODE_VALUE', None) + + cli_path = cli_path + [value] if value else cli_path + + vs = VyconfSession(pid=pid, on_error=ConfigSessionError) + vs.aux_set(cli_path, script_name, tag_value) |
