summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2020-03-29 16:28:49 -0500
committerJohn Estabrook <jestabro@vyos.io>2020-03-29 16:33:06 -0500
commita2771180be5cc98e5b361734602da91632d93b41 (patch)
treef85cf4e21afa1b9fb1b1cc3bcf7a3350ab290ebd
parent5c0908bab363152a19f6aaf023b4852bd54a47ac (diff)
downloadvyos-1x-a2771180be5cc98e5b361734602da91632d93b41.tar.gz
vyos-1x-a2771180be5cc98e5b361734602da91632d93b41.zip
vyos.config: T2180: ignore CLI edit level in show_config
-rw-r--r--python/vyos/config.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/python/vyos/config.py b/python/vyos/config.py
index 2342f7021..75055a603 100644
--- a/python/vyos/config.py
+++ b/python/vyos/config.py
@@ -238,6 +238,19 @@ class Config(object):
str: working configuration
"""
+ # show_config should be independent of CLI edit level.
+ # Set the CLI edit environment to the top level, and
+ # restore original on exit.
+ save_env = self.__session_env
+
+ env_str = self._run(self._make_command('getEditResetEnv', ''))
+ env_list = re.findall(r'([A-Z_]+)=\'([^;\s]+)\'', env_str)
+ root_env = os.environ
+ for k, v in env_list:
+ root_env[k] = v
+
+ self.__session_env = root_env
+
# FIXUP: by default, showConfig will give you a diff
# if there are uncommitted changes.
# The config parser obviously cannot work with diffs,
@@ -253,8 +266,10 @@ class Config(object):
path = " ".join(path)
try:
out = self._run(self._make_command('showConfig', path))
+ self.__session_env = save_env
return out
except VyOSError:
+ self.__session_env = save_env
return(default)
def get_config_dict(self, path=[], effective=False):