diff options
Diffstat (limited to 'plugin/clouddns/gcp.go')
-rw-r--r-- | plugin/clouddns/gcp.go | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/plugin/clouddns/gcp.go b/plugin/clouddns/gcp.go index 6d9d85d43..0f5126c87 100644 --- a/plugin/clouddns/gcp.go +++ b/plugin/clouddns/gcp.go @@ -1,10 +1,14 @@ package clouddns -import gcp "google.golang.org/api/dns/v1" +import ( + "context" + + gcp "google.golang.org/api/dns/v1" +) type gcpDNS interface { zoneExists(projectName, hostedZoneName string) error - listRRSets(projectName, hostedZoneName string) (*gcp.ResourceRecordSetsListResponse, error) + listRRSets(ctx context.Context, projectName, hostedZoneName string) (*gcp.ResourceRecordSetsListResponse, error) } type gcpClient struct { @@ -23,10 +27,16 @@ func (c gcpClient) zoneExists(projectName, hostedZoneName string) error { // listRRSets is a wrapper method around `gcp.Service.ResourceRecordSets.List` // it fetches and returns the record sets for a hosted zone. -func (c gcpClient) listRRSets(projectName, hostedZoneName string) (*gcp.ResourceRecordSetsListResponse, error) { - rr, err := c.ResourceRecordSets.List(projectName, hostedZoneName).Do() - if err != nil { +func (c gcpClient) listRRSets(ctx context.Context, projectName, hostedZoneName string) (*gcp.ResourceRecordSetsListResponse, error) { + req := c.ResourceRecordSets.List(projectName, hostedZoneName) + var rs []*gcp.ResourceRecordSet + if err := req.Pages(ctx, func(page *gcp.ResourceRecordSetsListResponse) error { + for _, rr := range page.Rrsets { + rs = append(rs, rr) + } + return nil + }); err != nil { return nil, err } - return rr, nil + return &gcp.ResourceRecordSetsListResponse{Rrsets: rs}, nil } |