Skip to content

Commit 12b157e

Browse files
committed
Support full resource names in autokey_config.folder
Add pre_* custom code to drop the 'folders/' prefix from API requests, as well as a diff suppressor for the same reason. The ID also needs to be adjusted on post_create. Side change: add a time delay after setting the autokey_config in the basic example, to try to address test flakiness (#18935)
1 parent 0cf66cb commit 12b157e

10 files changed

+35
-1
lines changed

mmv1/products/kms/AutokeyConfig.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ id_format: 'folders/{{folder}}/autokeyConfig'
4040
import_format: ['folders/{{folder}}/autokeyConfig']
4141
min_version: beta
4242
custom_code: !ruby/object:Provider::Terraform::CustomCode
43+
constants: templates/terraform/constants/autokey_config_folder_diff.go.erb
44+
pre_create: templates/terraform/pre_create/kms_autokey_config_folder.go.erb
45+
pre_delete: templates/terraform/pre_delete/kms_autokey_config_folder.go.erb
46+
pre_read: templates/terraform/pre_read/kms_autokey_config_folder.go.erb
47+
pre_update: templates/terraform/pre_update/kms_autokey_config_folder.go.erb
4348
test_check_destroy: templates/terraform/custom_check_destroy/kms_autokey_config.go.erb
4449
examples:
4550
- !ruby/object:Provider::Terraform::Examples
@@ -63,6 +68,7 @@ parameters:
6368
required: true
6469
immutable: true
6570
url_param_only: true
71+
diff_suppress_func: 'folderPrefixSuppress'
6672
description: |
6773
The folder for which to retrieve config.
6874
properties:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
func folderPrefixSuppress(_, old, new string, d *schema.ResourceData) bool {
2+
prefix := "folders/"
3+
return prefix+old == new || prefix+new == old
4+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
func folderPrefixSuppress(_, old, new string, d *schema.ResourceData) bool {
2+
prefix := "folders/"
3+
return prefix+old == new || prefix+new == old
4+
}

mmv1/templates/terraform/custom_check_destroy/kms_autokey_config.go.erb

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
config := acctest.GoogleProviderConfig(t)
22

33
url, err := tpgresource.ReplaceVarsForTest(config, rs, "{{KMSBasePath}}folders/{{folder}}/autokeyConfig")
4+
url = strings.Replace(url, "folders/folders/", "folders/", 1)
45
if err != nil {
56
return err
67
}

mmv1/templates/terraform/examples/kms_autokey_config_all.tf.erb

+8-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,14 @@ resource "time_sleep" "wait_srv_acc_permissions" {
6262

6363
resource "google_kms_autokey_config" "<%= ctx[:primary_resource_id] %>" {
6464
provider = google-beta
65-
folder = google_folder.autokms_folder.folder_id
65+
folder = google_folder.autokms_folder.id
6666
key_project = "projects/${google_project.key_project.project_id}"
6767
depends_on = [time_sleep.wait_srv_acc_permissions]
6868
}
69+
70+
# Wait delay after setting AutokeyConfig, to prevent diffs on reapply,
71+
# because setting the config takes a little to fully propagate.
72+
resource "time_sleep" "wait_autokey_propagation" {
73+
create_duration = "15s"
74+
depends_on = [google_kms_autokey_config.<%= ctx[:primary_resource_id] %>]
75+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
id = strings.Replace(id, "folders/folders/", "folders/", 1)
2+
d.SetId(id)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
url = strings.Replace(url, "folders/folders/", "folders/", 1)
2+
folderValue := d.Get("folder").(string)
3+
folderValue = strings.Replace(folderValue, "folders/", "", 1)
4+
d.Set("folder", folderValue)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
url = strings.Replace(url, "folders/folders/", "folders/", 1)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
url = strings.Replace(url, "folders/folders/", "folders/", 1)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
url = strings.Replace(url, "folders/folders/", "folders/", 1)
2+
folderValue := d.Get("folder").(string)
3+
folderValue = strings.Replace(folderValue, "folders/", "", 1)
4+
d.Set("folder", folderValue)

0 commit comments

Comments
 (0)