Skip to content

Commit

Permalink
Merge pull request #1 from ukfast/datasource-zone
Browse files Browse the repository at this point in the history
add datasource 'safedns_zone'
  • Loading branch information
0x4c6565 committed Jul 25, 2019
2 parents 7022f31 + d1ba677 commit 7cd680d
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 4 deletions.
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,13 @@ terraform apply
- `zone_name`: (Required) Name of zone for record e.g. `example.com`
- `type`: (Required) Type of record
- `content`: (Required) Content for record
- `priority`: Priority of record
- `priority`: Priority of

## Data sources

### safedns_zone

**Schema**

- `name`: (Required) Name of zone e.g. `example.com`
- `description`: Description for zone
42 changes: 42 additions & 0 deletions safedns/data_source_zone.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package safedns

import (
"fmt"

"github.com/hashicorp/terraform/helper/schema"
safednsservice "github.com/ukfast/sdk-go/pkg/service/safedns"
)

func dataSourceZone() *schema.Resource {
return &schema.Resource{
Read: dataSourceZoneRead,

Schema: map[string]*schema.Schema{
"name": &schema.Schema{
Type: schema.TypeString,
Required: true,
},
"description": &schema.Schema{
Type: schema.TypeString,
Computed: true,
},
},
}
}

func dataSourceZoneRead(d *schema.ResourceData, meta interface{}) error {
service := meta.(safednsservice.SafeDNSService)

name := d.Get("name").(string)

zone, err := service.GetZone(name)
if err != nil {
return fmt.Errorf("Error retrieving zone: %s", err)
}

d.SetId(zone.Name)
d.Set("name", zone.Name)
d.Set("description", zone.Description)

return nil
}
59 changes: 59 additions & 0 deletions safedns/data_source_zone_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package safedns

import (
"fmt"
"testing"

"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
safednsservice "github.com/ukfast/sdk-go/pkg/service/safedns"
)

func TestAccDataSourceZone(t *testing.T) {
var zone safednsservice.Zone

resourceName := "data.safedns_zone.test-zone"

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: fmt.Sprintf(testAccCheckDataSourceZoneConfig_basic, UKF_TEST_ZONE_NAME),
Check: resource.ComposeTestCheckFunc(
testAccCheckDataSourceZoneExists(resourceName, &zone),
resource.TestCheckResourceAttr(resourceName, "name", UKF_TEST_ZONE_NAME),
),
},
},
})
}

func testAccCheckDataSourceZoneExists(n string, zone *safednsservice.Zone) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
if !ok {
return fmt.Errorf("Not found: %s", n)
}

if rs.Primary.ID == "" {
return fmt.Errorf("No zone ID is set")
}

service := testAccProvider.Meta().(safednsservice.SafeDNSService)

getZone, err := service.GetZone(rs.Primary.ID)
if err != nil {
return err
}

*zone = getZone

return nil
}
}

var testAccCheckDataSourceZoneConfig_basic = `
data "safedns_zone" "test-zone" {
name = "%s"
}`
9 changes: 6 additions & 3 deletions safedns/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import (
)

func Provider() *schema.Provider {
return &schema.Provider{
Schema: map[string]*schema.Schema{
return &schema.Provider{
Schema: map[string]*schema.Schema{
"api_key": &schema.Schema{
Type: schema.TypeString,
Optional: true,
Expand All @@ -22,12 +22,15 @@ func Provider() *schema.Provider {
if key != "" {
return key, nil
}

return "", errors.New("api_key required")
},
Description: "API token required to authenticate with UKFast APIs. See https://developers.ukfast.io for more details",
},
},
DataSourcesMap: map[string]*schema.Resource{
"safedns_zone": dataSourceZone(),
},
ResourcesMap: map[string]*schema.Resource{
"safedns_zone": resourceZone(),
"safedns_record": resourceRecord(),
Expand Down

0 comments on commit 7cd680d

Please sign in to comment.