Skip to content

Commit 15db002

Browse files
Support full resource names in autokey_config.folder (#11413) (#8100)
[upstream:ba356a39c6c948916aab77da2dc0cab22b95d70a] Signed-off-by: Modular Magician <[email protected]>
1 parent c013ba7 commit 15db002

File tree

5 files changed

+40
-21
lines changed

5 files changed

+40
-21
lines changed

.changelog/11413.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
kms: updated the `google_kms_autokey_config` resource's `folder` field to accept values that are either full resource names (`folders/{folder_id}`) or just the folder id (`{folder_id}` only)
3+
```

google-beta/services/kms/resource_kms_autokey_config.go

+18-4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"log"
2323
"net/http"
2424
"reflect"
25+
"strings"
2526
"time"
2627

2728
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -30,6 +31,11 @@ import (
3031
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
3132
)
3233

34+
func folderPrefixSuppress(_, old, new string, d *schema.ResourceData) bool {
35+
prefix := "folders/"
36+
return prefix+old == new || prefix+new == old
37+
}
38+
3339
func ResourceKMSAutokeyConfig() *schema.Resource {
3440
return &schema.Resource{
3541
Create: resourceKMSAutokeyConfigCreate,
@@ -49,10 +55,11 @@ func ResourceKMSAutokeyConfig() *schema.Resource {
4955

5056
Schema: map[string]*schema.Schema{
5157
"folder": {
52-
Type: schema.TypeString,
53-
Required: true,
54-
ForceNew: true,
55-
Description: `The folder for which to retrieve config.`,
58+
Type: schema.TypeString,
59+
Required: true,
60+
ForceNew: true,
61+
DiffSuppressFunc: folderPrefixSuppress,
62+
Description: `The folder for which to retrieve config.`,
5663
},
5764
"key_project": {
5865
Type: schema.TypeString,
@@ -95,6 +102,10 @@ func resourceKMSAutokeyConfigCreate(d *schema.ResourceData, meta interface{}) er
95102
}
96103

97104
headers := make(http.Header)
105+
url = strings.Replace(url, "folders/folders/", "folders/", 1)
106+
folderValue := d.Get("folder").(string)
107+
folderValue = strings.Replace(folderValue, "folders/", "", 1)
108+
d.Set("folder", folderValue)
98109
res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
99110
Config: config,
100111
Method: "PATCH",
@@ -141,6 +152,7 @@ func resourceKMSAutokeyConfigRead(d *schema.ResourceData, meta interface{}) erro
141152
}
142153

143154
headers := make(http.Header)
155+
url = strings.Replace(url, "folders/folders/", "folders/", 1)
144156
res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
145157
Config: config,
146158
Method: "GET",
@@ -184,6 +196,7 @@ func resourceKMSAutokeyConfigUpdate(d *schema.ResourceData, meta interface{}) er
184196

185197
log.Printf("[DEBUG] Updating AutokeyConfig %q: %#v", d.Id(), obj)
186198
headers := make(http.Header)
199+
url = strings.Replace(url, "folders/folders/", "folders/", 1)
187200

188201
// err == nil indicates that the billing_project value was found
189202
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
@@ -232,6 +245,7 @@ func resourceKMSAutokeyConfigDelete(d *schema.ResourceData, meta interface{}) er
232245
}
233246

234247
headers := make(http.Header)
248+
url = strings.Replace(url, "folders/folders/", "folders/", 1)
235249

236250
log.Printf("[DEBUG] Deleting AutokeyConfig %q", d.Id())
237251
res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{

google-beta/services/kms/resource_kms_autokey_config_generated_test.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,17 @@ resource "time_sleep" "wait_srv_acc_permissions" {
131131
132132
resource "google_kms_autokey_config" "example-autokeyconfig" {
133133
provider = google-beta
134-
folder = google_folder.autokms_folder.folder_id
134+
folder = google_folder.autokms_folder.id
135135
key_project = "projects/${google_project.key_project.project_id}"
136136
depends_on = [time_sleep.wait_srv_acc_permissions]
137137
}
138+
139+
# Wait delay after setting AutokeyConfig, to prevent diffs on reapply,
140+
# because setting the config takes a little to fully propagate.
141+
resource "time_sleep" "wait_autokey_propagation" {
142+
create_duration = "30s"
143+
depends_on = [google_kms_autokey_config.example-autokeyconfig]
144+
}
138145
`, context)
139146
}
140147

@@ -151,6 +158,7 @@ func testAccCheckKMSAutokeyConfigDestroyProducer(t *testing.T) func(s *terraform
151158
config := acctest.GoogleProviderConfig(t)
152159

153160
url, err := tpgresource.ReplaceVarsForTest(config, rs, "{{KMSBasePath}}folders/{{folder}}/autokeyConfig")
161+
url = strings.Replace(url, "folders/folders/", "folders/", 1)
154162
if err != nil {
155163
return err
156164
}

google-beta/services/kms/resource_kms_autokey_config_sweeper.go

+2-15
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,5 @@
11
// Copyright (c) HashiCorp, Inc.
22
// SPDX-License-Identifier: MPL-2.0
3-
4-
// ----------------------------------------------------------------------------
5-
//
6-
// *** AUTO GENERATED CODE *** Type: MMv1 ***
7-
//
8-
// ----------------------------------------------------------------------------
9-
//
10-
// This file is automatically generated by Magic Modules and manual
11-
// changes will be clobbered when the file is regenerated.
12-
//
13-
// Please read more about how to change this file in
14-
// .github/CONTRIBUTING.md.
15-
//
16-
// ----------------------------------------------------------------------------
17-
183
package kms
194

205
import (
@@ -66,6 +51,7 @@ func testSweepKMSAutokeyConfig(region string) error {
6651

6752
listTemplate := strings.Split("https://cloudkms.googleapis.com/v1/folders/{{folder}}/autokeyConfig", "?")[0]
6853
listUrl, err := tpgresource.ReplaceVars(d, config, listTemplate)
54+
listUrl = strings.Replace(listUrl, "folders/folders/", "folders/", 1)
6955
if err != nil {
7056
log.Printf("[INFO][SWEEPER_LOG] error preparing sweeper list url: %s", err)
7157
return nil
@@ -115,6 +101,7 @@ func testSweepKMSAutokeyConfig(region string) error {
115101
return nil
116102
}
117103
deleteUrl = deleteUrl + name
104+
deleteUrl = strings.Replace(deleteUrl, "folders/folders/", "folders/", 1)
118105

119106
// Don't wait on operations as we may have a lot to delete
120107
_, err = transport_tpg.SendRequest(transport_tpg.SendRequestOptions{

website/docs/r/kms_autokey_config.html.markdown

+8-1
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,17 @@ resource "time_sleep" "wait_srv_acc_permissions" {
107107
108108
resource "google_kms_autokey_config" "example-autokeyconfig" {
109109
provider = google-beta
110-
folder = google_folder.autokms_folder.folder_id
110+
folder = google_folder.autokms_folder.id
111111
key_project = "projects/${google_project.key_project.project_id}"
112112
depends_on = [time_sleep.wait_srv_acc_permissions]
113113
}
114+
115+
# Wait delay after setting AutokeyConfig, to prevent diffs on reapply,
116+
# because setting the config takes a little to fully propagate.
117+
resource "time_sleep" "wait_autokey_propagation" {
118+
create_duration = "30s"
119+
depends_on = [google_kms_autokey_config.example-autokeyconfig]
120+
}
114121
```
115122

116123
## Argument Reference

0 commit comments

Comments
 (0)