From aa452d8ab4288320db7ecc314a5cd3ee07484bbd Mon Sep 17 00:00:00 2001 From: Julien Pivotto Date: Thu, 2 Jul 2020 00:13:39 +0200 Subject: [PATCH] digitalocean: use a safer pagination method (#7498) this method is documented here: https://github.com/digitalocean/godo Signed-off-by: Julien Pivotto --- discovery/digitalocean/digitalocean.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/discovery/digitalocean/digitalocean.go b/discovery/digitalocean/digitalocean.go index dc13ba12c3..e445f8867a 100644 --- a/discovery/digitalocean/digitalocean.go +++ b/discovery/digitalocean/digitalocean.go @@ -176,7 +176,7 @@ func (d *Discovery) refresh(ctx context.Context) ([]*targetgroup.Group, error) { func (d *Discovery) listDroplets() ([]godo.Droplet, error) { var ( droplets []godo.Droplet - opts = &godo.ListOptions{Page: 1} + opts = &godo.ListOptions{} ) for { paginatedDroplets, resp, err := d.client.Droplets.List(context.Background(), opts) @@ -187,7 +187,13 @@ func (d *Discovery) listDroplets() ([]godo.Droplet, error) { if resp.Links == nil || resp.Links.IsLastPage() { break } - opts.Page++ + + page, err := resp.Links.CurrentPage() + if err != nil { + return nil, err + } + + opts.Page = page + 1 } return droplets, nil }