diff --git a/pkg/cloudprovider/providers/aws/aws.go b/pkg/cloudprovider/providers/aws/aws.go index 2ba3b2e15b3..b3f7063ccaf 100644 --- a/pkg/cloudprovider/providers/aws/aws.go +++ b/pkg/cloudprovider/providers/aws/aws.go @@ -2030,17 +2030,22 @@ func ipPermissionExists(newPermission, existing *ec2.IpPermission, compareGroupU break } } - if found == false { + if !found { return false } } + for _, leftPair := range newPermission.UserIdGroupPairs { + found := false for _, rightPair := range existing.UserIdGroupPairs { if isEqualUserGroupPair(leftPair, rightPair, compareGroupUserIDs) { - return true + found = true + break } } - return false + if !found { + return false + } } return true diff --git a/pkg/cloudprovider/providers/aws/aws_test.go b/pkg/cloudprovider/providers/aws/aws_test.go index a50eac1fc81..b5207c3a1fa 100644 --- a/pkg/cloudprovider/providers/aws/aws_test.go +++ b/pkg/cloudprovider/providers/aws/aws_test.go @@ -877,6 +877,18 @@ func TestIpPermissionExistsHandlesMultipleGroupIds(t *testing.T) { if equals { t.Errorf("Should have not been considered equal since first is not in the second array of groups") } + + // The first pair matches, but the second does not + newIpPermission2 := ec2.IpPermission{ + UserIdGroupPairs: []*ec2.UserIdGroupPair{ + {GroupId: aws.String("firstGroupId")}, + {GroupId: aws.String("fourthGroupId")}, + }, + } + equals = ipPermissionExists(&newIpPermission2, &oldIpPermission, false) + if equals { + t.Errorf("Should have not been considered equal since first is not in the second array of groups") + } } func TestIpPermissionExistsHandlesRangeSubsets(t *testing.T) {