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