New PR based on original #557 (prev PR was not picking up latest commits)
Summary
The existing behavior in cisco_interface provider code's prefetch method is to collect state for all interfaces on the device and to cache the data for other interface lookups. This approach makes sense in many cases but may result in unnecessarily long processing time for use cases where there are thousands of interfaces while the manifest is only interested in a small subset of interfaces. (Ref: https://github.com/cisco/cisco-network-puppet-module/issues/496)
This PR creates a compromise by adding a per-interface lookup path to prefetch that is invoked when the manifest's cisco_interface resource count is below an auto-selected threshold value.
Testing has shown that the threshold sweet spot is roughly 15 - 20% of the total number of interfaces. This change uses 15% to err on the side of caution.
This percentage is based on the point where the total query times are nearly equal; in other words the amount of time required to manage a given number of manifest resources is the same for both querying for all interfaces versus querying for each managed interface separately.
Sample test results showing optimum threshold value / total device interfaces:
20 / 100 (20.0%)
30 / 200 (15.0%)
100 / 600 (16.6%)
200 / 1000 (20.0%)
Supporting changes have already been made to the node_utilities interface code.
Beaker test test_interface_threshold.rb was created to verify that the two code-paths are exercised when the managed count is on both sides of the threshold.
There were a number of interface-related deprecated properties remaining in the cisco_interface provider. These have been removed.
New PR based on original #557 (prev PR was not picking up latest commits)
Summary
The existing behavior in
cisco_interface
provider code'sprefetch
method is to collect state for all interfaces on the device and to cache the data for other interface lookups. This approach makes sense in many cases but may result in unnecessarily long processing time for use cases where there are thousands of interfaces while the manifest is only interested in a small subset of interfaces. (Ref: https://github.com/cisco/cisco-network-puppet-module/issues/496)This PR creates a compromise by adding a per-interface lookup path to
prefetch
that is invoked when the manifest'scisco_interface
resource count is below an auto-selected threshold value.Supporting changes have already been made to the node_utilities interface code.
Beaker test
test_interface_threshold.rb
was created to verify that the two code-paths are exercised when the managed count is on both sides of the threshold.There were a number of interface-related deprecated properties remaining in the
cisco_interface
provider. These have been removed.