metropolis/pkg/logtree: move logtree protobuf definition to logtree pkg
Before this change we had the LogEntry message inside the metropolis
common proto file. This splits it out into the logtree package to make
it standalone in a future change.
Change-Id: Idb26a829d6174efa946a6c4ce0f1b984cb2f18a2
Reviewed-on: https://review.monogon.dev/c/monogon/+/3080
Tested-by: Jenkins CI
Reviewed-by: Serge Bazanski <serge@monogon.tech>
diff --git a/metropolis/node/core/mgmt/BUILD.bazel b/metropolis/node/core/mgmt/BUILD.bazel
index a274013..ecec6d1 100644
--- a/metropolis/node/core/mgmt/BUILD.bazel
+++ b/metropolis/node/core/mgmt/BUILD.bazel
@@ -15,6 +15,7 @@
"//metropolis/node/core/rpc",
"//metropolis/node/core/update",
"//metropolis/pkg/logtree",
+ "//metropolis/pkg/logtree/proto",
"//metropolis/pkg/supervisor",
"//metropolis/proto/api",
"//metropolis/proto/common",
@@ -32,6 +33,7 @@
embed = [":mgmt"],
deps = [
"//metropolis/pkg/logtree",
+ "//metropolis/pkg/logtree/proto",
"//metropolis/proto/api",
"//metropolis/proto/common",
"@com_github_google_go_cmp//cmp",
diff --git a/metropolis/node/core/mgmt/svc_logs.go b/metropolis/node/core/mgmt/svc_logs.go
index 6566cee..1a884b3 100644
--- a/metropolis/node/core/mgmt/svc_logs.go
+++ b/metropolis/node/core/mgmt/svc_logs.go
@@ -8,6 +8,7 @@
"google.golang.org/grpc/status"
"source.monogon.dev/metropolis/pkg/logtree"
+ lpb "source.monogon.dev/metropolis/pkg/logtree/proto"
"source.monogon.dev/metropolis/proto/api"
cpb "source.monogon.dev/metropolis/proto/common"
)
@@ -24,17 +25,17 @@
// sanitizedEntries returns a deep copy of the given log entries, but replaces
// all invalid UTF-8 characters with "<INVALID>".
-func sanitizedEntries(entries []*cpb.LogEntry) []*cpb.LogEntry {
- res := make([]*cpb.LogEntry, len(entries))
+func sanitizedEntries(entries []*lpb.LogEntry) []*lpb.LogEntry {
+ res := make([]*lpb.LogEntry, len(entries))
for i, entry := range entries {
- res[i] = &cpb.LogEntry{
+ res[i] = &lpb.LogEntry{
Dn: entry.Dn,
Kind: nil,
}
switch k := entry.Kind.(type) {
- case *cpb.LogEntry_Leveled_:
- leveled := &cpb.LogEntry_Leveled_{
- Leveled: &cpb.LogEntry_Leveled{
+ case *lpb.LogEntry_Leveled_:
+ leveled := &lpb.LogEntry_Leveled_{
+ Leveled: &lpb.LogEntry_Leveled{
Lines: make([]string, len(k.Leveled.Lines)),
Timestamp: k.Leveled.Timestamp,
Severity: k.Leveled.Severity,
@@ -46,9 +47,9 @@
}
res[i].Kind = leveled
- case *cpb.LogEntry_Raw_:
- res[i].Kind = &cpb.LogEntry_Raw_{
- Raw: &cpb.LogEntry_Raw{
+ case *lpb.LogEntry_Raw_:
+ res[i].Kind = &lpb.LogEntry_Raw_{
+ Raw: &lpb.LogEntry_Raw{
Data: strings.ToValidUTF8(k.Raw.Data, "<INVALID>"),
OriginalLength: k.Raw.OriginalLength,
},
@@ -141,7 +142,7 @@
maxChunkSize := 2000
// Serve all backlog entries in chunks.
- chunk := make([]*cpb.LogEntry, 0, maxChunkSize)
+ chunk := make([]*lpb.LogEntry, 0, maxChunkSize)
for _, entry := range reader.Backlog {
p := entry.Proto()
if p == nil {
@@ -157,7 +158,7 @@
if err != nil {
return err
}
- chunk = make([]*cpb.LogEntry, 0, maxChunkSize)
+ chunk = make([]*lpb.LogEntry, 0, maxChunkSize)
}
}
@@ -188,7 +189,7 @@
continue
}
err := srv.Send(&api.GetLogsResponse{
- StreamEntries: []*cpb.LogEntry{p},
+ StreamEntries: []*lpb.LogEntry{p},
})
if err != nil {
return err
diff --git a/metropolis/node/core/mgmt/svc_logs_test.go b/metropolis/node/core/mgmt/svc_logs_test.go
index fea8068..162de57 100644
--- a/metropolis/node/core/mgmt/svc_logs_test.go
+++ b/metropolis/node/core/mgmt/svc_logs_test.go
@@ -17,6 +17,7 @@
"google.golang.org/protobuf/testing/protocmp"
"source.monogon.dev/metropolis/pkg/logtree"
+ lpb "source.monogon.dev/metropolis/pkg/logtree/proto"
"source.monogon.dev/metropolis/proto/api"
cpb "source.monogon.dev/metropolis/proto/common"
)
@@ -50,19 +51,19 @@
return s, cl
}
-func cleanLogEntry(e *cpb.LogEntry) {
+func cleanLogEntry(e *lpb.LogEntry) {
// Filter out bits that change too much to test them.
switch k := e.Kind.(type) {
- case *cpb.LogEntry_Leveled_:
+ case *lpb.LogEntry_Leveled_:
k.Leveled.Location = ""
k.Leveled.Timestamp = nil
}
}
-func mkRawEntry(dn string, line string) *cpb.LogEntry {
- return &cpb.LogEntry{
- Dn: dn, Kind: &cpb.LogEntry_Raw_{
- Raw: &cpb.LogEntry_Raw{
+func mkRawEntry(dn string, line string) *lpb.LogEntry {
+ return &lpb.LogEntry{
+ Dn: dn, Kind: &lpb.LogEntry_Raw_{
+ Raw: &lpb.LogEntry_Raw{
Data: line,
OriginalLength: int64(len(line)),
},
@@ -70,19 +71,19 @@
}
}
-func mkLeveledEntry(dn string, severity string, lines string) *cpb.LogEntry {
- var sev cpb.LeveledLogSeverity
+func mkLeveledEntry(dn string, severity string, lines string) *lpb.LogEntry {
+ var sev lpb.LeveledLogSeverity
switch severity {
case "i":
- sev = cpb.LeveledLogSeverity_INFO
+ sev = lpb.LeveledLogSeverity_INFO
case "w":
- sev = cpb.LeveledLogSeverity_WARNING
+ sev = lpb.LeveledLogSeverity_WARNING
case "e":
- sev = cpb.LeveledLogSeverity_ERROR
+ sev = lpb.LeveledLogSeverity_ERROR
}
- return &cpb.LogEntry{
- Dn: dn, Kind: &cpb.LogEntry_Leveled_{
- Leveled: &cpb.LogEntry_Leveled{
+ return &lpb.LogEntry{
+ Dn: dn, Kind: &lpb.LogEntry_Leveled_{
+ Leveled: &lpb.LogEntry_Leveled{
Lines: strings.Split(lines, "\n"),
Severity: sev,
},
@@ -90,7 +91,7 @@
}
}
-func drainLogs(t *testing.T, srv api.NodeManagement_LogsClient) (res []*cpb.LogEntry) {
+func drainLogs(t *testing.T, srv api.NodeManagement_LogsClient) (res []*lpb.LogEntry) {
t.Helper()
for {
ev, err := srv.Recv()
@@ -153,12 +154,12 @@
}
for i, te := range []struct {
req *api.GetLogsRequest
- want []*cpb.LogEntry
+ want []*lpb.LogEntry
}{
{
// Test all backlog.
req: mkReq("main.roleserver.kubernetes", -1),
- want: []*cpb.LogEntry{
+ want: []*lpb.LogEntry{
mkLeveledEntry("main.roleserver.kubernetes", "i", "Starting kubernetes..."),
mkLeveledEntry("main.roleserver.kubernetes", "i", "Kubernetes version: 1.21.37"),
},
@@ -166,7 +167,7 @@
{
// Test exact backlog.
req: mkReq("main.roleserver.kubernetes", 1),
- want: []*cpb.LogEntry{
+ want: []*lpb.LogEntry{
mkLeveledEntry("main.roleserver.kubernetes", "i", "Kubernetes version: 1.21.37"),
},
},
@@ -178,7 +179,7 @@
{
// Test recursion with backlog.
req: mkRecursive(mkReq("main.roleserver", 2)),
- want: []*cpb.LogEntry{
+ want: []*lpb.LogEntry{
mkLeveledEntry("main.roleserver.kubernetes", "i", "Kubernetes version: 1.21.37"),
mkLeveledEntry("main.roleserver.controlplane", "i", "Starting etcd..."),
},
@@ -186,7 +187,7 @@
{
// Test invalid utf-8 in log data
req: mkReq("main.weirdo", 1),
- want: []*cpb.LogEntry{
+ want: []*lpb.LogEntry{
mkLeveledEntry("main.weirdo", "i", "Here comes some invalid utf-8: a<INVALID>z"),
},
},
@@ -234,7 +235,7 @@
}
// Pipe returned logs into a channel for analysis.
- logC := make(chan *cpb.LogEntry)
+ logC := make(chan *lpb.LogEntry)
go func() {
for {
ev, err := srv.Recv()
@@ -292,7 +293,7 @@
for i, te := range []struct {
req *api.GetLogsRequest
- want []*cpb.LogEntry
+ want []*lpb.LogEntry
}{
// Case 0: request given level
{
@@ -304,13 +305,13 @@
{
Filter: &cpb.LogFilter_LeveledWithMinimumSeverity_{
LeveledWithMinimumSeverity: &cpb.LogFilter_LeveledWithMinimumSeverity{
- Minimum: cpb.LeveledLogSeverity_WARNING,
+ Minimum: lpb.LeveledLogSeverity_WARNING,
},
},
},
},
},
- want: []*cpb.LogEntry{
+ want: []*lpb.LogEntry{
mkLeveledEntry("main", "w", "Something failed!"),
mkLeveledEntry("main", "e", "Something failed very hard!"),
},
@@ -329,7 +330,7 @@
},
},
},
- want: []*cpb.LogEntry{
+ want: []*lpb.LogEntry{
mkRawEntry("main", "medium rare"),
},
},
@@ -347,7 +348,7 @@
},
},
},
- want: []*cpb.LogEntry{
+ want: []*lpb.LogEntry{
mkLeveledEntry("main", "i", "Hello"),
mkLeveledEntry("main", "i", "Starting..."),
mkLeveledEntry("main", "w", "Something failed!"),