Skip to content

Commit a806430

Browse files
committed
Provide better explanation of failure to find a security group
1 parent 28b7b8f commit a806430

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

pkg/ingress/model_build_load_balancer_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,10 @@ var (
817817
Key: awssdk.String("tagtest"),
818818
Value: awssdk.String("1"),
819819
},
820+
{
821+
Key: awssdk.String("tagother"),
822+
Value: awssdk.String("1"),
823+
},
820824
{
821825
Key: awssdk.String("kubernetes.io/cluster/other-cluster"),
822826
Value: awssdk.String("shared"),
@@ -1540,6 +1544,36 @@ func Test_defaultModelBuildTask_buildLoadBalancerSecurityGroups(t *testing.T) {
15401544
},
15411545
want: []string{"sg-15"},
15421546
},
1547+
{
1548+
name: "classparams all tagged other cluster",
1549+
fields: fields{
1550+
ingGroup: Group{
1551+
ID: GroupID{Namespace: "awesome-ns", Name: "ing-1"},
1552+
Members: []ClassifiedIngress{
1553+
{
1554+
Ing: &networking.Ingress{
1555+
ObjectMeta: metav1.ObjectMeta{
1556+
Namespace: "awesome-ns",
1557+
Name: "ing-1",
1558+
},
1559+
},
1560+
IngClassConfig: ClassConfiguration{
1561+
IngClassParams: &v1beta1.IngressClassParams{
1562+
Spec: v1beta1.IngressClassParamsSpec{
1563+
SecurityGroups: &v1beta1.SecurityGroupSelector{
1564+
Tags: map[string][]string{
1565+
"tagother": {"1"},
1566+
},
1567+
},
1568+
},
1569+
},
1570+
},
1571+
},
1572+
},
1573+
},
1574+
},
1575+
wantErr: "unable to resolve at least one security group (1 match VPC and tags, 1 tagged for other cluster)",
1576+
},
15431577
}
15441578
for _, tt := range tests {
15451579
t.Run(tt.name, func(t *testing.T) {

pkg/networking/security_group_resolver.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ func (r *defaultSecurityGroupResolver) splitIntoSgNameAndIDs(sgNameOrIDs []strin
113113
func (r *defaultSecurityGroupResolver) ResolveViaSelector(ctx context.Context, selector *v1beta1.SecurityGroupSelector) ([]string, error) {
114114
var chosenSGs []*ec2sdk.SecurityGroup
115115
var err error
116+
var explanation string
116117
if selector.IDs != nil {
117118
req := &ec2sdk.DescribeSecurityGroupsInput{
118119
GroupIds: make([]*string, 0, len(selector.IDs)),
@@ -148,12 +149,19 @@ func (r *defaultSecurityGroupResolver) ResolveViaSelector(ctx context.Context, s
148149
if err != nil {
149150
return nil, err
150151
}
152+
explanation = fmt.Sprintf("%d match VPC and tags", len(allSGs))
151153
var filteredSGs []*ec2sdk.SecurityGroup
154+
taggedOtherCluster := 0
152155
for _, sg := range allSGs {
153156
if r.checkSecurityGroupIsNotTaggedForOtherClusters(sg) {
154157
filteredSGs = append(filteredSGs, sg)
158+
} else {
159+
taggedOtherCluster += 1
155160
}
156161
}
162+
if taggedOtherCluster > 0 {
163+
explanation += fmt.Sprintf(", %d tagged for other cluster", taggedOtherCluster)
164+
}
157165
for _, sg := range filteredSGs {
158166
if r.checkSecurityGroupHasClusterTag(sg) {
159167
chosenSGs = append(chosenSGs, sg)
@@ -164,7 +172,7 @@ func (r *defaultSecurityGroupResolver) ResolveViaSelector(ctx context.Context, s
164172
}
165173
}
166174
if len(chosenSGs) == 0 {
167-
return nil, errors.New("unable to resolve at least one security group")
175+
return nil, fmt.Errorf("unable to resolve at least one security group (%s)", explanation)
168176
}
169177
resolvedSGIDs := make([]string, 0, len(chosenSGs))
170178
for _, sg := range chosenSGs {

0 commit comments

Comments
 (0)