Skip to content

Commit

Permalink
Use comma-separated values instead of individual keys in the filters …
Browse files Browse the repository at this point in the history
…map and implement parsing of CLI flags to opts matching them to known filter prefixes.

Signed-off-by: Vasil Sirakov <sirakov97@gmail.com>
  • Loading branch information
VasilSirakov committed Sep 25, 2024
1 parent 0dab40b commit d4a059e
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 18 deletions.
20 changes: 10 additions & 10 deletions providers/aws/connection/connection.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,16 +143,16 @@ func parseOptsToFilters(opts map[string]string) DiscoveryFilters {
d.Ec2DiscoveryFilters.Tags[strings.TrimPrefix(k, "ec2:tag:")] = v
case strings.HasPrefix(k, "exclude:ec2:tag:"):
d.Ec2DiscoveryFilters.ExcludeTags[strings.TrimPrefix(k, "exclude:ec2:tag:")] = v
case strings.HasPrefix(k, "ec2:region:"):
d.Ec2DiscoveryFilters.Regions = append(d.Ec2DiscoveryFilters.Regions, v)
case strings.HasPrefix(k, "exclude:ec2:region"):
d.Ec2DiscoveryFilters.ExcludeRegions = append(d.Ec2DiscoveryFilters.ExcludeRegions, v)
case strings.HasPrefix(k, "all:region:"), strings.HasPrefix(k, "region:"):
d.GeneralDiscoveryFilters.Regions = append(d.GeneralDiscoveryFilters.Regions, v)
case strings.HasPrefix(k, "ec2:instance-id:"):
d.Ec2DiscoveryFilters.InstanceIds = append(d.Ec2DiscoveryFilters.InstanceIds, v)
case strings.HasPrefix(k, "exclude:ec2:instance-id:"):
d.Ec2DiscoveryFilters.ExcludeInstanceIds = append(d.Ec2DiscoveryFilters.ExcludeInstanceIds, v)
case strings.HasPrefix(k, "ec2:regions"):
d.Ec2DiscoveryFilters.Regions = append(d.Ec2DiscoveryFilters.Regions, strings.Split(v, ",")...)
case strings.HasPrefix(k, "exclude:ec2:regions"):
d.Ec2DiscoveryFilters.ExcludeRegions = append(d.Ec2DiscoveryFilters.ExcludeRegions, strings.Split(v, ",")...)
case strings.HasPrefix(k, "all:regions"), strings.HasPrefix(k, "regions"):
d.GeneralDiscoveryFilters.Regions = append(d.GeneralDiscoveryFilters.Regions, strings.Split(v, ",")...)
case strings.HasPrefix(k, "ec2:instance-ids"):
d.Ec2DiscoveryFilters.InstanceIds = append(d.Ec2DiscoveryFilters.InstanceIds, strings.Split(v, ",")...)
case strings.HasPrefix(k, "exclude:ec2:instance-ids"):
d.Ec2DiscoveryFilters.ExcludeInstanceIds = append(d.Ec2DiscoveryFilters.ExcludeInstanceIds, strings.Split(v, ",")...)
case strings.HasPrefix(k, "all:tag:"):
d.GeneralDiscoveryFilters.Tags[strings.TrimPrefix(k, "all:tag:")] = v
case strings.HasPrefix(k, "ecr:tag:"):
Expand Down
28 changes: 20 additions & 8 deletions providers/aws/provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,15 +83,27 @@ func parseFlagsToFiltersOpts(m map[string]*llx.Primitive) map[string]string {
o := make(map[string]string, 0)

if x, ok := m["filters"]; ok && len(x.Map) != 0 {
knownTagPrefixes := []string{
"ec2:tag:",
"exclude:ec2:tag:",
"ec2:regions",
"exclude:ec2:regions",
"all:regions",
"regions",
"ec2:instance-ids",
"exclude:ec2:instance-ids",
"all:tag:",
"ecr:tag:",
"ecs:only-running-containers",
"ecs:discover-instances",
"ecs:discover-images",
}
for k, v := range x.Map {
if strings.Contains(k, "tag:") {
o[k] = string(v.Value)
}
if k == "instance-id" {
o[k] = string(v.Value)
}
if strings.Contains(k, "region") {
o[k] = string(v.Value)
for _, prefix := range knownTagPrefixes {
if strings.HasPrefix(k, prefix) {
o[k] = string(v.Value)
break
}
}
}
}
Expand Down

0 comments on commit d4a059e

Please sign in to comment.