bitkeeper revision 1.1471 (428cf949ZdshF_D_GTMuih23dXPidw)

XendDomain.py:
  Add XendDomainDict for easy by name lookup.
  Don't call self.refresh() from XendDomain.list().
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
This commit is contained in:
cl349@firebug.cl.cam.ac.uk committed 2005-05-19 20:38:33 +00:00
1 parent a1a710f835
commit b77845590a
1 file changed
+16 -23
+16 -23
View File
@@ -35,8 +35,15 @@ class XendDomain:
"""Path to domain database."""
dbpath = "domain"
"""Table of domain info indexed by domain id."""
domains = {}
class XendDomainDict(dict):
def get_by_name(self, name):
try:
return filter(lambda d: d.name == name, self.values())[0]
except IndexError, err:
return None
"""Dict of domain info indexed by domain id."""
domains = XendDomainDict()
def __init__(self):
# Hack alert. Python does not support mutual imports, but XendDomainInfo
@@ -53,16 +60,13 @@ class XendDomain:
eserver.subscribe('xend.virq', self.onVirq)
self.initial_refresh()
def domain_lookup_by_name(self, name):
try:
return filter(lambda d: d.name == name,
self.domains.values())[0]
except IndexError, err:
return None
def domain_lookup_by_id(self, id):
return self.domains.get(id)
def list(self):
"""Get list of domain objects.
@return: domain objects
"""
return self.domains.values()
def onVirq(self, event, val):
"""Event handler for virq.
"""
@@ -153,8 +157,6 @@ class XendDomain:
if i in self.domain_db:
del self.domain_db[i]
self.db.delete(i)
# But also need to make sure are indexed under correct name.
# What about entries under info.name ?
if info.id in self.domains:
notify = False
self.domains[info.id] = info
@@ -285,14 +287,6 @@ class XendDomain:
self.refresh()
return self.domains.keys()
def list(self):
"""Get list of domain objects.
@return: domain objects
"""
self.refresh()
return self.domains.values()
def domain_create(self, config):
"""Create a domain from a configuration.
@@ -362,8 +356,7 @@ class XendDomain:
def domain_lookup(self, name):
name = str(name)
dominfo = (self.domain_lookup_by_name(name) or
self.domain_lookup_by_id(name))
dominfo = self.domains.get_by_name(name) or self.domains.get(name)
if dominfo:
return dominfo
try:
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.