Skip to content

Commit

Permalink
chore: Migrate from tfsdk to new go packages
Browse files Browse the repository at this point in the history
See [1] for more information on these changes.

[1]: hashicorp/terraform-plugin-framework#432
  • Loading branch information
gonzolino committed Aug 17, 2022
1 parent de7d69f commit 48a6373
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 34 deletions.
29 changes: 15 additions & 14 deletions internal/provider/provider.go
Expand Up @@ -8,13 +8,14 @@ import (

"github.com/gonzolino/terraform-provider-powerdns/internal/powerdns"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/provider"
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
"github.com/hashicorp/terraform-plugin-framework/types"
)

// provider satisfies the tfsdk.Provider interface and usually is included
// with all Resource and DataSource implementations.
type provider struct {
type powerdnsProvider struct {
// client can contain the upstream provider SDK or HTTP client used to
// communicate with the upstream service. Resource and DataSource
// implementations can then make calls using this client.
Expand All @@ -37,7 +38,7 @@ type providerData struct {
ServerURL types.String `tfsdk:"server_url"`
}

func (p *provider) Configure(ctx context.Context, req tfsdk.ConfigureProviderRequest, resp *tfsdk.ConfigureProviderResponse) {
func (p *powerdnsProvider) Configure(ctx context.Context, req provider.ConfigureRequest, resp *provider.ConfigureResponse) {
var data providerData
diags := req.Config.Get(ctx, &data)
resp.Diagnostics.Append(diags...)
Expand Down Expand Up @@ -86,21 +87,21 @@ func (p *provider) Configure(ctx context.Context, req tfsdk.ConfigureProviderReq
p.configured = true
}

func (p *provider) GetResources(ctx context.Context) (map[string]tfsdk.ResourceType, diag.Diagnostics) {
return map[string]tfsdk.ResourceType{
func (p *powerdnsProvider) GetResources(_ context.Context) (map[string]provider.ResourceType, diag.Diagnostics) {
return map[string]provider.ResourceType{
"powerdns_recordset": recordsetResourceType{},
"powerdns_zone": zoneResourceType{},
}, nil
}

func (p *provider) GetDataSources(ctx context.Context) (map[string]tfsdk.DataSourceType, diag.Diagnostics) {
return map[string]tfsdk.DataSourceType{
func (p *powerdnsProvider) GetDataSources(_ context.Context) (map[string]provider.DataSourceType, diag.Diagnostics) {
return map[string]provider.DataSourceType{
"powerdns_recordset": recordsetDataSourceType{},
"powerdns_zone": zoneDataSourceType{},
}, nil
}

func (p *provider) GetSchema(ctx context.Context) (tfsdk.Schema, diag.Diagnostics) {
func (p *powerdnsProvider) GetSchema(_ context.Context) (tfsdk.Schema, diag.Diagnostics) {
return tfsdk.Schema{
MarkdownDescription: "The PowerDNS provider allows modifying zone content and metadata using the PowerDNS API.",
Attributes: map[string]tfsdk.Attribute{
Expand All @@ -119,9 +120,9 @@ func (p *provider) GetSchema(ctx context.Context) (tfsdk.Schema, diag.Diagnostic
}, nil
}

func New(version string) func() tfsdk.Provider {
return func() tfsdk.Provider {
return &provider{
func New(version string) func() provider.Provider {
return func() provider.Provider {
return &powerdnsProvider{
version: version,
}
}
Expand All @@ -132,25 +133,25 @@ func New(version string) func() tfsdk.Provider {
// this helper can be skipped and the provider type can be directly type
// asserted (e.g. provider: in.(*provider)), however using this can prevent
// potential panics.
func convertProviderType(in tfsdk.Provider) (provider, diag.Diagnostics) {
func convertProviderType(in provider.Provider) (powerdnsProvider, diag.Diagnostics) {
var diags diag.Diagnostics

p, ok := in.(*provider)
p, ok := in.(*powerdnsProvider)

if !ok {
diags.AddError(
"Unexpected Provider Instance Type",
fmt.Sprintf("While creating the data source or resource, an unexpected provider type (%T) was received. This is always a bug in the provider code and should be reported to the provider developers.", p),
)
return provider{}, diags
return powerdnsProvider{}, diags
}

if p == nil {
diags.AddError(
"Unexpected Provider Instance Type",
"While creating the data source or resource, an unexpected empty provider instance was received. This is always a bug in the provider code and should be reported to the provider developers.",
)
return provider{}, diags
return powerdnsProvider{}, diags
}

return *p, diags
Expand Down
8 changes: 5 additions & 3 deletions internal/provider/recordset_data_source.go
Expand Up @@ -5,7 +5,9 @@ import (
"fmt"

"github.com/hashicorp/terraform-plugin-framework/attr"
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/provider"
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
Expand Down Expand Up @@ -58,7 +60,7 @@ func (t recordsetDataSourceType) GetSchema(ctx context.Context) (tfsdk.Schema, d
}, nil
}

func (t recordsetDataSourceType) NewDataSource(ctx context.Context, in tfsdk.Provider) (tfsdk.DataSource, diag.Diagnostics) {
func (t recordsetDataSourceType) NewDataSource(ctx context.Context, in provider.Provider) (datasource.DataSource, diag.Diagnostics) {
provider, diags := convertProviderType(in)

return recordsetDataSource{
Expand All @@ -77,10 +79,10 @@ type recordsetDataSourceData struct {
}

type recordsetDataSource struct {
provider provider
provider powerdnsProvider
}

func (d recordsetDataSource) Read(ctx context.Context, req tfsdk.ReadDataSourceRequest, resp *tfsdk.ReadDataSourceResponse) {
func (d recordsetDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {
var data recordsetDataSourceData

diags := req.Config.Get(ctx, &data)
Expand Down
16 changes: 9 additions & 7 deletions internal/provider/recordset_resource.go
Expand Up @@ -9,6 +9,8 @@ import (
"github.com/hashicorp/terraform-plugin-framework/attr"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/path"
"github.com/hashicorp/terraform-plugin-framework/provider"
"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
Expand Down Expand Up @@ -61,7 +63,7 @@ func (t recordsetResourceType) GetSchema(ctx context.Context) (tfsdk.Schema, dia
}, nil
}

func (t recordsetResourceType) NewResource(ctx context.Context, in tfsdk.Provider) (tfsdk.Resource, diag.Diagnostics) {
func (t recordsetResourceType) NewResource(ctx context.Context, in provider.Provider) (resource.Resource, diag.Diagnostics) {
provider, diags := convertProviderType(in)

return recordsetResource{
Expand All @@ -80,10 +82,10 @@ type recordsetResourceData struct {
}

type recordsetResource struct {
provider provider
provider powerdnsProvider
}

func (r recordsetResource) Create(ctx context.Context, req tfsdk.CreateResourceRequest, resp *tfsdk.CreateResourceResponse) {
func (r recordsetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
var data recordsetResourceData

diags := req.Config.Get(ctx, &data)
Expand Down Expand Up @@ -134,7 +136,7 @@ func (r recordsetResource) Create(ctx context.Context, req tfsdk.CreateResourceR
resp.Diagnostics.Append(diags...)
}

func (r recordsetResource) Read(ctx context.Context, req tfsdk.ReadResourceRequest, resp *tfsdk.ReadResourceResponse) {
func (r recordsetResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) {
var data recordsetResourceData

diags := req.State.Get(ctx, &data)
Expand Down Expand Up @@ -170,7 +172,7 @@ func (r recordsetResource) Read(ctx context.Context, req tfsdk.ReadResourceReque
resp.Diagnostics.Append(diags...)
}

func (r recordsetResource) Update(ctx context.Context, req tfsdk.UpdateResourceRequest, resp *tfsdk.UpdateResourceResponse) {
func (r recordsetResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) {
var data recordsetResourceData

diags := req.Plan.Get(ctx, &data)
Expand Down Expand Up @@ -233,7 +235,7 @@ func (r recordsetResource) Update(ctx context.Context, req tfsdk.UpdateResourceR
resp.Diagnostics.Append(diags...)
}

func (r recordsetResource) Delete(ctx context.Context, req tfsdk.DeleteResourceRequest, resp *tfsdk.DeleteResourceResponse) {
func (r recordsetResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) {
var data recordsetResourceData

diags := req.State.Get(ctx, &data)
Expand Down Expand Up @@ -271,7 +273,7 @@ func (r recordsetResource) Delete(ctx context.Context, req tfsdk.DeleteResourceR
resp.State.RemoveResource(ctx)
}

func (r recordsetResource) ImportState(ctx context.Context, req tfsdk.ImportResourceStateRequest, resp *tfsdk.ImportResourceStateResponse) {
func (r recordsetResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) {
splittedID := strings.Split(req.ID, "/")

if len(splittedID) != 4 {
Expand Down
8 changes: 5 additions & 3 deletions internal/provider/zone_data_source.go
Expand Up @@ -4,7 +4,9 @@ import (
"context"
"fmt"

"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/provider"
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
Expand Down Expand Up @@ -42,7 +44,7 @@ func (t zoneDataSourceType) GetSchema(ctx context.Context) (tfsdk.Schema, diag.D
}, nil
}

func (t zoneDataSourceType) NewDataSource(ctx context.Context, in tfsdk.Provider) (tfsdk.DataSource, diag.Diagnostics) {
func (t zoneDataSourceType) NewDataSource(ctx context.Context, in provider.Provider) (datasource.DataSource, diag.Diagnostics) {
provider, diags := convertProviderType(in)

return zoneDataSource{
Expand All @@ -58,10 +60,10 @@ type zoneDataSourceData struct {
}

type zoneDataSource struct {
provider provider
provider powerdnsProvider
}

func (d zoneDataSource) Read(ctx context.Context, req tfsdk.ReadDataSourceRequest, resp *tfsdk.ReadDataSourceResponse) {
func (d zoneDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {
var data zoneDataSourceData

diags := req.Config.Get(ctx, &data)
Expand Down
16 changes: 9 additions & 7 deletions internal/provider/zone_resource.go
Expand Up @@ -8,6 +8,8 @@ import (
"github.com/gonzolino/terraform-provider-powerdns/internal/powerdns"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/path"
"github.com/hashicorp/terraform-plugin-framework/provider"
"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-framework/tfsdk"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
Expand Down Expand Up @@ -45,7 +47,7 @@ func (t zoneResourceType) GetSchema(ctx context.Context) (tfsdk.Schema, diag.Dia
}, nil
}

func (t zoneResourceType) NewResource(ctx context.Context, in tfsdk.Provider) (tfsdk.Resource, diag.Diagnostics) {
func (t zoneResourceType) NewResource(ctx context.Context, in provider.Provider) (resource.Resource, diag.Diagnostics) {
provider, diags := convertProviderType(in)

return zoneResource{
Expand All @@ -61,10 +63,10 @@ type zoneResourceData struct {
}

type zoneResource struct {
provider provider
provider powerdnsProvider
}

func (r zoneResource) Create(ctx context.Context, req tfsdk.CreateResourceRequest, resp *tfsdk.CreateResourceResponse) {
func (r zoneResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
var data zoneResourceData

diags := req.Config.Get(ctx, &data)
Expand Down Expand Up @@ -104,7 +106,7 @@ func (r zoneResource) Create(ctx context.Context, req tfsdk.CreateResourceReques
resp.Diagnostics.Append(diags...)
}

func (r zoneResource) Read(ctx context.Context, req tfsdk.ReadResourceRequest, resp *tfsdk.ReadResourceResponse) {
func (r zoneResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) {
var data zoneResourceData

diags := req.State.Get(ctx, &data)
Expand Down Expand Up @@ -144,7 +146,7 @@ func (r zoneResource) Read(ctx context.Context, req tfsdk.ReadResourceRequest, r
resp.Diagnostics.Append(diags...)
}

func (r zoneResource) Update(ctx context.Context, req tfsdk.UpdateResourceRequest, resp *tfsdk.UpdateResourceResponse) {
func (r zoneResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) {
var data zoneResourceData

diags := req.Plan.Get(ctx, &data)
Expand Down Expand Up @@ -204,7 +206,7 @@ func (r zoneResource) Update(ctx context.Context, req tfsdk.UpdateResourceReques
resp.Diagnostics.Append(diags...)
}

func (r zoneResource) Delete(ctx context.Context, req tfsdk.DeleteResourceRequest, resp *tfsdk.DeleteResourceResponse) {
func (r zoneResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) {
var data zoneResourceData

diags := req.State.Get(ctx, &data)
Expand All @@ -230,7 +232,7 @@ func (r zoneResource) Delete(ctx context.Context, req tfsdk.DeleteResourceReques
resp.State.RemoveResource(ctx)
}

func (r zoneResource) ImportState(ctx context.Context, req tfsdk.ImportResourceStateRequest, resp *tfsdk.ImportResourceStateResponse) {
func (r zoneResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) {
splittedID := strings.Split(req.ID, "/")

if len(splittedID) != 2 {
Expand Down

0 comments on commit 48a6373

Please sign in to comment.