Skip to content

Commit 12a7953

Browse files
committed
PR Feedback: Re-work error reporting and tests
1 parent 41f7943 commit 12a7953

File tree

2 files changed

+56
-37
lines changed

2 files changed

+56
-37
lines changed

pkg/networking/security_group_resolver.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,31 @@ type defaultSecurityGroupResolver struct {
3434
}
3535

3636
func (r *defaultSecurityGroupResolver) ResolveViaNameOrID(ctx context.Context, sgNameOrIDs []string) ([]string, error) {
37-
sgIDs, sgNames := r.splitIntoSgNameAndIDs(sgNameOrIDs)
3837
var resolvedSGs []*ec2sdk.SecurityGroup
38+
var errMessages []string
39+
40+
sgIDs, sgNames := r.splitIntoSgNameAndIDs(sgNameOrIDs)
3941

4042
if len(sgIDs) > 0 {
4143
sgs, err := r.resolveViaGroupID(ctx, sgIDs)
4244
if err != nil {
43-
return nil, err
45+
errMessages = append(errMessages, err.Error())
46+
} else {
47+
resolvedSGs = append(resolvedSGs, sgs...)
4448
}
45-
resolvedSGs = append(resolvedSGs, sgs...)
4649
}
4750

4851
if len(sgNames) > 0 {
4952
sgs, err := r.resolveViaGroupName(ctx, sgNames)
5053
if err != nil {
51-
return nil, err
54+
errMessages = append(errMessages, err.Error())
55+
} else {
56+
resolvedSGs = append(resolvedSGs, sgs...)
5257
}
53-
resolvedSGs = append(resolvedSGs, sgs...)
58+
}
59+
60+
if len(errMessages) > 0 {
61+
return nil, errors.Errorf("couldn't find all security groups: %s", strings.Join(errMessages, ", "))
5462
}
5563

5664
resolvedSGIDs := make([]string, 0, len(resolvedSGs))
@@ -77,11 +85,7 @@ func (r *defaultSecurityGroupResolver) resolveViaGroupID(ctx context.Context, sg
7785
}
7886

7987
if len(sgIDs) != len(resolvedSGIDs) {
80-
return nil, errors.Errorf(
81-
"couldn't find all securityGroups, requested ids: [%s], found: [%s]",
82-
strings.Join(sgIDs, ", "),
83-
strings.Join(resolvedSGIDs, ", "),
84-
)
88+
return nil, errors.Errorf("requested ids [%s] but found [%s]", strings.Join(sgIDs, ", "), strings.Join(resolvedSGIDs, ", "))
8589
}
8690

8791
return sgs, nil
@@ -120,11 +124,7 @@ func (r *defaultSecurityGroupResolver) resolveViaGroupName(ctx context.Context,
120124
resolvedSGNames = algorithm.RemoveSliceDuplicates(resolvedSGNames)
121125

122126
if len(sgNames) != len(resolvedSGNames) {
123-
return nil, errors.Errorf(
124-
"couldn't find all securityGroups, requested names: [%s], found: [%s]",
125-
strings.Join(sgNames, ", "),
126-
strings.Join(resolvedSGNames, ", "),
127-
)
127+
return nil, errors.Errorf("requested names [%s] but found [%s]", strings.Join(sgNames, ", "), strings.Join(resolvedSGNames, ", "))
128128
}
129129

130130
return sgs, nil

pkg/networking/security_group_resolver_test.go

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,6 @@ func Test_defaultSecurityGroupResolver_ResolveViaNameOrID(t *testing.T) {
204204
name: "describe by id returns error",
205205
args: args{
206206
nameOrIDs: []string{
207-
"sg group name",
208207
"sg-id",
209208
},
210209
describeSGCalls: []describeSecurityGroupsAsListCall{
@@ -216,24 +215,21 @@ func Test_defaultSecurityGroupResolver_ResolveViaNameOrID(t *testing.T) {
216215
},
217216
},
218217
},
219-
wantErr: errors.New("Describe.Error: unable to describe security groups"),
218+
wantErr: errors.New("couldn't find all security groups: Describe.Error: unable to describe security groups"),
220219
},
221220
{
222221
name: "describe by name returns error",
223222
args: args{
224223
nameOrIDs: []string{
225224
"sg group name",
226-
"sg-id",
227225
},
228226
describeSGCalls: []describeSecurityGroupsAsListCall{
229227
{
230228
req: &ec2sdk.DescribeSecurityGroupsInput{
231229
Filters: []*ec2sdk.Filter{
232230
{
233-
Name: awssdk.String("tag:Name"),
234-
Values: awssdk.StringSlice([]string{
235-
"sg group name",
236-
}),
231+
Name: awssdk.String("tag:Name"),
232+
Values: awssdk.StringSlice([]string{"sg group name"}),
237233
},
238234
{
239235
Name: awssdk.String("vpc-id"),
@@ -243,22 +239,12 @@ func Test_defaultSecurityGroupResolver_ResolveViaNameOrID(t *testing.T) {
243239
},
244240
err: awserr.New("Describe.Error", "unable to describe security groups", nil),
245241
},
246-
{
247-
req: &ec2sdk.DescribeSecurityGroupsInput{
248-
GroupIds: awssdk.StringSlice([]string{"sg-id"}),
249-
},
250-
resp: []*ec2sdk.SecurityGroup{
251-
{
252-
GroupId: awssdk.String("sg-id"),
253-
},
254-
},
255-
},
256242
},
257243
},
258-
wantErr: errors.New("Describe.Error: unable to describe security groups"),
244+
wantErr: errors.New("couldn't find all security groups: Describe.Error: unable to describe security groups"),
259245
},
260246
{
261-
name: "unable to resolve all security group ids",
247+
name: "unable to resolve security groups by id",
262248
args: args{
263249
nameOrIDs: []string{
264250
"sg-id1",
@@ -277,10 +263,10 @@ func Test_defaultSecurityGroupResolver_ResolveViaNameOrID(t *testing.T) {
277263
},
278264
},
279265
},
280-
wantErr: errors.New("couldn't find all securityGroups, requested ids: [sg-id1, sg-id404], found: [sg-id1]"),
266+
wantErr: errors.New("couldn't find all security groups: requested ids [sg-id1, sg-id404] but found [sg-id1]"),
281267
},
282268
{
283-
name: "unable to resolve all security groups names",
269+
name: "unable to resolve security groups by name",
284270
args: args{
285271
nameOrIDs: []string{
286272
"sg group one",
@@ -314,7 +300,40 @@ func Test_defaultSecurityGroupResolver_ResolveViaNameOrID(t *testing.T) {
314300
},
315301
},
316302
},
317-
wantErr: errors.New("couldn't find all securityGroups, requested names: [sg group one, sg group two], found: [sg group one]"),
303+
wantErr: errors.New("couldn't find all security groups: requested names [sg group one, sg group two] but found [sg group one]"),
304+
},
305+
{
306+
name: "unable to resolve all security groups by ids and names",
307+
args: args{
308+
nameOrIDs: []string{
309+
"sg-08982de7",
310+
"sg group one",
311+
},
312+
describeSGCalls: []describeSecurityGroupsAsListCall{
313+
{
314+
req: &ec2sdk.DescribeSecurityGroupsInput{
315+
GroupIds: awssdk.StringSlice([]string{"sg-08982de7"}),
316+
},
317+
resp: []*ec2sdk.SecurityGroup{},
318+
},
319+
{
320+
req: &ec2sdk.DescribeSecurityGroupsInput{
321+
Filters: []*ec2sdk.Filter{
322+
{
323+
Name: awssdk.String("tag:Name"),
324+
Values: awssdk.StringSlice([]string{"sg group one"}),
325+
},
326+
{
327+
Name: awssdk.String("vpc-id"),
328+
Values: awssdk.StringSlice([]string{defaultVPCID}),
329+
},
330+
},
331+
},
332+
resp: []*ec2sdk.SecurityGroup{},
333+
},
334+
},
335+
},
336+
wantErr: errors.New("couldn't find all security groups: requested ids [sg-08982de7] but found [], requested names [sg group one] but found []"),
318337
},
319338
}
320339

0 commit comments

Comments
 (0)