3 # Copyright 2016 RIFT.IO Inc
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
23 import tornado
.httpserver
27 PingAdminStatusHandler
,
32 from util
.util
import (
36 logging
.basicConfig(level
=logging
.DEBUG
,
37 format
='(%(threadName)-10s) %(name)-8s :: %(message)s',
41 log
= logging
.getLogger("main")
44 parser
= argparse
.ArgumentParser()
46 "--ping-manager-port",
49 help="port number for ping")
51 arguments
= parser
.parse_args()
54 log
.debug("setup application")
55 ping_instance
= Ping()
56 ping_application_arguments
= {'ping_instance': ping_instance
}
57 ping_application
= tornado
.web
.Application([
58 (r
"/api/v1/ping/stats", PingStatsHandler
, ping_application_arguments
),
59 (r
"/api/v1/ping/adminstatus/([a-z]+)", PingAdminStatusHandler
, ping_application_arguments
),
60 (r
"/api/v1/ping/server/?([0-9a-z\.]*)", PingServerHandler
, ping_application_arguments
),
61 (r
"/api/v1/ping/rate/?([0-9]*)", PingRateHandler
, ping_application_arguments
),
62 (r
"/version", VersionHandler
, ping_application_arguments
)
64 ping_server
= tornado
.httpserver
.HTTPServer(
67 # setup SIGINT handler
68 log
.debug("setup SIGINT handler")
69 def signal_handler(signal
, frame
):
70 print("") # print newline to clear user input
77 signal
.signal(signal
.SIGINT
, signal_handler
)
82 ping_server
.listen(arguments
.ping_manager_port
)
84 print("port %s is already is use, exiting" % arguments
.ping_manager_port
)
87 tornado
.ioloop
.IOLoop
.instance().start()
89 if __name__
== "__main__":