Skip to content

Commit e141dbc

Browse files
authored
better error messages (#159)
1 parent 4918210 commit e141dbc

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

pkg/service/ipam-service.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,18 +132,23 @@ func (i *IPAMService) AcquireChildPrefix(ctx context.Context, req *connect.Reque
132132
if req.Msg.GetNamespace() != "" {
133133
ctx = goipam.NewContextWithNamespace(ctx, req.Msg.GetNamespace())
134134
}
135-
var resp *goipam.Prefix
136-
var err error
135+
var (
136+
resp *goipam.Prefix
137+
err error
138+
parentCidr = req.Msg.GetCidr()
139+
childCidr = req.Msg.GetChildCidr()
140+
length = req.Msg.GetLength()
141+
)
137142
if req.Msg.GetChildCidr() != "" {
138-
resp, err = i.ipamer.AcquireSpecificChildPrefix(ctx, req.Msg.GetCidr(), req.Msg.GetChildCidr())
143+
resp, err = i.ipamer.AcquireSpecificChildPrefix(ctx, parentCidr, childCidr)
139144
if err != nil {
140-
i.log.Error("acquirechildprefix", "error", err)
145+
i.log.Error("acquirechildprefix", "parent cidr", parentCidr, "child cidr", childCidr, "length", length, "error", err)
141146
return nil, connect.NewError(connect.CodeInvalidArgument, err)
142147
}
143148
} else {
144-
resp, err = i.ipamer.AcquireChildPrefix(ctx, req.Msg.GetCidr(), uint8(req.Msg.GetLength()))
149+
resp, err = i.ipamer.AcquireChildPrefix(ctx, parentCidr, uint8(length))
145150
if err != nil {
146-
i.log.Error("acquirechildprefix", "error", err)
151+
i.log.Error("acquirechildprefix", "parent cidr", parentCidr, "length", length, "error", err)
147152
return nil, connect.NewError(connect.CodeInvalidArgument, err)
148153
}
149154
}

prefix.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,12 @@ func (i *ipamer) acquireChildPrefixInternal(ctx context.Context, namespace, pare
196196
}
197197
ipprefix, err := netip.ParsePrefix(parent.Cidr)
198198
if err != nil {
199-
return nil, err
199+
return nil, fmt.Errorf("unable to parse parent.cidr:%s of parentCidr:%s %w", parent.Cidr, parentCidr, err)
200200
}
201201
if specificChildRequest {
202202
childprefix, err = netip.ParsePrefix(childCidr)
203203
if err != nil {
204-
return nil, err
204+
return nil, fmt.Errorf("unable to parse childCidr:%s %w", childCidr, err)
205205
}
206206
length = childprefix.Bits()
207207
}
@@ -259,6 +259,11 @@ func (i *ipamer) acquireChildPrefixInternal(ctx context.Context, namespace, pare
259259
cp = childprefix
260260
}
261261

262+
// Ensure acquired child prefix is valid
263+
if !cp.IsValid() {
264+
return nil, fmt.Errorf("acquired child prefix:%s is not valid", cp.String())
265+
}
266+
262267
child := &Prefix{
263268
Cidr: cp.String(),
264269
ParentCidr: parentCidr,

0 commit comments

Comments
 (0)