1+ package commands
2+
3+ import (
4+ "bonvoy/envoy"
5+ "flag"
6+ "fmt"
7+ "github.com/olekukonko/tablewriter"
8+ "os"
9+ )
10+
11+ type ServerInfoCommand struct {
12+ fs * flag.FlagSet
13+ name string
14+ }
15+
16+ // ListenersCommand
17+ func BuildServerInfoCommand () * ServerInfoCommand {
18+ gc := & ServerInfoCommand {
19+ fs : flag .NewFlagSet ("server-info" , flag .ContinueOnError ),
20+ }
21+ gc .fs .StringVar (& gc .name , "service" , "" , "name of the service sidecar to see server information for" )
22+ return gc
23+ }
24+
25+ func (g * ServerInfoCommand ) Name () string {
26+ return g .fs .Name ()
27+ }
28+
29+ func (g * ServerInfoCommand ) Init (args []string ) error {
30+ return g .fs .Parse (args )
31+ }
32+
33+ func (g * ServerInfoCommand ) Run () error {
34+ var name = g .name
35+ if name == "" {
36+ name = g .fs .Arg (0 )
37+ }
38+ e , err := envoy .NewFromServiceName (name )
39+ if err != nil {
40+ return err
41+ }
42+ response := e .Server ().Info ()
43+ g .DisplayOutput (response )
44+ return nil
45+ }
46+
47+ func (g * ServerInfoCommand ) DisplayOutput (data envoy.ServerInfoJson ) {
48+ fmt .Println ("----------------------" )
49+ fmt .Println ("- Server Information -" )
50+ fmt .Println ("----------------------" )
51+ d := [][]string {
52+ {"Version" , data .Version },
53+ {"Hot Restart Version" , data .HotRestartVersion },
54+ {"State" , data .State },
55+ {"Uptime" , data .UptimeCurrentEpoch },
56+ }
57+ table := tablewriter .NewWriter (os .Stdout )
58+ table .SetBorder (false )
59+ table .SetTablePadding ("\t " )
60+ table .AppendBulk (d )
61+ table .SetAlignment (tablewriter .ALIGN_LEFT )
62+ table .Render ()
63+
64+ fmt .Println ("" )
65+ fmt .Println ("--------------------" )
66+ fmt .Println ("- Node Information -" )
67+ fmt .Println ("--------------------" )
68+ d = [][]string {
69+ {"Node ID" , data .Node .ID },
70+ {"Node Cluster" , data .Node .Cluster },
71+ {"User Agent" , data .Node .UserAgentName },
72+ {"Envoy Version" , data .Node .Metadata .EnvoyVersion },
73+ {"Namespace" , data .Node .Metadata .Namespace },
74+ }
75+ table = tablewriter .NewWriter (os .Stdout )
76+ table .SetBorder (false )
77+ table .SetTablePadding ("\t " )
78+ table .AppendBulk (d )
79+ table .SetAlignment (tablewriter .ALIGN_LEFT )
80+ table .Render ()
81+
82+ fmt .Println ("" )
83+ fmt .Println ("------------------------" )
84+ fmt .Println ("- Command Line Options -" )
85+ fmt .Println ("------------------------" )
86+ d = [][]string {
87+ {"Concurrency" , fmt .Sprintf ("%d" , data .ServerCommandLineOptions .Concurrency )},
88+ {"Mode" , data .ServerCommandLineOptions .Mode },
89+ {"Log Level" , data .ServerCommandLineOptions .LogLevel },
90+ {"Component Log Level" , data .ServerCommandLineOptions .ComponentLogLevel },
91+ {"Log Format" , data .ServerCommandLineOptions .LogFormat },
92+ {"Drain Strategy" , data .ServerCommandLineOptions .DrainStrategy },
93+ {"Drain Time" , data .ServerCommandLineOptions .DrainTime },
94+ {"Config Path" , data .ServerCommandLineOptions .ConfigPath },
95+ {"Parent Shutdown Time" , data .ServerCommandLineOptions .ParentShutdownTime },
96+ }
97+ table = tablewriter .NewWriter (os .Stdout )
98+ table .SetBorder (false )
99+ table .SetTablePadding ("\t " )
100+ table .AppendBulk (d )
101+ table .SetAlignment (tablewriter .ALIGN_LEFT )
102+ table .Render ()
103+ }
0 commit comments