From 71890ac81b85b7be7b20f4568183b8d609ea0406 Mon Sep 17 00:00:00 2001 From: thxCode Date: Thu, 15 Oct 2026 13:15:12 +0800 Subject: [PATCH] build(llm-router): allow always-disagg deciders in llm-d-router observer Add always-disagg-pd-decider and always-disagg-multimodal-decider to the observer endpoint allowlist and coverage test in pack/llm-router/patches/llm-d/0001-observer-endpoints-and-dispatch.patch so the read-only /observer/endpoints route stays open on SGLang and EPD disaggregation profiles. Signed-off-by: thxCode --- .../patches/llm-d/0001-observer-endpoints-and-dispatch.patch | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pack/llm-router/patches/llm-d/0001-observer-endpoints-and-dispatch.patch b/pack/llm-router/patches/llm-d/0001-observer-endpoints-and-dispatch.patch index ca71d2bf0..79ec8022f 100644 --- a/pack/llm-router/patches/llm-d/0001-observer-endpoints-and-dispatch.patch +++ b/pack/llm-router/patches/llm-d/0001-observer-endpoints-and-dispatch.patch @@ -768,7 +768,7 @@ new file mode 100644 index 00000000..b6db1667 --- /dev/null +++ b/pkg/epp/observer/endpoints.go -@@ -0,0 +1,261 @@ +@@ -0,0 +1,262 @@ +// Copyright 2026 The Kubernetes Authors. +// SPDX-License-Identifier: Apache-2.0 + @@ -838,6 +838,7 @@ index 00000000..b6db1667 + "core-metrics-extractor", "approx-prefix-cache-producer", + "precise-prefix-cache-producer", "token-producer", "endpoint-notification-source", + "prefix-based-pd-decider", "disagg-profile-handler", "single-profile-handler", ++ "always-disagg-pd-decider", "always-disagg-multimodal-decider", + "openai-parser", "anthropic-parser", "vllmhttp-parser", "passthrough-parser", + "fcfs-ordering-policy", "global-strict-fairness-policy", + "static-usage-limit-policy-type", "utilization-detector": @@ -1187,7 +1188,7 @@ index 00000000..45d030eb + want bool + }{ + {name: "missing", want: false}, {name: "operator default", types: []string{"single-profile-handler", "label-selector-filter", "queue-scorer", "kv-cache-utilization-scorer", "max-score-picker", "prefix-cache-scorer", "metrics-data-source", "core-metrics-extractor", "approx-prefix-cache-producer"}, want: true}, -+ {name: "operator disaggregation", types: []string{"disagg-profile-handler", "prefix-based-pd-decider", "precise-prefix-cache-producer", "token-producer", "endpoint-notification-source"}, want: true}, ++ {name: "operator disaggregation", types: []string{"disagg-profile-handler", "prefix-based-pd-decider", "always-disagg-pd-decider", "always-disagg-multimodal-decider", "precise-prefix-cache-producer", "token-producer", "endpoint-notification-source"}, want: true}, + {name: "unknown plugin", types: []string{"single-profile-handler", "retains-private-candidates"}, want: false}, + } { + t.Run(tt.name, func(t *testing.T) {