Francesco Romani has uploaded a new change for review.

Change subject: configuration: split load from MOM class
......................................................................

configuration: split load from MOM class

a followup patch wants to add profiling support to MOM.
profiling will need access to configuration value, which
is nowadays held inside the MOM objects.

To streamline and simplify the code, extracts the load of
the configuration and put it into a top-level function,
which will be called by MOM's __init__.

No changes in behaviour are meant, just extracting code.

Change-Id: I91efca901d903fc345317e228628b00a6f9c3703
Signed-off-by: Francesco Romani <[email protected]>
---
M mom/__init__.py
1 file changed, 50 insertions(+), 40 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/mom refs/changes/78/37778/1

diff --git a/mom/__init__.py b/mom/__init__.py
index e720b3e..6b0e01a 100644
--- a/mom/__init__.py
+++ b/mom/__init__.py
@@ -11,9 +11,56 @@
 from mom.RPCServer import RPCServer
 from mom.MOMFuncs import MOMFuncs, EXPORTED_ATTRIBUTE
 
+
+def load_config(fname, overrides=None):
+    config = ConfigParser.SafeConfigParser()
+
+    # Set built-in defaults
+    config.add_section('main')
+    config.set('main', 'main-loop-interval', '5')
+    config.set('main', 'host-monitor-interval', '5')
+    config.set('main', 'guest-manager-interval', '5')
+    config.set('main', 'hypervisor-interface', 'libvirt')
+    config.set('main', 'guest-monitor-interval', '5')
+    config.set('main', 'policy-engine-interval', '10')
+    config.set('main', 'sample-history-length', '10')
+    config.set('main', 'libvirt-hypervisor-uri', '')
+    config.set('main', 'controllers', 'Balloon')
+    config.set('main', 'plot-dir', '')
+    config.set('main', 'rpc-port', '-1')
+    config.set('main', 'policy', '')
+    config.set('main', 'policy-dir', '')
+    config.add_section('logging')
+    config.set('logging', 'log', 'stdio')
+    config.set('logging', 'verbosity', 'info')
+    config.set('logging', 'max-bytes', '2097152')
+    config.set('logging', 'backup-count', '5')
+    config.add_section('host')
+    config.set('host', 'collectors', 'HostMemory')
+    config.add_section('guest')
+    config.set('guest', 'collectors', 'GuestQemuProc, GuestMemory')
+
+    # Override defaults from the config file
+    config.read(fname)
+
+    # Process configuration overrides from our owner.  For example, momd
+    # allows certain settings to be overriden via its command line.
+    if overrides is not None:
+        for sect in overrides.sections():
+            if sect not in config.sections():
+                continue
+            for (item, value) in overrides.items(sect):
+                config.set(sect, item, value)
+
+    return config
+
+
 class MOM:
     def __init__(self, conf_file, conf_overrides=None):
-        self._load_config(conf_file, conf_overrides)
+        self._setup(load_config(conf_file, conf_overrides))
+
+    def _setup(self, conf_data):
+        self._setup_config(conf_data)
         self.logger = self._configure_logger()
 
     def run(self):
@@ -74,45 +121,8 @@
             if hasattr(funcObj, EXPORTED_ATTRIBUTE) and callable(funcObj):
                 setattr(self, funcName, funcObj)
 
-    def _load_config(self, fname, overrides):
-        self.config = ConfigParser.SafeConfigParser()
-
-        # Set built-in defaults
-        self.config.add_section('main')
-        self.config.set('main', 'main-loop-interval', '5')
-        self.config.set('main', 'host-monitor-interval', '5')
-        self.config.set('main', 'guest-manager-interval', '5')
-        self.config.set('main', 'hypervisor-interface', 'libvirt')
-        self.config.set('main', 'guest-monitor-interval', '5')
-        self.config.set('main', 'policy-engine-interval', '10')
-        self.config.set('main', 'sample-history-length', '10')
-        self.config.set('main', 'libvirt-hypervisor-uri', '')
-        self.config.set('main', 'controllers', 'Balloon')
-        self.config.set('main', 'plot-dir', '')
-        self.config.set('main', 'rpc-port', '-1')
-        self.config.set('main', 'policy', '')
-        self.config.set('main', 'policy-dir', '')
-        self.config.add_section('logging')
-        self.config.set('logging', 'log', 'stdio')
-        self.config.set('logging', 'verbosity', 'info')
-        self.config.set('logging', 'max-bytes', '2097152')
-        self.config.set('logging', 'backup-count', '5')
-        self.config.add_section('host')
-        self.config.set('host', 'collectors', 'HostMemory')
-        self.config.add_section('guest')
-        self.config.set('guest', 'collectors', 'GuestQemuProc, GuestMemory')
-
-        # Override defaults from the config file
-        self.config.read(fname)
-
-        # Process configuration overrides from our owner.  For example, momd
-        # allows certain settings to be overriden via its command line.
-        if overrides is not None:
-            for sect in overrides.sections():
-                if sect not in self.config.sections():
-                    continue
-                for (item, value) in overrides.items(sect):
-                    self.config.set(sect, item, value)
+    def _setup_config(self, config):
+        self.config = config
 
         # Add non-customizable thread-global variables
         # The supplied config file must not contain a '__int__' section


-- 
To view, visit http://gerrit.ovirt.org/37778
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I91efca901d903fc345317e228628b00a6f9c3703
Gerrit-PatchSet: 1
Gerrit-Project: mom
Gerrit-Branch: master
Gerrit-Owner: Francesco Romani <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to