import tornado.ioloop import tornado.web import json import argparse from o_manager import OManager ap = argparse.ArgumentParser() ap.add_argument("-s", "--session_folder", required=True, help="path to the session folder") args = vars(ap.parse_args()) session_folder = args["session_folder"] om = OManager(session_folder) class MainHandler(tornado.web.RequestHandler): def get(self): buf = f"ops len: {len(om.ops)}
\n" if len(om.ops): for idx, op in enumerate(om.ops): buf += f"op #{idx}, name: {op.name}
\n" buf += f"status: {op.status}
\n" buf += f"pid: {op.PID}
\n" buf += "log:
\n" buf += "
\n"
                buf += op.get_log()
                buf += f"\nSpeed: {op.get_latest_speed()}\n"
                buf += "\nio_stat\n"
                buf += "\n".join(op.get_io_stat().splitlines()[-5])
                buf += "\nping_stat\n"
                buf += "\n".join(op.get_ping_stat().splitlines()[-5])
                buf += "\n
\n" self.write(buf) class ConfigsHandeler(tornado.web.RequestHandler): def get(self): cfgs = json.loads(open("profiles.json", "r").read()) buf = "Select one configuration to create.
\n" for idx, cfg in enumerate(cfgs): buf += f"{cfg['name']}
\n" self.write(buf) class CreateInstantceHandler(tornado.web.RequestHandler): def get(self): idx = self.get_query_argument("i", None) if idx != None: idx = int(idx) cfgs = json.loads(open("profiles.json", "r").read()) cfg = cfgs[idx] om.new_op(cfg["cfg_fp"], cfg["name"], additional_cfg=cfg["additional_cfg"]) self.write("create sucess!") else: self.write("need idx") class StartInstatnceHandler(tornado.web.RequestHandler): def get(self): idx = self.get_query_argument("i", None) if idx != None: om.start_op(int(idx)) self.write("start sucess!") else: self.write("need idx") class StopAll(tornado.web.RequestHandler): def get(self): om.stop_all() def make_app(): return tornado.web.Application([ (r"/", MainHandler), (r"/select", ConfigsHandeler), (r"/create", CreateInstantceHandler), (r"/start", StartInstatnceHandler), (r"/stop", StopAll) ]) if __name__ == "__main__": app = make_app() app.listen(8000) tornado.ioloop.IOLoop.current().start()