Skip to content

feat(operator): add spec.endpoints.requestTimeout to PassthroughModel - #248

Open
dcmcand wants to merge 1 commit into
mainfrom
feat/209-passthrough-request-timeout
Open

dcmcand wants to merge 1 commit into
mainfrom
feat/209-passthrough-request-timeout

Conversation

@dcmcand

@dcmcand dcmcand commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

Closes #209

Change

  • API: PassthroughEndpoints.RequestTimeout (spec.endpoints.requestTimeout), optional, default 120s, same Gateway API duration pattern as LLMModel's field.
  • Reconciler: buildPassthroughRoute resolves the field, falling back to the new DefaultPassthroughRequestTimeout (120s) for CRs created before the field existed. The resolved value goes on both the declared-model rule and the catch-all rule, on both endpoints.
  • CRD: regenerated, then copied to charts/nebari-llm-serving/crds/passthroughmodel-crd.yaml.
  • Docs: a new row in the PassthroughModel spec.endpoints reference, and the self-hosted trade-offs bullet now points at the field.

The default stays 120s, as the issue recommends: existing PassthroughModels render identical routes after upgrading, and hosted providers keep a tight bound on hung requests.

Verification

  • New table-driven TestPassthroughRoutesRequestTimeout checks every rule on both routes, unset and set. Mutation check: hard-coding the catch-all rule back to "120s" fails the "set" case on external route rule 1 and internal route rule 1.
  • make test passes. golangci-lint reports nothing in the touched files (main has the same 51 pre-existing findings under the local 2.12.2).
  • Changing the field re-renders the routes on the next reconcile: the controller does a full Update of the generated spec (unstructured_apply.go:15-28).
  • Docs tests 31/31, docs build passes.

Not done: no live gateway test. Plain-Helm users need to apply the updated CRD before they can set the field (see "Upgrade the pack's CRDs with plain Helm"); Argo CD applies it on sync.

Every PassthroughModel route rule had a hard-coded 120s request timeout,
which cuts off long or slow generations from self-hosted servers, and
the operator overwrote any hand patch on the next reconcile.

Add an optional requestTimeout field (default 120s, same validation
pattern as LLMModel's) that sets timeouts.request on the declared-model
and catch-all rules of both endpoints. DefaultPassthroughRequestTimeout
covers objects that never went through API defaulting. Regenerate the
CRD, copy it into the chart, and document the field in the
configuration reference and the self-hosted guide.
@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown

📄 Docs preview for feat/209-passthrough-request-timeout:
https://feat-209-passthrough-request.llm-serving-pack.pages.dev

@dcmcand
dcmcand requested a review from jbouder November 9, 2026 12:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PassthroughModel routes have a hard-coded 120s request timeout that cannot be changed

2 participants