mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-10-11 09:30:30 +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
|
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)
|
|
||||||
|
|
|
@ -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')
|
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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():
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Add table
Reference in a new issue