Skip to content

Commit

Permalink
Provider only configure for once (#49)
Browse files Browse the repository at this point in the history
  • Loading branch information
magodo committed Feb 6, 2023
1 parent 7aeaecf commit 541d258
Show file tree
Hide file tree
Showing 4 changed files with 265 additions and 216 deletions.
19 changes: 14 additions & 5 deletions internal/provider/data_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,13 +65,22 @@ func (d *DataSource) Schema(ctx context.Context, req datasource.SchemaRequest, r
}

func (d *DataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) {
d.p = &Provider{}
if req.ProviderData != nil {
p, diags := req.ProviderData.(providerData).ConfigureProvider(ctx)
if req.ProviderData == nil {
return
}
providerData, ok := req.ProviderData.(providerData)
if !ok {
resp.Diagnostics.AddError(
"Unexpected Data Source Configure Type",
fmt.Sprintf("got: %T.", req.ProviderData),
)
return
}
if diags := providerData.provider.Init(ctx, providerData.config); diags.HasError() {
resp.Diagnostics.Append(diags...)
d.p = p
return
}
return
d.p = providerData.provider
}

func (d *DataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {
Expand Down
19 changes: 14 additions & 5 deletions internal/provider/operation_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,13 +105,22 @@ func (r *OperationResource) Schema(ctx context.Context, req resource.SchemaReque
}

func (r *OperationResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) {
r.p = &Provider{}
if req.ProviderData != nil {
p, diags := req.ProviderData.(providerData).ConfigureProvider(ctx)
if req.ProviderData == nil {
return
}
providerData, ok := req.ProviderData.(providerData)
if !ok {
resp.Diagnostics.AddError(
"Unexpected Operation Resource Configure Type",
fmt.Sprintf("got: %T.", req.ProviderData),
)
return
}
if diags := providerData.provider.Init(ctx, providerData.config); diags.HasError() {
resp.Diagnostics.Append(diags...)
r.p = p
return
}
return
r.p = providerData.provider
}

func (r *OperationResource) createOrUpdate(ctx context.Context, tfplan tfsdk.Plan, state *tfsdk.State, diagnostics *diag.Diagnostics) {
Expand Down
Loading

0 comments on commit 541d258

Please sign in to comment.