Skip to content

Commit 8228ec8

Browse files
clarify messaging, extract optional fields into constant
1 parent a9b2fc9 commit 8228ec8

File tree

2 files changed

+16
-27
lines changed

2 files changed

+16
-27
lines changed

truss/base/truss_config.py

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,13 @@ class TrussConfig(custom_types.ConfigModel):
616616
apply_library_patches: bool = True
617617
spec_version: str = "2.0"
618618

619+
DOCKER_SERVER_OPTIONAL_FIELDS: ClassVar[list[str]] = [
620+
"server_port",
621+
"predict_endpoint",
622+
"readiness_endpoint",
623+
"liveness_endpoint",
624+
]
625+
619626
class Config:
620627
protected_namespaces = () # Silence warnings about fields starting with `model_`.
621628

@@ -728,33 +735,22 @@ def _validate_docker_server(self) -> "TrussConfig":
728735
if is_grpc:
729736
if not has_docker_server:
730737
raise ValueError(
731-
"docker_server is required when transport kind is GRPC"
738+
"docker_server is required when transport kind is gRPC"
732739
)
733-
optional_fields = [
734-
"server_port",
735-
"predict_endpoint",
736-
"readiness_endpoint",
737-
"liveness_endpoint",
738-
]
739740
if any(
740741
getattr(self.docker_server, field) is not None
741-
for field in optional_fields
742+
for field in TrussConfig.DOCKER_SERVER_OPTIONAL_FIELDS
742743
):
743744
raise ValueError(
744-
"When transport kind is GRPC, docker_server should only have start_command defined"
745+
"When transport kind is gRPC, docker_server should only have start_command defined"
745746
)
746747
elif has_docker_server:
747-
optional_fields = [
748-
"server_port",
749-
"predict_endpoint",
750-
"readiness_endpoint",
751-
"liveness_endpoint",
752-
]
753748
if any(
754-
getattr(self.docker_server, field) is None for field in optional_fields
749+
getattr(self.docker_server, field) is None
750+
for field in TrussConfig.DOCKER_SERVER_OPTIONAL_FIELDS
755751
):
756752
raise ValueError(
757-
"When transport kind is not GRPC, docker_server must either be absent or have server_port, predict_endpoint, readiness_endpoint, and liveness_endpoint defined"
753+
"Please define server_port, predict_endpoint, readiness_endpoint, and liveness_endpoint for docker_server"
758754
)
759755

760756
return self

truss/tests/test_config.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -982,15 +982,13 @@ def test_supported_versions_are_sorted():
982982
@pytest.mark.parametrize(
983983
"transport_config",
984984
[
985-
# Valid GRPC config
986985
pytest.param(
987986
{
988987
"runtime": {"transport": {"kind": "grpc"}},
989988
"docker_server": {"start_command": "python main.py"},
990989
},
991990
id="valid-grpc-minimal",
992991
),
993-
# Valid HTTP config
994992
pytest.param(
995993
{
996994
"runtime": {"transport": {"kind": "http"}},
@@ -1004,7 +1002,6 @@ def test_supported_versions_are_sorted():
10041002
},
10051003
id="valid-http-full",
10061004
),
1007-
# Valid WebSocket config
10081005
pytest.param(
10091006
{
10101007
"runtime": {"transport": {"kind": "websocket"}},
@@ -1018,7 +1015,6 @@ def test_supported_versions_are_sorted():
10181015
},
10191016
id="valid-websocket-full",
10201017
),
1021-
# Valid HTTP with no docker_server
10221018
pytest.param(
10231019
{"runtime": {"transport": {"kind": "http"}}}, id="valid-http-no-docker"
10241020
),
@@ -1036,7 +1032,6 @@ def test_valid_transport_configurations(transport_config, tmp_path):
10361032
@pytest.mark.parametrize(
10371033
"invalid_config,expected_error",
10381034
[
1039-
# GRPC with additional fields
10401035
pytest.param(
10411036
{
10421037
"runtime": {"transport": {"kind": "grpc"}},
@@ -1046,22 +1041,20 @@ def test_valid_transport_configurations(transport_config, tmp_path):
10461041
"predict_endpoint": "/predict",
10471042
},
10481043
},
1049-
"When transport kind is GRPC, docker_server should only have start_command defined",
1044+
"When transport kind is gRPC, docker_server should only have start_command defined",
10501045
id="invalid-grpc-extra-fields",
10511046
),
1052-
# HTTP with missing fields
10531047
pytest.param(
10541048
{
10551049
"runtime": {"transport": {"kind": "http"}},
10561050
"docker_server": {"start_command": "./start.sh", "server_port": 8080},
10571051
},
1058-
"When transport kind is not GRPC, docker_server must either be absent or have server_port, predict_endpoint, readiness_endpoint, and liveness_endpoint defined",
1052+
"Please define server_port, predict_endpoint, readiness_endpoint, and liveness_endpoint for docker_server",
10591053
id="invalid-http-missing-fields",
10601054
),
1061-
# Missing docker_server with GRPC
10621055
pytest.param(
10631056
{"runtime": {"transport": {"kind": "grpc"}}},
1064-
"docker_server is required when transport kind is GRPC",
1057+
"docker_server is required when transport kind is gRPC",
10651058
id="invalid-grpc-missing-docker",
10661059
),
10671060
],

0 commit comments

Comments
 (0)