From 48a6373e979fcd93328d884bd0fc26b3d6edc74c Mon Sep 17 00:00:00 2001 From: Daniel Gonzalez Date: Wed, 17 Aug 2022 11:43:59 +0200 Subject: [PATCH] chore: Migrate from tfsdk to new go packages See [1] for more information on these changes. [1]: hashicorp/terraform-plugin-framework#432 --- internal/provider/provider.go | 29 +++++++++++----------- internal/provider/recordset_data_source.go | 8 +++--- internal/provider/recordset_resource.go | 16 ++++++------ internal/provider/zone_data_source.go | 8 +++--- internal/provider/zone_resource.go | 16 ++++++------ 5 files changed, 43 insertions(+), 34 deletions(-) diff --git a/internal/provider/provider.go b/internal/provider/provider.go index 0f2239c..6a2294e 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -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. @@ -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...) @@ -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{ @@ -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, } } @@ -132,17 +133,17 @@ 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 { @@ -150,7 +151,7 @@ func convertProviderType(in tfsdk.Provider) (provider, diag.Diagnostics) { "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 diff --git a/internal/provider/recordset_data_source.go b/internal/provider/recordset_data_source.go index 1d9a097..47ebee1 100644 --- a/internal/provider/recordset_data_source.go +++ b/internal/provider/recordset_data_source.go @@ -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" @@ -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{ @@ -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) diff --git a/internal/provider/recordset_resource.go b/internal/provider/recordset_resource.go index 5edf129..0842f61 100644 --- a/internal/provider/recordset_resource.go +++ b/internal/provider/recordset_resource.go @@ -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" @@ -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{ @@ -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) @@ -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) @@ -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) @@ -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) @@ -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 { diff --git a/internal/provider/zone_data_source.go b/internal/provider/zone_data_source.go index 1f4d12d..5db1b82 100644 --- a/internal/provider/zone_data_source.go +++ b/internal/provider/zone_data_source.go @@ -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" @@ -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{ @@ -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) diff --git a/internal/provider/zone_resource.go b/internal/provider/zone_resource.go index 06fe635..e48666f 100644 --- a/internal/provider/zone_resource.go +++ b/internal/provider/zone_resource.go @@ -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" @@ -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{ @@ -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) @@ -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) @@ -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) @@ -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) @@ -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 {