From 6bb1c5c6d393ba6b0bb8bb1b5a52755182a03482 Mon Sep 17 00:00:00 2001 From: Debian Date: Fri, 29 May 2026 17:52:25 +0200 Subject: [PATCH] fix(aggregator): Envelope aus Peer-Responses entpacken vor Weiterleitung MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit callPeer speicherte den rohen HTTP-Response-Body ({"data": {...}, "error": null}) in PeerResult.Data. Der lokale Pfad serialisiert dagegen die Struct direkt ohne Envelope. Im UI führte das auf Peer-Nodes zu `r.data.load_avg_1 = undefined` → TypeError: Cannot read properties of undefined (reading 'toFixed') → Cluster-Seite nicht ladbar. Fix: Envelope-Feld `data` extrahieren; fallback auf rohen Body wenn kein gültiger Envelope. Co-Authored-By: Claude Sonnet 4.6 --- VERSION | 2 +- cmd/edgeguard-api/main.go | 2 +- cmd/edgeguard-ctl/main.go | 2 +- cmd/edgeguard-scheduler/main.go | 2 +- internal/aggregator/aggregator.go | 14 +++++++++++++- 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index a0090b5..546dc6a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.156 +1.1.157 diff --git a/cmd/edgeguard-api/main.go b/cmd/edgeguard-api/main.go index 6063320..f3d1a65 100644 --- a/cmd/edgeguard-api/main.go +++ b/cmd/edgeguard-api/main.go @@ -60,7 +60,7 @@ import ( usersvc "git.netcell-it.de/projekte/edgeguard-native/internal/services/users" ) -var version = "1.1.156" +var version = "1.1.157" func main() { addr := os.Getenv("EDGEGUARD_API_ADDR") diff --git a/cmd/edgeguard-ctl/main.go b/cmd/edgeguard-ctl/main.go index 8c7c002..6da5443 100644 --- a/cmd/edgeguard-ctl/main.go +++ b/cmd/edgeguard-ctl/main.go @@ -11,7 +11,7 @@ import ( "git.netcell-it.de/projekte/edgeguard-native/internal/services/setup" ) -var version = "1.1.156" +var version = "1.1.157" const usage = `edgeguard-ctl — EdgeGuard CLI diff --git a/cmd/edgeguard-scheduler/main.go b/cmd/edgeguard-scheduler/main.go index 54a9664..786d93d 100644 --- a/cmd/edgeguard-scheduler/main.go +++ b/cmd/edgeguard-scheduler/main.go @@ -41,7 +41,7 @@ import ( "git.netcell-it.de/projekte/edgeguard-native/internal/services/tlscerts" ) -var version = "1.1.156" +var version = "1.1.157" const ( // renewTickInterval — how often we re-evaluate expiring certs. diff --git a/internal/aggregator/aggregator.go b/internal/aggregator/aggregator.go index 012fd2d..40b2c27 100644 --- a/internal/aggregator/aggregator.go +++ b/internal/aggregator/aggregator.go @@ -151,7 +151,19 @@ func (a *Aggregator) callPeer(ctx context.Context, p models.HANode, path string) return res } res.OK = true - res.Data = body + // Agent-Endpoints liefern die Standard-API-Envelope zurück + // ({"data": {...}, "error": null, "message": "ok"}). Wir entpacken + // das `data`-Feld so dass der Aufrufer direkt die Nutzlast bekommt — + // konsistent mit dem Lokal-Pfad (der marshalt die Struct direkt ohne + // Envelope). + var env struct { + Data json.RawMessage `json:"data"` + } + if err := json.Unmarshal(body, &env); err == nil && len(env.Data) > 0 { + res.Data = env.Data + } else { + res.Data = body + } res.Duration = time.Since(start).Milliseconds() return res }