Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I'm using OnTAP 8.3.1 to retrieve quota reports for infrastructure integration. Unfortunately the query element seems to be not working as expected. When specifying
api1.set_vserver('test') report = NaElement('quota-report-iter') report.child_add(NaElement('max-records', 5)) query = NaElement('query') query.child_add(NaElement('quota-target', 'xxxx')) report.child_add(query) res = api1.invoke_elem(report)
the query element is ignored completley where with ither iters (like storage-disk-get-iter) the build construct is working. I've been in contact with NetAPP support as I think, this is a Bug due to the result status/reason indicate a positive response but return a not correct result. In the example above the result would contain everything up to the first 5 records no matter what you specify in quota-target.
does anyone has an idea how to query a quota-report for a specific quota-target instead of fetching all records and parsing them manually ? In our example this means 13 seconds waiting for retrieval of all entries ...
thanks in advanced
kind regards
Michael Lang
3 REPLIES 3
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
hi,
let's try this
api = NaElement("quota-report-iter")
api.child_add_string("max-records","5")
xi = NaElement("query")
api.child_add(xi)
xi1 = NaElement("quota")
xi.child_add(xi1)
xi1.child_add_string("quota-target","*")
xi1.child_add_string("volume","test")
xo = s.invoke_elem(api)
if (xo.results_status() == "failed") :
print ("Error:\n")
print (xo.sprintf())
sys.exit (1)
print ("Received:\n")
print (xo.sprintf())
François
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi François,
thanks for your feedback, it seems that the additional element "quota" does the trick, with that it's not even necessary to specify the volume entity.
api1.set_vserver('test') report = NaElement('quota-report-iter') report.child_add(NaElement('max-records', maxrecords)) query = NaElement('query') quota = NaElement('quota') query.child_add(quota) quota.child_add(NaElement('quota-target', 'test')) report.child_add(query) res = api1.invoke_elem(report) for e in map(lambda x: (x.child_get_string('quota-target'), x.child_get_int('disk-limit')), res.child_get('attributes-list').children_get()): print e
(u'test', 2048000) (u'test', 3072000) (u'test', 1024000)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
small additional information here to be added,
for people using quota reporting on none enforced volumes for easier accumulation of space used by a specific user, quota-report-iter using a filter will not show such entries.
Meaning Volume1 has quota turned on but no limits and target equals "*" ... for that case you'll still need to fetch the complete report iter and filter manually
api1.set_vserver('') report = NaElement('quota-report-iter') report.child_add(NaElement('max-records', maxrecords)) query = NaElement('query') quota = NaElement('quota') query.child_add(quota) quota.child_add(NaElement('quota-target', 'lang')) report.child_add(query) res = api1.invoke_elem(report) print res.sprintf()
<results status="passed"> <num-records>0</num-records> </results>
where retrieving all items without filter will provide expected entries
api1.set_vserver('') QReports = QuotaReportCollector(from_api=api1.invoke(*['quota-report-iter', 'max-records', maxrecords]).child_get('attributes-list')) map(str, QReports.get_report(target='lang'))
['<quota disk_limit="-" disk_used="1" file_limit="-" files_used="136" type="user" uid="lang" volume="vol1"/>', '<quota disk_limit="-" disk_used="76" file_limit="-" files_used="2485" type="user" uid="lang" volume="vol2"/>', '<quota disk_limit="-" disk_used="10909" file_limit="-" files_used="106679" type="user" uid="lang" volume="vol3"/>', '<quota disk_limit="-" disk_used="21" file_limit="-" files_used="2" type="user" uid="lang" volume="vol4"/>', '<quota disk_limit="-" disk_used="279" file_limit="-" files_used="336" type="user" uid="lang" volume="vol5"/>', '<quota disk_limit="-" disk_used="10" file_limit="-" files_used="10" type="user" uid="lang" volume="vol6"/>']
