Skip to content

Commit f2c42ba

Browse files
modular-magiciantrodge
authored andcommitted
bigtable: IAM resources were not able to upgrade to v7.X.X without state upgrader (#15027) (#10667)
[upstream:b175083dcccfb400adfa5a9a397bcf4414b26034] Signed-off-by: Modular Magician <[email protected]>
1 parent fe10525 commit f2c42ba

File tree

7 files changed

+403
-7
lines changed

7 files changed

+403
-7
lines changed

.changelog/15027.txt

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

google-beta/provider/provider_mmv1_resources.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1751,9 +1751,9 @@ var handwrittenIAMResources = map[string]*schema.Resource{
17511751
"google_bigtable_instance_iam_binding": tpgiamresource.ResourceIamBinding(bigtable.IamBigtableInstanceSchema, bigtable.NewBigtableInstanceUpdater, bigtable.BigtableInstanceIdParseFunc),
17521752
"google_bigtable_instance_iam_member": tpgiamresource.ResourceIamMember(bigtable.IamBigtableInstanceSchema, bigtable.NewBigtableInstanceUpdater, bigtable.BigtableInstanceIdParseFunc),
17531753
"google_bigtable_instance_iam_policy": tpgiamresource.ResourceIamPolicy(bigtable.IamBigtableInstanceSchema, bigtable.NewBigtableInstanceUpdater, bigtable.BigtableInstanceIdParseFunc),
1754-
"google_bigtable_table_iam_binding": tpgiamresource.ResourceIamBinding(bigtable.IamBigtableTableSchema, bigtable.NewBigtableTableUpdater, bigtable.BigtableTableIdParseFunc),
1755-
"google_bigtable_table_iam_member": tpgiamresource.ResourceIamMember(bigtable.IamBigtableTableSchema, bigtable.NewBigtableTableUpdater, bigtable.BigtableTableIdParseFunc),
1756-
"google_bigtable_table_iam_policy": tpgiamresource.ResourceIamPolicy(bigtable.IamBigtableTableSchema, bigtable.NewBigtableTableUpdater, bigtable.BigtableTableIdParseFunc),
1754+
"google_bigtable_table_iam_binding": tpgiamresource.ResourceIamBinding(bigtable.IamBigtableTableSchema, bigtable.NewBigtableTableUpdater, bigtable.BigtableTableIdParseFunc, tpgiamresource.IamWithStateUpgraders(bigtable.BigtableTableIamStateUpgraders), tpgiamresource.IamWithSchemaVersion(1)),
1755+
"google_bigtable_table_iam_member": tpgiamresource.ResourceIamMember(bigtable.IamBigtableTableSchema, bigtable.NewBigtableTableUpdater, bigtable.BigtableTableIdParseFunc, tpgiamresource.IamWithStateUpgraders(bigtable.BigtableTableIamStateUpgraders), tpgiamresource.IamWithSchemaVersion(1)),
1756+
"google_bigtable_table_iam_policy": tpgiamresource.ResourceIamPolicy(bigtable.IamBigtableTableSchema, bigtable.NewBigtableTableUpdater, bigtable.BigtableTableIdParseFunc, tpgiamresource.IamWithStateUpgraders(bigtable.BigtableTableIamStateUpgraders), tpgiamresource.IamWithSchemaVersion(1)),
17571757
"google_bigquery_dataset_iam_binding": tpgiamresource.ResourceIamBinding(bigquery.IamBigqueryDatasetSchema, bigquery.NewBigqueryDatasetIamUpdater, bigquery.BigqueryDatasetIdParseFunc),
17581758
"google_bigquery_dataset_iam_member": tpgiamresource.ResourceIamMember(bigquery.IamMemberBigqueryDatasetSchema, bigquery.NewBigqueryDatasetIamMemberUpdater, bigquery.BigqueryDatasetIdParseFunc),
17591759
"google_bigquery_dataset_iam_policy": tpgiamresource.ResourceIamPolicy(bigquery.IamBigqueryDatasetSchema, bigquery.NewBigqueryDatasetIamUpdater, bigquery.BigqueryDatasetIdParseFunc),
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
// Copyright (c) HashiCorp, Inc.
2+
// SPDX-License-Identifier: MPL-2.0
3+
// ----------------------------------------------------------------------------
4+
//
5+
// *** AUTO GENERATED CODE *** Type: Handwritten ***
6+
//
7+
// ----------------------------------------------------------------------------
8+
//
9+
// This code is generated by Magic Modules using the following:
10+
//
11+
// Source file: https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/third_party/terraform/services/bigtable/iam_bigtable_table_migrate.go
12+
//
13+
// DO NOT EDIT this file directly. Any changes made to this file will be
14+
// overwritten during the next generation cycle.
15+
//
16+
// ----------------------------------------------------------------------------
17+
package bigtable
18+
19+
import (
20+
"context"
21+
"log"
22+
23+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
24+
)
25+
26+
var BigtableTableIamStateUpgraders = []schema.StateUpgrader{
27+
{
28+
Type: resourceBigtableTableIAMV0().CoreConfigSchema().ImpliedType(),
29+
Upgrade: ResourceBigtableTableIAMUpgradeV0,
30+
Version: 0,
31+
},
32+
}
33+
34+
func resourceBigtableTableIAMV0() *schema.Resource {
35+
return &schema.Resource{
36+
Schema: map[string]*schema.Schema{
37+
"instance": {
38+
Type: schema.TypeString,
39+
Required: true,
40+
ForceNew: true,
41+
},
42+
"project": {
43+
Type: schema.TypeString,
44+
Optional: true,
45+
Computed: true,
46+
ForceNew: true,
47+
},
48+
"table": {
49+
Type: schema.TypeString,
50+
Required: true,
51+
ForceNew: true,
52+
},
53+
},
54+
UseJSONNumber: true,
55+
}
56+
}
57+
58+
func ResourceBigtableTableIAMUpgradeV0(_ context.Context, rawState map[string]interface{}, meta interface{}) (map[string]interface{}, error) {
59+
log.Printf("[DEBUG] Attributes before migration: %#v", rawState)
60+
61+
if _, ok := rawState["instance"]; ok {
62+
rawState["instance_name"] = rawState["instance"]
63+
}
64+
65+
log.Printf("[DEBUG] Attributes after migration: %#v", rawState)
66+
return rawState, nil
67+
}

google-beta/tpgiamresource/iam.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,8 @@ func CompareAuditConfigs(a, b []*cloudresourcemanager.AuditConfig) bool {
483483
type IamSettings struct {
484484
DeprecationMessage string
485485
EnableBatching bool
486+
StateUpgraders []schema.StateUpgrader
487+
SchemaVersion int
486488
}
487489

488490
func NewIamSettings(options ...func(*IamSettings)) *IamSettings {
@@ -507,6 +509,18 @@ func IamWithBatching(s *IamSettings) {
507509
s.EnableBatching = true
508510
}
509511

512+
func IamWithStateUpgraders(upgraders []schema.StateUpgrader) func(*IamSettings) {
513+
return func(s *IamSettings) {
514+
s.StateUpgraders = upgraders
515+
}
516+
}
517+
518+
func IamWithSchemaVersion(version int) func(*IamSettings) {
519+
return func(s *IamSettings) {
520+
s.SchemaVersion = version
521+
}
522+
}
523+
510524
// Util to deref and print auditConfigs
511525
func DebugPrintAuditConfigs(bs []*cloudresourcemanager.AuditConfig) string {
512526
v, _ := json.MarshalIndent(bs, "", "\t")

google-beta/tpgiamresource/resource_iam_binding.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,9 @@ func ResourceIamBinding(parentSpecificSchema map[string]*schema.Schema, newUpdat
9191
// if non-empty, this will be used to send a deprecation message when the
9292
// resource is used.
9393
DeprecationMessage: settings.DeprecationMessage,
94-
95-
Schema: tpgresource.MergeSchemas(iamBindingSchema, parentSpecificSchema),
94+
Schema: tpgresource.MergeSchemas(iamBindingSchema, parentSpecificSchema),
95+
SchemaVersion: settings.SchemaVersion,
96+
StateUpgraders: settings.StateUpgraders,
9697
Importer: &schema.ResourceImporter{
9798
State: iamBindingImport(newUpdaterFunc, resourceIdParser),
9899
},

google-beta/tpgiamresource/resource_iam_member.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,9 @@ func ResourceIamMember(parentSpecificSchema map[string]*schema.Schema, newUpdate
197197
// resource is used.
198198
DeprecationMessage: settings.DeprecationMessage,
199199

200-
Schema: tpgresource.MergeSchemas(IamMemberBaseSchema, parentSpecificSchema),
200+
Schema: tpgresource.MergeSchemas(IamMemberBaseSchema, parentSpecificSchema),
201+
SchemaVersion: settings.SchemaVersion,
202+
StateUpgraders: settings.StateUpgraders,
201203
Importer: &schema.ResourceImporter{
202204
State: iamMemberImport(newUpdaterFunc, resourceIdParser),
203205
},

google-beta/tpgiamresource/resource_iam_policy.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ func ResourceIamPolicy(parentSpecificSchema map[string]*schema.Schema, newUpdate
6969
// resource is used.
7070
DeprecationMessage: settings.DeprecationMessage,
7171

72-
Schema: tpgresource.MergeSchemas(IamPolicyBaseSchema, parentSpecificSchema),
72+
Schema: tpgresource.MergeSchemas(IamPolicyBaseSchema, parentSpecificSchema),
73+
SchemaVersion: settings.SchemaVersion,
74+
StateUpgraders: settings.StateUpgraders,
7375
Importer: &schema.ResourceImporter{
7476
State: iamPolicyImport(resourceIdParser),
7577
},

0 commit comments

Comments
 (0)