Initial commit
[ta/distributed-state-server.git] / src / dss / server / dss_main.py
diff --git a/src/dss/server/dss_main.py b/src/dss/server/dss_main.py
new file mode 100644 (file)
index 0000000..feeaecb
--- /dev/null
@@ -0,0 +1,104 @@
+# 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.
+#
+
+from dss.server import dss_config
+from dss.server import dss_server
+from dss.server import dss_logger
+from dss.server import dss_rpc_processor
+from dss.server import dss_get_handler
+from dss.server import dss_get_domain_handler
+from dss.server import dss_get_domains_handler
+from dss.server import dss_set_handler
+from dss.server import dss_delete_handler
+from dss.server import dss_delete_domain_handler
+from dss.server import dss_plugin_loader
+
+import logging
+
+
+def _main(config):
+    #initialize config
+    conf = dss_config.Config(config)
+
+    #initialize logger
+    logger = dss_logger.Logger(conf.get_logging_destination(),
+            conf.get_verbose(),
+            conf.get_logging_level())
+
+    #initialize plugin 
+    logging.info('Initializing dss plugin')
+    plugin = dss_plugin_loader.DSSPluginLoader(conf)
+
+    #initialize rpc processor
+    logging.info('Initializing rpc processor')
+    rpcprocessor = dss_rpc_processor.RPCProcessor()
+
+    #adding rpc handlers
+    logging.info('Adding RPC handlers')
+    gethandler = dss_get_handler.GetHandler(plugin)
+    rpcprocessor.add_handler(gethandler)
+    getdomainhandler = dss_get_domain_handler.GetDomainHandler(plugin)
+    rpcprocessor.add_handler(getdomainhandler)
+    getdomainshandler = dss_get_domains_handler.GetDomainsHandler(plugin)
+    rpcprocessor.add_handler(getdomainshandler)
+    sethandler = dss_set_handler.SetHandler(plugin)
+    rpcprocessor.add_handler(sethandler)
+    deletehandler = dss_delete_handler.DeleteHandler(plugin)
+    rpcprocessor.add_handler(deletehandler)
+    deletedomainhandler = dss_delete_domain_handler.DeleteDomainHandler(plugin)
+    rpcprocessor.add_handler(deletedomainhandler)
+
+    #initialize tcp server
+    logging.info("Initializing tcp server")
+    server = dss_server.Server(conf, rpcprocessor)
+
+    logging.info('Waiting for TCP requests')
+    server.start()
+
+    logging.info('TCP server stopped')
+
+    logging.info('Exiting, bye bye...')
+
+
+def main():
+    import sys
+    import traceback
+    import argparse
+
+    parser = argparse.ArgumentParser(description='dss-server',
+            prog=sys.argv[0])
+
+    parser.add_argument('--config',
+            required=False,
+            dest='config',
+            metavar='CONFIG',
+            default='/etc/dss-server/config.ini',
+            help='The dss server configuration file',
+            type=str,
+            action='store')
+
+    try:
+        result = parser.parse_args(sys.argv[1:])
+        _main(result.config)
+    except Exception as exp:
+        print("Failed with error %s" % exp)
+        traceback.print_exc()
+        sys.exit(1)
+
+    print("Exiting...")
+    sys.exit(0)
+
+if __name__ == '__main__':
+    main()