mirror of
https://github.com/netbirdio/netbird.git
synced 2025-03-13 06:08:48 +01:00
70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"sort"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/netbirdio/netbird/client/proto"
|
|
)
|
|
|
|
type systemEventOutput struct {
|
|
ID string `json:"id" yaml:"id"`
|
|
Severity string `json:"severity" yaml:"severity"`
|
|
Category string `json:"category" yaml:"category"`
|
|
Message string `json:"message" yaml:"message"`
|
|
UserMessage string `json:"userMessage" yaml:"userMessage"`
|
|
Timestamp time.Time `json:"timestamp" yaml:"timestamp"`
|
|
Metadata map[string]string `json:"metadata" yaml:"metadata"`
|
|
}
|
|
|
|
func mapEvents(protoEvents []*proto.SystemEvent) []systemEventOutput {
|
|
events := make([]systemEventOutput, len(protoEvents))
|
|
for i, event := range protoEvents {
|
|
events[i] = systemEventOutput{
|
|
ID: event.GetId(),
|
|
Severity: event.GetSeverity().String(),
|
|
Category: event.GetCategory().String(),
|
|
Message: event.GetMessage(),
|
|
UserMessage: event.GetUserMessage(),
|
|
Timestamp: event.GetTimestamp().AsTime(),
|
|
Metadata: event.GetMetadata(),
|
|
}
|
|
}
|
|
return events
|
|
}
|
|
|
|
func parseEvents(events []systemEventOutput) string {
|
|
if len(events) == 0 {
|
|
return " No events recorded"
|
|
}
|
|
|
|
var eventsString strings.Builder
|
|
for _, event := range events {
|
|
timeStr := timeAgo(event.Timestamp)
|
|
|
|
metadataStr := ""
|
|
if len(event.Metadata) > 0 {
|
|
pairs := make([]string, 0, len(event.Metadata))
|
|
for k, v := range event.Metadata {
|
|
pairs = append(pairs, fmt.Sprintf("%s: %s", k, v))
|
|
}
|
|
sort.Strings(pairs)
|
|
metadataStr = fmt.Sprintf("\n Metadata: %s", strings.Join(pairs, ", "))
|
|
}
|
|
|
|
eventsString.WriteString(fmt.Sprintf("\n [%s] %s (%s)"+
|
|
"\n Message: %s"+
|
|
"\n Time: %s%s",
|
|
event.Severity,
|
|
event.Category,
|
|
event.ID,
|
|
event.Message,
|
|
timeStr,
|
|
metadataStr,
|
|
))
|
|
}
|
|
return eventsString.String()
|
|
}
|