[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [XEND] Fix bug with managed domains not having their state updated.
# HG changeset patch # User Alastair Tse <atse@xxxxxxxxxxxxx> # Node ID a14732833603312b144062ea55aa929626190fc2 # Parent 023aa2926e7971eeb2fe208f987d2f2a20e824f0 [XEND] Fix bug with managed domains not having their state updated. Also added some protection against corrupted sxp configuration files. Signed-off-by: Alastair Tse <atse@xxxxxxxxxxxxx> --- tools/python/xen/xend/XendDomain.py | 18 ++++++++++++------ tools/python/xen/xend/XendDomainInfo.py | 7 ++++++- 2 files changed, 18 insertions(+), 7 deletions(-) diff -r 023aa2926e79 -r a14732833603 tools/python/xen/xend/XendDomain.py --- a/tools/python/xen/xend/XendDomain.py Thu Nov 09 12:38:12 2006 +0000 +++ b/tools/python/xen/xend/XendDomain.py Thu Nov 09 13:16:55 2006 +0000 @@ -167,10 +167,11 @@ class XendDomain: # add all managed domains as dormant domains. for dom in managed: - dom_uuid = dom.get('uuid', uuid.createString()) - dom['uuid'] = dom_uuid + dom_uuid = dom.get('uuid') + if not dom_uuid: + continue + dom_name = dom.get('name', 'Domain-%s' % dom_uuid) - try: running_dom = self.domain_lookup_nr(dom_name) if not running_dom: @@ -304,6 +305,11 @@ class XendDomain: try: cfg_file = self._managed_config_path(dom_uuid) cfg = XendConfig(filename = cfg_file) + if cfg.get('uuid') != dom_uuid: + # something is wrong with the SXP + log.error("UUID mismatch in stored configuration: %s" % + cfg_file) + continue doms.append(cfg) except Exception: log.exception('Unable to open or parse config.sxp: %s' % \ @@ -387,7 +393,7 @@ class XendDomain: def _add_domain(self, info): - """Add the given domain entry to this instance's internal cache. + """Add a domain to the list of running domains @requires: Expects to be protected by the domains_lock. @param info: XendDomainInfo of a domain to be added. @@ -397,7 +403,7 @@ class XendDomain: self.domains[info.getDomid()] = info def _remove_domain(self, info, domid = None): - """Remove the given domain from this instance's internal cache. + """Remove the domain from the list of running domains @requires: Expects to be protected by the domains_lock. @param info: XendDomainInfo of a domain to be removed. @@ -849,7 +855,7 @@ class XendDomain: raise XendError("Domain is already running") dominfo.start(is_managed = True) - + self._add_domain(dominfo) finally: self.domains_lock.release() diff -r 023aa2926e79 -r a14732833603 tools/python/xen/xend/XendDomainInfo.py --- a/tools/python/xen/xend/XendDomainInfo.py Thu Nov 09 12:38:12 2006 +0000 +++ b/tools/python/xen/xend/XendDomainInfo.py Thu Nov 09 13:16:55 2006 +0000 @@ -1667,7 +1667,12 @@ class XendDomainInfo: # ---------------------------------------------------------------- def get_uuid(self): - return self.info['uuid'] + dom_uuid = self.info.get('uuid') + if not dom_uuid: # if it doesn't exist, make one up + dom_uuid = uuid.createString() + self.info['uuid'] = dom_uuid + return dom_uuid + def get_memory_static_max(self): return self.info['maxmem'] def get_memory_static_min(self): _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |