Skip to content

Commit 1ba50ab

Browse files
Fix client request only properties. (#10299) (#17714)
[upstream:860ff25fc1e80e04bf55ed3b2ef5dce146d9194c] Signed-off-by: Modular Magician <[email protected]>
1 parent f970432 commit 1ba50ab

File tree

4 files changed

+130
-14
lines changed

4 files changed

+130
-14
lines changed

.changelog/10299.txt

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
```release-note:none
2+
```

google/services/integrations/resource_integrations_client.go

+104
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package integrations
2020
import (
2121
"fmt"
2222
"log"
23+
"reflect"
2324
"time"
2425

2526
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
@@ -143,6 +144,30 @@ func resourceIntegrationsClientCreate(d *schema.ResourceData, meta interface{})
143144
}
144145

145146
obj := make(map[string]interface{})
147+
cloudKmsConfigProp, err := expandIntegrationsClientCloudKmsConfig(d.Get("cloud_kms_config"), d, config)
148+
if err != nil {
149+
return err
150+
} else if v, ok := d.GetOkExists("cloud_kms_config"); !tpgresource.IsEmptyValue(reflect.ValueOf(cloudKmsConfigProp)) && (ok || !reflect.DeepEqual(v, cloudKmsConfigProp)) {
151+
obj["cloudKmsConfig"] = cloudKmsConfigProp
152+
}
153+
createSampleWorkflowsProp, err := expandIntegrationsClientCreateSampleWorkflows(d.Get("create_sample_workflows"), d, config)
154+
if err != nil {
155+
return err
156+
} else if v, ok := d.GetOkExists("create_sample_workflows"); !tpgresource.IsEmptyValue(reflect.ValueOf(createSampleWorkflowsProp)) && (ok || !reflect.DeepEqual(v, createSampleWorkflowsProp)) {
157+
obj["createSampleWorkflows"] = createSampleWorkflowsProp
158+
}
159+
provisionGmekProp, err := expandIntegrationsClientProvisionGmek(d.Get("provision_gmek"), d, config)
160+
if err != nil {
161+
return err
162+
} else if v, ok := d.GetOkExists("provision_gmek"); !tpgresource.IsEmptyValue(reflect.ValueOf(provisionGmekProp)) && (ok || !reflect.DeepEqual(v, provisionGmekProp)) {
163+
obj["provisionGmek"] = provisionGmekProp
164+
}
165+
runAsServiceAccountProp, err := expandIntegrationsClientRunAsServiceAccount(d.Get("run_as_service_account"), d, config)
166+
if err != nil {
167+
return err
168+
} else if v, ok := d.GetOkExists("run_as_service_account"); !tpgresource.IsEmptyValue(reflect.ValueOf(runAsServiceAccountProp)) && (ok || !reflect.DeepEqual(v, runAsServiceAccountProp)) {
169+
obj["runAsServiceAccount"] = runAsServiceAccountProp
170+
}
146171

147172
lockName, err := tpgresource.ReplaceVars(d, config, "Client/{{location}}")
148173
if err != nil {
@@ -322,6 +347,85 @@ func resourceIntegrationsClientImport(d *schema.ResourceData, meta interface{})
322347
return []*schema.ResourceData{d}, nil
323348
}
324349

350+
func expandIntegrationsClientCloudKmsConfig(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
351+
l := v.([]interface{})
352+
if len(l) == 0 || l[0] == nil {
353+
return nil, nil
354+
}
355+
raw := l[0]
356+
original := raw.(map[string]interface{})
357+
transformed := make(map[string]interface{})
358+
359+
transformedKmsLocation, err := expandIntegrationsClientCloudKmsConfigKmsLocation(original["kms_location"], d, config)
360+
if err != nil {
361+
return nil, err
362+
} else if val := reflect.ValueOf(transformedKmsLocation); val.IsValid() && !tpgresource.IsEmptyValue(val) {
363+
transformed["kmsLocation"] = transformedKmsLocation
364+
}
365+
366+
transformedKmsRing, err := expandIntegrationsClientCloudKmsConfigKmsRing(original["kms_ring"], d, config)
367+
if err != nil {
368+
return nil, err
369+
} else if val := reflect.ValueOf(transformedKmsRing); val.IsValid() && !tpgresource.IsEmptyValue(val) {
370+
transformed["kmsRing"] = transformedKmsRing
371+
}
372+
373+
transformedKey, err := expandIntegrationsClientCloudKmsConfigKey(original["key"], d, config)
374+
if err != nil {
375+
return nil, err
376+
} else if val := reflect.ValueOf(transformedKey); val.IsValid() && !tpgresource.IsEmptyValue(val) {
377+
transformed["key"] = transformedKey
378+
}
379+
380+
transformedKeyVersion, err := expandIntegrationsClientCloudKmsConfigKeyVersion(original["key_version"], d, config)
381+
if err != nil {
382+
return nil, err
383+
} else if val := reflect.ValueOf(transformedKeyVersion); val.IsValid() && !tpgresource.IsEmptyValue(val) {
384+
transformed["keyVersion"] = transformedKeyVersion
385+
}
386+
387+
transformedKmsProjectId, err := expandIntegrationsClientCloudKmsConfigKmsProjectId(original["kms_project_id"], d, config)
388+
if err != nil {
389+
return nil, err
390+
} else if val := reflect.ValueOf(transformedKmsProjectId); val.IsValid() && !tpgresource.IsEmptyValue(val) {
391+
transformed["kmsProjectId"] = transformedKmsProjectId
392+
}
393+
394+
return transformed, nil
395+
}
396+
397+
func expandIntegrationsClientCloudKmsConfigKmsLocation(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
398+
return v, nil
399+
}
400+
401+
func expandIntegrationsClientCloudKmsConfigKmsRing(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
402+
return v, nil
403+
}
404+
405+
func expandIntegrationsClientCloudKmsConfigKey(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
406+
return v, nil
407+
}
408+
409+
func expandIntegrationsClientCloudKmsConfigKeyVersion(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
410+
return v, nil
411+
}
412+
413+
func expandIntegrationsClientCloudKmsConfigKmsProjectId(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
414+
return v, nil
415+
}
416+
417+
func expandIntegrationsClientCreateSampleWorkflows(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
418+
return v, nil
419+
}
420+
421+
func expandIntegrationsClientProvisionGmek(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
422+
return v, nil
423+
}
424+
425+
func expandIntegrationsClientRunAsServiceAccount(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
426+
return v, nil
427+
}
428+
325429
func resourceIntegrationsClientDecoder(d *schema.ResourceData, meta interface{}, res map[string]interface{}) (map[string]interface{}, error) {
326430
// Since Client resource doesnt have any properties,
327431
// Adding this decoder as placeholder else the linter will

google/services/integrations/resource_integrations_client_generated_test.go

+12-7
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ func testAccIntegrationsClient_integrationsClientBasicExample(context map[string
5959
return acctest.Nprintf(`
6060
resource "google_integrations_client" "example" {
6161
location = "us-central1"
62+
provision_gmek = true
6263
}
6364
`, context)
6465
}
@@ -96,7 +97,7 @@ data "google_project" "test_project" {
9697
9798
resource "google_kms_key_ring" "keyring" {
9899
name = "tf-test-my-keyring%{random_suffix}"
99-
location = "us-central1"
100+
location = "us-east1"
100101
}
101102
102103
resource "google_kms_crypto_key" "cryptokey" {
@@ -111,19 +112,23 @@ resource "google_kms_crypto_key_version" "test_key" {
111112
depends_on = [google_kms_crypto_key.cryptokey]
112113
}
113114
115+
resource "google_service_account" "service_account" {
116+
account_id = "service-account-id"
117+
display_name = "Service Account"
118+
}
119+
114120
resource "google_integrations_client" "example" {
115-
location = "us-central1"
121+
location = "us-east1"
116122
create_sample_workflows = true
117-
provision_gmek = true
118-
run_as_service_account = "radndom-service-account"
123+
run_as_service_account = google_service_account.service_account.email
119124
cloud_kms_config {
120-
kms_location = "us-central1"
125+
kms_location = "us-east1"
121126
kms_ring = google_kms_key_ring.keyring.id
122127
key = google_kms_crypto_key.cryptokey.id
123128
key_version = google_kms_crypto_key_version.test_key.id
124-
kms_project_id = data.google_project.test_project.id
129+
kms_project_id = data.google_project.test_project.project_id
125130
}
126-
depends_on = [google_kms_crypto_key_version.test_key]
131+
depends_on = [google_kms_crypto_key_version.test_key, google_service_account.service_account]
127132
}
128133
`, context)
129134
}

website/docs/r/integrations_client.html.markdown

+12-7
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ To get more information about Client, see:
4040
```hcl
4141
resource "google_integrations_client" "example" {
4242
location = "us-central1"
43+
provision_gmek = true
4344
}
4445
```
4546
<div class = "oics-button" style="float: right; margin: 0 0 -15px">
@@ -56,7 +57,7 @@ data "google_project" "test_project" {
5657
5758
resource "google_kms_key_ring" "keyring" {
5859
name = "my-keyring"
59-
location = "us-central1"
60+
location = "us-east1"
6061
}
6162
6263
resource "google_kms_crypto_key" "cryptokey" {
@@ -71,19 +72,23 @@ resource "google_kms_crypto_key_version" "test_key" {
7172
depends_on = [google_kms_crypto_key.cryptokey]
7273
}
7374
75+
resource "google_service_account" "service_account" {
76+
account_id = "service-account-id"
77+
display_name = "Service Account"
78+
}
79+
7480
resource "google_integrations_client" "example" {
75-
location = "us-central1"
81+
location = "us-east1"
7682
create_sample_workflows = true
77-
provision_gmek = true
78-
run_as_service_account = "radndom-service-account"
83+
run_as_service_account = google_service_account.service_account.email
7984
cloud_kms_config {
80-
kms_location = "us-central1"
85+
kms_location = "us-east1"
8186
kms_ring = google_kms_key_ring.keyring.id
8287
key = google_kms_crypto_key.cryptokey.id
8388
key_version = google_kms_crypto_key_version.test_key.id
84-
kms_project_id = data.google_project.test_project.id
89+
kms_project_id = data.google_project.test_project.project_id
8590
}
86-
depends_on = [google_kms_crypto_key_version.test_key]
91+
depends_on = [google_kms_crypto_key_version.test_key, google_service_account.service_account]
8792
}
8893
```
8994

0 commit comments

Comments
 (0)