#!/bin/python
import time
import getpass
import netapp_ontap
from netapp_ontap import config
from netapp_ontap.host_connection import HostConnection
from netapp_ontap.resources import QuotaRule
password = getpass.getpass()
config.CONNECTION = HostConnection(host, user, password)
start = time.time()
quota_rules = QuotaRule.get_collection(fields='type')
# quota_rules = QuotaRule.get_collection()
total = 0
for l in quota_rules:
# l.get(fields='type')
total = total + 1
end = time.time()
print(total)
print(end-start)
With 471 quota rules on my filer it takes about 4s with get_collection(fields='type') vs. ~40s when calling l.get(fields='type') for each rule being processed. So if you are after all the entries it is more quicker to pass the required fields to get_collection() and not call get() on each returned resource.
I did a little bit of debugging and it seems that each get() results in a new TCP/HTTPS connection being established which is likely the main reason of the much worse performance performance. Also get_collection() gets all 471 results in a single HTTP GET.
There seems to be a bug in regards to re-ussing connections though, as it shouldn't have to establish a new session for each get.