This repository has been archived by the owner on Jun 18, 2022. It is now read-only.
/
info.go
71 lines (59 loc) · 1.97 KB
/
info.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package info
import (
"fmt"
"sort"
"strconv"
"strings"
"github.com/rancher/rio/cli/pkg/clicontext"
"github.com/rancher/rio/pkg/version"
"github.com/urfave/cli"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func Info(app *cli.App) cli.Command {
return cli.Command{
Name: "info",
Usage: "Display System-Wide Information",
Action: clicontext.DefaultAction(info),
}
}
func info(ctx *clicontext.CLIContext) error {
builder := &strings.Builder{}
info, err := ctx.Project.RioInfos().Get("rio", metav1.GetOptions{})
if err != nil {
return err
}
clusterDomains, err := ctx.Project.ClusterDomains().List(metav1.ListOptions{})
if err != nil {
return err
}
if len(clusterDomains.Items) == 0 {
return fmt.Errorf("no system information is generated")
}
var names []string
var certs []string
for _, cd := range clusterDomains.Items {
names = append(names, cd.Name)
certs = append(certs, fmt.Sprintf("%s(%s)", cd.Name, strconv.FormatBool(cd.Status.HTTPSSupported)))
}
clusterDomain := clusterDomains.Items[0]
var addresses []string
for _, d := range clusterDomain.Spec.Addresses {
addresses = append(addresses, d.IP)
}
builder.WriteString(fmt.Sprintf("Rio Version: %s (%s)\n", info.Status.Version, info.Status.GitCommit))
builder.WriteString(fmt.Sprintf("Rio CLI Version: %s (%s)\n", version.Version, version.GitCommit))
builder.WriteString(fmt.Sprintf("Cluster Domain: %v\n", strings.Join(names, ",")))
builder.WriteString(fmt.Sprintf("Cluster Domain IPs: %s\n", strings.Join(addresses, ",")))
builder.WriteString(fmt.Sprintf("System Namespace: %s\n", info.Status.SystemNamespace))
builder.WriteString(fmt.Sprintf("Wildcard certificates: %v\n", strings.Join(certs, ",")))
var keys []string
for k := range info.Status.SystemComponentReadyMap {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
builder.WriteString(fmt.Sprintf("%v status: %v\n", k, info.Status.SystemComponentReadyMap[k]))
}
fmt.Println(builder.String())
return nil
}