Hi, currently, I am planning to implement a command line based tool to query more than one xends for their running domains at the same time. Unfortunately, I cannot connect to any other xend as the local one. This is what I was trying to do: ---------------------------------------------------------------------------------------------------- #!/usr/bin/env python # -*- mode: python; -*- import sys import os # add fallback path for non-native python path installs if needed sys.path.append(''/usr/lib/python'') sys.path.append(''/usr/lib64/python'') from xen.xend.XendClient import server from xen.xend import sxp def parse_doms_info(info): def get_info(n, t, d): return t(sxp.child_value(info, n, d)) return { ''dom'' : get_info(''domid'', int, -1), ''name'' : get_info(''name'', str, ''??''), ''mem'' : get_info(''memory'', int, 0), ''vcpus'' : get_info(''online_vcpus'', int, 0), ''state'' : get_info(''state'', str, ''??''), ''cpu_time'' : get_info(''cpu_time'', float, 0), ''ssidref'' : get_info(''ssidref'', int, 0), } def xm_brief_list(doms): print ''Name ID Mem(MiB) VCPUs State Time(s)'' for dom in doms: d = parse_doms_info(dom) if (d[''ssidref''] != 0): d[''ssidstr''] = (" s:%04x/p:%04x" % ((d[''ssidref''] >> 16) & 0xffff, d[''ssidref''] & 0xffff)) else: d[''ssidstr''] = "" print ("%(name)-32s %(dom)3d %(mem)8d %(vcpus)5d %(state)5s %(cpu_time)7.1f%(ssidstr)s" % d) server.bind(''192.168.111.18:8000'',) xm_brief_list(server.xend_list_domains()) ---------------------------------------------------------------------------------------------------- I am running this script form my xenhost1 (192.168.111.17) and want to query xenhost2 (192.168.111.18). But I only get the local informations. Even if I manually hack class Xend: """Client interface to Xend. """ """Default location of the xend server.""" SRV_DEFAULT = "192.168.111.18:8000" into xen/xend/XendClient.py it''s still the same. telnetting to 192.168.111.18 to port 8000 and do a manual GET /xend/domain/?detail=1 works nicely. Maybe someone could give me a hint how to query a remote xen host with XendClient.py? Regards, Michael -- ---------------------------------------------------------------------------------------- Michael Mey Thinking Objects Software GmbH | mailto: michael.mey@to.com Lilienthalstrasse 2/1 | phone: +49 711 88770-147 70825 Stuttgart-Korntal, Germany | fax: +49 711 88770-449 ---------------------------------------------------------------------------------------- _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Michael Mey wrote:> Hi, > > currently, I am planning to implement a command line based tool to query more > than one xends for their running domains at the same time. > > Unfortunately, I cannot connect to any other xend as the local one. This is > what I was trying to do: > > ---------------------------------------------------------------------------------------------------- > #!/usr/bin/env python > # -*- mode: python; -*- > import sys > import os > > # add fallback path for non-native python path installs if needed > sys.path.append(''/usr/lib/python'') > sys.path.append(''/usr/lib64/python'') > > from xen.xend.XendClient import server >from xen.xend.XendClient import getHttpServer server = getHttpServer(...) Of course, I''m not sure works all that well either. I''d recommend using libvir (http://www.libvir.org). libvir speaks the S-Expression/HTTP protocol pretty well. It also has python bindings. Regards, Anthony Liguori> from xen.xend import sxp > > def parse_doms_info(info): > def get_info(n, t, d): > return t(sxp.child_value(info, n, d)) > return { > ''dom'' : get_info(''domid'', int, -1), > ''name'' : get_info(''name'', str, ''??''), > ''mem'' : get_info(''memory'', int, 0), > ''vcpus'' : get_info(''online_vcpus'', int, 0), > ''state'' : get_info(''state'', str, ''??''), > ''cpu_time'' : get_info(''cpu_time'', float, 0), > ''ssidref'' : get_info(''ssidref'', int, 0), > } > > def xm_brief_list(doms): > print ''Name ID Mem(MiB) VCPUs State Time(s)'' > for dom in doms: > d = parse_doms_info(dom) > if (d[''ssidref''] != 0): > d[''ssidstr''] = (" s:%04x/p:%04x" % > ((d[''ssidref''] >> 16) & 0xffff, > d[''ssidref''] & 0xffff)) > else: > d[''ssidstr''] = "" > print ("%(name)-32s %(dom)3d %(mem)8d %(vcpus)5d %(state)5s > %(cpu_time)7.1f%(ssidstr)s" % d) > > > server.bind(''192.168.111.18:8000'',) > xm_brief_list(server.xend_list_domains()) > ---------------------------------------------------------------------------------------------------- > > I am running this script form my xenhost1 (192.168.111.17) and want to query > xenhost2 (192.168.111.18). But I only get the local informations. > Even if I manually hack > > class Xend: > """Client interface to Xend. > """ > > """Default location of the xend server.""" > SRV_DEFAULT = "192.168.111.18:8000" > > into xen/xend/XendClient.py it''s still the same. > > telnetting to 192.168.111.18 to port 8000 and do a manual > GET /xend/domain/?detail=1 > works nicely. > > Maybe someone could give me a hint how to query a remote xen host with > XendClient.py? > > > Regards, Michael > > > ------------------------------------------------------------------------ > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel >_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
On Tuesday 07 February 2006 04:02, Anthony Liguori wrote:> Michael Mey wrote: > > Hi, > > > > currently, I am planning to implement a command line based tool to query > > more than one xends for their running domains at the same time. > > > > Unfortunately, I cannot connect to any other xend as the local one. This > > is what I was trying to do: > > > > ------------------------------------------------------------------------- > >--------------------------- #!/usr/bin/env python > > # -*- mode: python; -*- > > import sys > > import os > > > > # add fallback path for non-native python path installs if needed > > sys.path.append(''/usr/lib/python'') > > sys.path.append(''/usr/lib64/python'') > > > > from xen.xend.XendClient import server > > from xen.xend.XendClient import getHttpServer > > server = getHttpServer(...) > > Of course, I''m not sure works all that well either. > > I''d recommend using libvir (http://www.libvir.org). libvir speaks the > S-Expression/HTTP protocol pretty well. It also has python bindings.Thank you, I''ll give it a try and otherwise have a look at libvir. :) Regards, Michael> Regards, > > Anthony Liguori > > > from xen.xend import sxp > > > > def parse_doms_info(info): > > def get_info(n, t, d): > > return t(sxp.child_value(info, n, d)) > > return { > > ''dom'' : get_info(''domid'', int, -1), > > ''name'' : get_info(''name'', str, ''??''), > > ''mem'' : get_info(''memory'', int, 0), > > ''vcpus'' : get_info(''online_vcpus'', int, 0), > > ''state'' : get_info(''state'', str, ''??''), > > ''cpu_time'' : get_info(''cpu_time'', float, 0), > > ''ssidref'' : get_info(''ssidref'', int, 0), > > } > > > > def xm_brief_list(doms): > > print ''Name ID Mem(MiB) VCPUs State > > Time(s)'' for dom in doms: > > d = parse_doms_info(dom) > > if (d[''ssidref''] != 0): > > d[''ssidstr''] = (" s:%04x/p:%04x" % > > ((d[''ssidref''] >> 16) & 0xffff, > > d[''ssidref''] & 0xffff)) > > else: > > d[''ssidstr''] = "" > > print ("%(name)-32s %(dom)3d %(mem)8d %(vcpus)5d %(state)5s > > %(cpu_time)7.1f%(ssidstr)s" % d) > > > > > > server.bind(''192.168.111.18:8000'',) > > xm_brief_list(server.xend_list_domains()) > > ------------------------------------------------------------------------- > >--------------------------- > > > > I am running this script form my xenhost1 (192.168.111.17) and want to > > query xenhost2 (192.168.111.18). But I only get the local informations. > > Even if I manually hack > > > > class Xend: > > """Client interface to Xend. > > """ > > > > """Default location of the xend server.""" > > SRV_DEFAULT = "192.168.111.18:8000" > > > > into xen/xend/XendClient.py it''s still the same. > > > > telnetting to 192.168.111.18 to port 8000 and do a manual > > GET /xend/domain/?detail=1 > > works nicely. > > > > Maybe someone could give me a hint how to query a remote xen host with > > XendClient.py? > > > > > > Regards, Michael > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@lists.xensource.com > > http://lists.xensource.com/xen-devel > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel-- ---------------------------------------------------------------------------------------- Michael Mey Thinking Objects Software GmbH | mailto: michael.mey@to.com Lilienthalstrasse 2/1 | phone: +49 711 88770-147 70825 Stuttgart-Korntal, Germany | fax: +49 711 88770-449 ---------------------------------------------------------------------------------------- _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel