[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Check the return value of domain_lookup_by_name_or_id_nr for None (i.e. no
# HG changeset patch # User emellor@xxxxxxxxxxxxxxxxxxxxxx # Node ID 7a3f07a334874b83e66df5994e797b1ea59f9484 # Parent d5f8280c1fa9fb207ce9ea815285a3957eae839f Check the return value of domain_lookup_by_name_or_id_nr for None (i.e. no such domain) inside each of the public-facing functions. This fixes the Internal errors seen when specifying an invalid domain. domain_pincpu takes cpumap, which is a list, not a string, so there's no need to try and split it up. Fixes xm vcpu-pin. Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx> diff -r d5f8280c1fa9 -r 7a3f07a33487 tools/python/xen/xend/XendDomain.py --- a/tools/python/xen/xend/XendDomain.py Thu Mar 30 10:51:44 2006 +++ b/tools/python/xen/xend/XendDomain.py Thu Mar 30 10:54:07 2006 @@ -34,7 +34,7 @@ from xen.xend import XendRoot from xen.xend import XendCheckpoint -from xen.xend.XendError import XendError +from xen.xend.XendError import XendError, XendInvalidDomain from xen.xend.XendLogging import log from xen.xend.xenstore.xstransact import xstransact from xen.xend.xenstore.xswatch import xswatch @@ -357,6 +357,8 @@ """Unpause domain execution.""" try: dominfo = self.domain_lookup_by_name_or_id_nr(domid) + if not dominfo: + raise XendInvalidDomain(str(domid)) log.info("Domain %s (%d) unpaused.", dominfo.getName(), dominfo.getDomid()) return dominfo.unpause() @@ -368,6 +370,8 @@ """Pause domain execution.""" try: dominfo = self.domain_lookup_by_name_or_id_nr(domid) + if not dominfo: + raise XendInvalidDomain(str(domid)) log.info("Domain %s (%d) paused.", dominfo.getName(), dominfo.getDomid()) return dominfo.pause() @@ -395,6 +399,8 @@ """Start domain migration.""" dominfo = self.domain_lookup_by_name_or_id_nr(domid) + if not dominfo: + raise XendInvalidDomain(str(domid)) if dominfo.getDomid() == PRIV_DOMAIN: raise XendError("Cannot migrate privileged domain %i" % domid) @@ -420,6 +426,8 @@ try: dominfo = self.domain_lookup_by_name_or_id_nr(domid) + if not dominfo: + raise XendInvalidDomain(str(domid)) if dominfo.getDomid() == PRIV_DOMAIN: raise XendError("Cannot save privileged domain %i" % domid) @@ -440,9 +448,9 @@ @param cpumap: string repr of list of usable cpus """ dominfo = self.domain_lookup_by_name_or_id_nr(domid) - # convert cpumap string into a list of ints - cpumap = map(lambda x: int(x), - cpumap.replace("[", "").replace("]", "").split(",")) + if not dominfo: + raise XendInvalidDomain(str(domid)) + try: return xc.vcpu_setaffinity(dominfo.getDomid(), vcpu, cpumap) except Exception, ex: @@ -453,6 +461,8 @@ """Set BVT (Borrowed Virtual Time) scheduler parameters for a domain. """ dominfo = self.domain_lookup_by_name_or_id_nr(domid) + if not dominfo: + raise XendInvalidDomain(str(domid)) try: return xc.bvtsched_domain_set(dom=dominfo.getDomid(), mcuadv=mcuadv, @@ -466,6 +476,8 @@ """Get BVT (Borrowed Virtual Time) scheduler parameters for a domain. """ dominfo = self.domain_lookup_by_name_or_id_nr(domid) + if not dominfo: + raise XendInvalidDomain(str(domid)) try: return xc.bvtsched_domain_get(dominfo.getDomid()) except Exception, ex: @@ -477,6 +489,8 @@ """Set Simple EDF scheduler parameters for a domain. """ dominfo = self.domain_lookup_by_name_or_id_nr(domid) + if not dominfo: + raise XendInvalidDomain(str(domid)) try: return xc.sedf_domain_set(dominfo.getDomid(), period, slice_, latency, extratime, weight) @@ -487,8 +501,9 @@ """Get Simple EDF scheduler parameters for a domain. """ dominfo = self.domain_lookup_by_name_or_id_nr(domid) - try: - + if not dominfo: + raise XendInvalidDomain(str(domid)) + try: sedf_info = xc.sedf_domain_get(dominfo.getDomid()) # return sxpr return ['sedf', @@ -509,6 +524,8 @@ @return: 0 on success, -1 on error """ dominfo = self.domain_lookup_by_name_or_id_nr(domid) + if not dominfo: + raise XendInvalidDomain(str(domid)) maxmem = int(mem) * 1024 try: return xc.domain_setmaxmem(dominfo.getDomid(), maxmem) @@ -523,6 +540,8 @@ @return: 0 on success, -1 on error """ dominfo = self.domain_lookup_by_name_or_id_nr(domid) + if not dominfo: + raise XendInvalidDomain(str(domid)) nr_ports = last - first + 1 try: return xc.domain_ioport_permission(dominfo.getDomid(), @@ -540,6 +559,8 @@ @return: 0 on success, -1 on error """ dominfo = self.domain_lookup_by_name_or_id_nr(domid) + if not dominfo: + raise XendInvalidDomain(str(domid)) nr_ports = last - first + 1 try: return xc.domain_ioport_permission(dominfo.getDomid(), _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |