Skip to content

Commit 55dae68

Browse files
committed
0.0.2
1 parent 91bbf72 commit 55dae68

15 files changed

Lines changed: 150 additions & 65 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ The changelog for Bonvoy
22

33
## Pending Release
44

5+
## 0.0.2
6+
7+
* Add `server memory` command to display server memory information
58
* Restructured to use cobra cli library rather than flag
69
* Add `server info` command to display information about the Envoy sidecar
710
* Add `log level` command to set Envoy's log level

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ deps:
1717
@go get -u github.com/rakyll/gotest
1818

1919
test:
20-
gotest -v $$(go list ./... | grep -v vendor/) -tags=integration
20+
@gotest -v $$(go list ./... | grep -v vendor/) -tags=integration
2121

2222
test-unit:
23-
gotest $$(go list ./... | grep -v vendor/)
23+
@gotest $$(go list ./... | grep -v vendor/)
2424

commands/certificates.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,17 @@ type ExpiredCertificatesController struct {
4646

4747
func (c *ExpiredCertificatesController) Run() error {
4848
e, err := envoy.NewFromServiceName(c.ServiceName)
49-
if err != nil {
50-
return err
51-
}
52-
data := e.Certificates().Get()
49+
if err != nil { return err }
50+
51+
data, err := e.Certificates().Get()
52+
if err != nil { return err }
5353

5454
for _, certs := range data.Certificates {
5555
for _, cert := range certs.CertificateChain {
5656
a := strings.Split(cert.SubjectAltNames[0].Uri, "/")
5757
svc := a[len(a)-1]
58-
leaf := c.Consul.Agent().GetConnectLeafCaCertificate(svc)
58+
leaf, lErr := c.Consul.Agent().GetConnectLeafCaCertificate(svc)
59+
if lErr != nil { return lErr }
5960

6061
if cert.ExpirationTime != leaf.ValidBefore {
6162
fmt.Println(svc)

commands/listeners.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,11 @@ type ListenersController struct {
3333

3434
func (s *ListenersController) Run() error {
3535
e, err := envoy.NewFromServiceName(s.ServiceName)
36-
if err != nil {
37-
return err
38-
}
39-
listeners := e.Listeners().Get()
36+
if err != nil { return err }
37+
38+
listeners, err := e.Listeners().Get()
39+
if err != nil { return err }
40+
4041
fmt.Println("LISTENERS:")
4142
fmt.Println("----------------------------------------------------------------------")
4243
for _, listener := range listeners {

commands/logging.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,9 @@ func (c *SetLogLevelController) Run() error {
5454
desiredLogLevel = c.SelectLogLevel()
5555
}
5656
e, err := envoy.NewFromServiceName(c.ServiceName)
57-
if err != nil {
58-
return err
59-
}
60-
e.Logging().SetLevel(desiredLogLevel)
61-
return nil
57+
if err != nil { return err }
58+
59+
return e.Logging().SetLevel(desiredLogLevel)
6260
}
6361

6462
func (c *SetLogLevelController) SelectLogLevel() string {

commands/server.go

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,14 @@ func (r *Registry) Server() *Server {
1818
Short: "Envoy server commands",
1919
}
2020
cmd.AddCommand(r.BuildServerInfoCommand())
21+
cmd.AddCommand(r.BuildServerMemoryCommand())
2122
return &Server{
2223
Command: cmd,
2324
}
2425
}
2526

27+
// server info
28+
2629
func (r *Registry) BuildServerInfoCommand() *cobra.Command {
2730
return &cobra.Command{
2831
Use: "info",
@@ -44,10 +47,11 @@ type ServerInfoController struct {
4447

4548
func (s *ServerInfoController) Run() error {
4649
e, err := envoy.NewFromServiceName(s.ServiceName)
47-
if err != nil {
48-
return err
49-
}
50-
response := e.Server().Info()
50+
if err != nil { return err }
51+
52+
response, err := e.Server().Info()
53+
if err != nil { return err }
54+
5155
s.DisplayOutput(response)
5256
return nil
5357
}
@@ -108,4 +112,51 @@ func (s *ServerInfoController) DisplayOutput(data envoy.ServerInfoJson) {
108112
table.AppendBulk(d)
109113
table.SetAlignment(tablewriter.ALIGN_LEFT)
110114
table.Render()
115+
}
116+
117+
// server memory
118+
119+
type ServerMemoryController struct {
120+
ServiceName string
121+
}
122+
func (r *Registry) BuildServerMemoryCommand() *cobra.Command {
123+
return &cobra.Command{
124+
Use: "memory",
125+
Short: "Display envoy memory information",
126+
Long: `Display memory usage information about the envoy sidecar`,
127+
Args: cobra.MinimumNArgs(1),
128+
RunE: func(cmd *cobra.Command, args []string) error {
129+
controller := ServerMemoryController{
130+
ServiceName: args[0],
131+
}
132+
return controller.Run()
133+
},
134+
}
135+
}
136+
137+
func (s *ServerMemoryController) Run() error {
138+
e, err := envoy.NewFromServiceName(s.ServiceName)
139+
if err != nil { return err }
140+
141+
data, err := e.Server().Memory()
142+
if err != nil { return err }
143+
144+
fmt.Println("----------------------")
145+
fmt.Println("- Server Memory Info -")
146+
fmt.Println("----------------------")
147+
d := [][]string{
148+
{"Allocated", data.Allocated},
149+
{"Heap Size", data.HeapSize},
150+
{"Page Heap (Unmapped)", data.PageHeapUnmapped},
151+
{"Page Heap (Free)", data.PageHeapFree},
152+
{"Total Physical Bytes", data.TotalPhysicalBytes},
153+
{"Total Thread Cache", data.TotalThreadCache},
154+
}
155+
table := tablewriter.NewWriter(os.Stdout)
156+
table.SetBorder(false)
157+
table.SetTablePadding("\t")
158+
table.AppendBulk(d)
159+
table.SetAlignment(tablewriter.ALIGN_LEFT)
160+
table.Render()
161+
return nil
111162
}

consul/agent.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,19 @@ type ConnectLeafCaCertificate struct {
2525
ModifyIndex int `json:"ModifyIndex"`
2626
}
2727

28-
func (a *Agent) GetConnectLeafCaCertificate(svc string) ConnectLeafCaCertificate {
28+
func (a *Agent) GetConnectLeafCaCertificate(svc string) (ConnectLeafCaCertificate, error) {
2929
return a.c.GetConnectLeafCaCertificate(svc)
3030
}
3131

32-
func (c *Client) GetConnectLeafCaCertificate(svc string) ConnectLeafCaCertificate {
33-
r, err := http.Get(c.address + "/v1/agent/connect/ca/leaf/" + svc)
34-
if err != nil {
35-
panic(err)
36-
}
32+
func (c *Client) GetConnectLeafCaCertificate(svc string) (ConnectLeafCaCertificate, error) {
3733
var response ConnectLeafCaCertificate
34+
35+
r, err := http.Get(c.address + "/v1/agent/connect/ca/leaf/" + svc)
36+
if err != nil { return response, nil }
37+
3838
defer r.Body.Close()
3939
err = json.NewDecoder(r.Body).Decode(&response)
40-
return response
40+
if err != nil { return response, nil }
41+
42+
return response, nil
4143
}

consul/agent_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ func TestClient_GetConnectLeafCaCertificate(t *testing.T) {
3838
CreateIndex: 271994,
3939
ModifyIndex: 271994,
4040
}
41-
res := client.GetConnectLeafCaCertificate("auth-grpc")
41+
res, err := client.GetConnectLeafCaCertificate("auth-grpc")
42+
if err != nil {
43+
t.Error(err)
44+
}
4245
if res.Service != "auth-grpc" {
4346
t.Error("Failed to return proper Service name")
4447
}

docker/client.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,18 @@ func (c *Client) GetEnvoyPid(name string) (int, error) {
3232
All: true,
3333
Filters: filter,
3434
})
35-
if err != nil {
36-
return 0, err
37-
}
35+
if err != nil { return 0, err }
36+
3837
var containerNames []string
3938
for _, container := range containers {
4039
containerNames = append(containerNames, container.Names...)
4140
}
4241

4342
desiredName := ""
4443
if len(containerNames) > 1 {
45-
desiredName = c.SelectDesiredContainer(containerNames)
44+
desiredName, err = c.SelectDesiredContainer(containerNames)
45+
if err != nil { return 0, err }
46+
4647
} else if len(containerNames) == 1 {
4748
desiredName = containerNames[0]
4849
} else {
@@ -64,15 +65,14 @@ func (c *Client) GetEnvoyPid(name string) (int, error) {
6465
return container.State.Pid, nil
6566
}
6667

67-
func (c *Client) SelectDesiredContainer(names []string) string {
68+
func (c *Client) SelectDesiredContainer(names []string) (string, error) {
6869
prompt := promptui.Select{
6970
Label: "Please Select Sidecar Container",
7071
Items: names,
7172
}
7273
_, desiredName, err := prompt.Run()
7374
if err != nil {
74-
fmt.Printf("Prompt failed %v\n", err)
75-
panic(err)
75+
return "", err
7676
}
77-
return desiredName
77+
return desiredName, nil
7878
}

envoy/certificates.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package envoy
22

33
import (
44
"encoding/json"
5-
"fmt"
65
"strings"
76
)
87

@@ -48,15 +47,15 @@ type CertificateChain struct {
4847
SubjectAltNames []SubjectAltName `json:"subject_alt_names"`
4948
}
5049

51-
func (c *Certificates) Get() CertsResponse {
52-
rawJson := c.i.nsenter.Curl("-s", c.endpoints.list)
50+
func (c *Certificates) Get() (CertsResponse, error) {
51+
rawJson, err := c.i.nsenter.Curl("-s", c.endpoints.list)
52+
5353
jsonData := []byte(strings.Trim(rawJson, " "))
5454

5555
var response CertsResponse
56-
err := json.Unmarshal(jsonData, &response)
56+
err = json.Unmarshal(jsonData, &response)
5757
if err != nil {
58-
fmt.Println(err)
59-
panic(err)
58+
return CertsResponse{}, err
6059
}
61-
return response
60+
return response, nil
6261
}

0 commit comments

Comments
 (0)