Пример #1
0
def start_docker(slug):
    if is_linux():
        local_ip = settings.DOCKER_LINUX_IP
    else:
        local_ip = socket.gethostbyname(socket.gethostname())

    command = "{} {} 1 2 {}".format(local_ip, settings.CONSOLE_SERVER_PORT,
                                    str(logging.root.level))
    docker_client = DockerClient()
    folder = Folder(slug)
    copy_tree(folder.verification_folder_path(),
              folder.container_verification_folder_path())
    docker_container = docker_client.run(
        slug,
        command,
        volumes={
            '/opt/mission/src': folder.compiled_referee_folder_path(),
            '/opt/mission/envs': folder.compiled_envs_folder_path()
        })
    for line in docker_container.logs(stream=True, logs=True):
        try:
            logging.info(line)
        except Exception as e:
            logging.error(e, exc_info=True)
            pass
Пример #2
0
def start_docker(slug, ref_extra_volume=None):
    command = "{} {} 1 2 {}".format(NAME_CLI_INTERFACE, conf.console_server_port, str(conf.log_level))
    client = DockerClient()
    folder = Folder(slug)

    logging.info('Verification: {}'.format(folder.verification_folder_path()))

    copy_tree(folder.verification_folder_path(), folder.container_verification_folder_path())
    for root, dirs, files in os.walk(folder.container_verification_folder_path()):
        for momo in dirs:
            os.chmod(os.path.join(root, momo), 0o777)
        for momo in files:
            os.chmod(os.path.join(root, momo), 0o777)

    volumes={
            tmp_folder(folder.compiled_referee_folder_path()): {
                    'bind': '/opt/mission/src',
                    'mode': 'rw'
                },
            tmp_folder(folder.compiled_envs_folder_path()): {
                    'bind': '/opt/mission/envs',
                    'mode': 'rw'
                }
        }

    if ref_extra_volume is not None:
        volumes.update(ref_extra_volume)

    return client.run(slug, command, 
        volumes=volumes,
        network_mode=NAME_CLI_NETWORK,
        name='mission__' + slug,
        detach=True)
Пример #3
0
def rebuild_mission(slug):
    folder = Folder(slug)
    docker = DockerClient()
    verification_folder_path = folder.container_verification_folder_path()
    logging.info("Build docker image %s from %s", folder.image_name(), verification_folder_path)
    if os.path.exists(verification_folder_path):
        shutil.rmtree(verification_folder_path)

    copy_tree(folder.verification_folder_path(), verification_folder_path)
    docker.build(name_image=folder.image_name(), path=verification_folder_path)
Пример #4
0
def rebuild_mission(slug):
    folder = Folder(slug)
    docker = DockerClient()
    verification_folder_path = folder.container_verification_folder_path()
    logging.info("Build docker image %s from %s", folder.image_name(),
                 verification_folder_path)
    if os.path.exists(verification_folder_path):
        shutil.rmtree(verification_folder_path)

    copy_tree(folder.verification_folder_path(), verification_folder_path)
    docker.build(name_image=folder.image_name(), path=verification_folder_path)
Пример #5
0
def rebuild_cli_interface(slug):
    folder = Folder(slug)
    build_folder = folder.interface_cli_folder_path()
    img_name = folder.image_name_cli()

    logging.info("[interface] Build docker image %s from %s", img_name,
                 build_folder)

    docker = DockerClient()
    try:
        docker.build(name_image=img_name, path=tmp_folder(build_folder))
    except BuildError as e:
        logging.warning('Build Error:')
        for item in e.build_log:
            logging.warning(item.get('stream'))
        logging.warning(list(e.build_log))
        logging.warning(e.msg)
Пример #6
0
def start_docker(slug):
    if is_linux():
        local_ip = settings.DOCKER_LINUX_IP
    else:
        local_ip = socket.gethostbyname(socket.gethostname())

    command = "{} {} 1 2 {}".format(local_ip, settings.CONSOLE_SERVER_PORT, str(logging.root.level))
    docker_client = DockerClient()
    folder = Folder(slug)
    copy_tree(folder.verification_folder_path(), folder.container_verification_folder_path())
    docker_container = docker_client.run(slug, command, volumes={
        '/opt/mission/src': folder.compiled_referee_folder_path(),
        '/opt/mission/envs': folder.compiled_envs_folder_path()
    })
    for line in docker_container.logs(stream=True, logs=True):
        try:
            logging.info(line)
        except Exception as e:
            logging.error(e, exc_info=True)
            pass
Пример #7
0
def can_check_mission(slug):
    folder = Folder(slug)
    docker = DockerClient()

    try:
        docker.images.get(folder.image_name())
        docker.images.get(folder.image_name_cli())
    except ImageNotFound:
        return False
    else:
        return True
Пример #8
0
def rebuild_mission(slug):
    cleanup_containers()
    folder = Folder(slug)
    docker = DockerClient()
    verification_folder_path = folder.container_verification_folder_path()
    logging.info("[mission] Build docker image %s from %s", folder.image_name(), verification_folder_path)
    if os.path.exists(verification_folder_path):
        shutil.rmtree(verification_folder_path)

    copy_tree(folder.verification_folder_path(), verification_folder_path)

    try:
        docker.build(
            name_image=folder.image_name(),
            path=verification_folder_path)
    except BuildError as e:
        logging.warning('Build Error:')
        for item in e.build_log:
            logging.warning(item.get('stream'))
        logging.warning(list(e.build_log))
        logging.warning(e.msg)
        return
    rebuild_cli_interface(slug)