From 4396bbb2b237b48a346afc3803851e18fae24fb3 Mon Sep 17 00:00:00 2001 From: Vasil Sirakov Date: Wed, 25 Sep 2024 15:00:25 +0300 Subject: [PATCH] Extract function to determine applicable regions from which instances should be queried. Signed-off-by: Vasil Sirakov --- providers/aws/resources/aws_ec2.go | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/providers/aws/resources/aws_ec2.go b/providers/aws/resources/aws_ec2.go index 64e01cc5d..1f972c6a2 100644 --- a/providers/aws/resources/aws_ec2.go +++ b/providers/aws/resources/aws_ec2.go @@ -800,12 +800,7 @@ func (a *mqlAwsEc2) getInstances(conn *connection.AwsConnection) []*jobpool.Job if err != nil { return []*jobpool.Job{{Err: err}} } - if len(conn.Filters.Ec2DiscoveryFilters.Regions) > 0 { - regions = conn.Filters.Ec2DiscoveryFilters.Regions - } - for _, regionToExclude := range conn.Filters.Ec2DiscoveryFilters.ExcludeRegions { - regions = removeElement(regions, regionToExclude) - } + regions = determineApplicableRegions(regions, conn.Filters.Ec2DiscoveryFilters.Regions, conn.Filters.Ec2DiscoveryFilters.ExcludeRegions) for _, region := range regions { regionVal := region f := func() (jobpool.JobResult, error) { @@ -1794,6 +1789,19 @@ func shouldExcludeInstance(instance ec2types.Instance, filters connection.Ec2Dis return false } +// given an initial set of regions, applies the allowed regions filter and the excluded regions filter on it +// returning a resulting slice of only applicable region to which queries should be targeted +func determineApplicableRegions(regions, regionsToInclude, regionsToExclude []string) []string { + res := regions + if len(regionsToInclude) > 0 { + res = regionsToInclude + } + for _, regionToExclude := range regionsToExclude { + res = removeElement(res, regionToExclude) + } + return res +} + func removeElement(slice []string, value string) []string { result := []string{} for _, v := range slice {