Example #1
0
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)
Example #2
0
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)