mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-10-10 17:19:51 +00:00
Close thread on both ends!
This commit is contained in:
parent
e271f3e49a
commit
16837b38c2
5 changed files with 12 additions and 45 deletions
|
@ -34,12 +34,10 @@ def main():
|
|||
server = manager.rpc_server
|
||||
|
||||
# Everything has been set up, begin the bootstrapping process
|
||||
print('run')
|
||||
server.run(None,
|
||||
debug=opts['--debug'],
|
||||
pause_on_error=False,
|
||||
dry_run=opts['--dry-run'])
|
||||
print('hasrun')
|
||||
finally:
|
||||
manager.stop()
|
||||
|
||||
|
@ -62,39 +60,3 @@ Options:
|
|||
-h, --help show this help
|
||||
"""
|
||||
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)
|
||||
|
|
|
@ -26,6 +26,4 @@ class CallbackServer(object):
|
|||
def stop(self):
|
||||
self.stop_serving = True
|
||||
if hasattr(self, 'thread'):
|
||||
print('joining')
|
||||
self.thread.join()
|
||||
print('joined')
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import logging
|
||||
import pickle
|
||||
|
||||
|
||||
class LogForwarder(logging.Handler):
|
||||
|
||||
def __init__(self, level=logging.NOTSET):
|
||||
|
|
|
@ -19,6 +19,9 @@ def setup_logging():
|
|||
def serve(opts, log_forwarder):
|
||||
class Server(object):
|
||||
|
||||
def __init__(self):
|
||||
self.stop_serving = False
|
||||
|
||||
def run(self, *args, **kwargs):
|
||||
from bootstrapvz.base.main import run
|
||||
return run(*args, **kwargs)
|
||||
|
@ -29,12 +32,16 @@ def serve(opts, log_forwarder):
|
|||
def ping(self):
|
||||
return 'pong'
|
||||
|
||||
server = Server()
|
||||
def stop(self):
|
||||
self.stop_serving = True
|
||||
|
||||
import Pyro4
|
||||
Pyro4.config.COMMTIMEOUT = 0.5
|
||||
daemon = Pyro4.Daemon('localhost', port=int(opts['--listen']), unixsocket=None)
|
||||
|
||||
server = Server()
|
||||
daemon.register(server, 'server')
|
||||
daemon.requestLoop()
|
||||
daemon.requestLoop(loopCondition=lambda: not server.stop_serving)
|
||||
|
||||
|
||||
def getopts():
|
||||
|
|
|
@ -52,7 +52,6 @@ class SSHRPCManager(object):
|
|||
else:
|
||||
raise e
|
||||
except (Exception, KeyboardInterrupt) as e:
|
||||
print('terminateE')
|
||||
self.process.terminate()
|
||||
raise e
|
||||
|
||||
|
@ -61,7 +60,7 @@ class SSHRPCManager(object):
|
|||
self.callback_server.start(self.rpc_server)
|
||||
|
||||
def stop(self):
|
||||
print('terminate')
|
||||
self.process.terminate()
|
||||
if hasattr(self, 'callback_server'):
|
||||
self.callback_server.stop()
|
||||
self.rpc_server.stop()
|
||||
self.process.terminate()
|
||||
|
|
Loading…
Add table
Reference in a new issue