Skip to content

Commit

Permalink
Merge pull request #304 from aqche/support_vult_dns_records
Browse files Browse the repository at this point in the history
Add support for Vultr DNS record
  • Loading branch information
sergeylanzman committed Nov 30, 2019
2 parents 4754e1d + e147e59 commit 8b1e10e
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 6 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -753,6 +753,7 @@ List of supported Vultr resources:
* `vultr_block_storage`
* `dns_domain`
* `vultr_dns_domain`
* `vultr_dns_record`
* `firewall_group`
* `vultr_firewall_group`
* `network`
Expand Down
39 changes: 33 additions & 6 deletions providers/vultr/dns_domain.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ package vultr

import (
"context"
"strconv"

"github.com/GoogleCloudPlatform/terraformer/terraform_utils"
"github.com/vultr/govultr"
Expand All @@ -25,25 +26,51 @@ type DNSDomainGenerator struct {
VultrService
}

func (g DNSDomainGenerator) createResources(domainList []govultr.DNSDomain) []terraform_utils.Resource {
var resources []terraform_utils.Resource
func (g *DNSDomainGenerator) loadDNSDomains(client *govultr.Client) ([]govultr.DNSDomain, error) {
domainList, err := client.DNSDomain.List(context.Background())
if err != nil {
return nil, err
}
for _, domain := range domainList {
resources = append(resources, terraform_utils.NewSimpleResource(
g.Resources = append(g.Resources, terraform_utils.NewSimpleResource(
domain.Domain,
domain.Domain,
"vultr_dns_domain",
"vultr",
[]string{}))
}
return resources
return domainList, nil
}

func (g *DNSDomainGenerator) loadDNSRecords(client *govultr.Client, domain string) error {
recordList, err := client.DNSRecord.List(context.Background(), domain)
if err != nil {
return err
}
for _, record := range recordList {
g.Resources = append(g.Resources, terraform_utils.NewResource(
strconv.Itoa(record.RecordID),
strconv.Itoa(record.RecordID),
"vultr_dns_record",
"vultr",
map[string]string{"domain": domain},
[]string{},
map[string]interface{}{}))
}
return nil
}

func (g *DNSDomainGenerator) InitResources() error {
client := g.generateClient()
output, err := client.DNSDomain.List(context.Background())
domainList, err := g.loadDNSDomains(client)
if err != nil {
return err
}
g.Resources = g.createResources(output)
for _, domain := range domainList {
err := g.loadDNSRecords(client, domain.Domain)
if err != nil {
return err
}
}
return nil
}

0 comments on commit 8b1e10e

Please sign in to comment.