All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Remove vcpu_avail from the S-Expression that's passed on the wire
@ 2006-03-28 19:42 Anthony Liguori
  2006-03-28 23:45 ` Anthony Liguori
  0 siblings, 1 reply; 3+ messages in thread
From: Anthony Liguori @ 2006-03-28 19:42 UTC (permalink / raw)
  To: xen-devel; +Cc: Ewan Mellor, Puthiyaparambil, Aravindh

[-- Attachment #1: Type: text/plain, Size: 429 bytes --]

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

[-- Attachment #2: xend-xmlrpc-vcpu_avail.diff --]
[-- Type: text/plain, Size: 2061 bytes --]

# HG changeset patch
# User anthony@rhesis.austin.ibm.com
# 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@us.ibm.com>

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')

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-03-29 12:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-03-28 19:42 [PATCH] Remove vcpu_avail from the S-Expression that's passed on the wire Anthony Liguori
2006-03-28 23:45 ` Anthony Liguori
2006-03-29 12:55   ` Keir Fraser

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.