Hi Will,

It looks like what the code is doing is trying to create the session on
the slave before doing the RRD GET call. Sessions are handled by the
pool master, so that's why you get the HOST_IS_SLAVE error.

What you should do is create one session on the master, then use that
one session for querying the RRD data on each slave.

HTH,

Jon



On 24/11/14 13:05, Will Sun wrote:
> Hi Jon,
>    Thanks very much. In fact ,I have used the RRD interface to get the
> master's metrics,and it worked fine. The codes as follows:
>
> https://github.com/hswayne77/CitrixXenserver-monitoring
>
>    But I cannot get the slave's metrics , unless I use the commands
> "pool.designate_new_master" to make slave become master. If I do so, I
> still cannot get the other two slaves metrics.
>    In the /Citrix XenServer Management API ,/  I can only manage  the
> slave host by the master . In the session, the arguments "url" cannot
> be the slave's ip, or it will show the  failure: [HOST_IS_SLAVE].
>    I do not want to get just one host metrics, instead I want to get
> all 3 hosts metrics in the same pool and  to show them in one page at
> the same time. 
>
>
> Thanks and Regards
>
> Will
>
> 2014-11-24 19:40 GMT+08:00 Jon Ludlam <jonathan.lud...@citrix.com
> <mailto:jonathan.lud...@citrix.com>>:
>
>     Hi Will,
>
>     To get performance metrics, the preferred mechanism is to use the
>     RRD interface - it's much more lightweight than using the API
>     'query_data_source'. Have a look here for some docs and sample code:
>
>     
> http://xenserver.org/partners/developing-products-for-xenserver/18-sdk-development/96-xs-dev-rrds.html
>
>     Jon
>
>
>     On 24/11/14 02:46, Will Sun wrote:
>>     Hi all,
>>     I build a pool includes 3 hosts : vGate7, vGate8 and vGate9.
>>     vGate9 is the master, others are slaves.
>>     I build a page to show the host and vm performing
>>     metrics(e.g.cpu_utilization)  on it. It works fine for the mater
>>     (vGate9).But it cannot get the slave performing metrics.
>>
>>     As follows in picture 1 :
>>
>>
>>
>>     In python, I use the following codes to get the CPU Usage:
>>
>>                   import XenAPI
>>                   url = "https://host_ip";
>>                   username = "hostname"
>>                   password = "self_password"
>>
>>                   session = XenAPI.session(url)
>>                   session.xenapi.login_with_password(username,password)
>>
>>
>>                   cpu_usage =
>>     
>> session.xenapi.host.query_data_source("OpaqueRef:35ad218e-09e2-4117-e93d-0de371265448"
>>     , 'cpu_avg')
>>                   # OpaqueRef:35ad218e-09e2-4117-e93d-0de371265448
>>      is vGate7 (slave),
>>                   # and it will show XenAPI.Failure:*['HOST_OFFLINE']** *
>>
>>
>>     I attempt to make an API call to a slave (even someting trivial
>>     like pool.get_all()),I get the *['HOST_IS_SLAVE']
>>     *exception,along with the master's IP address.
>>
>>
>>     The main problem is to get 3 hosts real-time performing metrics
>>     and to show them on the same page.
>>     Is there any workaround to solve this problem? 
>>     The attachment is picture1, incase you cannot see it  in the message.
>>     Thank you in advance!
>>
>>
>>     Thanks and Regards,
>>     Will
>>
>>
>>     _______________________________________________
>>     Xen-api mailing list
>>     Xen-api@lists.xen.org <mailto:Xen-api@lists.xen.org>
>>     http://lists.xen.org/cgi-bin/mailman/listinfo/xen-api
>
>
>     _______________________________________________
>     Xen-api mailing list
>     Xen-api@lists.xen.org <mailto:Xen-api@lists.xen.org>
>     http://lists.xen.org/cgi-bin/mailman/listinfo/xen-api
>
>

_______________________________________________
Xen-api mailing list
Xen-api@lists.xen.org
http://lists.xen.org/cgi-bin/mailman/listinfo/xen-api

Reply via email to