コード例 #1
0
async def list_containers(name):
    # hosts = Host.select()
    if not os.path.exists(lab_path(name)):
        abort(404)

    containers = []

    show_containers = 'show_containers' in request.args and request.args[
        'show_containers'] == 'True'

    if show_containers:
        try:
            lab = Lab.get(Lab.name == name)
            containers = lab.list_containers()
        except peewee.DoesNotExist:
            pass

    stats = Messenger.get_stats(name)
    if stats and 'start_time' in stats:
        stats['uptime'] = int(time.time() - stats['start_time'])

    return await render_template('containers_list.html',
                                 containers=containers,
                                 lab=name,
                                 stats=stats,
                                 show_containers=show_containers)
コード例 #2
0
async def stop_lab_api():

    data = await request.json

    if data is None or 'name' not in data:
        return abort(400)

    name = data.get('name')

    try:
        lab = Lab.get(Lab.name == name)
    except peewee.DoesNotExist:
        abort(404)

    try:
        args = []
        if lab.runtime == 'cluster':
            args.extend((lab.get_host_map(), Host.get_all_configs()))

        stop_lab(lab_path(name),
                 prefix(name),
                 *args,
                 runtime=lab.runtime,
                 remove=True)
        lab.delete_instance()
        msg_cache.delete(name)
        return 'OK', 200

    except FileNotFoundError:
        return abort(404)
コード例 #3
0
async def get_lab_containers():
    name = request.args.get('name')
    if name is None:
        return abort(400)

    if not os.path.exists(lab_path(name)):
        abort(404)

    try:
        lab = Lab.get(Lab.name == name)
        containers = lab.list_containers()
    except peewee.DoesNotExist:
        containers = []

    prefix_len = len(prefix(name))

    return jsonify({c.name[prefix_len:]: c.short_id for c in containers})