[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] remote xend - howto connect??



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@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.