Merge pull request #70 from andrewsomething/issues/69

Handle pagination in digitalocean_image data source.
This commit is contained in:
Andrew Starr-Bochicchio 2018-08-30 17:48:06 -04:00 committed by GitHub
commit ad2043e60f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 31 additions and 7 deletions

View File

@ -53,14 +53,38 @@ func dataSourceDigitalOceanImage() *schema.Resource {
func dataSourceDigitalOceanImageRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*godo.Client)
opts := &godo.ListOptions{}
images, _, err := client.Images.ListUser(context.Background(), opts)
if err != nil {
d.SetId("")
return err
opts := &godo.ListOptions{
Page: 1,
PerPage: 200,
}
image, err := findImageByName(images, d.Get("name").(string))
imageList := []godo.Image{}
for {
images, resp, err := client.Images.ListUser(context.Background(), opts)
if err != nil {
d.SetId("")
return err
}
for _, image := range images {
imageList = append(imageList, image)
}
if resp.Links == nil || resp.Links.IsLastPage() {
break
}
page, err := resp.Links.CurrentPage()
if err != nil {
d.SetId("")
return err
}
opts.Page = page + 1
}
image, err := findImageByName(imageList, d.Get("name").(string))
if err != nil {
return err