async def nginx_job_async(
    nmrc_path: Path, loop: asyncio.AbstractEventLoop
) -> AsyncIterator[Tuple[str, str]]:
    async with api_get(path=nmrc_path) as client:
        secret = uuid4()
        command = (
            f"bash -c \"echo -n '{secret}' > /usr/share/nginx/html/secret.txt; "
            f"timeout 15m /usr/sbin/nginx -g 'daemon off;'\""
        )
        container = Container(
            image=RemoteImage.new_external_image(name="nginx", tag="latest"),
            command=command,
            resources=Resources(20, 0.1, None, None, True, None, None),
        )

        job = await client.jobs.run(
            container, is_preemptible=False, description="test NGINX job"
        )
        try:
            for i in range(60):
                status = await client.jobs.status(job.id)
                if status.status == JobStatus.RUNNING:
                    break
                await asyncio.sleep(1)
            else:
                raise AssertionError("Cannot start NGINX job")
            yield job.id, str(secret)
        finally:
            with suppress(Exception):
                await client.jobs.kill(job.id)
Exemplo n.º 2
0
 def test_quiet_save(self, capfd: Any) -> None:
     formatter = DockerImageProgress.create(tty=True, quiet=True)
     formatter.save(
         ImageProgressSave("job-id",
                           RemoteImage.new_external_image(name="output")))
     formatter.close()
     out, err = capfd.readouterr()
     assert err == ""
     assert out == ""
Exemplo n.º 3
0
 def test_quiet_commit_started(self, capfd: Any) -> None:
     formatter = DockerImageProgress.create(tty=True, quiet=True)
     formatter.commit_started(
         ImageCommitStarted(
             job_id="job-id",
             target_image=RemoteImage.new_external_image("img")))
     formatter.close()
     out, err = capfd.readouterr()
     assert err == ""
     assert out == ""
Exemplo n.º 4
0
 def test_quiet_push(self, capfd: Any) -> None:
     formatter = DockerImageProgress.create(tty=True, quiet=True)
     formatter.push(
         ImageProgressPush(LocalImage("output"),
                           RemoteImage.new_external_image(name="input")))
     formatter.step(ImageProgressStep("message1", "layer1"))
     formatter.close()
     out, err = capfd.readouterr()
     assert err == ""
     assert out == ""
Exemplo n.º 5
0
 def test_tty_commit_started(self, capfd: Any,
                             click_tty_emulation: Any) -> None:
     formatter = DockerImageProgress.create(tty=True, quiet=False)
     formatter.commit_started(
         ImageCommitStarted(
             job_id="job-id",
             target_image=RemoteImage.new_external_image(name="img")))
     formatter.close()
     out, err = capfd.readouterr()
     assert err == ""
     assert "img" in out
     assert CSI in out
Exemplo n.º 6
0
 def test_parse_remote__registry_has_port__image_in_other_repo(
         self) -> None:
     my_parser = _ImageNameParser(
         default_user="******",
         default_cluster="test-cluster",
         registry_url=URL("http://localhost:5000"),
     )
     image = "example.com:9999/bob/library/ubuntu:v10.04"
     parsed = my_parser.parse_remote(image)
     # NOTE: "owner" is parsed only for images in neuromation registry
     assert parsed == RemoteImage.new_external_image(
         name="bob/library/ubuntu",
         tag="v10.04",
         registry="example.com:9999",
     )
async def test_parse_remote_public(make_client: _MakeClient) -> None:
    async with make_client("https://api.localhost.localdomain",
                           registry_url="http://localhost:5000") as client:
        result = client.parse.remote_image("ubuntu:latest")
    assert result == RemoteImage.new_external_image(name="ubuntu",
                                                    tag="latest")
Exemplo n.º 8
0
 def test_as_str_not_in_neuro_registry_tag_yes(self) -> None:
     image = RemoteImage.new_external_image(name="ubuntu", tag="v10.04")
     assert str(image) == "ubuntu:v10.04"
     assert _as_repo_str(image) == "ubuntu:v10.04"