[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] Remove vcpu_avail from the S-Expression that's passed on the wire
Third time's a charm right :-)vcpu_avail is the configuration parameter that's tripping us up on large SMP systems. Instead of modifying the XML-RPC layer, a much less invasive solution is just to remove vcpu_avail from the S-Expression that's passed over the wire. The vcpu_avail parameter is not used by xm so this seems like a pretty reasonable thing to do. It certainly feels less hacky. Regards, Anthony Liguori # HG changeset patch # User anthony@xxxxxxxxxxxxxxxxxxxxx # Node ID 96c1e3c2d336a0f9cdb9e074c737e7026cede171 # Parent 4109c4e7804abeabe3b222673f2ba4dd1375be53 Remove vcpu_avail from the public S-Expression that's passed over the wire. This trips up the XML-RPC layer on large SMP systems and isn't actually used by xm. Signed-off-by: Anthony Liguori <aliguori@xxxxxxxxxx> diff -r 4109c4e7804a -r 96c1e3c2d336 tools/python/xen/xend/server/XMLRPCServer.py --- a/tools/python/xen/xend/server/XMLRPCServer.py Tue Mar 28 13:19:22 2006 +++ b/tools/python/xen/xend/server/XMLRPCServer.py Tue Mar 28 19:29:40 2006 @@ -24,6 +24,7 @@ from xen.xend.XendClient import XML_RPC_SOCKET, ERROR_INVALID_DOMAIN from xen.xend.XendError import * +from types import ListType def lookup(domid): info = XendDomain.instance().domain_lookup_by_name_or_id(domid) @@ -35,24 +36,36 @@ info = lookup(domid) return getattr(info, fn)(*args) +# vcpu_avail is a long and is not needed by the clients. It's far easier +# to just remove it then to try and marshal the long. +def fixup_sxpr(sexpr): + ret = [] + for k in sexpr: + if type(k) is ListType: + if len(k) != 2 or k[0] != 'vcpu_avail': + ret.append(fixup_sxpr(k)) + else: + ret.append(k) + return ret + def domain(domid): info = lookup(domid) - return info.sxpr() + return fixup_sxpr(info.sxpr()) def domains(detail=1): if detail < 1: return XendDomain.instance().list_names() else: domains = XendDomain.instance().list_sorted() - return map(lambda dom: dom.sxpr(), domains) + return map(lambda dom: fixup_sxpr(dom.sxpr()), domains) def domain_create(config): info = XendDomain.instance().domain_create(config) - return info.sxpr() + return fixup_sxpr(info.sxpr()) def domain_restore(src): info = XendDomain.instance().domain_restore(src) - return info.sxpr() + return fixup_sxpr(info.sxpr()) def get_log(): f = open(XendLogging.getLogFilename(), 'r') _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |