Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
commit 54ea481e3bf4b8973cefa1d1007ba698d27ed786 Author: Valentin Gologuzov vgologuz@redhat.com Date: Fri Sep 11 15:01:04 2015 +0200
[backend] split backend daemon: extracting RedisLogHandler
backend/backend/daemons/backend.py | 57 -------------------- backend/backend/daemons/log.py | 4 +- backend/run/copr_run_logger.py | 20 +++++++ ...ackend-vmm.service => copr-backend-log.service} | 5 +- backend/run/systemd/copr-backend-vmm.service | 2 +- backend/run/systemd/copr-backend.service | 1 + 6 files changed, 27 insertions(+), 62 deletions(-)
diff --git a/backend/backend/daemons/backend.py b/backend/backend/daemons/backend.py index 1dd1385..4a0096b 100644 --- a/backend/backend/daemons/backend.py +++ b/backend/backend/daemons/backend.py @@ -24,19 +24,9 @@ from backend.frontend import FrontendClient from ..exceptions import CoprBackendError from ..helpers import BackendConfigReader, get_redis_logger from .job_grab import CoprJobGrab -from .log import RedisLogHandler from .dispatcher import Worker
-from .vm_master import VmMaster - -from ..vm_manage.event_handle import EventHandler -from ..vm_manage.manager import VmManager -from ..vm_manage.spawn import Spawner -from ..vm_manage.check import HealthChecker -from ..vm_manage.terminate import Terminator - - class CoprBackend(object):
""" @@ -64,11 +54,8 @@ class CoprBackend(object): self.update_conf()
self.lock = multiprocessing.Lock() - self.task_queues = {}
- # event format is a dict {when:time, who:[worker|logger|job|main], - # what:str} self.frontend_client = FrontendClient(self.opts) self.is_running = False
@@ -102,11 +89,6 @@ class CoprBackend(object):
self.clean_task_queues()
- def _start_log_handler(self): - self.redis_log_handler = RedisLogHandler(self.opts) - self.redis_log_handler.start() - time.sleep(1) - def _start_job_grab(self): self.log.info("Starting up Job Grabber") self._jobgrab = CoprJobGrab(opts=self.opts, @@ -116,42 +98,13 @@ class CoprBackend(object):
def init_sub_process(self): """ - - Create backend logger - Create job grabber - - Create VM management """ - - self._start_log_handler() self._start_job_grab() - # self._start_vmm() - - def _start_vmm(self): - self.log.info("Creating VM Spawner, HealthChecker, Terminator") - self.spawner = Spawner(self.opts) - self.checker = HealthChecker(self.opts) - self.terminator = Terminator(self.opts) - self.vm_manager = VmManager(opts=self.opts, - logger=self.log, - ) - self.vm_manager.post_init() - self.log.info("Starting up VM EventHandler") - self.event_handler = EventHandler(self.opts, - vmm=self.vm_manager, - terminator=self.terminator) - self.event_handler.post_init() - self.event_handler.start() - - self.log.info("Starting up VM Master") - self.vm_master = VmMaster(self.opts, - vmm=self.vm_manager, - spawner=self.spawner, - checker=self.checker) - self.vm_master.start()
def ensure_sub_processes_alive(self): if self.is_running: for proc, start_method in [ - (self.redis_log_handler, self._start_log_handler), (self._jobgrab, self._start_job_grab),
]: @@ -244,16 +197,6 @@ class CoprBackend(object): self.log.exception(err) return
- try: - self.vm_master.terminate() - except Exception: - self.log.exception("Failed to terminate vmm daemon") - try: - self.event_handler.terminate() - self.event_handler.join() - except Exception: - self.log.exception("Failed to terminate vm EventHandler") - def run(self): """ Starts backend process. Control sub process start/stop. diff --git a/backend/backend/daemons/log.py b/backend/backend/daemons/log.py index f74962e..01c0ca0 100644 --- a/backend/backend/daemons/log.py +++ b/backend/backend/daemons/log.py @@ -62,14 +62,14 @@ class CustomFilter(logging.Filter): return True
-class RedisLogHandler(Process): +class RedisLogHandler(object): """ Single point to collect logs through redis pub/sub and write them through standard python logging lib """
def __init__(self, opts): - Process.__init__(self, name="log_handler") + # Process.__init__(self, name="log_handler")
self.opts = opts
diff --git a/backend/run/copr_run_logger.py b/backend/run/copr_run_logger.py new file mode 100755 index 0000000..6b41a74 --- /dev/null +++ b/backend/run/copr_run_logger.py @@ -0,0 +1,20 @@ +#!/usr/bin/python2 +# coding: utf-8 + +from __future__ import print_function +from __future__ import unicode_literals +from __future__ import division +from __future__ import absolute_import + +from backend.helpers import get_backend_opts +from backend.daemons.log import RedisLogHandler + + +def main(): + opts = get_backend_opts() + handler = RedisLogHandler(opts) + handler.run() + + +if __name__ == "__main__": + main() diff --git a/backend/run/systemd/copr-backend-vmm.service b/backend/run/systemd/copr-backend-log.service similarity index 59% copy from backend/run/systemd/copr-backend-vmm.service copy to backend/run/systemd/copr-backend-log.service index 9784b93..1577743 100644 --- a/backend/run/systemd/copr-backend-vmm.service +++ b/backend/run/systemd/copr-backend-log.service @@ -1,13 +1,14 @@ [Unit] -Description=Copr Backend service +Description=Copr Backend service, Log Handler component After=syslog.target network.target auditd.service +Before=copr-backend.service
[Service] Type=simple Environment="PYTHONPATH=/usr/share/copr/" User=copr Group=copr -ExecStart=/usr/bin/copr_run_vmm.py +ExecStart=/usr/bin/copr_run_logger.py
[Install] WantedBy=multi-user.target diff --git a/backend/run/systemd/copr-backend-vmm.service b/backend/run/systemd/copr-backend-vmm.service index 9784b93..40a3767 100644 --- a/backend/run/systemd/copr-backend-vmm.service +++ b/backend/run/systemd/copr-backend-vmm.service @@ -1,5 +1,5 @@ [Unit] -Description=Copr Backend service +Description=Copr Backend service, Virtual Machine Management component After=syslog.target network.target auditd.service
[Service] diff --git a/backend/run/systemd/copr-backend.service b/backend/run/systemd/copr-backend.service index 8aa36db..ea43924 100644 --- a/backend/run/systemd/copr-backend.service +++ b/backend/run/systemd/copr-backend.service @@ -2,6 +2,7 @@ Description=Copr Backend service, Virtual Machine Management component After=syslog.target network.target auditd.service Requires=copr-backend-vmm.service +Wants=copr-backend-log.service
[Service] Type=simple
copr-commits@lists.fedorahosted.org