escalator should use oslo.xxx instead of oslo-xxx
[escalator.git] / api / escalator / cmd / api.py
1 #!/usr/bin/env python
2
3 # Copyright 2010 United States Government as represented by the
4 # Administrator of the National Aeronautics and Space Administration.
5 # Copyright 2011 OpenStack Foundation
6 # All Rights Reserved.
7 #
8 #    Licensed under the Apache License, Version 2.0 (the "License"); you may
9 #    not use this file except in compliance with the License. You may obtain
10 #    a copy of the License at
11 #
12 #         http://www.apache.org/licenses/LICENSE-2.0
13 #
14 #    Unless required by applicable law or agreed to in writing, software
15 #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16 #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
17 #    License for the specific language governing permissions and limitations
18 #    under the License.
19
20 """
21 Escalator API Server
22 """
23
24 import os
25 import sys
26
27 import eventlet
28
29 from oslo.service import systemd
30 from oslo.config import cfg
31 from oslo.log import log as logging
32 import osprofiler.notifier
33 import osprofiler.web
34
35 from escalator.common import config
36 from escalator.common import wsgi
37 from escalator import notifier
38
39
40 # Monkey patch socket, time, select, threads
41 eventlet.patcher.monkey_patch(all=False, socket=True, time=True,
42                               select=True, thread=True, os=True)
43
44 # If ../escalator/__init__.py exists, add ../ to Python search path, so that
45 # it will override what happens to be installed in /usr/(local/)lib/python...
46 possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
47                                    os.pardir,
48                                    os.pardir))
49 if os.path.exists(os.path.join(possible_topdir, 'escalator', '__init__.py')):
50     sys.path.insert(0, possible_topdir)
51
52
53 CONF = cfg.CONF
54 CONF.import_group("profiler", "escalator.common.wsgi")
55 logging.register_options(CONF)
56
57
58 def fail(e):
59     sys.exit(100)
60
61
62 def main():
63     try:
64         config.parse_args()
65         wsgi.set_eventlet_hub()
66         logging.setup(CONF, 'escalator')
67
68         if cfg.CONF.profiler.enabled:
69             _notifier = osprofiler.notifier.create("Messaging",
70                                                    notifier.messaging, {},
71                                                    notifier.get_transport(),
72                                                    "escalator", "api",
73                                                    cfg.CONF.bind_host)
74             osprofiler.notifier.set(_notifier)
75         else:
76             osprofiler.web.disable()
77
78         server = wsgi.Server()
79         server.start(config.load_paste_app('escalator-api'), default_port=9393)
80         systemd.notify_once()
81         server.wait()
82     except Exception as e:
83         fail(e)
84
85
86 if __name__ == '__main__':
87     main()