[Users] oVirt-sdk to fetch individual cpu stats

Hi, I was trying to get the cpu statistics of a host using the oVirt python sdk. But beyond a point I am unable to deference to the actual cpu stats field and the data. h_list = api.hosts.list() for h in h_list: y = h.statistics.list() for i in y: print i.get_values() O/P: <ovirtsdk.xml.params.Values object at 0x22cbd90> <ovirtsdk.xml.params.Values object at 0x22cbb90> <ovirtsdk.xml.params.Values object at 0x22cba90> <ovirtsdk.xml.params.Values object at 0x22cba10> <ovirtsdk.xml.params.Values object at 0x22cbf10> Can some one please let me know how I can get individual fields like cpu.current.system or cpu.current.idle stats from here. Thanks! Deepthi

Hi Deepthi, On 09/06/2013 01:12 PM, Deepthi Dharwar wrote:
Hi,
I was trying to get the cpu statistics of a host using the oVirt python sdk. But beyond a point I am unable to deference to the actual cpu stats field and the data.
h_list = api.hosts.list() for h in h_list: y = h.statistics.list() for i in y: print i.get_values()
O/P:
<ovirtsdk.xml.params.Values object at 0x22cbd90> <ovirtsdk.xml.params.Values object at 0x22cbb90> <ovirtsdk.xml.params.Values object at 0x22cba90> <ovirtsdk.xml.params.Values object at 0x22cba10> <ovirtsdk.xml.params.Values object at 0x22cbf10>
Can some one please let me know how I can get individual fields like cpu.current.system or cpu.current.idle stats from here.
you can use sdk client side filtering on collections using map based constraints [1], just note that you cannot use same constrain (name) twice [2] as following entry will always override the former one, to work this out, just use your private inline filtering [3] (it will have same complexity as using sdk filtering) [1] for h in h_list: statistics = h.statistics.list(**{ 'name':'cpu.current.system' } ) for statistic in statistics: print "%s=%0.4f %s" % ( statistic.get_name(), statistic.get_values().get_value()[0].datum, statistics[0].get_unit() ) [2] statistics = h.statistics.list(**{ 'name':'cpu.current.system', 'name':'cpu.current.idle' } ) [3] h_list = api.hosts.list() stats_to_show = ['cpu.current.system', 'cpu.current.idle'] for h in h_list: statistics = h.statistics.list() for statistic in statistics: if statistic.get_name() in stats_to_show: print "%s=%0.4f %s" % ( statistic.get_name(), statistic.get_values().get_value()[0].datum , statistics[0].get_unit() ) hope it helps.
Thanks! Deepthi
-- Michael Pasternak RedHat, ENG-Virtualization R&D

Thanks a lot Micheal. Works like a charm :) How does one know that you need to access first field in statistic.get_values().get_value()[0].datum. Are these documented any place ? Regards, Deepthi On 09/08/2013 03:55 PM, Michael Pasternak wrote:
Hi Deepthi,
On 09/06/2013 01:12 PM, Deepthi Dharwar wrote:
Hi,
I was trying to get the cpu statistics of a host using the oVirt python sdk. But beyond a point I am unable to deference to the actual cpu stats field and the data.
h_list = api.hosts.list() for h in h_list: y = h.statistics.list() for i in y: print i.get_values()
O/P:
<ovirtsdk.xml.params.Values object at 0x22cbd90> <ovirtsdk.xml.params.Values object at 0x22cbb90> <ovirtsdk.xml.params.Values object at 0x22cba90> <ovirtsdk.xml.params.Values object at 0x22cba10> <ovirtsdk.xml.params.Values object at 0x22cbf10>
Can some one please let me know how I can get individual fields like cpu.current.system or cpu.current.idle stats from here.
you can use sdk client side filtering on collections using map based constraints [1], just note that you cannot use same constrain (name) twice [2] as following entry will always override the former one,
to work this out, just use your private inline filtering [3] (it will have same complexity as using sdk filtering)
[1]
for h in h_list: statistics = h.statistics.list(**{ 'name':'cpu.current.system' } ) for statistic in statistics: print "%s=%0.4f %s" % ( statistic.get_name(), statistic.get_values().get_value()[0].datum, statistics[0].get_unit() )
[2]
statistics = h.statistics.list(**{ 'name':'cpu.current.system', 'name':'cpu.current.idle' } )
[3]
h_list = api.hosts.list() stats_to_show = ['cpu.current.system', 'cpu.current.idle'] for h in h_list: statistics = h.statistics.list() for statistic in statistics: if statistic.get_name() in stats_to_show: print "%s=%0.4f %s" % ( statistic.get_name(), statistic.get_values().get_value()[0].datum , statistics[0].get_unit() )
hope it helps.
Thanks! Deepthi

On 09/10/2013 02:04 PM, Deepthi Dharwar wrote:
Thanks a lot Micheal. Works like a charm :)
How does one know that you need to access first field in statistic.get_values().get_value()[0].datum. Are these documented any place ?
you can see this in api [1] there is a collection of values represented by <value> place-hoder, you can find discussion on statistics api modelling at the old rhevm-api [2] mailing list. <values type="..."> <value> <datum>...</datum> </value> </values> [1] GET http://server:[port]/api/hosts/xxx/statistics [2] https://lists.fedorahosted.org/pipermail/rhevm-api/
Regards, Deepthi
On 09/08/2013 03:55 PM, Michael Pasternak wrote:
Hi Deepthi,
On 09/06/2013 01:12 PM, Deepthi Dharwar wrote:
Hi,
I was trying to get the cpu statistics of a host using the oVirt python sdk. But beyond a point I am unable to deference to the actual cpu stats field and the data.
h_list = api.hosts.list() for h in h_list: y = h.statistics.list() for i in y: print i.get_values()
O/P:
<ovirtsdk.xml.params.Values object at 0x22cbd90> <ovirtsdk.xml.params.Values object at 0x22cbb90> <ovirtsdk.xml.params.Values object at 0x22cba90> <ovirtsdk.xml.params.Values object at 0x22cba10> <ovirtsdk.xml.params.Values object at 0x22cbf10>
Can some one please let me know how I can get individual fields like cpu.current.system or cpu.current.idle stats from here.
you can use sdk client side filtering on collections using map based constraints [1], just note that you cannot use same constrain (name) twice [2] as following entry will always override the former one,
to work this out, just use your private inline filtering [3] (it will have same complexity as using sdk filtering)
[1]
for h in h_list: statistics = h.statistics.list(**{ 'name':'cpu.current.system' } ) for statistic in statistics: print "%s=%0.4f %s" % ( statistic.get_name(), statistic.get_values().get_value()[0].datum, statistics[0].get_unit() )
[2]
statistics = h.statistics.list(**{ 'name':'cpu.current.system', 'name':'cpu.current.idle' } )
[3]
h_list = api.hosts.list() stats_to_show = ['cpu.current.system', 'cpu.current.idle'] for h in h_list: statistics = h.statistics.list() for statistic in statistics: if statistic.get_name() in stats_to_show: print "%s=%0.4f %s" % ( statistic.get_name(), statistic.get_values().get_value()[0].datum , statistics[0].get_unit() )
hope it helps.
Thanks! Deepthi
-- Michael Pasternak RedHat, ENG-Virtualization R&D
participants (2)
-
Deepthi Dharwar
-
Michael Pasternak