Initial commit
[ta/distributed-state-server.git] / src / dss / server / dss_main.py
1 # Copyright 2019 Nokia
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #     http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 #
15
16 from dss.server import dss_config
17 from dss.server import dss_server
18 from dss.server import dss_logger
19 from dss.server import dss_rpc_processor
20 from dss.server import dss_get_handler
21 from dss.server import dss_get_domain_handler
22 from dss.server import dss_get_domains_handler
23 from dss.server import dss_set_handler
24 from dss.server import dss_delete_handler
25 from dss.server import dss_delete_domain_handler
26 from dss.server import dss_plugin_loader
27
28 import logging
29
30
31 def _main(config):
32     #initialize config
33     conf = dss_config.Config(config)
34
35     #initialize logger
36     logger = dss_logger.Logger(conf.get_logging_destination(),
37             conf.get_verbose(),
38             conf.get_logging_level())
39
40     #initialize plugin 
41     logging.info('Initializing dss plugin')
42     plugin = dss_plugin_loader.DSSPluginLoader(conf)
43
44     #initialize rpc processor
45     logging.info('Initializing rpc processor')
46     rpcprocessor = dss_rpc_processor.RPCProcessor()
47
48     #adding rpc handlers
49     logging.info('Adding RPC handlers')
50     gethandler = dss_get_handler.GetHandler(plugin)
51     rpcprocessor.add_handler(gethandler)
52     getdomainhandler = dss_get_domain_handler.GetDomainHandler(plugin)
53     rpcprocessor.add_handler(getdomainhandler)
54     getdomainshandler = dss_get_domains_handler.GetDomainsHandler(plugin)
55     rpcprocessor.add_handler(getdomainshandler)
56     sethandler = dss_set_handler.SetHandler(plugin)
57     rpcprocessor.add_handler(sethandler)
58     deletehandler = dss_delete_handler.DeleteHandler(plugin)
59     rpcprocessor.add_handler(deletehandler)
60     deletedomainhandler = dss_delete_domain_handler.DeleteDomainHandler(plugin)
61     rpcprocessor.add_handler(deletedomainhandler)
62
63     #initialize tcp server
64     logging.info("Initializing tcp server")
65     server = dss_server.Server(conf, rpcprocessor)
66
67     logging.info('Waiting for TCP requests')
68     server.start()
69
70     logging.info('TCP server stopped')
71
72     logging.info('Exiting, bye bye...')
73
74
75 def main():
76     import sys
77     import traceback
78     import argparse
79
80     parser = argparse.ArgumentParser(description='dss-server',
81             prog=sys.argv[0])
82
83     parser.add_argument('--config',
84             required=False,
85             dest='config',
86             metavar='CONFIG',
87             default='/etc/dss-server/config.ini',
88             help='The dss server configuration file',
89             type=str,
90             action='store')
91
92     try:
93         result = parser.parse_args(sys.argv[1:])
94         _main(result.config)
95     except Exception as exp:
96         print("Failed with error %s" % exp)
97         traceback.print_exc()
98         sys.exit(1)
99
100     print("Exiting...")
101     sys.exit(0)
102
103 if __name__ == '__main__':
104     main()