Skip to content

Commit 7e2e5aa

Browse files
committed
use NewDescribeInstancesPaginator instead of rolling our own, remove unneeded Ec2Client type
1 parent aa859af commit 7e2e5aa

File tree

1 file changed

+8
-17
lines changed

1 file changed

+8
-17
lines changed

pkg/cloudproviders/aws/aws.go

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,6 @@ const (
3030
defaultMaxInstancesBatch = 32
3131
)
3232

33-
type Ec2Client interface {
34-
DescribeInstances(ctx context.Context, params *ec2.DescribeInstancesInput, optFns ...func(*ec2.Options)) (*ec2.DescribeInstancesOutput, error)
35-
}
36-
3733
// Provider represents an AWS provider.
3834
type Provider struct {
3935
describeInstanceCount uint64 // The cumulative number of times DescribeInstancesPagesWithContext has been called
@@ -44,7 +40,7 @@ type Provider struct {
4440

4541
logger logrus.FieldLogger
4642

47-
Ec2 Ec2Client
43+
Ec2 ec2.DescribeInstancesAPIClient
4844
MaxInstances int
4945
}
5046

@@ -74,7 +70,7 @@ func (p *Provider) RunMetrics(ctx context.Context, statser stats.Statser) {
7470
// Instance returns instances details from AWS.
7571
// ip -> nil pointer if instance was not found.
7672
// map is returned even in case of errors because it may contain partial data.
77-
func (p *Provider) Instance(ctx context.Context, IP ...gostatsd.Source) (map[gostatsd.Source]*gostatsd.Instance, error) {
73+
func (p *Provider) Instance(_ context.Context, IP ...gostatsd.Source) (map[gostatsd.Source]*gostatsd.Instance, error) {
7874
instances := make(map[gostatsd.Source]*gostatsd.Instance, len(IP))
7975
values := make([]string, len(IP))
8076
for i, ip := range IP {
@@ -94,21 +90,18 @@ func (p *Provider) Instance(ctx context.Context, IP ...gostatsd.Source) (map[gos
9490
instancesFound := uint64(0)
9591
pages := uint64(0)
9692
var err error
97-
var nextToken string
93+
input := &ec2.DescribeInstancesInput{
94+
Filters: inputFilters,
95+
}
9896

9997
p.logger.WithField("ips", IP).Debug("Looking up instances")
100-
hasPagesRemaining := true
101-
for hasPagesRemaining {
98+
paginator := ec2.NewDescribeInstancesPaginator(p.Ec2, input)
99+
for paginator.HasMorePages() {
102100
pages++
103-
input := &ec2.DescribeInstancesInput{
104-
Filters: inputFilters,
105-
NextToken: &nextToken,
106-
}
107101

108-
page, rawErr := p.Ec2.DescribeInstances(ctx, input)
102+
page, rawErr := paginator.NextPage(context.Background())
109103
if rawErr != nil {
110104
atomic.AddUint64(&p.describeInstanceErrors, 1)
111-
hasPagesRemaining = false
112105

113106
if rawErr.Error() != "InvalidInstanceID.NotFound" {
114107
err = fmt.Errorf("error listing AWS instances: %v", rawErr)
@@ -145,8 +138,6 @@ func (p *Provider) Instance(ctx context.Context, IP ...gostatsd.Source) (map[gos
145138
}).Debug("Added tags")
146139
}
147140
}
148-
nextToken = *page.NextToken
149-
hasPagesRemaining = page.NextToken != nil && *page.NextToken != ""
150141
}
151142

152143
atomic.AddUint64(&p.describeInstancePages, pages)

0 commit comments

Comments
 (0)