From 13044021b39aa532bdfbad1e1867eb8517bbc382 Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Wed, 3 Jun 2020 11:24:18 +0200
Subject: [PATCH] setup logging

---
 inventory_provider/tasks/monitor.py | 47 ++++++++++++++---------------
 1 file changed, 23 insertions(+), 24 deletions(-)

diff --git a/inventory_provider/tasks/monitor.py b/inventory_provider/tasks/monitor.py
index 7804413d..5481c9b6 100644
--- a/inventory_provider/tasks/monitor.py
+++ b/inventory_provider/tasks/monitor.py
@@ -1,15 +1,32 @@
+"""
+standalone process that monitors celery task events and
+writes them to redis for reporting
+
+as with the other processes, INVENTORY_PROVIDER_CONFIG_FILENAME
+must be defined in the environment
+"""
 import json
 import logging
+import os
+from inventory_provider import config, environment
 from inventory_provider.tasks.worker import app
 from inventory_provider.tasks.common import get_current_redis
 
-from threading import Thread
-
 logger = logging.getLogger(__name__)
 INFO_EVENT_TYPES = ('task-info', 'task-warning', 'task-error')
 
 
-def _monitor_proc(config):
+def run():
+    """
+    save 'task-*' events to redis, never returns
+    """
+    environment.setup_logging()
+
+    with open(os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME']) as f:
+        logging.info(
+            'loading config from: %r'
+            % os.environ['INVENTORY_PROVIDER_CONFIG_FILENAME'])
+        config_params = config.load(f)
 
     state = app.events.State()
 
@@ -23,26 +40,20 @@ def _monitor_proc(config):
         if event['type'] in INFO_EVENT_TYPES:
             key += f':{event["clock"]}'
 
-        r = get_current_redis(config)
+        r = get_current_redis(config_params)
         r.set(key, json.dumps(event))
 
         logger.debug(f'{key}: {json.dumps(event)}')
 
     with app.connection() as connection:
         recv = app.events.Receiver(connection, handlers={
-                '*': _log_event,
+                '*': _log_event
         })
         recv.capture(limit=None, timeout=None, wakeup=True)
 
 
-def start_monitoring():
-    thread = Thread(target=_monitor_proc, args=())
-    thread.start()
-
-
 def clear_joblog(r):
     """
-
     :param r:
     :return:
     """
@@ -53,17 +64,5 @@ def clear_joblog(r):
 
 
 if __name__ == '__main__':
-    import os
-    from inventory_provider import config
-
     logging.basicConfig(level=logging.DEBUG)
-
-    filename = os.path.join(
-        os.path.dirname(__file__),
-        '..',
-        'config-sentinel.json')
-
-    with open(filename) as f:
-        params = config.load(f)
-
-    _monitor_proc(params)
+    run()
-- 
GitLab