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