op-mode: T6471: add optimized get_config_dict #3628
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Change Summary
Add a faster
get_config_dict
for use by op-mode commands. This function avoids the overhead of reading the full config-dict inConfig
(implicitly used byConfigTreeQuery
) --- the overhead is necessary for config-mode, and is moderated by vyos-configd and caching; it is unnecessary and slow in op-mode, which has no daemon (yet).Note that a low-level Popen is used instead of a vyos.utils.process function, as it was noticed that as well incurred a heavy performance hit: this will be investigated in a separate task.
Types of changes
Performance improvement available for op-mode scripts.
Related Task(s)
Related PR(s)
Component(s) name
Proposed changes
How to test
Loading a non-trivial config (using vyos-1x/smoketest/configs/bgp-big-as-cloud), test with a Python script, as one would call in a op-mode show command, with interpreter startup and import overhead intact:
Results (representative example over repeated runs):
Smoketest result
Checklist: