2018-01-24 15:36:32 +00:00
|
|
|
import logging
|
2018-01-24 14:10:59 +00:00
|
|
|
from shutil import rmtree, copytree
|
2018-01-24 14:54:03 +00:00
|
|
|
from xmlrpc.client import Fault as SupervisorFault
|
2018-01-24 17:28:45 +00:00
|
|
|
from contextlib import suppress
|
2018-01-17 15:33:34 +00:00
|
|
|
|
2018-01-24 14:10:59 +00:00
|
|
|
from event_handler_base import EventHandlerBase
|
|
|
|
from util import SupervisorMixin
|
|
|
|
from config import TERMINADO_DIR
|
2018-01-17 15:33:34 +00:00
|
|
|
|
|
|
|
|
2018-01-24 14:10:59 +00:00
|
|
|
class TerminadoEventHandler(EventHandlerBase, SupervisorMixin):
|
2018-01-24 17:19:49 +00:00
|
|
|
def __init__(self, messaging, anchor, process_name):
|
|
|
|
super().__init__(messaging, anchor)
|
2018-01-24 14:10:59 +00:00
|
|
|
self.working_directory = TERMINADO_DIR
|
|
|
|
self.process_name = process_name
|
|
|
|
self.setup_terminado_server()
|
|
|
|
|
|
|
|
def setup_terminado_server(self):
|
|
|
|
rmtree(self.working_directory, ignore_errors=True)
|
|
|
|
copytree('terminado_server/', self.working_directory)
|
|
|
|
self.supervisor.startProcess(self.process_name)
|
2018-01-17 15:33:34 +00:00
|
|
|
|
|
|
|
def handle_event(self, anchor, data_json):
|
2018-01-24 15:36:32 +00:00
|
|
|
logging.debug('TerminadoEventHandler received event for anchor {}'.format(anchor))
|
|
|
|
# TODO: wat do?
|
2018-01-24 14:54:03 +00:00
|
|
|
|
|
|
|
def handle_reset(self, data_json):
|
2018-01-24 17:28:45 +00:00
|
|
|
with suppress(SupervisorFault):
|
|
|
|
self.supervisor.stopProcess(self.process_name)
|
2018-01-24 14:54:03 +00:00
|
|
|
self.supervisor.startProcess(self.process_name)
|