improve NETCONF performance
... by retrieving data nodes only once from the sysrepo datastore and iterating through them to get the leaves and leaf-list nodes that are required, as opposed to retrieving each and every leaf and leaf-list node from the datastore.
This empirically reduced the time required to push a configuration of 60k leaves and leaf-list nodes from approximately 9m30s to 3s. I encourage the reviewer to test the times in their setup as well.
The XML configuration that I used I generated with this script: big-yang-v4-xml.
Here is the generated configuration: kea-dhcp4-big.xml
You should be able to push this configuration with sysrepocfg -d running --edit=/etc/kea-dhcp4-big.xml
.
Closes #2400 (closed).
This MR is against a branch that is spun off the main MR of 2311 to make the changes more readable. After it is approved, hopefully #2311 (closed) would have been merged by then, and I will make the necessary rituals to merge it to master.
graph LR
2311-sysrepo2 --minor reordering of functions to make this MR more readable--> 2311-reorder
2311-reorder --this MR--> 2400-netconf-performance