aboutsummaryrefslogtreecommitdiff
path: root/plugin/clouddns/gcp.go
diff options
context:
space:
mode:
authorGravatar Palash Nigam <npalash25@gmail.com> 2019-08-18 02:29:09 +0530
committerGravatar Yong Tang <yong.tang.github@outlook.com> 2019-08-17 13:59:09 -0700
commit194b0f95b459a593deb6c2d1e048e020070a841a (patch)
tree3f8a6fed86cf61ffe62cafe3c9e8ee00238836fc /plugin/clouddns/gcp.go
parentbde393096f76dc02752f71f9deff5934353e4eb8 (diff)
downloadcoredns-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.go32
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
+}