aboutsummaryrefslogtreecommitdiff
path: root/plugin/clouddns/gcp.go
diff options
context:
space:
mode:
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
+}