Skip to content

Commit

Permalink
add pageination
Browse files Browse the repository at this point in the history
  • Loading branch information
drewmullen committed Oct 3, 2022
1 parent a066b6e commit 84a1255
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 8 deletions.
31 changes: 31 additions & 0 deletions internal/service/ec2/find.go
Original file line number Diff line number Diff line change
Expand Up @@ -4937,6 +4937,37 @@ func FindInternetGatewayAttachment(conn *ec2.EC2, internetGatewayID, vpcID strin
return attachment, nil
}

func FindIPAMPoolCIDRs(conn *ec2.EC2, input *ec2.GetIpamPoolCidrsInput) ([]*ec2.IpamPoolCidr, error) {
var output []*ec2.IpamPoolCidr

err := conn.GetIpamPoolCidrsPages(input, func(page *ec2.GetIpamPoolCidrsOutput, lastPage bool) bool {
if page == nil {
return !lastPage
}

for _, v := range page.IpamPoolCidrs {
if v != nil {
output = append(output, v)
}
}

return !lastPage
})

if tfawserr.ErrCodeEquals(err, InvalidIPAMPoolIDNotFound) {
return nil, &resource.NotFoundError{
LastError: err,
LastRequest: input,
}
}

if err != nil {
return nil, err
}

return output, nil
}

func FindKeyPair(conn *ec2.EC2, input *ec2.DescribeKeyPairsInput) (*ec2.KeyPairInfo, error) {
output, err := FindKeyPairs(conn, input)

Expand Down
15 changes: 7 additions & 8 deletions internal/service/ec2/ipam_pool_cidrs_data_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,32 +47,31 @@ func DataSourceIPAMPoolCIDRs() *schema.Resource {
func dataSourceIPAMPoolCIDRsRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).EC2Conn

var id string
input := &ec2.GetIpamPoolCidrsInput{}

if v, ok := d.GetOk("ipam_pool_id"); ok {
input.IpamPoolId = aws.String(v.(string))
id = v.(string)
input.IpamPoolId = aws.String(id)
}

filters, filtersOk := d.GetOk("filter")
if filtersOk {
input.Filters = BuildFiltersDataSource(filters.(*schema.Set))
}

output, err := conn.GetIpamPoolCidrs(input)
var cidrs []*ec2.IpamPoolCidr
output, err := FindIPAMPoolCIDRs(conn, input)

if err != nil {
return err
}

if len(output.IpamPoolCidrs) == 0 || output.IpamPoolCidrs[0] == nil {
return tfresource.SingularDataSourceFindError("EC2 VPC IPAM POOL CIDRS", tfresource.NewEmptyResultError(input))
if len(output) == 0 || output[0] == nil {
return tfresource.SingularDataSourceFindError("CIDRS IN EC2 VPC IPAM POOL", tfresource.NewEmptyResultError(input))
}

cidrs = output.IpamPoolCidrs

d.SetId(d.Get("ipam_pool_id").(string))
d.Set("ipam_pool_cidrs", flattenIPAMPoolCIDRs(cidrs))
d.Set("ipam_pool_cidrs", flattenIPAMPoolCIDRs(output))

return nil
}
Expand Down

0 comments on commit 84a1255

Please sign in to comment.