Initial commit
[ta/distributed-state-server.git] / src / dss / server / dss_config.py
diff --git a/src/dss/server/dss_config.py b/src/dss/server/dss_config.py
new file mode 100644 (file)
index 0000000..0ac41c8
--- /dev/null
@@ -0,0 +1,93 @@
+# Copyright 2019 Nokia
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+import ConfigParser
+from dss.api import dss_error
+
+SERVER_SECTION = "server"
+PLUGIN_SECTION = "plugin"
+DEFAULT_CONFIG_FILE="/etc/dss/dss-server/config.ini"
+
+class Config(object):
+    """
+    Read the ini file. The structure of the file is as follows:
+    [server]
+    logging_level = info
+    logging_destination = console
+    verbose = true
+    listening_uds = /var/run/.dss-server
+    transport_type = dgram
+    [plugin]
+    plugin = /opt/dss-server/etcd.py
+    config = /etc/dss-server/etcd.ini
+    """
+    
+    def __init__(self, config_file = DEFAULT_CONFIG_FILE):
+        try:
+            # server
+            self.logging_level = None
+            self.logging_destination = None
+            self.verbose = None
+            self.listening_uds = None
+            self.transport_type = None
+
+            # plugin
+            self.plugin = None
+            self.plugin_config = None
+
+            config = ConfigParser.ConfigParser()
+            config.read([config_file])
+
+            self.logging_level = config.get(SERVER_SECTION, "logging_level")
+            self.logging_destination = config.get(SERVER_SECTION, "logging_destination")
+            self.verbose = config.get(SERVER_SECTION, "verbose")
+            self.listening_uds = config.get(SERVER_SECTION, "listening_uds")
+            self.transport_type = config.get(SERVER_SECTION, "transport_type")
+
+            self.plugin = config.get(PLUGIN_SECTION, "plugin")
+            self.plugin_config = config.get(PLUGIN_SECTION, "config")
+
+
+        except Exception as exp:
+            raise dss_error.Error(str(exp))
+
+    def get_logging_level(self):
+        return self.logging_level
+
+    def get_logging_destination(self):
+        return self.logging_destination
+
+    def get_verbose(self):
+        return self.verbose
+
+    def get_listening_uds(self):
+        return self.listening_uds
+
+    def get_plugin(self):
+        return self.plugin
+
+    def get_plugin_config(self):
+        return self.plugin_config
+
+    def get_transport_type(self):
+        return self.transport_type
+
+
+if __name__ == "__main__":
+    import sys
+    try:
+        config = Config(sys.argv[1])
+    except dss_error.Error as exp:
+        print("Got exception %s" % exp)