diff --git a/lib/tfw/components/process_managing_event_handler.py b/lib/tfw/components/process_managing_event_handler.py index a028334..1873dcf 100644 --- a/lib/tfw/components/process_managing_event_handler.py +++ b/lib/tfw/components/process_managing_event_handler.py @@ -4,14 +4,14 @@ from xmlrpc.client import Fault as SupervisorFault from tfw import EventHandlerBase -from tfw.mixins import SupervisorMixin +from tfw.mixins import SupervisorMixin, SupervisorLogMixin from tfw.config.logs import logging from .directory_monitor import with_monitor_paused LOG = logging.getLogger(__name__) -class ProcessManager(SupervisorMixin): +class ProcessManager(SupervisorMixin, SupervisorLogMixin): def __init__(self): self.commands = {'start': self.start_process, 'stop': self.stop_process, diff --git a/lib/tfw/mixins/__init__.py b/lib/tfw/mixins/__init__.py index 60e67fc..58915ca 100644 --- a/lib/tfw/mixins/__init__.py +++ b/lib/tfw/mixins/__init__.py @@ -1,7 +1,7 @@ # Copyright (C) 2018 Avatao.com Innovative Learning Kft. # All Rights Reserved. See LICENSE file for details. -from .supervisor_mixin import SupervisorMixin +from .supervisor_mixin import SupervisorMixin, SupervisorLogMixin from .callback_mixin import CallbackMixin from .observer_mixin import ObserverMixin from .monitor_manager_mixin import MonitorManagerMixin diff --git a/lib/tfw/mixins/supervisor_mixin.py b/lib/tfw/mixins/supervisor_mixin.py index a95b769..3df6b48 100644 --- a/lib/tfw/mixins/supervisor_mixin.py +++ b/lib/tfw/mixins/supervisor_mixin.py @@ -9,9 +9,11 @@ from os import remove from tfw.config import TFWENV -class SupervisorMixin: +class SupervisorBaseMixin: supervisor = xmlrpc.client.ServerProxy(TFWENV.SUPERVISOR_HTTP_URI).supervisor + +class SupervisorMixin(SupervisorBaseMixin): def stop_process(self, process_name): with suppress(SupervisorFault): self.supervisor.stopProcess(process_name) @@ -19,6 +21,12 @@ class SupervisorMixin: def start_process(self, process_name): self.supervisor.startProcess(process_name) + def restart_process(self, process_name): + self.stop_process(process_name) + self.start_process(process_name) + + +class SupervisorLogMixin(SupervisorBaseMixin): def read_log_stdout(self, process_name): return self._read_log_internal(self.supervisor.readProcessStdoutLog, process_name) @@ -34,7 +42,3 @@ class SupervisorMixin: for logfile in ('stdout_logfile', 'stderr_logfile'): remove(self.supervisor.getProcessInfo(process_name)[logfile]) self.supervisor.clearProcessLogs(process_name) - - def restart_process(self, process_name): - self.stop_process(process_name) - self.start_process(process_name)