def test_properties(
        self,
        port,
        request_path,
        health_path,
        repository,
        tag,
        sha,
        env_vars,
    ):
        hypothesis.assume(tag or sha)

        docker_image = DockerImage(
            port=port,
            request_path=request_path,
            health_path=health_path,
            repository=repository,
            tag=tag,
            sha=sha,
            env_vars=env_vars,
        )

        # translate expected values
        request_path = arg_handler.ensure_starts_with_slash(request_path)
        health_path = arg_handler.ensure_starts_with_slash(health_path)
        if isinstance(env_vars, list):
            env_vars = {name: os.environ[name] for name in env_vars}

        assert docker_image.port == port
        assert docker_image.request_path == request_path
        assert docker_image.health_path == health_path
        assert docker_image.repository == repository
        assert docker_image.tag == tag
        assert docker_image.sha == sha
        assert docker_image.env_vars == (env_vars or None)
Exemple #2
0
    def _create_json(
        cls,
        conn,
        workspace,
        path,
        description=None,
        public_within_org=None,
        visibility=None,
    ):
        path = arg_handler.ensure_starts_with_slash(path)
        (
            visibility,
            public_within_org,
        ) = _visibility._Visibility._translate_public_within_org(
            visibility, public_within_org)

        data = {
            "path": path,
            "description": description,
            "custom_permission": {
                "collaborator_type": visibility._collaborator_type_str
            },
            "visibility": "ORG_SCOPED_PUBLIC" if public_within_org else
            "PRIVATE",  # TODO: raise if workspace is personal
            "resource_visibility": visibility._visibility_str,
        }
        url = "{}://{}/api/v1/deployment/workspace/{}/endpoints".format(
            conn.scheme, conn.socket, workspace)
        response = _utils.make_request("POST", url, conn, json=data)
        _utils.raise_for_http_error(response)
        return response.json()
    def test_from_proto(
        self,
        port,
        request_path,
        health_path,
        repository,
        tag,
        sha,
        env_vars,
    ):
        hypothesis.assume(tag or sha)

        request_path = arg_handler.ensure_starts_with_slash(request_path)
        health_path = arg_handler.ensure_starts_with_slash(health_path)

        msg = RegistryService_pb2.ModelVersion()
        msg.docker_metadata.request_port = port
        msg.docker_metadata.request_path = request_path
        msg.docker_metadata.health_path = health_path
        msg.environment.docker.repository = repository
        if tag is not None:
            msg.environment.docker.tag = tag
        if sha is not None:
            msg.environment.docker.sha = sha
        if env_vars is not None:
            msg.environment.environment_variables.extend(
                [
                    Environment_pb2.EnvironmentVariablesBlob(
                        name=name,
                        value=value
                    )
                    for name, value
                    in env_vars.items()
                ]
            )

        docker_image = DockerImage._from_model_ver_proto(msg)

        assert docker_image.port == port
        assert docker_image.request_path == request_path
        assert docker_image.health_path == health_path
        assert docker_image.repository == repository
        assert docker_image.tag == tag
        assert docker_image.sha == sha
        assert docker_image.env_vars == (env_vars or None)
 def __init__(
     self,
     port,
     request_path,
     health_path,
     repository,
     tag=None,
     sha=None,
     env_vars=None,
 ):
     self._port = int(port)
     self._request_path = arg_handler.ensure_starts_with_slash(request_path)
     self._health_path = arg_handler.ensure_starts_with_slash(health_path)
     self._docker_env = environment.Docker(
         repository=repository,
         tag=tag,
         sha=sha,
         env_vars=env_vars,
     )
    def test_as_proto(
        self,
        port,
        request_path,
        health_path,
        repository,
        tag,
        sha,
        env_vars,
    ):
        hypothesis.assume(tag or sha)

        docker_image = DockerImage(
            port=port,
            request_path=request_path,
            health_path=health_path,
            repository=repository,
            tag=tag,
            sha=sha,
            env_vars=env_vars,
        )
        msg = docker_image._as_model_ver_proto()

        # translate expected values
        request_path = arg_handler.ensure_starts_with_slash(request_path)
        health_path = arg_handler.ensure_starts_with_slash(health_path)
        if isinstance(env_vars, list):
            env_vars = {name: os.environ[name] for name in env_vars}

        assert msg.docker_metadata.request_port == port
        assert msg.docker_metadata.request_path == request_path
        assert msg.docker_metadata.health_path == health_path
        assert msg.environment.docker.repository == repository
        assert msg.environment.docker.tag == (tag or "")
        assert msg.environment.docker.sha == (sha or "")
        assert {
            var.name: var.value for var in msg.environment.environment_variables
        } == (env_vars or {})
    def test_without_slash(self, path):
        hypothesis.assume(not path.startswith("/"))

        expected_path = "/" + path
        assert arg_handler.ensure_starts_with_slash(path) == expected_path
    def test_with_slash(self, path):
        path = "/" + path

        assert arg_handler.ensure_starts_with_slash(path) == path