1) Introduce new exception type XendInvalidDomain that maps to the high level

XEND_INVALID_DOMAIN faultType.
2) Fix exception logic in XMLRPCServer
3) Fix TCP server
4) Remove catching of ProtocolError in main.py.  ProtocolErrors only occur
   when there is an exception in the exception handling code which shouldn't
   ever happen.  I've reproduced the error cases described by Ewan with
   xend_domain_setTargetMemory and once I fixed the exception logic, I get a
   normal faultType of 1 as would be expected.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
anthony@rhesis.austin.ibm.com committed 2006-03-24 14:31:12 +01:00
1 parent 3e0dfe69c9
commit 76e09e8238
3 files changed
+12 -28

No files matched your search

+4
View File
@@ -19,6 +19,10 @@ from xmlrpclib import Fault
import XendClient
class XendInvalidDomain(Fault):
def __init__(self, value):
Fault.__init__(self, XendClient.ERROR_INVALID_DOMAIN, value)
class XendError(Fault):
def __init__(self, value):
+8 -22
View File
@@ -23,35 +23,21 @@ from xen.xend import XendDomain, XendDomainInfo, XendNode, \
from xen.util.xmlrpclib2 import UnixXMLRPCServer, TCPXMLRPCServer
from xen.xend.XendClient import XML_RPC_SOCKET, ERROR_INVALID_DOMAIN
from xen.xend.XendError import *
def lookup(domid):
try:
return XendDomain.instance().domain_lookup_by_name_or_id(domid)
except exn:
log.exception(exn)
raise exn
info = XendDomain.instance().domain_lookup_by_name_or_id(domid)
if not info:
raise XendInvalidDomain(str(domid))
return info
def dispatch(domid, fn, args):
info = lookup(domid)
if info:
try:
return getattr(info, fn)(*args)
except exn:
log.exception(exn)
raise exn
else:
raise xmlrpclib.Fault(ERROR_INVALID_DOMAIN, domid)
return getattr(info, fn)(*args)
def domain(domid):
info = lookup(domid)
if info:
try:
return info.sxpr()
except exn:
log.exception(exn)
raise exn
else:
raise xmlrpclib.Fault(ERROR_INVALID_DOMAIN, domid)
return info.sxpr()
def domains(detail=1):
if detail < 1:
@@ -90,7 +76,7 @@ class XMLRPCServer:
if self.use_tcp:
# bind to something fixed for now as we may eliminate
# tcp support completely.
self.server = TCPXMLRPCServer(("localhost", 8005, False))
self.server = TCPXMLRPCServer(("localhost", 8005), logRequests=False)
else:
self.server = UnixXMLRPCServer(XML_RPC_SOCKET, False)
-6
View File
@@ -1102,12 +1102,6 @@ def main(argv=sys.argv):
else:
err("Error connecting to xend: %s." % ex[1])
sys.exit(1)
except xmlrpclib.ProtocolError, ex:
if os.geteuid() != 0:
err("Most commands need root access. Please try again as root.")
else:
err("Error connecting to xend: %s." % ex.errmsg)
sys.exit(1)
except SystemExit:
sys.exit(1)
except xmlrpclib.Fault, ex:
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.