Fix listener defaults to avoid mutating config dicts

Use dict merge ({**defaults, **listener}) instead of setdefault() to
provide address/timeout defaults for the Envoy template without
mutating the original listener dicts. This prevents extra fields
(timeout: 30s) from leaking into the rendered plano config YAML.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Adil Hafeez 2026-02-15 10:45:09 -08:00
parent 2a10517144
commit 7a0b775276
No known key found for this signature in database
GPG key ID: 9B18EF7691369645

View file

@ -147,10 +147,6 @@ def convert_legacy_listeners(
model_provider_set = False
for listener in listeners:
# Ensure address and timeout defaults for all listeners
listener.setdefault("address", "0.0.0.0")
listener.setdefault("timeout", "30s")
if listener.get("type") == "model":
if model_provider_set:
raise ValueError(
@ -158,9 +154,10 @@ def convert_legacy_listeners(
)
listener["model_providers"] = model_providers or []
model_provider_set = True
llm_gateway_listener = listener
# Merge user listener values into defaults for the Envoy template
llm_gateway_listener = {**llm_gateway_listener, **listener}
elif listener.get("type") == "prompt":
prompt_gateway_listener = listener
prompt_gateway_listener = {**prompt_gateway_listener, **listener}
if not model_provider_set:
listeners.append(llm_gateway_listener)