diff options
Diffstat (limited to 'events/tools/eventsdash.py')
| -rw-r--r-- | events/tools/eventsdash.py | 74 | 
1 files changed, 74 insertions, 0 deletions
diff --git a/events/tools/eventsdash.py b/events/tools/eventsdash.py new file mode 100644 index 00000000000..47fc56dda6e --- /dev/null +++ b/events/tools/eventsdash.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +#  Copyright (c) 2016 Red Hat, Inc. <http://www.redhat.com> +#  This file is part of GlusterFS. +# +#  This file is licensed to you under your choice of the GNU Lesser +#  General Public License, version 3 or any later version (LGPLv3 or +#  later), or the GNU General Public License, version 2 (GPLv2), in all +#  cases as published by the Free Software Foundation. +# + +from argparse import ArgumentParser, RawDescriptionHelpFormatter +import logging +from datetime import datetime + +from flask import Flask, request + +app = Flask(__name__) +app.logger.disabled = True +log = logging.getLogger('werkzeug') +log.disabled = True + + +def human_time(ts): +    return datetime.fromtimestamp(float(ts)).strftime("%Y-%m-%d %H:%M:%S") + + +@app.route("/") +def home(): +    return "OK" + + +@app.route("/listen", methods=["POST"]) +def listen(): +    data = request.json +    if data is None: +        return "OK" + +    message = [] +    for k, v in data.get("message", {}).items(): +        message.append("{0}={1}".format(k, v)) + +    print ("{0:20s} {1:20s} {2:36} {3}".format( +        human_time(data.get("ts")), +        data.get("event"), +        data.get("nodeid"), +        " ".join(message))) + +    return "OK" + + +def main(): +    parser = ArgumentParser(formatter_class=RawDescriptionHelpFormatter, +                            description=__doc__) +    parser.add_argument("--port", type=int, help="Port", default=9000) +    parser.add_argument("--debug", help="Run Server in debug mode", +                        action="store_true") +    args = parser.parse_args() + +    print ("{0:20s} {1:20s} {2:36} {3}".format( +        "TIMESTAMP", "EVENT", "NODE ID", "MESSAGE" +    )) +    print ("{0:20s} {1:20s} {2:36} {3}".format( +        "-"*20, "-"*20, "-"*36, "-"*20 +    )) +    if args.debug: +        app.debug = True + +    app.run(host="0.0.0.0", port=args.port) + + +if __name__ == "__main__": +    main()  | 
