changeset 1130:adea30ca0b51

core: twistd plugin refactoring: initialisation method manage things which must be done once (reactor installation + logging configuration), this method is called when service is created, so we can have the options passed to twistd (necessary to manage logging configuration). The initialisation order is important: for instance, sat_main must be imported after logging initialisation. This refactoring avoid initialisation issue when SàT backend and libervia are both installed as twisted plugins.
author Goffi <goffi@goffi.org>
date Mon, 25 Aug 2014 17:21:04 +0200
parents 08f50fdac21b
children 90f82f4ee405
files src/core/sat_main.py src/twisted/plugins/sat_plugin.py
diffstat 2 files changed, 12 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/core/sat_main.py	Mon Aug 25 17:21:03 2014 +0200
+++ b/src/core/sat_main.py	Mon Aug 25 17:21:04 2014 +0200
@@ -19,8 +19,6 @@
 
 from sat.core.i18n import _, D_, languageSwitch
 from twisted.application import service
-from twisted.internet import glib2reactor
-glib2reactor.install()
 from twisted.internet import defer
 from twisted.words.protocols.jabber import jid
 from twisted.words.xish import domish
--- a/src/twisted/plugins/sat_plugin.py	Mon Aug 25 17:21:03 2014 +0200
+++ b/src/twisted/plugins/sat_plugin.py	Mon Aug 25 17:21:04 2014 +0200
@@ -35,12 +35,16 @@
 
 # XXX: We need to configure logs before any log method is used, so here is the best place.
 from sat.core.constants import Const as C
-from sat.core import log_config
-log_config.satConfigure(C.LOG_BACKEND_TWISTED)
+from sat.core.i18n import _
+
 
-# XXX: SAT must be imported after log configuration, because it write stuff to logs
-from sat.core.sat_main import SAT
-from sat.core.i18n import _
+def initialise(options):
+    """Method to initialise global modules"""
+    from twisted.internet import glib2reactor
+    glib2reactor.install()
+    # XXX: We need to configure logs before any log method is used, so here is the best place.
+    from sat.core import log_config
+    log_config.satConfigure(C.LOG_BACKEND_TWISTED, C, backend_data=options)
 
 
 class Options(usage.Options):
@@ -55,6 +59,9 @@
     options = Options
 
     def makeService(self, options):
+        # XXX: SAT must be imported after log configuration, because it write stuff to logs
+        initialise(options.parent)
+        from sat.core.sat_main import SAT
         return SAT()