Skip to content

Commit 3c60c4c

Browse files
committed
Issue cycloidio#368: Feature request
1 parent 552a10f commit 3c60c4c

File tree

5 files changed

+457
-382
lines changed

5 files changed

+457
-382
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
## [Unreleased]
22

3+
## Added
4+
- Added new AWS resource `ec2_aws_managed_prefix_lists`
5+
([Issue #368](https://github.com/cycloidio/terracognita/issues/368))
6+
37
## Added
48

59
- Azurerm now can use the `--tags` filter

aws/cmd/functions.go

+10
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,16 @@ var (
477477
// Returned values are commented in the interface doc comment block.
478478
`,
479479
},
480+
Function{
481+
FnName: "GetManagedPrefixLists",
482+
Entity: "ManagedPrefixLists",
483+
Prefix: "Describe",
484+
Service: "ec2",
485+
Documentation: `
486+
// GetManagedPrefixLists returns the ec2 Managed Prefix Lists on the given input
487+
// Returned values are commented in the interface doc comment block.
488+
`,
489+
},
480490
Function{
481491
FnName: "GetTransitGateways",
482492
Entity: "TransitGateways",

aws/reader/reader.go

+35
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,10 @@ type Reader interface {
229229
// Returned values are commented in the interface doc comment block.
230230
GetRouteTables(ctx context.Context, input *ec2.DescribeRouteTablesInput) ([]*ec2.RouteTable, error)
231231

232+
// GetManagedPrefixLists returns the ec2 Managed Prefix Lists on the given input
233+
// Returned values are commented in the interface doc comment block.
234+
GetManagedPrefixLists(ctx context.Context, input *ec2.DescribeManagedPrefixListsInput) ([]*ec2.ManagedPrefixList, error)
235+
232236
// GetTransitGateways returns the ec2 Transit Gateways on the given input
233237
// Returned values are commented in the interface doc comment block.
234238
GetTransitGateways(ctx context.Context, input *ec2.DescribeTransitGatewaysInput) ([]*ec2.TransitGateway, error)
@@ -1800,6 +1804,37 @@ func (c *connector) GetRouteTables(ctx context.Context, input *ec2.DescribeRoute
18001804
return opt, nil
18011805
}
18021806

1807+
func (c *connector) GetManagedPrefixLists(ctx context.Context, input *ec2.DescribeManagedPrefixListsInput) ([]*ec2.ManagedPrefixList, error) {
1808+
if c.svc.ec2 == nil {
1809+
c.svc.ec2 = ec2.New(c.svc.session)
1810+
}
1811+
1812+
opt := make([]*ec2.ManagedPrefixList, 0)
1813+
1814+
hasNextToken := true
1815+
for hasNextToken {
1816+
o, err := c.svc.ec2.DescribeManagedPrefixListsWithContext(ctx, input)
1817+
if err != nil {
1818+
return nil, err
1819+
}
1820+
if o.PrefixLists == nil {
1821+
hasNextToken = false
1822+
continue
1823+
}
1824+
1825+
if input == nil {
1826+
input = &ec2.DescribeManagedPrefixListsInput{}
1827+
}
1828+
input.NextToken = o.NextToken
1829+
hasNextToken = o.NextToken != nil
1830+
1831+
opt = append(opt, o.PrefixLists...)
1832+
1833+
}
1834+
1835+
return opt, nil
1836+
}
1837+
18031838
func (c *connector) GetTransitGateways(ctx context.Context, input *ec2.DescribeTransitGatewaysInput) ([]*ec2.TransitGateway, error) {
18041839
if c.svc.ec2 == nil {
18051840
c.svc.ec2 = ec2.New(c.svc.session)

aws/resources.go

+22
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ const (
8484
ECSCluster
8585
ECSService
8686
ECSTaskDefinition
87+
EC2ManagedPrefixList
8788
EC2TransitGateway
8889
EC2TransitGatewayVPCAttachment
8990
EC2TransitGatewayRouteTable
@@ -225,6 +226,7 @@ var (
225226
ECSCluster: cacheECSClusters,
226227
ECSService: ecsServices,
227228
ECSTaskDefinition: ecsTaskDefinitions,
229+
EC2ManagedPrefixList: ec2ManagedPrefixList,
228230
EC2TransitGateway: ec2TransitGateways,
229231
EC2TransitGatewayVPCAttachment: ec2TransitGatewayVPCAttachment,
230232
EC2TransitGatewayRouteTable: cacheTransitGatewayRouteTables,
@@ -1280,6 +1282,26 @@ func ecsTaskDefinitions(ctx context.Context, a *aws, resourceType string, filter
12801282
return resources, nil
12811283
}
12821284

1285+
func ec2ManagedPrefixList(ctx context.Context, a *aws, resourceType string, filters *filter.Filter) ([]provider.Resource, error) {
1286+
managedPrefixList, err := a.awsr.GetManagedPrefixLists(ctx, nil)
1287+
if err != nil {
1288+
return nil, err
1289+
}
1290+
1291+
resources := make([]provider.Resource, 0)
1292+
1293+
for _, i := range managedPrefixList {
1294+
r, err := initializeResource(a, *i.PrefixListId, resourceType)
1295+
if err != nil {
1296+
return nil, err
1297+
}
1298+
1299+
resources = append(resources, r)
1300+
}
1301+
1302+
return resources, nil
1303+
}
1304+
12831305
func ec2TransitGateways(ctx context.Context, a *aws, resourceType string, filters *filter.Filter) ([]provider.Resource, error) {
12841306
transitGateways, err := a.awsr.GetTransitGateways(ctx, nil)
12851307
if err != nil {

0 commit comments

Comments
 (0)