diff options
author | 2019-08-18 02:29:09 +0530 | |
---|---|---|
committer | 2019-08-17 13:59:09 -0700 | |
commit | 194b0f95b459a593deb6c2d1e048e020070a841a (patch) | |
tree | 3f8a6fed86cf61ffe62cafe3c9e8ee00238836fc /plugin/clouddns/gcp.go | |
parent | bde393096f76dc02752f71f9deff5934353e4eb8 (diff) | |
download | coredns-194b0f95b459a593deb6c2d1e048e020070a841a.tar.gz coredns-194b0f95b459a593deb6c2d1e048e020070a841a.tar.zst coredns-194b0f95b459a593deb6c2d1e048e020070a841a.zip |
Add Google Cloud DNS plugin (#3011)
Signed-off-by: Palash Nigam <npalash25@gmail.com>
Closes: #2822
Diffstat (limited to 'plugin/clouddns/gcp.go')
-rw-r--r-- | plugin/clouddns/gcp.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/plugin/clouddns/gcp.go b/plugin/clouddns/gcp.go new file mode 100644 index 000000000..6d9d85d43 --- /dev/null +++ b/plugin/clouddns/gcp.go @@ -0,0 +1,32 @@ +package clouddns + +import gcp "google.golang.org/api/dns/v1" + +type gcpDNS interface { + zoneExists(projectName, hostedZoneName string) error + listRRSets(projectName, hostedZoneName string) (*gcp.ResourceRecordSetsListResponse, error) +} + +type gcpClient struct { + *gcp.Service +} + +// zoneExists is a wrapper method around `gcp.Service.ManagedZones.Get` +// it checks if the provided zone name for a given project exists. +func (c gcpClient) zoneExists(projectName, hostedZoneName string) error { + _, err := c.ManagedZones.Get(projectName, hostedZoneName).Do() + if err != nil { + return err + } + return nil +} + +// 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 { + return nil, err + } + return rr, nil +} |