def container_name(): name = "{}-{}".format(CONTAINER_NAME, int(time.time() * 1000)) yield name if not CLEAR: return from ebonite.ext.docker import DockerRunner, DockerBuilder, DockerContainer, DockerImage, DockerEnv DockerRunner().remove_instance(DockerContainer(name), DockerEnv(), force=True) DockerBuilder().delete_image(DockerImage(name), DockerEnv())
def test_docker_builder__build__ok(docker_builder: DockerBuilder, docker_env, request): docker_env: DockerEnv = request.getfixturevalue(docker_env) image = DockerImage(IMAGE_NAME, registry=docker_env.registry) docker_builder.build_image(BuildableMock(), image, docker_env, force_overwrite=True) assert image.image_id is not None with docker_env.daemon.client() as c: assert image.exists(c) with get_image_output(image, docker_env) as output: assert output == SECRET
def factory(docker_env: DockerEnv): envs.append(docker_env) with docker_env.daemon.client() as c: image = c.images.pull( 'hello-world:latest') # pull hello-world image if isinstance(image, list): image = image[0] docker_image = DockerImage(f'{HELLO_WORLD_NAME}_{len(envs)}', registry=docker_env.registry) image.tag(docker_image.uri ) # tag image as *registry*/ebonite-hello-world if isinstance(docker_env.registry, RemoteRegistry): c.images.push(docker_image.uri) # push tag to repository c.images.remove(docker_image.uri) # remove from local registry return Image('hello-world', BuildableMock(), 0, docker_image)
def test_docker_builder__create__ok(docker_builder: DockerBuilder, dockerenv_local): args = {'name': 'a', 'tag': 'b', 'repository': 'c'} image = docker_builder.create_image(environment=dockerenv_local, **args) assert isinstance(image, DockerImage) assert image == DockerImage(**args)
def test_docker_builder__delete__extra_args(docker_builder: DockerBuilder, dockerenv_local): with pytest.raises(TypeError): docker_builder.delete_image(DockerImage(IMAGE_NAME), dockerenv_local, kekek='a')
def test_docker_builder__exists__not(docker_builder: DockerBuilder, docker_env, request): docker_env: DockerEnv = request.getfixturevalue(docker_env) image = DockerImage('this__image__is__impossible', 'tag__also__impossible') assert not docker_builder.image_exists(image, docker_env)
def test_docker_builder__build__extra_args(docker_builder: DockerBuilder): with pytest.raises(TypeError): docker_builder.build_image(BuildableMock(), DockerImage(IMAGE_NAME), kekek='a')
def test_run_local_fail_inside_container(runner, dockerenv_remote, detach, runner_test_images): img = DockerImage(BROKEN_IMAGE_NAME, repository=REPOSITORY_NAME, registry=dockerenv_remote.registry) with pytest.raises(DockerRunnerException): _check_runner(runner, img, dockerenv_remote, detach=detach, rm=True)
def test_run_local_image_name_that_will_never_exist(runner, dockerenv_local): img = DockerImage('ebonite_image_name_that_will_never_exist') with pytest.raises(HTTPError): _check_runner(runner, img, dockerenv_local)
def test_run_remote_registry(runner, dockerenv_remote, runner_test_images): img = DockerImage(IMAGE_NAME, repository=REPOSITORY_NAME, registry=dockerenv_remote.registry) _check_runner(runner, img, dockerenv_remote)
def test_run_default_registry(runner, dockerenv_local, runner_test_images): img = DockerImage(IMAGE_NAME) _check_runner(runner, img, dockerenv_local)