def main(): base_url = "http://{}/api/{}/".format(API_HOST, LAB_ID) definition_url = base_url + 'definition' activate_url = base_url + 'activate' try: topo_def = requests.get(definition_url).json() topo = Topology.create(topo_def) logger.info("Running topology") topo.run() logger.info("Running rest server") lockkeeper_app = init_app(topo.switches) lockkeeper_proc = run_process( lambda: lockkeeper_app.run('0.0.0.0', 5001, threaded=True)) except Exception as ex: requests.post(activate_url, json={'error': traceback.format_exc()}) raise ex requests.post(activate_url, json={}) def teardown(): logger.info("Terminating...") topo.destroy() lockkeeper_proc.terminate() lockkeeper_proc.join() loop_forever(teardown)
def main(): server_th = run_thread(lambda: app.run(host='0.0.0.0', port=8288)) def teardown(): logger.info('Terminating...') for lab in list(labs.values()): try: lab.destroy() except Exception as ex: logger.exception(ex) server_th.terminate() loop_forever(teardown)