/
secretmanager_secret_version.go
123 lines (105 loc) · 3.69 KB
/
secretmanager_secret_version.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// ----------------------------------------------------------------------------
//
// *** AUTO GENERATED CODE *** Type: MMv1 ***
//
// ----------------------------------------------------------------------------
//
// This file is automatically generated by Magic Modules and manual
// changes will be clobbered when the file is regenerated.
//
// Please read more about how to change this file in
// .github/CONTRIBUTING.md.
//
// ----------------------------------------------------------------------------
package google
import (
"encoding/base64"
"fmt"
"reflect"
"strings"
)
const SecretManagerSecretVersionAssetType string = "secretmanager.googleapis.com/SecretVersion"
func resourceConverterSecretManagerSecretVersion() ResourceConverter {
return ResourceConverter{
AssetType: SecretManagerSecretVersionAssetType,
Convert: GetSecretManagerSecretVersionCaiObject,
}
}
func GetSecretManagerSecretVersionCaiObject(d TerraformResourceData, config *Config) ([]Asset, error) {
name, err := assetName(d, config, "//secretmanager.googleapis.com/{{name}}")
if err != nil {
return []Asset{}, err
}
if obj, err := GetSecretManagerSecretVersionApiObject(d, config); err == nil {
return []Asset{{
Name: name,
Type: SecretManagerSecretVersionAssetType,
Resource: &AssetResource{
Version: "v1",
DiscoveryDocumentURI: "https://www.googleapis.com/discovery/v1/apis/secretmanager/v1/rest",
DiscoveryName: "SecretVersion",
Data: obj,
},
}}, nil
} else {
return []Asset{}, err
}
}
func GetSecretManagerSecretVersionApiObject(d TerraformResourceData, config *Config) (map[string]interface{}, error) {
obj := make(map[string]interface{})
stateProp, err := expandSecretManagerSecretVersionEnabled(d.Get("enabled"), d, config)
if err != nil {
return nil, err
} else if v, ok := d.GetOkExists("enabled"); !isEmptyValue(reflect.ValueOf(stateProp)) && (ok || !reflect.DeepEqual(v, stateProp)) {
obj["state"] = stateProp
}
payloadProp, err := expandSecretManagerSecretVersionPayload(nil, d, config)
if err != nil {
return nil, err
} else if v, ok := d.GetOkExists("payload"); !isEmptyValue(reflect.ValueOf(payloadProp)) && (ok || !reflect.DeepEqual(v, payloadProp)) {
obj["payload"] = payloadProp
}
return obj, nil
}
func expandSecretManagerSecretVersionEnabled(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
name := d.Get("name").(string)
if name == "" {
return "", nil
}
url, err := ReplaceVars(d, config, "{{SecretManagerBasePath}}{{name}}")
if err != nil {
return nil, err
}
if v == true {
url = fmt.Sprintf("%s:enable", url)
} else {
url = fmt.Sprintf("%s:disable", url)
}
parts := strings.Split(name, "/")
project := parts[1]
userAgent, err := generateUserAgentString(d, config.UserAgent)
if err != nil {
return nil, err
}
_, err = SendRequest(config, "POST", project, url, userAgent, nil)
if err != nil {
return nil, err
}
return nil, nil
}
func expandSecretManagerSecretVersionPayload(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
transformed := make(map[string]interface{})
transformedSecretData, err := expandSecretManagerSecretVersionPayloadSecretData(d.Get("secret_data"), d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedSecretData); val.IsValid() && !isEmptyValue(val) {
transformed["data"] = transformedSecretData
}
return transformed, nil
}
func expandSecretManagerSecretVersionPayloadSecretData(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
if v == nil {
return nil, nil
}
return base64.StdEncoding.EncodeToString([]byte(v.(string))), nil
}