[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@xensource.com>
This commit is contained in:
Alastair Tse committed 2006-11-09 13:16:55 +00:00
1 parent d3b8d73b44
commit 1d5686b8ac
2 files changed
+18 -7

No files matched your search

+12 -6
View File
@@ -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_name = dom.get('name', 'Domain-%s' % 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()
+6 -1
View File
@@ -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):
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.