You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
smart-top/src/api/index.py

54 lines
1.0 KiB
Python

from flask import Flask,request
import sys
import os
import json
import re
import monitor
PARAMS = {'context':''}
if len(sys.argv) > 1:
N = len(sys.argv)
for i in range(1,N):
value = None
if sys.argv[i].startswith('--'):
key = sys.argv[i].replace('-','')
if i + 1 < N:
value = sys.argv[i + 1] = sys.argv[i+1].strip()
if key and value:
PARAMS[key] = value
i += 2
app = Flask(__name__)
f = open(PARAMS['path'])
CONFIG = json.loads(f.read())
HANDLERS= {}
for key in CONFIG :
className = CONFIG[key]['class']
ref = "".join(["monitor.",className,"()"])
ref = eval(ref)
HANDLERS[key] = {"class":ref,"config":CONFIG[key]["config"]}
f.close()
@app.route('/get/<id>')
def procs(id):
if id in HANDLERS:
handler = HANDLERS[id]["class"]
conf = HANDLERS[id]["config"]
r = {}
for key in conf:
handler.init(conf[key])
r[key] = handler.composite()
return json.dumps(r)
else:
return "[]"
pass
if __name__== '__main__':
app.run(host='0.0.0.0',debug=True,threaded=True)