From 6ce28a7e406a76fcacff300cb9f097cd812d6e52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Walstr=C3=B6m?= Date: Wed, 29 Apr 2026 09:21:39 +0200 Subject: [PATCH] Fix containers, reactive now. --- src/yangerd/internal/collector/containers.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/yangerd/internal/collector/containers.go b/src/yangerd/internal/collector/containers.go index 6461bbc0..c1905b5b 100644 --- a/src/yangerd/internal/collector/containers.go +++ b/src/yangerd/internal/collector/containers.go @@ -37,6 +37,12 @@ func (c *ContainerCollector) Interval() time.Duration { return c.interval } // Collect implements Collector. It produces one tree key: // "infix-containers:containers". func (c *ContainerCollector) Collect(ctx context.Context, t *tree.Tree) error { + data := c.collectJSON(ctx) + t.Set("infix-containers:containers", data) + return nil +} + +func (c *ContainerCollector) collectJSON(ctx context.Context) json.RawMessage { containers := []interface{}{} psList := c.podmanPS(ctx) @@ -51,11 +57,18 @@ func (c *ContainerCollector) Collect(ctx context.Context, t *tree.Tree) error { "container": containers, } - if data, err := json.Marshal(out); err == nil { - t.Set("infix-containers:containers", data) + data, err := json.Marshal(out) + if err != nil { + return json.RawMessage(`{"container":[]}`) } + return data +} - return nil +// CollectContainers runs a full container collection and returns the +// result as JSON suitable for tree.Set("infix-containers:containers"). +func CollectContainers(cmd CommandRunner, fs FileReader) json.RawMessage { + c := &ContainerCollector{cmd: cmd, fs: fs} + return c.collectJSON(context.TODO()) } func (c *ContainerCollector) podmanPS(ctx context.Context) []map[string]interface{} {