blob: 07f994ce53eca995e24524539fc4af0db26e91e8 [file] [log] [blame]
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +01001package main
2
3import (
4 "fmt"
5 "sort"
6 "strings"
7
Serge Bazanskie0c06172023-09-19 12:28:16 +00008 "source.monogon.dev/go/clitable"
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +01009 "source.monogon.dev/metropolis/node/core/identity"
10 apb "source.monogon.dev/metropolis/proto/api"
Serge Bazanskie4a4ce12023-03-22 18:29:54 +010011 cpb "source.monogon.dev/metropolis/proto/common"
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +010012)
13
Serge Bazanskie0c06172023-09-19 12:28:16 +000014func nodeEntry(n *apb.Node) clitable.Entry {
15 res := clitable.Entry{}
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +010016
Serge Bazanskie0c06172023-09-19 12:28:16 +000017 res.Add("node id", identity.NodeID(n.Pubkey))
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +010018 state := n.State.String()
19 state = strings.ReplaceAll(state, "NODE_STATE_", "")
Serge Bazanskie0c06172023-09-19 12:28:16 +000020 res.Add("state", state)
Tim Windelschmidt634a3cf2023-06-14 20:01:33 +020021 address := "unknown"
22 if n.Status != nil && n.Status.ExternalAddress != "" {
23 address = n.Status.ExternalAddress
24 }
Serge Bazanskie0c06172023-09-19 12:28:16 +000025 res.Add("address", address)
26 res.Add("health", n.Health.String())
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +010027
28 var roles []string
29 if n.Roles.ConsensusMember != nil {
30 roles = append(roles, "ConsensusMember")
31 }
32 if n.Roles.KubernetesController != nil {
33 roles = append(roles, "KubernetesController")
34 }
35 if n.Roles.KubernetesWorker != nil {
36 roles = append(roles, "KubernetesWorker")
37 }
38 sort.Strings(roles)
Serge Bazanskie0c06172023-09-19 12:28:16 +000039 res.Add("roles", strings.Join(roles, ","))
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +010040
Serge Bazanskie4a4ce12023-03-22 18:29:54 +010041 tpm := "unk"
42 switch n.TpmUsage {
43 case cpb.NodeTPMUsage_NODE_TPM_PRESENT_AND_USED:
44 tpm = "yes"
45 case cpb.NodeTPMUsage_NODE_TPM_PRESENT_BUT_UNUSED:
46 tpm = "unused"
47 case cpb.NodeTPMUsage_NODE_TPM_NOT_PRESENT:
48 tpm = "no"
49 }
Serge Bazanskie0c06172023-09-19 12:28:16 +000050 res.Add("tpm", tpm)
Serge Bazanskie4a4ce12023-03-22 18:29:54 +010051
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +010052 tshs := n.TimeSinceHeartbeat.GetSeconds()
Serge Bazanskie0c06172023-09-19 12:28:16 +000053 res.Add("heartbeat", fmt.Sprintf("%ds", tshs))
Serge Bazanskicfbbbdb2023-03-22 17:48:08 +010054
55 return res
56}