Close thread on both ends!

This commit is contained in:
Anders Ingemann 2014-11-24 17:26:13 +01:00
parent e271f3e49a
commit 16837b38c2
5 changed files with 12 additions and 45 deletions

View file

@ -34,12 +34,10 @@ def main():
server = manager.rpc_server server = manager.rpc_server
# Everything has been set up, begin the bootstrapping process # Everything has been set up, begin the bootstrapping process
print('run')
server.run(None, server.run(None,
debug=opts['--debug'], debug=opts['--debug'],
pause_on_error=False, pause_on_error=False,
dry_run=opts['--dry-run']) dry_run=opts['--dry-run'])
print('hasrun')
finally: finally:
manager.stop() manager.stop()
@ -62,39 +60,3 @@ Options:
-h, --help show this help -h, --help show this help
""" """
return docopt(usage) return docopt(usage)
def setup_interrupt_server(manager):
def on_error(e):
raw_input('Press Enter to commence rollback')
return True
daemon = Pyro4.Daemon()
daemon.register(on_error)
def serve():
daemon.requestLoop(loopCondition=lambda: manager.current == 'rpc_started')
thread = Thread(target=serve)
thread.start()
return (thread, on_error)
def setup_log_server(manager):
from log import LogServer
log_server = LogServer()
daemon = Pyro4.Daemon()
daemon.register(log_server)
def serve():
def check():
import logging
log = logging.getLogger(__name__)
log.info(stop)
return not stop
daemon.requestLoop(loopCondition=check)
thread = Thread(target=serve)
thread.start()
return (thread, log_server)

View file

@ -26,6 +26,4 @@ class CallbackServer(object):
def stop(self): def stop(self):
self.stop_serving = True self.stop_serving = True
if hasattr(self, 'thread'): if hasattr(self, 'thread'):
print('joining')
self.thread.join() self.thread.join()
print('joined')

View file

@ -1,6 +1,7 @@
import logging import logging
import pickle import pickle
class LogForwarder(logging.Handler): class LogForwarder(logging.Handler):
def __init__(self, level=logging.NOTSET): def __init__(self, level=logging.NOTSET):

View file

@ -19,6 +19,9 @@ def setup_logging():
def serve(opts, log_forwarder): def serve(opts, log_forwarder):
class Server(object): class Server(object):
def __init__(self):
self.stop_serving = False
def run(self, *args, **kwargs): def run(self, *args, **kwargs):
from bootstrapvz.base.main import run from bootstrapvz.base.main import run
return run(*args, **kwargs) return run(*args, **kwargs)
@ -29,12 +32,16 @@ def serve(opts, log_forwarder):
def ping(self): def ping(self):
return 'pong' return 'pong'
server = Server() def stop(self):
self.stop_serving = True
import Pyro4 import Pyro4
Pyro4.config.COMMTIMEOUT = 0.5
daemon = Pyro4.Daemon('localhost', port=int(opts['--listen']), unixsocket=None) daemon = Pyro4.Daemon('localhost', port=int(opts['--listen']), unixsocket=None)
server = Server()
daemon.register(server, 'server') daemon.register(server, 'server')
daemon.requestLoop() daemon.requestLoop(loopCondition=lambda: not server.stop_serving)
def getopts(): def getopts():

View file

@ -52,7 +52,6 @@ class SSHRPCManager(object):
else: else:
raise e raise e
except (Exception, KeyboardInterrupt) as e: except (Exception, KeyboardInterrupt) as e:
print('terminateE')
self.process.terminate() self.process.terminate()
raise e raise e
@ -61,7 +60,7 @@ class SSHRPCManager(object):
self.callback_server.start(self.rpc_server) self.callback_server.start(self.rpc_server)
def stop(self): def stop(self):
print('terminate')
self.process.terminate()
if hasattr(self, 'callback_server'): if hasattr(self, 'callback_server'):
self.callback_server.stop() self.callback_server.stop()
self.rpc_server.stop()
self.process.terminate()