e5cb2569a6
TrivialFix: Similar [1] in Kolla project As we known, Exceptions are raised by the sys.exit() function. When they are not handled, no stack traceback is printed in the Python interpreter. Therefore, when using sys.exit(main()) instead of main() may be more readable and reasonable. [1] https://review.openstack.org/#/c/349353/ Change-Id: Ied52a7631da82a72f0dcf2fc9ed81840d24041d9
62 lines
1.9 KiB
Python
Executable File
62 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# Copyright 2016 Hewlett Packard Enterprise Development Company LP
|
|
#
|
|
# 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.
|
|
|
|
"""
|
|
A simple mock UDP server to receive monasca-statsd traffic
|
|
Log to stdout or to a file.
|
|
"""
|
|
|
|
from argparse import ArgumentParser
|
|
import sys
|
|
from time import gmtime
|
|
from time import strftime
|
|
import SocketServer
|
|
|
|
|
|
def parse_args():
|
|
ap = ArgumentParser()
|
|
ap.add_argument('--addr', default='127.0.0.1',
|
|
help='Listen IP addr (default: 127.0.0.1)')
|
|
ap.add_argument('--port', default=8125, type=int,
|
|
help='UDP port (default: 8125)')
|
|
ap.add_argument('--output-fname', default=None,
|
|
help='Output file (default: stdout)')
|
|
return ap.parse_args()
|
|
|
|
|
|
class StatsdMessageHandler(SocketServer.BaseRequestHandler):
|
|
|
|
def handle(self):
|
|
data = self.request[0].strip()
|
|
tstamp = strftime("%Y-%m-%dT%H:%M:%S", gmtime())
|
|
if self._output_fd:
|
|
self._output_fd.write("%s %s\n" % (tstamp, data))
|
|
else:
|
|
print("%s %s" % (tstamp, data))
|
|
|
|
|
|
def main():
|
|
args = parse_args()
|
|
fd = open(args.output_fname, 'a') if args.output_fname else None
|
|
StatsdMessageHandler._output_fd = fd
|
|
server = SocketServer.UDPServer(
|
|
(args.addr, args.port),
|
|
StatsdMessageHandler,
|
|
)
|
|
server.serve_forever()
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|