Move the actual call routed by do_legacy_api_with_uuid out of the scope of

the domains_lock.  The call itself is already locking as necessary, and it
is important for domain_start to be able to release the lock across the scope
of waitForDevices.

Signed-off-by: Ewan Mellor <ewan@xensource.com>
This commit is contained in:
Ewan Mellor committed 2006-12-06 10:12:39 +00:00
1 parent 6e66f078d4
commit 1d68773ad2
1 file changed
+10 -5
+10 -5
View File
@@ -641,17 +641,22 @@ class XendDomain:
return (self.get_vm_with_dev_uuid(klass, dev_uuid) != None)
def do_legacy_api_with_uuid(self, fn, vm_uuid, *args, **kwargs):
dom = self.uuid_to_dom(vm_uuid)
fn(dom, *args, **kwargs)
def uuid_to_dom(self, vm_uuid):
self.domains_lock.acquire()
try:
for domid, dom in self.domains.items():
if dom.get_uuid == vm_uuid:
return fn(domid, *args, **kwargs)
if dom.get_uuid() == vm_uuid:
return domid
if vm_uuid in self.managed_domains:
domid = self.managed_domains[vm_uuid].getDomid()
if domid == None:
domid = self.managed_domains[vm_uuid].getName()
return fn(domid, *args, **kwargs)
if domid is None:
return self.managed_domains[vm_uuid].getName()
else:
return domid
raise XendInvalidDomain("Domain does not exist")
finally:
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.