Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 1 | package main |
| 2 | |
| 3 | import ( |
| 4 | "fmt" |
| 5 | "sort" |
| 6 | "strings" |
| 7 | |
Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 8 | "source.monogon.dev/go/clitable" |
Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 9 | "source.monogon.dev/metropolis/node/core/identity" |
| 10 | apb "source.monogon.dev/metropolis/proto/api" |
Serge Bazanski | e4a4ce1 | 2023-03-22 18:29:54 +0100 | [diff] [blame] | 11 | cpb "source.monogon.dev/metropolis/proto/common" |
Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 12 | ) |
| 13 | |
Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 14 | func nodeEntry(n *apb.Node) clitable.Entry { |
| 15 | res := clitable.Entry{} |
Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 16 | |
Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 17 | res.Add("node id", identity.NodeID(n.Pubkey)) |
Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 18 | state := n.State.String() |
| 19 | state = strings.ReplaceAll(state, "NODE_STATE_", "") |
Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 20 | res.Add("state", state) |
Tim Windelschmidt | 634a3cf | 2023-06-14 20:01:33 +0200 | [diff] [blame] | 21 | address := "unknown" |
| 22 | if n.Status != nil && n.Status.ExternalAddress != "" { |
| 23 | address = n.Status.ExternalAddress |
| 24 | } |
Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 25 | res.Add("address", address) |
| 26 | res.Add("health", n.Health.String()) |
Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 27 | |
| 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 Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 39 | res.Add("roles", strings.Join(roles, ",")) |
Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 40 | |
Serge Bazanski | e4a4ce1 | 2023-03-22 18:29:54 +0100 | [diff] [blame] | 41 | 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 Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 50 | res.Add("tpm", tpm) |
Serge Bazanski | e4a4ce1 | 2023-03-22 18:29:54 +0100 | [diff] [blame] | 51 | |
Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 52 | tshs := n.TimeSinceHeartbeat.GetSeconds() |
Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 53 | res.Add("heartbeat", fmt.Sprintf("%ds", tshs)) |
Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 54 | |
| 55 | return res |
| 56 | } |