summaryrefslogtreecommitdiff
path: root/python/vyos/config.py
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-07-01 20:59:17 +0200
committerGitHub <noreply@github.com>2020-07-01 20:59:17 +0200
commit3c973c0852de9342a94ae3df7c3d927b0a600032 (patch)
treefe703729f5f50799fff70a5b9cc53fa16393521b /python/vyos/config.py
parent9afc69f83f5e6f44751c3d6c546ea7614baff41c (diff)
parentb4a60249f5c26da1d5d837de9122d7d87948507b (diff)
downloadvyos-1x-3c973c0852de9342a94ae3df7c3d927b0a600032.tar.gz
vyos-1x-3c973c0852de9342a94ae3df7c3d927b0a600032.zip
Merge pull request #486 from jestabro/sub_dict
Diffstat (limited to 'python/vyos/config.py')
-rw-r--r--python/vyos/config.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/python/vyos/config.py b/python/vyos/config.py
index 56353c322..0bbfece6e 100644
--- a/python/vyos/config.py
+++ b/python/vyos/config.py
@@ -71,7 +71,6 @@ import subprocess
import vyos.util
import vyos.configtree
-
class VyOSError(Exception):
"""
Raised on config access errors, most commonly if the type of a config tree node
@@ -288,17 +287,24 @@ class Config(object):
self.__session_env = save_env
return(default)
- def get_config_dict(self, path=[], effective=False, key_mangling=None):
+ def get_config_dict(self, path=[], effective=False, key_mangling=None, get_first_key=False):
"""
Args: path (str list): Configuration tree path, can be empty
Returns: a dict representation of the config
"""
- res = self.show_config(self._make_path(path), effective=effective)
- if res:
+ res = self.show_config(effective=effective)
+ config_dict = {}
+ if not res:
+ return config_dict
+ else:
config_tree = vyos.configtree.ConfigTree(res)
config_dict = json.loads(config_tree.to_json())
- else:
- config_dict = {}
+ config_dict = vyos.util.get_sub_dict(config_dict, self._make_path(path))
+ if get_first_key:
+ tmp = next(iter(config_dict.values()))
+ if not isinstance(tmp, dict):
+ raise TypeError("Data under node is not of type dict")
+ config_dict = tmp
if key_mangling:
if not (isinstance(key_mangling, tuple) and \