diff options
author | John Estabrook <jestabro@vyos.io> | 2021-08-13 12:01:04 -0500 |
---|---|---|
committer | John Estabrook <jestabro@vyos.io> | 2021-08-19 08:12:59 -0500 |
commit | 40f5359d2d34e322272b79f3905d26954311daa6 (patch) | |
tree | 6a1e224258f903757cbbdd9a21453c2d48b5419f /python/vyos/xml | |
parent | 8114975668ac5d0f59bbc6abdc0df91e4c0d9995 (diff) | |
download | vyos-1x-40f5359d2d34e322272b79f3905d26954311daa6.tar.gz vyos-1x-40f5359d2d34e322272b79f3905d26954311daa6.zip |
xml: T3474: add syntaxVersion processing to python xml lib
Diffstat (limited to 'python/vyos/xml')
-rw-r--r-- | python/vyos/xml/__init__.py | 2 | ||||
-rw-r--r-- | python/vyos/xml/definition.py | 6 | ||||
-rw-r--r-- | python/vyos/xml/kw.py | 1 | ||||
-rw-r--r-- | python/vyos/xml/load.py | 7 |
4 files changed, 15 insertions, 1 deletions
diff --git a/python/vyos/xml/__init__.py b/python/vyos/xml/__init__.py index 0ef0c85ce..e0eacb2d1 100644 --- a/python/vyos/xml/__init__.py +++ b/python/vyos/xml/__init__.py @@ -46,6 +46,8 @@ def is_tag(lpath): def is_leaf(lpath, flat=True): return load_configuration().is_leaf(lpath, flat) +def component_versions(): + return load_configuration().component_versions() def defaults(lpath, flat=False): return load_configuration().defaults(lpath, flat) diff --git a/python/vyos/xml/definition.py b/python/vyos/xml/definition.py index f556c5ced..5e0d5282c 100644 --- a/python/vyos/xml/definition.py +++ b/python/vyos/xml/definition.py @@ -30,6 +30,7 @@ class XML(dict): self[kw.owners] = {} self[kw.default] = {} self[kw.tags] = [] + self[kw.component_version] = {} dict.__init__(self) @@ -248,6 +249,11 @@ class XML(dict): # @lru_cache(maxsize=100) # XXX: need to use cachetool instead - for later + def component_versions(self) -> dict: + sort_component = sorted(self[kw.component_version].items(), + key = lambda kv: kv[0]) + return dict(sort_component) + def defaults(self, lpath, flat): d = self[kw.default] for k in lpath: diff --git a/python/vyos/xml/kw.py b/python/vyos/xml/kw.py index 58d47e751..48226ce96 100644 --- a/python/vyos/xml/kw.py +++ b/python/vyos/xml/kw.py @@ -32,6 +32,7 @@ priorities = '[priorities]' owners = '[owners]' tags = '[tags]' default = '[default]' +component_version = '[component_version]' # nodes diff --git a/python/vyos/xml/load.py b/python/vyos/xml/load.py index 0578bef80..c3022f3d6 100644 --- a/python/vyos/xml/load.py +++ b/python/vyos/xml/load.py @@ -115,7 +115,12 @@ def _format_nodes(inside, conf, xml): nodetype = 'tagNode' nodename = kw.tagNode elif 'syntaxVersion' in conf.keys(): - conf.pop('syntaxVersion') + sv = conf.pop('syntaxVersion') + if isinstance(sv, list): + for v in sv: + xml[kw.component_version][v['@component']] = v['@version'] + else: + xml[kw.component_version][sv['@component']] = sv['@version'] continue else: _fatal(conf.keys()) |