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)
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)
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})