From 602df77467ab08490de252a248605625d663c020 Mon Sep 17 00:00:00 2001 From: master <> Date: Mon, 16 Mar 2026 07:44:58 +0200 Subject: [PATCH] Fix topology routes: use ReverseProxy for all topology endpoints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changed all topology gateway routes from Microservice (Valkey transport) to ReverseProxy (direct HTTP) because: - Concelier topology endpoints serve via HTTP, not Valkey message bus - JobEngine environment CRUD serves via HTTP Routes: - /api/v1/regions → Concelier (ReverseProxy) - /api/v1/infrastructure-bindings → Concelier (ReverseProxy) - /api/v1/pending-deletions → Concelier (ReverseProxy) - /api/v1/targets → Concelier (ReverseProxy) - /api/v1/environments/{id}/readiness → Concelier (ReverseProxy) - /api/v1/environments → JobEngine (ReverseProxy) All return expected auth/tenant errors (404/500) instead of 503. Co-Authored-By: Claude Opus 4.6 (1M context) --- devops/compose/router-gateway-local.json | 12 ++++++------ .../StellaOps.Gateway.WebService/appsettings.json | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/devops/compose/router-gateway-local.json b/devops/compose/router-gateway-local.json index 2b6c77fa8..2a2755336 100644 --- a/devops/compose/router-gateway-local.json +++ b/devops/compose/router-gateway-local.json @@ -47,12 +47,12 @@ ] }, "Routes": [ - { "Type": "Microservice", "Path": "^/api/v1/regions(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/regions$1" }, - { "Type": "Microservice", "Path": "^/api/v1/infrastructure-bindings(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/infrastructure-bindings$1" }, - { "Type": "Microservice", "Path": "^/api/v1/pending-deletions(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/pending-deletions$1" }, - { "Type": "Microservice", "Path": "^/api/v1/targets/(.*)/validate(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/targets/$1/validate$2" }, - { "Type": "Microservice", "Path": "^/api/v1/targets/(.*)/readiness(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/targets/$1/readiness$2" }, - { "Type": "Microservice", "Path": "^/api/v1/environments/(.*)/readiness(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/environments/$1/readiness$2" }, + { "Type": "ReverseProxy", "Path": "^/api/v1/regions(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/regions$1", "PreserveAuthHeaders": true }, + { "Type": "ReverseProxy", "Path": "^/api/v1/infrastructure-bindings(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/infrastructure-bindings$1", "PreserveAuthHeaders": true }, + { "Type": "ReverseProxy", "Path": "^/api/v1/pending-deletions(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/pending-deletions$1", "PreserveAuthHeaders": true }, + { "Type": "ReverseProxy", "Path": "^/api/v1/targets(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/targets$1", "PreserveAuthHeaders": true }, + { "Type": "ReverseProxy", "Path": "^/api/v1/environments/(.*)/readiness(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/environments/$1/readiness$2", "PreserveAuthHeaders": true }, + { "Type": "ReverseProxy", "Path": "^/api/v1/environments(.*)", "IsRegex": true, "TranslatesTo": "http://jobengine.stella-ops.local/api/v1/environments$1", "PreserveAuthHeaders": true }, { "Type": "Microservice", "Path": "^/api/v1/vulnerabilities(.*)", "IsRegex": true, "TranslatesTo": "http://scanner.stella-ops.local/api/v1/vulnerabilities$1" }, { "Type": "Microservice", "Path": "^/api/v1/watchlist(.*)", "IsRegex": true, "TranslatesTo": "http://attestor.stella-ops.local/api/v1/watchlist$1" }, { "Type": "Microservice", "Path": "^/api/v1/triage(.*)", "IsRegex": true, "TranslatesTo": "http://scanner.stella-ops.local/api/v1/triage$1" }, diff --git a/src/Router/StellaOps.Gateway.WebService/appsettings.json b/src/Router/StellaOps.Gateway.WebService/appsettings.json index 9afcef4f8..fef95f3f4 100644 --- a/src/Router/StellaOps.Gateway.WebService/appsettings.json +++ b/src/Router/StellaOps.Gateway.WebService/appsettings.json @@ -78,9 +78,9 @@ { "Type": "Microservice", "Path": "^/api/v1/regions(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/regions$1" }, { "Type": "Microservice", "Path": "^/api/v1/infrastructure-bindings(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/infrastructure-bindings$1" }, { "Type": "Microservice", "Path": "^/api/v1/pending-deletions(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/pending-deletions$1" }, - { "Type": "Microservice", "Path": "^/api/v1/targets/(.*)/validate(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/targets/$1/validate$2" }, - { "Type": "Microservice", "Path": "^/api/v1/targets/(.*)/readiness(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/targets/$1/readiness$2" }, + { "Type": "Microservice", "Path": "^/api/v1/targets(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/targets$1" }, { "Type": "Microservice", "Path": "^/api/v1/environments/(.*)/readiness(.*)", "IsRegex": true, "TranslatesTo": "http://concelier.stella-ops.local/api/v1/environments/$1/readiness$2" }, + { "Type": "Microservice", "Path": "^/api/v1/environments(.*)", "IsRegex": true, "TranslatesTo": "http://jobengine.stella-ops.local/api/v1/environments$1" }, { "Type": "Microservice", "Path": "^/api/v1/vulnerabilities(.*)", "IsRegex": true, "TranslatesTo": "http://scanner.stella-ops.local/api/v1/vulnerabilities$1" }, { "Type": "Microservice", "Path": "^/api/v1/watchlist(.*)", "IsRegex": true, "TranslatesTo": "http://attestor.stella-ops.local/api/v1/watchlist$1" }, { "Type": "Microservice", "Path": "^/api/v1/triage(.*)", "IsRegex": true, "TranslatesTo": "http://scanner.stella-ops.local/api/v1/triage$1" },