The vyos/xml python lib provides operations to read a cache of the XML interface-definitions in order to read node information defined therein: for example in collection information for the configuration dict, it is necessary to know if the node is tag/leaf/multi-valued and if it has defined default values. The current implementation is impressive, but suffers from several outstanding issues that prevent easy extensions, and necessitate workarounds.
A simple revision allows:
- distinguishing between tag nodes and tag node values
- correct defaults under tag node values
- automatic merging of default values with the configuration dictionary
- simplification of various other manipulations of the config dict (key-mangling)
This revision make use of the vyos1x-config reference_tree (T5194) to collect the xml cache, as a convenience: one could build the cache explicitly, as in the original implementation, however this method supports other planned development.
Migration away from the original implementation will be detailed in a sub-task, and will involve dropping various workarounds in favor of get_config_dict(..., with_defaults=True) and other simplifications.