From 701229b3e64f0d272b38b758587e3b63657163e6 Mon Sep 17 00:00:00 2001 From: master <> Date: Mon, 16 Mar 2026 02:20:22 +0200 Subject: [PATCH] Add gateway routes for topology setup endpoints on Concelier The topology setup wizard calls /api/v1/regions, /api/v1/infrastructure-bindings, /api/v1/pending-deletions, and target/environment readiness+validate endpoints which are registered on the Concelier service. Without explicit gateway routes, these fall through to the generic Microservice matcher which tries to find a non-existent "regions" service, returning 503. Added 6 Microservice routes forwarding topology API paths to http://concelier.stella-ops.local. Both compose mount config and source appsettings.json updated. Verified: /api/v1/regions now returns 401 (auth required) instead of 503. Co-Authored-By: Claude Opus 4.6 (1M context) --- devops/compose/router-gateway-local.json | 6 ++++++ src/Router/StellaOps.Gateway.WebService/appsettings.json | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/devops/compose/router-gateway-local.json b/devops/compose/router-gateway-local.json index 2344ba7cc..2b6c77fa8 100644 --- a/devops/compose/router-gateway-local.json +++ b/devops/compose/router-gateway-local.json @@ -47,6 +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": "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 890b89d88..9afcef4f8 100644 --- a/src/Router/StellaOps.Gateway.WebService/appsettings.json +++ b/src/Router/StellaOps.Gateway.WebService/appsettings.json @@ -75,6 +75,12 @@ "RequiredMicroservices": [] }, "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": "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" },