Skip to content

Commit bcfb51f

Browse files
Add support for regional secret version resource google_secret_manager_regional_secret_version (#11699)
[upstream:2a9c7e6ce823646f03bbf4a42b8825c7e6166cf7] Signed-off-by: Modular Magician <[email protected]>
1 parent 06c49ba commit bcfb51f

File tree

3 files changed

+139
-3
lines changed

3 files changed

+139
-3
lines changed

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ require (
1111
github.com/hashicorp/hcl/v2 v2.20.1
1212
github.com/hashicorp/terraform-json v0.22.1
1313
github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0
14-
github.com/hashicorp/terraform-provider-google-beta v1.20.1-0.20240916224413-e43eaa85df9c
14+
github.com/hashicorp/terraform-provider-google-beta v1.20.1-0.20240917151013-68ec0385cf84
1515
github.com/mitchellh/go-homedir v1.1.0 // indirect
1616
github.com/pkg/errors v0.9.1
1717
github.com/stretchr/testify v1.9.0

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,8 @@ github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0 h1:qHprzXy/As0rxedphECBEQAh
190190
github.com/hashicorp/terraform-plugin-sdk/v2 v2.33.0/go.mod h1:H+8tjs9TjV2w57QFVSMBQacf8k/E1XwLXGCARgViC6A=
191191
github.com/hashicorp/terraform-plugin-testing v1.5.1 h1:T4aQh9JAhmWo4+t1A7x+rnxAJHCDIYW9kXyo4sVO92c=
192192
github.com/hashicorp/terraform-plugin-testing v1.5.1/go.mod h1:dg8clO6K59rZ8w9EshBmDp1CxTIPu3yA4iaDpX1h5u0=
193-
github.com/hashicorp/terraform-provider-google-beta v1.20.1-0.20240916224413-e43eaa85df9c h1:Z5R8w8cx7ht6dFGHk1aLxbsbhM7YUQSNRJbR8JaUSqU=
194-
github.com/hashicorp/terraform-provider-google-beta v1.20.1-0.20240916224413-e43eaa85df9c/go.mod h1:KmhH9vkbqTNYp9g+1yBfb4iK9CCbKNnakASns8SHzXU=
193+
github.com/hashicorp/terraform-provider-google-beta v1.20.1-0.20240917151013-68ec0385cf84 h1:lcnCJGFQHyPHLY6M9c+UK2I9PUuawhxSgZtTyPTugF0=
194+
github.com/hashicorp/terraform-provider-google-beta v1.20.1-0.20240917151013-68ec0385cf84/go.mod h1:KmhH9vkbqTNYp9g+1yBfb4iK9CCbKNnakASns8SHzXU=
195195
github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI=
196196
github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM=
197197
github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ=
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
// ----------------------------------------------------------------------------
2+
//
3+
// *** AUTO GENERATED CODE *** Type: MMv1 ***
4+
//
5+
// ----------------------------------------------------------------------------
6+
//
7+
// This file is automatically generated by Magic Modules and manual
8+
// changes will be clobbered when the file is regenerated.
9+
//
10+
// Please read more about how to change this file in
11+
// .github/CONTRIBUTING.md.
12+
//
13+
// ----------------------------------------------------------------------------
14+
15+
package secretmanagerregional
16+
17+
import (
18+
"encoding/base64"
19+
"fmt"
20+
"reflect"
21+
"strings"
22+
23+
"github.com/GoogleCloudPlatform/terraform-google-conversion/v5/tfplan2cai/converters/google/resources/cai"
24+
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
25+
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
26+
)
27+
28+
const SecretManagerRegionalRegionalSecretVersionAssetType string = "secretmanager.{{location}}.rep.googleapis.com/RegionalSecretVersion"
29+
30+
func ResourceConverterSecretManagerRegionalRegionalSecretVersion() cai.ResourceConverter {
31+
return cai.ResourceConverter{
32+
AssetType: SecretManagerRegionalRegionalSecretVersionAssetType,
33+
Convert: GetSecretManagerRegionalRegionalSecretVersionCaiObject,
34+
}
35+
}
36+
37+
func GetSecretManagerRegionalRegionalSecretVersionCaiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) ([]cai.Asset, error) {
38+
name, err := cai.AssetName(d, config, "//secretmanager.{{location}}.rep.googleapis.com/{{name}}")
39+
if err != nil {
40+
return []cai.Asset{}, err
41+
}
42+
if obj, err := GetSecretManagerRegionalRegionalSecretVersionApiObject(d, config); err == nil {
43+
return []cai.Asset{{
44+
Name: name,
45+
Type: SecretManagerRegionalRegionalSecretVersionAssetType,
46+
Resource: &cai.AssetResource{
47+
Version: "v1",
48+
DiscoveryDocumentURI: "https://www.googleapis.com/discovery/v1/apis/secretmanager.{{location}}.rep/v1/rest",
49+
DiscoveryName: "RegionalSecretVersion",
50+
Data: obj,
51+
},
52+
}}, nil
53+
} else {
54+
return []cai.Asset{}, err
55+
}
56+
}
57+
58+
func GetSecretManagerRegionalRegionalSecretVersionApiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]interface{}, error) {
59+
obj := make(map[string]interface{})
60+
stateProp, err := expandSecretManagerRegionalRegionalSecretVersionEnabled(d.Get("enabled"), d, config)
61+
if err != nil {
62+
return nil, err
63+
} else if v, ok := d.GetOkExists("enabled"); !tpgresource.IsEmptyValue(reflect.ValueOf(stateProp)) && (ok || !reflect.DeepEqual(v, stateProp)) {
64+
obj["state"] = stateProp
65+
}
66+
payloadProp, err := expandSecretManagerRegionalRegionalSecretVersionPayload(nil, d, config)
67+
if err != nil {
68+
return nil, err
69+
} else if v, ok := d.GetOkExists("payload"); !tpgresource.IsEmptyValue(reflect.ValueOf(payloadProp)) && (ok || !reflect.DeepEqual(v, payloadProp)) {
70+
obj["payload"] = payloadProp
71+
}
72+
73+
return obj, nil
74+
}
75+
76+
func expandSecretManagerRegionalRegionalSecretVersionEnabled(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
77+
name := d.Get("name").(string)
78+
if name == "" {
79+
return "", nil
80+
}
81+
82+
url, err := tpgresource.ReplaceVars(d, config, "{{SecretManagerRegionalBasePath}}{{name}}")
83+
if err != nil {
84+
return nil, err
85+
}
86+
87+
if v == true {
88+
url = fmt.Sprintf("%s:enable", url)
89+
} else {
90+
url = fmt.Sprintf("%s:disable", url)
91+
}
92+
93+
parts := strings.Split(name, "/")
94+
project := parts[1]
95+
96+
userAgent, err := tpgresource.GenerateUserAgentString(d, config.UserAgent)
97+
if err != nil {
98+
return nil, err
99+
}
100+
101+
_, err = transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
102+
Config: config,
103+
Method: "POST",
104+
Project: project,
105+
RawURL: url,
106+
UserAgent: userAgent,
107+
})
108+
if err != nil {
109+
return nil, err
110+
}
111+
112+
return nil, nil
113+
}
114+
115+
func expandSecretManagerRegionalRegionalSecretVersionPayload(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
116+
transformed := make(map[string]interface{})
117+
transformedSecretData, err := expandSecretManagerRegionalRegionalSecretVersionPayloadSecretData(d.Get("secret_data"), d, config)
118+
if err != nil {
119+
return nil, err
120+
} else if val := reflect.ValueOf(transformedSecretData); val.IsValid() && !tpgresource.IsEmptyValue(val) {
121+
transformed["data"] = transformedSecretData
122+
}
123+
124+
return transformed, nil
125+
}
126+
127+
func expandSecretManagerRegionalRegionalSecretVersionPayloadSecretData(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
128+
if v == nil {
129+
return nil, nil
130+
}
131+
132+
if d.Get("is_secret_data_base64").(bool) {
133+
return v, nil
134+
}
135+
return base64.StdEncoding.EncodeToString([]byte(v.(string))), nil
136+
}

0 commit comments

Comments
 (0)