Skip to content

Commit 7125f20

Browse files
committed
nsone: update to ns1/ns1-go.v2
Notable changes: - update to import gopkg.in/ns1/ns1-go.v2/rest - update to use rest.NewClient() - update to use rest.*Service types for CRUD calls - update to use gopkg.in/ns1/ns1-go.v2/rest/model/* packages for structs - dramatic rewriting to support data.Meta
1 parent 1a256ec commit 7125f20

14 files changed

+875
-497
lines changed

builtin/providers/nsone/provider.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package nsone
22

33
import (
4-
"github.com/ns1/ns1-go"
4+
"net/http"
5+
56
"github.com/hashicorp/terraform/helper/schema"
67
"github.com/hashicorp/terraform/terraform"
8+
9+
nsone "gopkg.in/ns1/ns1-go.v2/rest"
710
)
811

912
// Provider returns a terraform.ResourceProvider.
@@ -32,9 +35,10 @@ func Provider() terraform.ResourceProvider {
3235
}
3336

3437
func nsoneConfigure(d *schema.ResourceData) (interface{}, error) {
35-
n := nsone.New(d.Get("apikey").(string))
36-
n.Debug()
37-
n.RateLimitStrategySleep()
38+
httpClient := &http.Client{}
39+
n := nsone.NewClient(httpClient, nsone.SetAPIKey(d.Get("apikey").(string)))
40+
// FIXME: n.Debug()
41+
// FIXME: n.RateLimitStrategySleep()
3842
return n, nil
3943
}
4044

builtin/providers/nsone/resource_apikey.go

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package nsone
22

33
import (
4-
"github.com/ns1/ns1-go"
54
"github.com/hashicorp/terraform/helper/schema"
5+
6+
nsone "gopkg.in/ns1/ns1-go.v2/rest"
7+
"gopkg.in/ns1/ns1-go.v2/rest/model/account"
68
)
79

810
func apikeyResource() *schema.Resource {
@@ -35,43 +37,43 @@ func apikeyResource() *schema.Resource {
3537
}
3638
}
3739

38-
func apikeyToResourceData(d *schema.ResourceData, u *nsone.Apikey) error {
39-
d.SetId(u.Id)
40-
d.Set("name", u.Name)
41-
d.Set("key", u.Key)
42-
d.Set("teams", u.Teams)
43-
permissionsToResourceData(d, u.Permissions)
40+
func apikeyToResourceData(d *schema.ResourceData, k *account.APIKey) error {
41+
d.SetId(k.ID)
42+
d.Set("name", k.Name)
43+
d.Set("key", k.Key)
44+
d.Set("teams", k.TeamIDs)
45+
permissionsToResourceData(d, k.Permissions)
4446
return nil
4547
}
4648

47-
func resourceDataToPermissions(d *schema.ResourceData) nsone.PermissionsMap {
48-
var p nsone.PermissionsMap
49+
func resourceDataToPermissions(d *schema.ResourceData) account.PermissionsMap {
50+
var p account.PermissionsMap
4951
if v, ok := d.GetOk("dns_view_zones"); ok {
50-
p.Dns.ViewZones = v.(bool)
52+
p.DNS.ViewZones = v.(bool)
5153
}
5254
if v, ok := d.GetOk("dns_manage_zones"); ok {
53-
p.Dns.ManageZones = v.(bool)
55+
p.DNS.ManageZones = v.(bool)
5456
}
5557
if v, ok := d.GetOk("dns_zones_allow_by_default"); ok {
56-
p.Dns.ZonesAllowByDefault = v.(bool)
58+
p.DNS.ZonesAllowByDefault = v.(bool)
5759
}
5860
if v, ok := d.GetOk("dns_zones_deny"); ok {
5961
denyRaw := v.([]interface{})
60-
p.Dns.ZonesDeny = make([]string, len(denyRaw))
62+
p.DNS.ZonesDeny = make([]string, len(denyRaw))
6163
for i, deny := range denyRaw {
62-
p.Dns.ZonesDeny[i] = deny.(string)
64+
p.DNS.ZonesDeny[i] = deny.(string)
6365
}
6466
} else {
65-
p.Dns.ZonesDeny = make([]string, 0)
67+
p.DNS.ZonesDeny = make([]string, 0)
6668
}
6769
if v, ok := d.GetOk("dns_zones_allow"); ok {
6870
allowRaw := v.([]interface{})
69-
p.Dns.ZonesAllow = make([]string, len(allowRaw))
71+
p.DNS.ZonesAllow = make([]string, len(allowRaw))
7072
for i, allow := range allowRaw {
71-
p.Dns.ZonesAllow[i] = allow.(string)
73+
p.DNS.ZonesAllow[i] = allow.(string)
7274
}
7375
} else {
74-
p.Dns.ZonesAllow = make([]string, 0)
76+
p.DNS.ZonesAllow = make([]string, 0)
7577
}
7678
if v, ok := d.GetOk("data_push_to_datafeeds"); ok {
7779
p.Data.PushToDatafeeds = v.(bool)
@@ -118,66 +120,64 @@ func resourceDataToPermissions(d *schema.ResourceData) nsone.PermissionsMap {
118120
return p
119121
}
120122

121-
func resourceDataToApikey(u *nsone.Apikey, d *schema.ResourceData) error {
122-
u.Id = d.Id()
123-
u.Name = d.Get("name").(string)
123+
func resourceDataToApikey(k *account.APIKey, d *schema.ResourceData) error {
124+
k.ID = d.Id()
125+
k.Name = d.Get("name").(string)
124126
if v, ok := d.GetOk("teams"); ok {
125127
teamsRaw := v.([]interface{})
126-
u.Teams = make([]string, len(teamsRaw))
128+
k.TeamIDs = make([]string, len(teamsRaw))
127129
for i, team := range teamsRaw {
128-
u.Teams[i] = team.(string)
130+
k.TeamIDs[i] = team.(string)
129131
}
130132
} else {
131-
u.Teams = make([]string, 0)
133+
k.TeamIDs = make([]string, 0)
132134
}
133-
u.Permissions = resourceDataToPermissions(d)
135+
k.Permissions = resourceDataToPermissions(d)
134136
return nil
135137
}
136138

137139
// ApikeyCreate creates ns1 API key
138140
func ApikeyCreate(d *schema.ResourceData, meta interface{}) error {
139-
client := meta.(*nsone.APIClient)
140-
mj := nsone.Apikey{}
141-
if err := resourceDataToApikey(&mj, d); err != nil {
141+
client := meta.(*nsone.Client)
142+
k := account.APIKey{}
143+
if err := resourceDataToApikey(&k, d); err != nil {
142144
return err
143145
}
144-
if err := client.CreateApikey(&mj); err != nil {
146+
if _, err := client.APIKeys.Create(&k); err != nil {
145147
return err
146148
}
147-
return apikeyToResourceData(d, &mj)
149+
return apikeyToResourceData(d, &k)
148150
}
149151

150152
// ApikeyRead reads API key from ns1
151153
func ApikeyRead(d *schema.ResourceData, meta interface{}) error {
152-
client := meta.(*nsone.APIClient)
153-
mj, err := client.GetApikey(d.Id())
154+
client := meta.(*nsone.Client)
155+
k, _, err := client.APIKeys.Get(d.Id())
154156
if err != nil {
155157
return err
156158
}
157-
apikeyToResourceData(d, &mj)
158-
return nil
159+
return apikeyToResourceData(d, k)
159160
}
160161

161162
//ApikeyDelete deletes the given ns1 api key
162163
func ApikeyDelete(d *schema.ResourceData, meta interface{}) error {
163-
client := meta.(*nsone.APIClient)
164-
err := client.DeleteApikey(d.Id())
164+
client := meta.(*nsone.Client)
165+
_, err := client.APIKeys.Delete(d.Id())
165166
d.SetId("")
166167
return err
167168
}
168169

169170
//ApikeyUpdate updates the given api key in ns1
170171
func ApikeyUpdate(d *schema.ResourceData, meta interface{}) error {
171-
client := meta.(*nsone.APIClient)
172-
mj := nsone.Apikey{
173-
Id: d.Id(),
172+
client := meta.(*nsone.Client)
173+
k := account.APIKey{
174+
ID: d.Id(),
174175
}
175-
if err := resourceDataToApikey(&mj, d); err != nil {
176+
if err := resourceDataToApikey(&k, d); err != nil {
176177
return err
177178
}
178-
if err := client.UpdateApikey(&mj); err != nil {
179+
if _, err := client.APIKeys.Update(&k); err != nil {
179180
return err
180181
}
181-
apikeyToResourceData(d, &mj)
182-
return nil
182+
return apikeyToResourceData(d, &k)
183183
}
Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package nsone
22

33
import (
4-
"github.com/ns1/ns1-go"
54
"github.com/hashicorp/terraform/helper/schema"
5+
6+
nsone "gopkg.in/ns1/ns1-go.v2/rest"
7+
"gopkg.in/ns1/ns1-go.v2/rest/model/data"
68
)
79

810
func dataFeedResource() *schema.Resource {
@@ -33,61 +35,62 @@ func dataFeedResource() *schema.Resource {
3335
}
3436
}
3537

36-
func dataFeedToResourceData(d *schema.ResourceData, df *nsone.DataFeed) {
37-
d.SetId(df.Id)
38-
d.Set("name", df.Name)
39-
d.Set("config", df.Config)
38+
func dataFeedToResourceData(d *schema.ResourceData, f *data.Feed) {
39+
d.SetId(f.ID)
40+
d.Set("name", f.Name)
41+
d.Set("config", f.Config)
4042
}
4143

42-
func resourceDataToDataFeed(d *schema.ResourceData) *nsone.DataFeed {
43-
df := nsone.NewDataFeed(d.Get("source_id").(string))
44-
df.Name = d.Get("name").(string)
45-
config := make(map[string]string)
44+
func resourceDataToDataFeed(d *schema.ResourceData) *data.Feed {
45+
config := make(data.Config)
4646
for k, v := range d.Get("config").(map[string]interface{}) {
4747
config[k] = v.(string)
4848
}
49-
df.Config = config
50-
return df
49+
return &data.Feed{
50+
Name: d.Get("name").(string),
51+
Config: config,
52+
SourceID: d.Get("source_id").(string),
53+
}
5154
}
5255

5356
// DataFeedCreate creates an ns1 datafeed
5457
func DataFeedCreate(d *schema.ResourceData, meta interface{}) error {
55-
client := meta.(*nsone.APIClient)
56-
df := resourceDataToDataFeed(d)
57-
if err := client.CreateDataFeed(df); err != nil {
58+
client := meta.(*nsone.Client)
59+
f := resourceDataToDataFeed(d)
60+
if _, err := client.DataFeeds.Create(d.Get("source_id").(string), f); err != nil {
5861
return err
5962
}
60-
dataFeedToResourceData(d, df)
63+
dataFeedToResourceData(d, f)
6164
return nil
6265
}
6366

6467
// DataFeedRead reads the datafeed for the given ID from ns1
6568
func DataFeedRead(d *schema.ResourceData, meta interface{}) error {
66-
client := meta.(*nsone.APIClient)
67-
df, err := client.GetDataFeed(d.Get("source_id").(string), d.Id())
69+
client := meta.(*nsone.Client)
70+
f, _, err := client.DataFeeds.Get(d.Get("source_id").(string), d.Id())
6871
if err != nil {
6972
return err
7073
}
71-
dataFeedToResourceData(d, df)
74+
dataFeedToResourceData(d, f)
7275
return nil
7376
}
7477

7578
// DataFeedDelete delets the given datafeed from ns1
7679
func DataFeedDelete(d *schema.ResourceData, meta interface{}) error {
77-
client := meta.(*nsone.APIClient)
78-
err := client.DeleteDataFeed(d.Get("source_id").(string), d.Id())
80+
client := meta.(*nsone.Client)
81+
_, err := client.DataFeeds.Delete(d.Get("source_id").(string), d.Id())
7982
d.SetId("")
8083
return err
8184
}
8285

8386
// DataFeedUpdate updates the given datafeed with modified parameters
8487
func DataFeedUpdate(d *schema.ResourceData, meta interface{}) error {
85-
client := meta.(*nsone.APIClient)
86-
df := resourceDataToDataFeed(d)
87-
df.Id = d.Id()
88-
if err := client.UpdateDataFeed(df); err != nil {
88+
client := meta.(*nsone.Client)
89+
f := resourceDataToDataFeed(d)
90+
f.ID = d.Id()
91+
if _, err := client.DataFeeds.Update(d.Get("source_id").(string), f); err != nil {
8992
return err
9093
}
91-
dataFeedToResourceData(d, df)
94+
dataFeedToResourceData(d, f)
9295
return nil
9396
}

builtin/providers/nsone/resource_datafeed_test.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ import (
44
"fmt"
55
"testing"
66

7-
"github.com/ns1/ns1-go"
87
"github.com/hashicorp/terraform/helper/resource"
98
"github.com/hashicorp/terraform/terraform"
9+
10+
nsone "gopkg.in/ns1/ns1-go.v2/rest"
11+
"gopkg.in/ns1/ns1-go.v2/rest/model/data"
1012
)
1113

1214
func TestAccDataFeed_basic(t *testing.T) {
13-
var dataFeed nsone.DataFeed
15+
var dataFeed data.Feed
1416
resource.Test(t, resource.TestCase{
1517
PreCheck: func() { testAccPreCheck(t) },
1618
Providers: testAccProviders,
@@ -29,7 +31,7 @@ func TestAccDataFeed_basic(t *testing.T) {
2931
}
3032

3133
func TestAccDataFeed_updated(t *testing.T) {
32-
var dataFeed nsone.DataFeed
34+
var dataFeed data.Feed
3335
resource.Test(t, resource.TestCase{
3436
PreCheck: func() { testAccPreCheck(t) },
3537
Providers: testAccProviders,
@@ -76,7 +78,7 @@ func testAccCheckDataFeedState(key, value string) resource.TestCheckFunc {
7678
}
7779
}
7880

79-
func testAccCheckDataFeedExists(n string, dsrc string, dataFeed *nsone.DataFeed) resource.TestCheckFunc {
81+
func testAccCheckDataFeedExists(n string, dsrc string, dataFeed *data.Feed) resource.TestCheckFunc {
8082
return func(s *terraform.State) error {
8183
rs, ok := s.RootModule().Resources[n]
8284
ds, ok := s.RootModule().Resources[dsrc]
@@ -93,9 +95,9 @@ func testAccCheckDataFeedExists(n string, dsrc string, dataFeed *nsone.DataFeed)
9395
return fmt.Errorf("NoID is set for the datasource")
9496
}
9597

96-
client := testAccProvider.Meta().(*nsone.APIClient)
98+
client := testAccProvider.Meta().(*nsone.Client)
9799

98-
foundFeed, err := client.GetDataFeed(ds.Primary.Attributes["id"], rs.Primary.Attributes["id"])
100+
foundFeed, _, err := client.DataFeeds.Get(ds.Primary.Attributes["id"], rs.Primary.Attributes["id"])
99101

100102
p := rs.Primary
101103

@@ -114,7 +116,7 @@ func testAccCheckDataFeedExists(n string, dsrc string, dataFeed *nsone.DataFeed)
114116
}
115117

116118
func testAccCheckDataFeedDestroy(s *terraform.State) error {
117-
client := testAccProvider.Meta().(*nsone.APIClient)
119+
client := testAccProvider.Meta().(*nsone.Client)
118120

119121
var dataFeedID string
120122
var dataSourceID string
@@ -130,16 +132,16 @@ func testAccCheckDataFeedDestroy(s *terraform.State) error {
130132
}
131133
}
132134

133-
df, _ := client.GetDataFeed(dataSourceID, dataFeedID)
135+
df, _, _ := client.DataFeeds.Get(dataSourceID, dataFeedID)
134136

135-
if df.Id != "" {
136-
return fmt.Errorf("DataFeed still exists")
137+
if df != nil {
138+
return fmt.Errorf("DataFeed still exists: %#v", df)
137139
}
138140

139141
return nil
140142
}
141143

142-
func testAccCheckDataFeedAttributes(dataFeed *nsone.DataFeed) resource.TestCheckFunc {
144+
func testAccCheckDataFeedAttributes(dataFeed *data.Feed) resource.TestCheckFunc {
143145
return func(s *terraform.State) error {
144146

145147
if dataFeed.Config["label"] != "exampledc2" {
@@ -150,7 +152,7 @@ func testAccCheckDataFeedAttributes(dataFeed *nsone.DataFeed) resource.TestCheck
150152
}
151153
}
152154

153-
func testAccCheckDataFeedAttributesUpdated(dataFeed *nsone.DataFeed) resource.TestCheckFunc {
155+
func testAccCheckDataFeedAttributesUpdated(dataFeed *data.Feed) resource.TestCheckFunc {
154156
return func(s *terraform.State) error {
155157

156158
if dataFeed.Config["label"] != "exampledc3" {

0 commit comments

Comments
 (0)