diff --git a/ccnode/ccnode.py b/ccnode/ccnode.py index b0b798e38fa3dfd1ff0c03ca876aac2cfecc024b..d1f8c5a28187c2a1b9475745975e5cf5a406ba2d 100644 --- a/ccnode/ccnode.py +++ b/ccnode/ccnode.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import logging -from threading import Timer, Lock +from threading import Timer, Lock, Event from time import sleep from sjrpc.client import SimpleRpcClient from sjrpc.utils import ConnectionProxy @@ -18,6 +18,7 @@ class CCNode(object): ''' self._scheduler_timer = None self._scheduler_mutex = Lock() + self._scheduler_stopped = Event() self._handler = handlers.NodeHandler(self, hypervisor, exec_cmd, force_xen) self._manager = SimpleRpcClient.from_addr(server, port, enable_ssl=True, @@ -27,7 +28,12 @@ class CCNode(object): def run(self): ''' ''' - self._manager.run() + try: + self._manager.run() + except: + pass # FIXME + finally: + self._scheduler_stopped.set() def authentify(self, login, password): ''' @@ -62,9 +68,10 @@ class CCNode(object): ''' ''' with self._scheduler_mutex: - self._handler.scheduler_run() - sleep(0.1) - self._scheduler_rearm() + if not self._scheduler_stopped.is_set(): + self._handler.scheduler_run() + sleep(0.1) + self._scheduler_rearm() def get_server(self): '''