metropolis: implement NodeManagement.Logs
This takes the implementation from the debug service, dusts it off a
bit, adds tests and moves eerything to the new node mgmt service.
Change-Id: Id3b70126a2551775d8328c0c4e424ec0e675f40f
Reviewed-on: https://review.monogon.dev/c/monogon/+/1439
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/node/core/roleserve/BUILD.bazel b/metropolis/node/core/roleserve/BUILD.bazel
index c2dada4..8aa4fc0 100644
--- a/metropolis/node/core/roleserve/BUILD.bazel
+++ b/metropolis/node/core/roleserve/BUILD.bazel
@@ -33,6 +33,7 @@
"//metropolis/node/kubernetes/pki",
"//metropolis/pkg/event",
"//metropolis/pkg/event/memory",
+ "//metropolis/pkg/logtree",
"//metropolis/pkg/pki",
"//metropolis/pkg/supervisor",
"//metropolis/proto/common",
diff --git a/metropolis/node/core/roleserve/roleserve.go b/metropolis/node/core/roleserve/roleserve.go
index 8f9bb47..a1969bf 100644
--- a/metropolis/node/core/roleserve/roleserve.go
+++ b/metropolis/node/core/roleserve/roleserve.go
@@ -49,7 +49,9 @@
"source.monogon.dev/metropolis/node/core/network"
"source.monogon.dev/metropolis/node/core/rpc/resolver"
"source.monogon.dev/metropolis/pkg/event/memory"
+ "source.monogon.dev/metropolis/pkg/logtree"
"source.monogon.dev/metropolis/pkg/supervisor"
+
cpb "source.monogon.dev/metropolis/proto/common"
)
@@ -68,6 +70,8 @@
// created early in the roleserver lifecycle, and is seeded with node
// information as the first subordinate runs DialCurator().
Resolver *resolver.Resolver
+
+ LogTree *logtree.LogTree
}
// Service is the roleserver/“Role Server” service. See the package-level
@@ -132,6 +136,7 @@
s.nodeMgmt = &workerNodeMgmt{
clusterMembership: &s.ClusterMembership,
+ logTree: s.LogTree,
}
return s
diff --git a/metropolis/node/core/roleserve/worker_nodemgmt.go b/metropolis/node/core/roleserve/worker_nodemgmt.go
index 889f0eb..9ffb112 100644
--- a/metropolis/node/core/roleserve/worker_nodemgmt.go
+++ b/metropolis/node/core/roleserve/worker_nodemgmt.go
@@ -5,11 +5,13 @@
"source.monogon.dev/metropolis/node/core/mgmt"
"source.monogon.dev/metropolis/pkg/event/memory"
+ "source.monogon.dev/metropolis/pkg/logtree"
"source.monogon.dev/metropolis/pkg/supervisor"
)
type workerNodeMgmt struct {
clusterMembership *memory.Value[*ClusterMembership]
+ logTree *logtree.LogTree
}
func (s *workerNodeMgmt) run(ctx context.Context) error {
@@ -24,6 +26,7 @@
supervisor.Logger(ctx).Infof("Got cluster membership, starting...")
srv := mgmt.Service{
NodeCredentials: cm.credentials,
+ LogTree: s.logTree,
}
return srv.Run(ctx)
}