Skip to content

Commit f86940b

Browse files
upgrade to Terraform SDK v2 (#124)
1 parent d91ea9c commit f86940b

28 files changed

+589
-250
lines changed

go.mod

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@ module github.com/kevholditch/terraform-provider-kong
22

33
go 1.16
44

5-
replace "github.com/kevholditch/terraform-provider-kong/kong" => "./kong"
5+
replace github.com/kevholditch/terraform-provider-kong/kong => ./kong
66

77
require (
88
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 // indirect
9-
github.com/Microsoft/go-winio v0.4.14 // indirect
109
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect
1110
github.com/cenkalti/backoff v2.2.1+incompatible // indirect
1211
github.com/containerd/continuity v0.0.0-20200413184840-d3ef23f19fbb // indirect
@@ -16,8 +15,8 @@ require (
1615
github.com/elazarl/goproxy/ext v0.0.0-20190421051319-9d40249d3c2f // indirect
1716
github.com/gotestyourself/gotestyourself v2.2.0+incompatible // indirect
1817
github.com/hashicorp/hcl/v2 v2.3.0 // indirect
19-
github.com/hashicorp/terraform v0.12.24 // indirect
2018
github.com/hashicorp/terraform-plugin-sdk v1.7.0
19+
github.com/hashicorp/terraform-plugin-sdk/v2 v2.7.0 // indirect
2120
github.com/kong/go-kong v0.20.0
2221
github.com/lib/pq v1.0.0
2322
github.com/opencontainers/image-spec v1.0.1 // indirect

go.sum

Lines changed: 298 additions & 0 deletions
Large diffs are not rendered by default.

kong/provider.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ package kong
33
import (
44
"os"
55

6-
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
7-
"github.com/hashicorp/terraform-plugin-sdk/terraform"
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
87
"github.com/kong/go-kong/kong"
98
)
109

@@ -14,7 +13,7 @@ type config struct {
1413
strictConsumerPlugins bool
1514
}
1615

17-
func Provider() terraform.ResourceProvider {
16+
func Provider() *schema.Provider {
1817
return &schema.Provider{
1918
Schema: map[string]*schema.Schema{
2019
"kong_admin_uri": &schema.Schema{

kong/provider_test.go

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package kong
22

33
import (
4+
"context"
45
"log"
56
"os"
67
"testing"
78

8-
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
9-
"github.com/hashicorp/terraform-plugin-sdk/terraform"
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
1011
"github.com/kevholditch/terraform-provider-kong/kong/containers"
1112
)
1213

@@ -16,34 +17,39 @@ const EnvKongAdminUsername = "KONG_ADMIN_USERNAME"
1617
const EnvKongAdminPassword = "KONG_ADMIN_PASSWORD"
1718
const defaultKongRepository = "kong"
1819
const defaultKongLicense = ""
20+
const providerNameKong = "kong"
1921

2022
var (
21-
testAccProviders map[string]terraform.ResourceProvider
22-
testAccProvider *schema.Provider
23+
testAccProviders map[string]*schema.Provider
24+
testAccProvider *schema.Provider
25+
testAccProviderFactories map[string]func() (*schema.Provider, error)
2326
)
2427

2528
func init() {
26-
testAccProvider = Provider().(*schema.Provider)
27-
testAccProviders = map[string]terraform.ResourceProvider{
28-
"kong": testAccProvider,
29+
testAccProvider = Provider()
30+
testAccProviders = map[string]*schema.Provider{
31+
providerNameKong: testAccProvider,
32+
}
33+
testAccProviderFactories = map[string]func() (*schema.Provider, error){
34+
providerNameKong: func() (*schema.Provider, error) { return Provider(), nil }, //nolint:unparam
2935
}
3036
}
3137

3238
func TestProvider(t *testing.T) {
33-
if err := Provider().(*schema.Provider).InternalValidate(); err != nil {
39+
if err := Provider().InternalValidate(); err != nil {
3440
t.Fatalf("err: %s", err)
3541
}
3642
}
3743

3844
func TestProvider_impl(t *testing.T) {
39-
var _ terraform.ResourceProvider = Provider()
45+
var _ = Provider()
4046
}
4147

4248
func TestProvider_configure(t *testing.T) {
4349

4450
rc := terraform.NewResourceConfigRaw(map[string]interface{}{})
4551
p := Provider()
46-
err := p.Configure(rc)
52+
err := p.Configure(context.Background(), rc)
4753
if err != nil {
4854
t.Fatal(err)
4955
}
@@ -55,7 +61,7 @@ func TestProvider_configure_strict(t *testing.T) {
5561
"strict_plugins_match": "true",
5662
})
5763
p := Provider()
58-
err := p.Configure(rc)
64+
err := p.Configure(context.Background(), rc)
5965
if err != nil {
6066
t.Fatal(err)
6167
}

kong/resource_kong_certificate.go

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,18 @@ package kong
33
import (
44
"context"
55
"fmt"
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
67

7-
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
89
"github.com/kong/go-kong/kong"
910
)
1011

1112
func resourceKongCertificate() *schema.Resource {
1213
return &schema.Resource{
13-
Create: resourceKongCertificateCreate,
14-
Read: resourceKongCertificateRead,
15-
Delete: resourceKongCertificateDelete,
16-
Update: resourceKongCertificateUpdate,
14+
CreateContext: resourceKongCertificateCreate,
15+
ReadContext: resourceKongCertificateRead,
16+
DeleteContext: resourceKongCertificateDelete,
17+
UpdateContext: resourceKongCertificateUpdate,
1718
Importer: &schema.ResourceImporter{
1819
State: schema.ImportStatePassthrough,
1920
},
@@ -41,7 +42,7 @@ func resourceKongCertificate() *schema.Resource {
4142
}
4243
}
4344

44-
func resourceKongCertificateCreate(d *schema.ResourceData, meta interface{}) error {
45+
func resourceKongCertificateCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
4546

4647
certificateRequest := &kong.Certificate{
4748
Cert: kong.String(d.Get("certificate").(string)),
@@ -51,18 +52,18 @@ func resourceKongCertificateCreate(d *schema.ResourceData, meta interface{}) err
5152

5253
client := meta.(*config).adminClient.Certificates
5354

54-
certificate, err := client.Create(context.Background(), certificateRequest)
55+
certificate, err := client.Create(ctx, certificateRequest)
5556

5657
if err != nil {
57-
return fmt.Errorf("failed to create kong certificate: %v error: %v", certificateRequest, err)
58+
return diag.FromErr(fmt.Errorf("failed to create kong certificate: %v error: %v", certificateRequest, err))
5859
}
5960

6061
d.SetId(*certificate.ID)
6162

62-
return resourceKongCertificateRead(d, meta)
63+
return resourceKongCertificateRead(ctx, d, meta)
6364
}
6465

65-
func resourceKongCertificateUpdate(d *schema.ResourceData, meta interface{}) error {
66+
func resourceKongCertificateUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
6667
d.Partial(false)
6768

6869
certificateRequest := &kong.Certificate{
@@ -74,23 +75,24 @@ func resourceKongCertificateUpdate(d *schema.ResourceData, meta interface{}) err
7475

7576
client := meta.(*config).adminClient.Certificates
7677

77-
_, err := client.Update(context.Background(), certificateRequest)
78+
_, err := client.Update(ctx, certificateRequest)
7879

7980
if err != nil {
80-
return fmt.Errorf("error updating kong certificate: %s", err)
81+
return diag.FromErr(fmt.Errorf("error updating kong certificate: %s", err))
8182
}
8283

83-
return resourceKongCertificateRead(d, meta)
84+
return resourceKongCertificateRead(ctx, d, meta)
8485
}
8586

86-
func resourceKongCertificateRead(d *schema.ResourceData, meta interface{}) error {
87+
func resourceKongCertificateRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
8788

89+
var diags diag.Diagnostics
8890
client := meta.(*config).adminClient.Certificates
8991

90-
certificate, err := client.Get(context.Background(), kong.String(d.Id()))
92+
certificate, err := client.Get(ctx, kong.String(d.Id()))
9193

9294
if !kong.IsNotFoundErr(err) && err != nil {
93-
return fmt.Errorf("could not find kong certificate: %v", err)
95+
return diag.FromErr(fmt.Errorf("could not find kong certificate: %v", err))
9496
}
9597

9698
if certificate == nil {
@@ -109,18 +111,19 @@ func resourceKongCertificateRead(d *schema.ResourceData, meta interface{}) error
109111
}
110112
}
111113

112-
return nil
114+
return diags
113115
}
114116

115-
func resourceKongCertificateDelete(d *schema.ResourceData, meta interface{}) error {
117+
func resourceKongCertificateDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
116118

119+
var diags diag.Diagnostics
117120
client := meta.(*config).adminClient.Certificates
118121

119-
err := client.Delete(context.Background(), kong.String(d.Id()))
122+
err := client.Delete(ctx, kong.String(d.Id()))
120123

121124
if err != nil {
122-
return fmt.Errorf("could not delete kong certificate: %v", err)
125+
return diag.FromErr(fmt.Errorf("could not delete kong certificate: %v", err))
123126
}
124127

125-
return nil
128+
return diags
126129
}

kong/resource_kong_certificate_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import (
55
"fmt"
66
"testing"
77

8-
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
9-
"github.com/hashicorp/terraform-plugin-sdk/terraform"
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
1010
"github.com/kong/go-kong/kong"
1111
)
1212

kong/resource_kong_consumer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"context"
55
"fmt"
66

7-
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
88
"github.com/kong/go-kong/kong"
99
)
1010

kong/resource_kong_consumer_acl.go

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@ package kong
33
import (
44
"context"
55
"fmt"
6-
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
78
"github.com/kong/go-kong/kong"
89
)
910

1011
func resourceKongConsumerACL() *schema.Resource {
1112
return &schema.Resource{
12-
Create: resourceKongConsumerACLCreate,
13-
Read: resourceKongConsumerACLRead,
14-
Delete: resourceKongConsumerACLDelete,
15-
Update: resourceKongConsumerACLUpdate,
13+
CreateContext: resourceKongConsumerACLCreate,
14+
ReadContext: resourceKongConsumerACLRead,
15+
DeleteContext: resourceKongConsumerACLDelete,
16+
UpdateContext: resourceKongConsumerACLUpdate,
1617
Importer: &schema.ResourceImporter{
1718
State: schema.ImportStatePassthrough,
1819
},
@@ -37,7 +38,7 @@ func resourceKongConsumerACL() *schema.Resource {
3738
}
3839
}
3940

40-
func resourceKongConsumerACLCreate(d *schema.ResourceData, meta interface{}) error {
41+
func resourceKongConsumerACLCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
4142
ACLGroupRequest := &kong.ACLGroup{
4243
Group: kong.String(d.Get("group").(string)),
4344
Tags: readStringArrayPtrFromResource(d, "tags"),
@@ -46,18 +47,18 @@ func resourceKongConsumerACLCreate(d *schema.ResourceData, meta interface{}) err
4647
consumerId := kong.String(d.Get("consumer_id").(string))
4748

4849
client := meta.(*config).adminClient.ACLs
49-
aclGroup, err := client.Create(context.Background(), consumerId, ACLGroupRequest)
50+
aclGroup, err := client.Create(ctx, consumerId, ACLGroupRequest)
5051

5152
if err != nil {
52-
return fmt.Errorf("failed to create kong ACL Group: %v error: %v", ACLGroupRequest, err)
53+
return diag.FromErr(fmt.Errorf("failed to create kong ACL Group: %v error: %v", ACLGroupRequest, err))
5354
}
5455

5556
d.SetId(buildConsumerPairID(*aclGroup.ID, *consumerId))
5657

57-
return resourceKongConsumerACLRead(d, meta)
58+
return resourceKongConsumerACLRead(ctx, d, meta)
5859
}
5960

60-
func resourceKongConsumerACLUpdate(d *schema.ResourceData, meta interface{}) error {
61+
func resourceKongConsumerACLUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
6162
id, err := splitConsumerID(d.Id())
6263

6364
ACLGroupRequest := &kong.ACLGroup{
@@ -69,28 +70,29 @@ func resourceKongConsumerACLUpdate(d *schema.ResourceData, meta interface{}) err
6970
consumerId := kong.String(d.Get("consumer_id").(string))
7071

7172
client := meta.(*config).adminClient.ACLs
72-
_, err = client.Update(context.Background(), consumerId, ACLGroupRequest)
73+
_, err = client.Update(ctx, consumerId, ACLGroupRequest)
7374

7475
if err != nil {
75-
return fmt.Errorf("error updating kong ACL Group: %s", err)
76+
return diag.FromErr(fmt.Errorf("error updating kong ACL Group: %s", err))
7677
}
7778

78-
return resourceKongConsumerACLRead(d, meta)
79+
return resourceKongConsumerACLRead(ctx, d, meta)
7980
}
8081

81-
func resourceKongConsumerACLRead(d *schema.ResourceData, meta interface{}) error {
82+
func resourceKongConsumerACLRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
83+
var diags diag.Diagnostics
8284
id, err := splitConsumerID(d.Id())
8385
if err != nil {
84-
return err
86+
return diag.FromErr(err)
8587
}
8688

8789
client := meta.(*config).adminClient.ACLs
88-
ACLGroup, err := client.Get(context.Background(), kong.String(id.ConsumerID), kong.String(id.ID))
90+
ACLGroup, err := client.Get(ctx, kong.String(id.ConsumerID), kong.String(id.ID))
8991

9092
if kong.IsNotFoundErr(err) {
9193
d.SetId("")
9294
} else if err != nil {
93-
return fmt.Errorf("could not find kong ACLGroup with id: %s error: %v", id, err)
95+
return diag.FromErr(fmt.Errorf("could not find kong ACLGroup with id: %s error: %v", id, err))
9496
}
9597

9698
if ACLGroup == nil {
@@ -101,20 +103,21 @@ func resourceKongConsumerACLRead(d *schema.ResourceData, meta interface{}) error
101103
d.Set("tags", ACLGroup.Tags)
102104
}
103105

104-
return nil
106+
return diags
105107
}
106108

107-
func resourceKongConsumerACLDelete(d *schema.ResourceData, meta interface{}) error {
109+
func resourceKongConsumerACLDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
110+
var diags diag.Diagnostics
108111
id, err := splitConsumerID(d.Id())
109112
if err != nil {
110-
return err
113+
return diag.FromErr(err)
111114
}
112115
client := meta.(*config).adminClient.ACLs
113-
err = client.Delete(context.Background(), kong.String(id.ConsumerID), kong.String(id.ID))
116+
err = client.Delete(ctx, kong.String(id.ConsumerID), kong.String(id.ID))
114117

115118
if err != nil {
116-
return fmt.Errorf("could not delete kong ACL Group: %v", err)
119+
return diag.FromErr(fmt.Errorf("could not delete kong ACL Group: %v", err))
117120
}
118121

119-
return nil
122+
return diags
120123
}

kong/resource_kong_consumer_acl_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66
"github.com/kong/go-kong/kong"
77
"testing"
88

9-
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
10-
"github.com/hashicorp/terraform-plugin-sdk/terraform"
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
10+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
1111
)
1212

1313
func TestAccConsumerACL(t *testing.T) {

0 commit comments

Comments
 (0)