mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
bitkeeper revision 1.1456 (428b84afhYDPsxh36MUzWQkhznuotQ)
XendDomain.py, scheduler.py: Simplify scheduler. Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
This commit is contained in:
1 parent
945440cc09
commit
1baea2ab53
2 files changed
+22
-30
No files matched your search
@@ -19,7 +19,7 @@ import EventServer; eserver = EventServer.instance()
|
||||
from XendError import XendError
|
||||
from XendLogging import log
|
||||
|
||||
from scheduler import Scheduler
|
||||
import scheduler
|
||||
|
||||
from xen.xend.server import channel
|
||||
|
||||
@@ -83,9 +83,6 @@ class XendDomain:
|
||||
"""Table of pending domain shutdowns, indexed by domain id."""
|
||||
shutdowns_by_id = {}
|
||||
|
||||
"""Table of delayed calls."""
|
||||
scheduler = Scheduler()
|
||||
|
||||
def __init__(self):
|
||||
# Hack alert. Python does not support mutual imports, but XendDomainInfo
|
||||
# needs access to the XendDomain instance to look up domains. Attempting
|
||||
@@ -290,7 +287,7 @@ class XendDomain:
|
||||
else:
|
||||
self._delete_domain(d.id)
|
||||
if cleanup and do_domain_restarts:
|
||||
self.scheduler.now(self.domain_restarts)
|
||||
scheduler.now(self.domain_restarts)
|
||||
|
||||
def update_domain(self, id):
|
||||
"""Update the saved info for a domain.
|
||||
@@ -506,7 +503,7 @@ class XendDomain:
|
||||
timeout = min(timeout, shutdown.getTimeout())
|
||||
if self.shutdowns_by_id:
|
||||
# Pending shutdowns remain - reschedule.
|
||||
self.scheduler.later(timeout, self.domain_shutdowns)
|
||||
scheduler.later(timeout, self.domain_shutdowns)
|
||||
|
||||
def domain_restart_schedule(self, id, reason, force=False):
|
||||
"""Schedule a restart for a domain if it needs one.
|
||||
|
||||
@@ -1,29 +1,24 @@
|
||||
import threading
|
||||
|
||||
class Scheduler:
|
||||
def later(delay, fn, args=(), kwargs={}):
|
||||
"""Schedule a function to be called later.
|
||||
|
||||
def later(self, _delay, _fn, args=(), kwargs={}):
|
||||
"""Schedule a function to be called later.
|
||||
@param _delay: delay in seconds
|
||||
@param _fn: function
|
||||
@param args: arguments (list)
|
||||
@param kwargs keyword arguments (map)
|
||||
"""
|
||||
timer = threading.Timer(delay, fn, args=args, kwargs=kwargs)
|
||||
timer.start()
|
||||
return timer
|
||||
|
||||
@param _delay: delay in seconds
|
||||
@param _fn: function
|
||||
@param args: arguments (list)
|
||||
@param kwargs keyword arguments (map)
|
||||
"""
|
||||
runargs = [ _fn, args, kwargs ]
|
||||
timer = threading.Timer(_delay, self._run, args=runargs)
|
||||
timer.start()
|
||||
def now(fn, args=(), kwargs={}):
|
||||
"""Schedule a function to be called now.
|
||||
|
||||
def now(self, _fn, args=(), kwargs={}):
|
||||
"""Schedule a function to be called now.
|
||||
|
||||
@param _fn: function
|
||||
@param args: arguments (list)
|
||||
@param kwargs keyword arguments (map)
|
||||
"""
|
||||
runargs = [ _fn, args, kwargs ]
|
||||
thread = threading.Thread(target=self._run, args=runargs)
|
||||
thread.start()
|
||||
|
||||
def _run(self, fn, args, kwargs):
|
||||
fn(*args, **kwargs)
|
||||
@param _fn: function
|
||||
@param args: arguments (list)
|
||||
@param kwargs keyword arguments (map)
|
||||
"""
|
||||
thread = threading.Thread(target=fn, args=args, kwargs=kwargs)
|
||||
thread.start()
|
||||
return thread
|
||||