Skip to content

Commit 196af97

Browse files
alexottnfx
authored andcommitted
Mark resources as new when doing import
This fixes #471
1 parent ac1d3d1 commit 196af97

File tree

3 files changed

+28
-14
lines changed

3 files changed

+28
-14
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
* Added validation for secret scope name in `databricks_secret`, `databricks_secret_scope` and `databricks_secret_acl`. Non-compliant names may cause errors.
1515
* Added [databricks_spark_version](https://github.com/databrickslabs/terraform-provider-databricks/issues/347) data source.
1616
* Fixed support for [single node clusters](https://docs.databricks.com/clusters/single-node.html) support by allowing [`num_workers` to be `0`](https://github.com/databrickslabs/terraform-provider-databricks/pull/454).
17+
* Fixed import of resources, such as, `databricks_user` ([#471](https://github.com/databrickslabs/terraform-provider-databricks/issues/471))
1718

1819
**Behavior changes**
1920

go.sum

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,10 +227,13 @@ github.com/hashicorp/terraform-json v0.8.0 h1:XObQ3PgqU52YLQKEaJ08QtUshAfN3yu4u8
227227
github.com/hashicorp/terraform-json v0.8.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE=
228228
github.com/hashicorp/terraform-plugin-go v0.1.0 h1:kyXZ0nkHxiRev/q18N40IbRRk4AV0zE/MDJkDM3u8dY=
229229
github.com/hashicorp/terraform-plugin-go v0.1.0/go.mod h1:10V6F3taeDWVAoLlkmArKttR3IULlRWFAGtQIQTIDr4=
230+
github.com/hashicorp/terraform-plugin-sdk v1.16.0 h1:NrkXMRjHErUPPTHQkZ6JIn6bByiJzGnlJzH1rVdNEuE=
230231
github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.2-0.20200828083434-d39628234432 h1:IABUWxC+Atoelqy5Wk1GtbG6OR1DwIC5N0RPvePfvfw=
231232
github.com/hashicorp/terraform-plugin-sdk/v2 v2.0.2-0.20200828083434-d39628234432/go.mod h1:BRz6UtYmksQJU0eMfahQR8fcJf8tIe77gn7YVm6rGD4=
232233
github.com/hashicorp/terraform-plugin-sdk/v2 v2.4.0 h1:2c+vG46celrDCsfYEIzaXxvBaAXCqlVG77LwtFz8cfs=
233234
github.com/hashicorp/terraform-plugin-sdk/v2 v2.4.0/go.mod h1:JBItawj+j8Ssla5Ib6BC/W9VQkOucBfnX7VRtyx1vw8=
235+
github.com/hashicorp/terraform-plugin-sdk/v2 v2.4.1 h1:k2rpom9wG2cdi5iLRH80EdQB7UX/E6UzYzUfzgsNLuU=
236+
github.com/hashicorp/terraform-plugin-sdk/v2 v2.4.2 h1:8oo4eMtv3nEZGqe8W0UzMxKnKWuwS/Tb2YyIFJkL59g=
234237
github.com/hashicorp/terraform-plugin-test/v2 v2.0.0 h1:fYGV3nZvs8KFGKuY2NPAJDMNfVSDHo+U2FGFl3bPv1s=
235238
github.com/hashicorp/terraform-plugin-test/v2 v2.0.0/go.mod h1:C6VALgUlvaif+PnHyRGKWPTdQkMJK4NQ20VJolxZLI0=
236239
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=

internal/util/common_resource.go

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,20 @@ func (r CommonResource) ToResource() *schema.Resource {
4343
v.ForceNew = true
4444
}
4545
}
46+
readFunc := func(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
47+
err := r.Read(ctx, d, m.(*common.DatabricksClient))
48+
if e, ok := err.(common.APIError); ok && e.IsMissing() {
49+
log.Printf("[INFO] %s[id=%s] is removed on backend",
50+
common.ResourceName.GetOrUnknown(ctx), d.Id())
51+
d.SetId("")
52+
return nil
53+
}
54+
if err != nil {
55+
return diag.FromErr(err)
56+
}
57+
return nil
58+
}
59+
4660
return &schema.Resource{
4761
Schema: r.Schema,
4862
SchemaVersion: r.SchemaVersion,
@@ -64,19 +78,7 @@ func (r CommonResource) ToResource() *schema.Resource {
6478
}
6579
return nil
6680
},
67-
ReadContext: func(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
68-
err := r.Read(ctx, d, m.(*common.DatabricksClient))
69-
if e, ok := err.(common.APIError); ok && e.IsMissing() {
70-
log.Printf("[INFO] %s[id=%s] is removed on backend",
71-
common.ResourceName.GetOrUnknown(ctx), d.Id())
72-
d.SetId("")
73-
return nil
74-
}
75-
if err != nil {
76-
return diag.FromErr(err)
77-
}
78-
return nil
79-
},
81+
ReadContext: readFunc,
8082
UpdateContext: update,
8183
DeleteContext: func(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
8284
if err := r.Delete(ctx, d, m.(*common.DatabricksClient)); err != nil {
@@ -85,7 +87,15 @@ func (r CommonResource) ToResource() *schema.Resource {
8587
return nil
8688
},
8789
Importer: &schema.ResourceImporter{
88-
StateContext: schema.ImportStatePassthroughContext,
90+
StateContext: func(ctx context.Context, d *schema.ResourceData, m interface{}) (data []*schema.ResourceData, e error) {
91+
d.MarkNewResource()
92+
diags := readFunc(ctx, d, m)
93+
var err error
94+
if diags.HasError() {
95+
err = diags[0].Validate()
96+
}
97+
return []*schema.ResourceData{d}, err
98+
},
8999
},
90100
}
91101
}

0 commit comments

Comments
 (0)