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
>