| Tim Windelschmidt | 6d33a43 | 2025-02-04 14:34:25 +0100 | [diff] [blame^] | 1 | // Copyright The Monogon Project Authors. |
| 2 | // SPDX-License-Identifier: Apache-2.0 |
| 3 | |
| Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 4 | package main |
| 5 | |
| 6 | import ( |
| 7 | "fmt" |
| 8 | "sort" |
| 9 | "strings" |
| 10 | |
| Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 11 | "source.monogon.dev/go/clitable" |
| Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 12 | apb "source.monogon.dev/metropolis/proto/api" |
| Serge Bazanski | e4a4ce1 | 2023-03-22 18:29:54 +0100 | [diff] [blame] | 13 | cpb "source.monogon.dev/metropolis/proto/common" |
| Serge Bazanski | 0ccc85b | 2023-11-20 12:59:20 +0100 | [diff] [blame] | 14 | "source.monogon.dev/version" |
| Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 15 | ) |
| 16 | |
| Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 17 | func nodeEntry(n *apb.Node) clitable.Entry { |
| Serge Bazanski | 1f78954 | 2024-05-22 14:01:50 +0200 | [diff] [blame] | 18 | res := clitable.Entry{} |
| Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 19 | |
| Jan Schär | 39d9c24 | 2024-09-24 13:49:55 +0200 | [diff] [blame] | 20 | res.Add("node id", n.Id) |
| Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 21 | state := n.State.String() |
| 22 | state = strings.ReplaceAll(state, "NODE_STATE_", "") |
| Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 23 | res.Add("state", state) |
| Tim Windelschmidt | 634a3cf | 2023-06-14 20:01:33 +0200 | [diff] [blame] | 24 | address := "unknown" |
| 25 | if n.Status != nil && n.Status.ExternalAddress != "" { |
| 26 | address = n.Status.ExternalAddress |
| 27 | } |
| Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 28 | res.Add("address", address) |
| Tim Windelschmidt | a10d0cb | 2025-01-13 14:44:15 +0100 | [diff] [blame] | 29 | |
| 30 | health := n.Health.String() |
| 31 | health = strings.ReplaceAll(health, "HEALTH_", "") |
| 32 | res.Add("health", health) |
| Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 33 | |
| 34 | var roles []string |
| 35 | if n.Roles.ConsensusMember != nil { |
| 36 | roles = append(roles, "ConsensusMember") |
| 37 | } |
| 38 | if n.Roles.KubernetesController != nil { |
| 39 | roles = append(roles, "KubernetesController") |
| 40 | } |
| 41 | if n.Roles.KubernetesWorker != nil { |
| 42 | roles = append(roles, "KubernetesWorker") |
| 43 | } |
| 44 | sort.Strings(roles) |
| Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 45 | res.Add("roles", strings.Join(roles, ",")) |
| Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 46 | |
| Serge Bazanski | e4a4ce1 | 2023-03-22 18:29:54 +0100 | [diff] [blame] | 47 | tpm := "unk" |
| 48 | switch n.TpmUsage { |
| Tim Windelschmidt | a10d0cb | 2025-01-13 14:44:15 +0100 | [diff] [blame] | 49 | case cpb.NodeTPMUsage_NODE_TPM_USAGE_PRESENT_AND_USED: |
| Serge Bazanski | e4a4ce1 | 2023-03-22 18:29:54 +0100 | [diff] [blame] | 50 | tpm = "yes" |
| Tim Windelschmidt | a10d0cb | 2025-01-13 14:44:15 +0100 | [diff] [blame] | 51 | case cpb.NodeTPMUsage_NODE_TPM_USAGE_PRESENT_BUT_UNUSED: |
| Serge Bazanski | e4a4ce1 | 2023-03-22 18:29:54 +0100 | [diff] [blame] | 52 | tpm = "unused" |
| Tim Windelschmidt | a10d0cb | 2025-01-13 14:44:15 +0100 | [diff] [blame] | 53 | case cpb.NodeTPMUsage_NODE_TPM_USAGE_NOT_PRESENT: |
| Serge Bazanski | e4a4ce1 | 2023-03-22 18:29:54 +0100 | [diff] [blame] | 54 | tpm = "no" |
| 55 | } |
| Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 56 | res.Add("tpm", tpm) |
| Serge Bazanski | e4a4ce1 | 2023-03-22 18:29:54 +0100 | [diff] [blame] | 57 | |
| Tim Windelschmidt | 240faa4 | 2024-03-04 20:03:32 +0100 | [diff] [blame] | 58 | if n.Status != nil && n.Status.Version != nil { |
| Serge Bazanski | 0ccc85b | 2023-11-20 12:59:20 +0100 | [diff] [blame] | 59 | res.Add("version", version.Semver(n.Status.Version)) |
| 60 | } |
| 61 | |
| Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 62 | tshs := n.TimeSinceHeartbeat.GetSeconds() |
| Serge Bazanski | e0c0617 | 2023-09-19 12:28:16 +0000 | [diff] [blame] | 63 | res.Add("heartbeat", fmt.Sprintf("%ds", tshs)) |
| Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 64 | |
| Serge Bazanski | 4111393 | 2024-05-22 14:02:17 +0200 | [diff] [blame] | 65 | if l := n.Labels; l != nil { |
| 66 | var labels []string |
| 67 | for _, pair := range l.Pairs { |
| 68 | labels = append(labels, fmt.Sprintf("%s:%s", pair.Key, pair.Value)) |
| 69 | } |
| 70 | res.Add("labels", strings.Join(labels, ",")) |
| 71 | } |
| 72 | |
| Serge Bazanski | cfbbbdb | 2023-03-22 17:48:08 +0100 | [diff] [blame] | 73 | return res |
| 74 | } |