diff --git a/tools/python/xen/xend/XendError.py b/tools/python/xen/xend/XendError.py index efe7fe5e32..f78a71f031 100644 --- a/tools/python/xen/xend/XendError.py +++ b/tools/python/xen/xend/XendError.py @@ -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): diff --git a/tools/python/xen/xend/server/XMLRPCServer.py b/tools/python/xen/xend/server/XMLRPCServer.py index 1e553a84e3..7d03cfb3dc 100644 --- a/tools/python/xen/xend/server/XMLRPCServer.py +++ b/tools/python/xen/xend/server/XMLRPCServer.py @@ -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) diff --git a/tools/python/xen/xm/main.py b/tools/python/xen/xm/main.py index 6bb09b29f6..a636dd5e84 100644 --- a/tools/python/xen/xm/main.py +++ b/tools/python/xen/xm/main.py @@ -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: