diff options
Diffstat (limited to 'python/vyos/configsession.py')
| -rw-r--r-- | python/vyos/configsession.py | 23 | 
1 files changed, 20 insertions, 3 deletions
| diff --git a/python/vyos/configsession.py b/python/vyos/configsession.py index df44fd8d6..6d4b2af59 100644 --- a/python/vyos/configsession.py +++ b/python/vyos/configsession.py @@ -1,5 +1,5 @@  # configsession -- the write API for the VyOS running config -# Copyright (C) 2019 VyOS maintainers and contributors +# Copyright (C) 2019-2023 VyOS maintainers and contributors  #  # 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; @@ -17,7 +17,8 @@ import re  import sys  import subprocess -from vyos.util import is_systemd_service_running +from vyos.utils.process import is_systemd_service_running +from vyos.utils.dict import dict_to_paths  CLI_SHELL_API = '/bin/cli-shell-api'  SET = '/opt/vyatta/sbin/my_set' @@ -28,7 +29,7 @@ DISCARD = '/opt/vyatta/sbin/my_discard'  SHOW_CONFIG = ['/bin/cli-shell-api', 'showConfig']  LOAD_CONFIG = ['/bin/cli-shell-api', 'loadFile']  MIGRATE_LOAD_CONFIG = ['/usr/libexec/vyos/vyos-load-config.py'] -SAVE_CONFIG = ['/opt/vyatta/sbin/vyatta-save-config.pl'] +SAVE_CONFIG = ['/usr/libexec/vyos/vyos-save-config.py']  INSTALL_IMAGE = ['/opt/vyatta/sbin/install-image', '--url']  REMOVE_IMAGE = ['/opt/vyatta/bin/vyatta-boot-image.pl', '--del']  GENERATE = ['/opt/vyatta/bin/vyatta-op-cmd-wrapper', 'generate'] @@ -148,6 +149,13 @@ class ConfigSession(object):              value = [value]          self.__run_command([SET] + path + value) +    def set_section(self, path: list, d: dict): +        try: +            for p in dict_to_paths(d): +                self.set(path + p) +        except (ValueError, ConfigSessionError) as e: +            raise ConfigSessionError(e) +      def delete(self, path, value=None):          if not value:              value = [] @@ -155,6 +163,15 @@ class ConfigSession(object):              value = [value]          self.__run_command([DELETE] + path + value) +    def load_section(self, path: list, d: dict): +        try: +            self.delete(path) +            if d: +                for p in dict_to_paths(d): +                    self.set(path + p) +        except (ValueError, ConfigSessionError) as e: +            raise ConfigSessionError(e) +      def comment(self, path, value=None):          if not value:              value = [""] | 
