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/mgmt/mgmt.go b/metropolis/node/core/mgmt/mgmt.go
index 5fa12a0..2572764 100644
--- a/metropolis/node/core/mgmt/mgmt.go
+++ b/metropolis/node/core/mgmt/mgmt.go
@@ -12,16 +12,34 @@
"source.monogon.dev/metropolis/node"
"source.monogon.dev/metropolis/node/core/identity"
"source.monogon.dev/metropolis/node/core/rpc"
+ "source.monogon.dev/metropolis/pkg/logtree"
"source.monogon.dev/metropolis/pkg/supervisor"
apb "source.monogon.dev/metropolis/proto/api"
)
+// Service implements metropolis.proto.api.NodeManagement.
type Service struct {
+ // NodeCredentials used to set up gRPC server.
NodeCredentials *identity.NodeCredentials
+ // LogTree from which NodeManagement.Logs will be served.
+ LogTree *logtree.LogTree
+
+ // Automatically populated on Run.
+ LogService
}
+// Run the Servie as a supervisor runnable.
func (s *Service) Run(ctx context.Context) error {
+ if s.NodeCredentials == nil {
+ return fmt.Errorf("NodeCredentials missing")
+ }
+ if s.LogTree == nil {
+ return fmt.Errorf("LogTree missing")
+ }
+
+ s.LogService.LogTree = s.LogTree
+
sec := rpc.ServerSecurity{
NodeCredentials: s.NodeCredentials,
}