blob: c70844337a07f8fc6a1a1d9a27b7b047d0e53993 [file] [log] [blame]
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +01001package main
2
3import (
4 "fmt"
5 "sort"
6 "strings"
7
8 "source.monogon.dev/metropolis/node/core/identity"
9 apb "source.monogon.dev/metropolis/proto/api"
Serge Bazanskie4a4ce12023-03-22 18:29:54 +010010 cpb "source.monogon.dev/metropolis/proto/common"
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +010011)
12
13func nodeEntry(n *apb.Node) entry {
14 res := entry{}
15
16 res.add("node id", identity.NodeID(n.Pubkey))
17 state := n.State.String()
18 state = strings.ReplaceAll(state, "NODE_STATE_", "")
19 res.add("state", state)
Tim Windelschmidt634a3cf2023-06-14 20:01:33 +020020 address := "unknown"
21 if n.Status != nil && n.Status.ExternalAddress != "" {
22 address = n.Status.ExternalAddress
23 }
24 res.add("address", address)
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +010025 res.add("health", n.Health.String())
26
27 var roles []string
28 if n.Roles.ConsensusMember != nil {
29 roles = append(roles, "ConsensusMember")
30 }
31 if n.Roles.KubernetesController != nil {
32 roles = append(roles, "KubernetesController")
33 }
34 if n.Roles.KubernetesWorker != nil {
35 roles = append(roles, "KubernetesWorker")
36 }
37 sort.Strings(roles)
38 res.add("roles", strings.Join(roles, ","))
39
Serge Bazanskie4a4ce12023-03-22 18:29:54 +010040 tpm := "unk"
41 switch n.TpmUsage {
42 case cpb.NodeTPMUsage_NODE_TPM_PRESENT_AND_USED:
43 tpm = "yes"
44 case cpb.NodeTPMUsage_NODE_TPM_PRESENT_BUT_UNUSED:
45 tpm = "unused"
46 case cpb.NodeTPMUsage_NODE_TPM_NOT_PRESENT:
47 tpm = "no"
48 }
49 res.add("tpm", tpm)
50
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +010051 tshs := n.TimeSinceHeartbeat.GetSeconds()
52 res.add("heartbeat", fmt.Sprintf("%ds", tshs))
53
54 return res
55}