Skip to content

Commit 199ae98

Browse files
authored
Simplify logging (#166)
1 parent 65c42b4 commit 199ae98

File tree

5 files changed

+42
-41
lines changed

5 files changed

+42
-41
lines changed

cmd/server/server.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"context"
45
"fmt"
56
"log/slog"
67
"net/http"
@@ -95,13 +96,16 @@ func (s *server) Run() error {
9596
return err
9697
}
9798

99+
loggingInterceptor := newLoggingInterceptor(s.log)
100+
98101
mux := http.NewServeMux()
99102
// The generated constructors return a path and a plain net/http
100103
// handler.
101104
mux.Handle(
102105
apiv1connect.NewIpamServiceHandler(
103106
service.New(s.log, s.ipamer),
104107
connect.WithInterceptors(
108+
loggingInterceptor,
105109
otelInterceptor,
106110
),
107111
),
@@ -132,3 +136,28 @@ func (s *server) Run() error {
132136
err = server.ListenAndServe()
133137
return err
134138
}
139+
140+
func newLoggingInterceptor(log *slog.Logger) connect.UnaryInterceptorFunc {
141+
interceptor := func(next connect.UnaryFunc) connect.UnaryFunc {
142+
return connect.UnaryFunc(func(ctx context.Context, req connect.AnyRequest) (connect.AnyResponse, error) {
143+
var (
144+
procedure = req.Spec().Procedure
145+
request = req.Any()
146+
)
147+
if procedure == apiv1connect.IpamServiceVersionProcedure {
148+
return next(ctx, req)
149+
}
150+
log.Debug("call", "proc", procedure, "req", request)
151+
152+
response, err := next(ctx, req)
153+
if err != nil {
154+
log.Error("call", "proc", procedure, "error", err)
155+
} else {
156+
log.Debug("call", "proc", procedure, "req", request, "resp", response.Any())
157+
}
158+
159+
return response, err
160+
})
161+
}
162+
return connect.UnaryInterceptorFunc(interceptor)
163+
}

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ require (
4444
github.com/davecgh/go-spew v1.1.1 // indirect
4545
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
4646
github.com/distribution/reference v0.6.0 // indirect
47-
github.com/docker/docker v27.1.2+incompatible // indirect
47+
github.com/docker/docker v27.2.0+incompatible // indirect
4848
github.com/docker/go-connections v0.5.0 // indirect
4949
github.com/docker/go-units v0.5.0 // indirect
5050
github.com/felixge/httpsnoop v1.0.4 // indirect
@@ -73,7 +73,7 @@ require (
7373
github.com/pmezard/go-difflib v1.0.0 // indirect
7474
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
7575
github.com/prometheus/client_model v0.6.1 // indirect
76-
github.com/prometheus/common v0.55.0 // indirect
76+
github.com/prometheus/common v0.56.0 // indirect
7777
github.com/prometheus/procfs v0.15.1 // indirect
7878
github.com/rogpeppe/go-internal v1.12.0 // indirect
7979
github.com/russross/blackfriday/v2 v2.1.0 // indirect
@@ -102,8 +102,8 @@ require (
102102
golang.org/x/sys v0.24.0 // indirect
103103
golang.org/x/text v0.17.0 // indirect
104104
golang.org/x/time v0.6.0 // indirect
105-
google.golang.org/genproto/googleapis/api v0.0.0-20240823204242-4ba0660f739c // indirect
106-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c // indirect
105+
google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed // indirect
106+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed // indirect
107107
google.golang.org/grpc v1.65.0 // indirect
108108
gopkg.in/yaml.v3 v3.0.1 // indirect
109109
)

go.sum

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r
4949
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
5050
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
5151
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
52-
github.com/docker/docker v27.1.2+incompatible h1:AhGzR1xaQIy53qCkxARaFluI00WPGtXn0AJuoQsVYTY=
53-
github.com/docker/docker v27.1.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
52+
github.com/docker/docker v27.2.0+incompatible h1:Rk9nIVdfH3+Vz4cyI/uhbINhEZ/oLmc+CBXmH6fbNk4=
53+
github.com/docker/docker v27.2.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
5454
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
5555
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
5656
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
@@ -137,8 +137,8 @@ github.com/prometheus/client_golang v1.20.2 h1:5ctymQzZlyOON1666svgwn3s6IKWgfbjs
137137
github.com/prometheus/client_golang v1.20.2/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
138138
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
139139
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
140-
github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
141-
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
140+
github.com/prometheus/common v0.56.0 h1:UffReloqkBtvtQEYDg2s+uDPGRrJyC6vZWPGXf6OhPY=
141+
github.com/prometheus/common v0.56.0/go.mod h1:7uRPFSUTbfZWsJ7MHY56sqt7hLQu3bxXHDnNhl8E9qI=
142142
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
143143
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
144144
github.com/redis/go-redis/v9 v9.6.1 h1:HHDteefn6ZkTtY5fGUE8tj8uy85AHk6zP7CpzIAM0y4=
@@ -276,10 +276,10 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
276276
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
277277
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
278278
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
279-
google.golang.org/genproto/googleapis/api v0.0.0-20240823204242-4ba0660f739c h1:e0zB268kOca6FbuJkYUGxfwG4DKFZG/8DLyv9Zv66cE=
280-
google.golang.org/genproto/googleapis/api v0.0.0-20240823204242-4ba0660f739c/go.mod h1:fO8wJzT2zbQbAjbIoos1285VfEIYKDDY+Dt+WpTkh6g=
281-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c h1:Kqjm4WpoWvwhMPcrAczoTyMySQmYa9Wy2iL6Con4zn8=
282-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
279+
google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed h1:3RgNmBoI9MZhsj3QxC+AP/qQhNwpCLOvYDYYsFrhFt0=
280+
google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo=
281+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed h1:J6izYgfBXAI3xTKLgxzTmUltdYaLsuBxFCgDHWJ/eXg=
282+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
283283
google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc=
284284
google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ=
285285
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=

pkg/service/ipam-service.go

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ func (i *IPAMService) Version(context.Context, *connect.Request[v1.VersionReques
3535
}
3636

3737
func (i *IPAMService) CreatePrefix(ctx context.Context, req *connect.Request[v1.CreatePrefixRequest]) (*connect.Response[v1.CreatePrefixResponse], error) {
38-
i.log.Debug("createprefix", "req", req)
3938
if req.Msg.GetNamespace() != "" {
4039
ctx = goipam.NewContextWithNamespace(ctx, req.Msg.GetNamespace())
4140
}
@@ -44,7 +43,6 @@ func (i *IPAMService) CreatePrefix(ctx context.Context, req *connect.Request[v1.
4443
if errors.Is(err, goipam.ErrNotFound) {
4544
return nil, connect.NewError(connect.CodeNotFound, err)
4645
}
47-
i.log.Error("createprefix", "error", err)
4846
return nil, connect.NewError(connect.CodeInvalidArgument, err)
4947
}
5048
return connect.NewResponse(
@@ -57,7 +55,6 @@ func (i *IPAMService) CreatePrefix(ctx context.Context, req *connect.Request[v1.
5755
), nil
5856
}
5957
func (i *IPAMService) DeletePrefix(ctx context.Context, req *connect.Request[v1.DeletePrefixRequest]) (*connect.Response[v1.DeletePrefixResponse], error) {
60-
i.log.Debug("deleteprefix", "req", req)
6158
if req.Msg.GetNamespace() != "" {
6259
ctx = goipam.NewContextWithNamespace(ctx, req.Msg.GetNamespace())
6360
}
@@ -66,7 +63,6 @@ func (i *IPAMService) DeletePrefix(ctx context.Context, req *connect.Request[v1.
6663
if errors.Is(err, goipam.ErrNotFound) {
6764
return nil, connect.NewError(connect.CodeNotFound, err)
6865
}
69-
i.log.Error("deleteprefix", "error", err)
7066
return nil, connect.NewError(connect.CodeInvalidArgument, err)
7167
}
7268

@@ -80,7 +76,6 @@ func (i *IPAMService) DeletePrefix(ctx context.Context, req *connect.Request[v1.
8076
), nil
8177
}
8278
func (i *IPAMService) GetPrefix(ctx context.Context, req *connect.Request[v1.GetPrefixRequest]) (*connect.Response[v1.GetPrefixResponse], error) {
83-
i.log.Debug("getprefix", "req", req)
8479
if req.Msg.GetNamespace() != "" {
8580
ctx = goipam.NewContextWithNamespace(ctx, req.Msg.GetNamespace())
8681
}
@@ -102,13 +97,11 @@ func (i *IPAMService) GetPrefix(ctx context.Context, req *connect.Request[v1.Get
10297
), nil
10398
}
10499
func (i *IPAMService) ListPrefixes(ctx context.Context, req *connect.Request[v1.ListPrefixesRequest]) (*connect.Response[v1.ListPrefixesResponse], error) {
105-
i.log.Debug("listprefixes", "req", req)
106100
if req.Msg.GetNamespace() != "" {
107101
ctx = goipam.NewContextWithNamespace(ctx, req.Msg.GetNamespace())
108102
}
109103
resp, err := i.ipamer.ReadAllPrefixCidrs(ctx)
110104
if err != nil {
111-
i.log.Error("listprefixes", "error", err)
112105
return nil, connect.NewError(connect.CodeInvalidArgument, err)
113106
}
114107

@@ -128,7 +121,6 @@ func (i *IPAMService) ListPrefixes(ctx context.Context, req *connect.Request[v1.
128121
}
129122

130123
func (i *IPAMService) AcquireChildPrefix(ctx context.Context, req *connect.Request[v1.AcquireChildPrefixRequest]) (*connect.Response[v1.AcquireChildPrefixResponse], error) {
131-
i.log.Debug("acquirechildprefix", "req", req)
132124
if req.Msg.GetNamespace() != "" {
133125
ctx = goipam.NewContextWithNamespace(ctx, req.Msg.GetNamespace())
134126
}
@@ -145,13 +137,11 @@ func (i *IPAMService) AcquireChildPrefix(ctx context.Context, req *connect.Reque
145137
if req.Msg.GetChildCidr() != "" {
146138
resp, err = i.ipamer.AcquireSpecificChildPrefix(ctx, parentCidr, childCidr)
147139
if err != nil {
148-
i.log.Error("acquirechildprefix", "parent cidr", parentCidr, "child cidr", childCidr, "length", length, "error", err)
149140
return nil, connect.NewError(connect.CodeInvalidArgument, err)
150141
}
151142
} else {
152143
resp, err = i.ipamer.AcquireChildPrefix(ctx, parentCidr, uint8(length)) // nolint:gosec
153144
if err != nil {
154-
i.log.Error("acquirechildprefix", "parent cidr", parentCidr, "length", length, "error", err)
155145
return nil, connect.NewError(connect.CodeInvalidArgument, err)
156146
}
157147
}
@@ -166,7 +156,6 @@ func (i *IPAMService) AcquireChildPrefix(ctx context.Context, req *connect.Reque
166156
}
167157

168158
func (i *IPAMService) ReleaseChildPrefix(ctx context.Context, req *connect.Request[v1.ReleaseChildPrefixRequest]) (*connect.Response[v1.ReleaseChildPrefixResponse], error) {
169-
i.log.Debug("releasechildprefix", "req", req)
170159
if req.Msg.GetNamespace() != "" {
171160
ctx = goipam.NewContextWithNamespace(ctx, req.Msg.GetNamespace())
172161
}
@@ -175,13 +164,11 @@ func (i *IPAMService) ReleaseChildPrefix(ctx context.Context, req *connect.Reque
175164
if errors.Is(err, goipam.ErrNotFound) {
176165
return nil, connect.NewError(connect.CodeNotFound, err)
177166
}
178-
i.log.Error("releasechildprefix", "error", err)
179167
return nil, connect.NewError(connect.CodeInvalidArgument, err)
180168
}
181169

182170
err = i.ipamer.ReleaseChildPrefix(ctx, prefix)
183171
if err != nil {
184-
i.log.Error("releasechildprefix", "error", err)
185172
return nil, connect.NewError(connect.CodeInvalidArgument, err)
186173
}
187174
return connect.NewResponse(
@@ -194,7 +181,6 @@ func (i *IPAMService) ReleaseChildPrefix(ctx context.Context, req *connect.Reque
194181
), nil
195182
}
196183
func (i *IPAMService) AcquireIP(ctx context.Context, req *connect.Request[v1.AcquireIPRequest]) (*connect.Response[v1.AcquireIPResponse], error) {
197-
i.log.Debug("acquireip", "req", req)
198184
if req.Msg.GetNamespace() != "" {
199185
ctx = goipam.NewContextWithNamespace(ctx, req.Msg.GetNamespace())
200186
}
@@ -203,7 +189,6 @@ func (i *IPAMService) AcquireIP(ctx context.Context, req *connect.Request[v1.Acq
203189
if req.Msg.GetIp() != "" {
204190
resp, err = i.ipamer.AcquireSpecificIP(ctx, req.Msg.GetPrefixCidr(), req.Msg.GetIp())
205191
if err != nil {
206-
i.log.Error("acquireip", "error", err)
207192
if errors.Is(err, goipam.ErrAlreadyAllocated) {
208193
return nil, connect.NewError(connect.CodeAlreadyExists, err)
209194
}
@@ -215,7 +200,6 @@ func (i *IPAMService) AcquireIP(ctx context.Context, req *connect.Request[v1.Acq
215200
if errors.Is(err, goipam.ErrNoIPAvailable) {
216201
return nil, connect.NewError(connect.CodeNotFound, err)
217202
}
218-
i.log.Error("acquireip", "error", err)
219203
return nil, connect.NewError(connect.CodeInvalidArgument, err)
220204
}
221205
}
@@ -229,13 +213,11 @@ func (i *IPAMService) AcquireIP(ctx context.Context, req *connect.Request[v1.Acq
229213
), nil
230214
}
231215
func (i *IPAMService) ReleaseIP(ctx context.Context, req *connect.Request[v1.ReleaseIPRequest]) (*connect.Response[v1.ReleaseIPResponse], error) {
232-
i.log.Debug("releaseip", "req", req)
233216
if req.Msg.GetNamespace() != "" {
234217
ctx = goipam.NewContextWithNamespace(ctx, req.Msg.GetNamespace())
235218
}
236219
netip, err := netip.ParseAddr(req.Msg.GetIp())
237220
if err != nil {
238-
i.log.Error("releaseip", "error", err)
239221
return nil, connect.NewError(connect.CodeInvalidArgument, err)
240222
}
241223
ip := &goipam.IP{
@@ -244,7 +226,6 @@ func (i *IPAMService) ReleaseIP(ctx context.Context, req *connect.Request[v1.Rel
244226
}
245227
resp, err := i.ipamer.ReleaseIP(ctx, ip)
246228
if err != nil {
247-
i.log.Error("releaseip", "error", err)
248229
if errors.Is(err, goipam.ErrNotFound) {
249230
return nil, connect.NewError(connect.CodeNotFound, err)
250231
}
@@ -260,13 +241,11 @@ func (i *IPAMService) ReleaseIP(ctx context.Context, req *connect.Request[v1.Rel
260241
), nil
261242
}
262243
func (i *IPAMService) Dump(ctx context.Context, req *connect.Request[v1.DumpRequest]) (*connect.Response[v1.DumpResponse], error) {
263-
i.log.Debug("dump", "req", req)
264244
if req.Msg.GetNamespace() != "" {
265245
ctx = goipam.NewContextWithNamespace(ctx, req.Msg.GetNamespace())
266246
}
267247
dump, err := i.ipamer.Dump(ctx)
268248
if err != nil {
269-
i.log.Error("dump", "error", err)
270249
return nil, connect.NewError(connect.CodeInvalidArgument, err)
271250
}
272251
return connect.NewResponse(
@@ -277,19 +256,16 @@ func (i *IPAMService) Dump(ctx context.Context, req *connect.Request[v1.DumpRequ
277256
}
278257

279258
func (i *IPAMService) Load(ctx context.Context, req *connect.Request[v1.LoadRequest]) (*connect.Response[v1.LoadResponse], error) {
280-
i.log.Debug("load", "req", req)
281259
if req.Msg.GetNamespace() != "" {
282260
ctx = goipam.NewContextWithNamespace(ctx, req.Msg.GetNamespace())
283261
}
284262
err := i.ipamer.Load(ctx, req.Msg.GetDump())
285263
if err != nil {
286-
i.log.Error("load", "error", err)
287264
return nil, connect.NewError(connect.CodeInvalidArgument, err)
288265
}
289266
return connect.NewResponse(&v1.LoadResponse{}), nil
290267
}
291268
func (i *IPAMService) PrefixUsage(ctx context.Context, req *connect.Request[v1.PrefixUsageRequest]) (*connect.Response[v1.PrefixUsageResponse], error) {
292-
i.log.Debug("prefixusage", "req", req)
293269
if req.Msg.GetNamespace() != "" {
294270
ctx = goipam.NewContextWithNamespace(ctx, req.Msg.GetNamespace())
295271
}
@@ -298,7 +274,6 @@ func (i *IPAMService) PrefixUsage(ctx context.Context, req *connect.Request[v1.P
298274
if errors.Is(err, goipam.ErrNotFound) {
299275
return nil, connect.NewError(connect.CodeNotFound, err)
300276
}
301-
i.log.Error("prefixusage", "error", err)
302277
return nil, connect.NewError(connect.CodeInvalidArgument, err)
303278
}
304279
u := p.Usage()
@@ -314,7 +289,6 @@ func (i *IPAMService) PrefixUsage(ctx context.Context, req *connect.Request[v1.P
314289
}
315290

316291
func (i *IPAMService) CreateNamespace(ctx context.Context, req *connect.Request[v1.CreateNamespaceRequest]) (*connect.Response[v1.CreateNamespaceResponse], error) {
317-
i.log.Debug("createnamespace", "req", req)
318292
err := i.ipamer.CreateNamespace(ctx, req.Msg.GetNamespace())
319293
if err != nil {
320294
return nil, err
@@ -323,7 +297,6 @@ func (i *IPAMService) CreateNamespace(ctx context.Context, req *connect.Request[
323297
}
324298

325299
func (i *IPAMService) DeleteNamespace(ctx context.Context, req *connect.Request[v1.DeleteNamespaceRequest]) (*connect.Response[v1.DeleteNamespaceResponse], error) {
326-
i.log.Debug("deletenamespace", "req", req)
327300
err := i.ipamer.DeleteNamespace(ctx, req.Msg.GetNamespace())
328301
if err != nil {
329302
return nil, err
@@ -332,7 +305,6 @@ func (i *IPAMService) DeleteNamespace(ctx context.Context, req *connect.Request[
332305
}
333306

334307
func (i *IPAMService) ListNamespaces(ctx context.Context, req *connect.Request[v1.ListNamespacesRequest]) (*connect.Response[v1.ListNamespacesResponse], error) {
335-
i.log.Debug("", "req", req)
336308
res, err := i.ipamer.ListNamespaces(ctx)
337309
if err != nil {
338310
return nil, err

proto/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
MAKEFLAGS += --no-print-directory
2-
BUF_VERSION := 1.38.0
2+
BUF_VERSION := 1.39.0
33

44
_buf:
55
docker run --rm \

0 commit comments

Comments
 (0)