blob: 6e74682b9f634cca954fbec9e05bd77e95f23f73 [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)
20 res.add("address", n.Status.ExternalAddress)
21 res.add("health", n.Health.String())
22
23 var roles []string
24 if n.Roles.ConsensusMember != nil {
25 roles = append(roles, "ConsensusMember")
26 }
27 if n.Roles.KubernetesController != nil {
28 roles = append(roles, "KubernetesController")
29 }
30 if n.Roles.KubernetesWorker != nil {
31 roles = append(roles, "KubernetesWorker")
32 }
33 sort.Strings(roles)
34 res.add("roles", strings.Join(roles, ","))
35
Serge Bazanskie4a4ce12023-03-22 18:29:54 +010036 tpm := "unk"
37 switch n.TpmUsage {
38 case cpb.NodeTPMUsage_NODE_TPM_PRESENT_AND_USED:
39 tpm = "yes"
40 case cpb.NodeTPMUsage_NODE_TPM_PRESENT_BUT_UNUSED:
41 tpm = "unused"
42 case cpb.NodeTPMUsage_NODE_TPM_NOT_PRESENT:
43 tpm = "no"
44 }
45 res.add("tpm", tpm)
46
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +010047 tshs := n.TimeSinceHeartbeat.GetSeconds()
48 res.add("heartbeat", fmt.Sprintf("%ds", tshs))
49
50 return res
51}