Policy Module first commit
[osm/MON.git] / policy_module / osm_policy_module / core / config.py
diff --git a/policy_module/osm_policy_module/core/config.py b/policy_module/osm_policy_module/core/config.py
new file mode 100644 (file)
index 0000000..0ee2a7d
--- /dev/null
@@ -0,0 +1,45 @@
+"""Global Configuration."""
+
+import logging
+
+from osm_policy_module.core.singleton import Singleton
+
+try:
+    from configparser import ConfigParser
+except ImportError:
+    from ConfigParser import ConfigParser
+
+log = logging.getLogger(__name__)
+
+
+@Singleton
+class Config(object):
+    """Global configuration."""
+
+    def __init__(self):
+        # Default config values
+        self.config = {
+            'policy_module': {
+                'kafka_server_host': '127.0.0.1',
+                'kafka_server_port': '9092',
+                'log_dir': 'stdout',
+                'log_level': 'INFO'
+            },
+        }
+
+    def load_file(self, config_file_path):
+        if config_file_path:
+            config_parser = ConfigParser()
+            config_parser.read(config_file_path)
+            for section in config_parser.sections():
+                for key, value in config_parser.items(section):
+                    if section not in self.config:
+                        self.config[section] = {}
+                    self.config[section][key] = value
+
+    def get(self, group, name=None, default=None):
+        if group in self.config:
+            if name is None:
+                return self.config[group]
+            return self.config[group].get(name, default)
+        return default