-
Notifications
You must be signed in to change notification settings - Fork 7
/
requests.go
133 lines (118 loc) · 3.7 KB
/
requests.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
124
125
126
127
128
129
130
131
132
133
package secrets
import "github.com/huaweicloud/terraform-provider-hcs/huaweicloudstack/sdk/huaweicloud"
var RequestOpts = golangsdk.RequestOpts{
MoreHeaders: map[string]string{"Content-Type": "application/json", "X-Language": "en-us"},
}
type CreateSecretOpts struct {
Name string `json:"name" required:"true"`
KmsKeyID string `json:"kms_key_id,omitempty"`
Description string `json:"description,omitempty"`
SecretBinary string `json:"secret_binary,omitempty" xor:"SecretString"`
SecretString string `json:"secret_string,omitempty" xor:"SecretBinary"`
}
func Create(c *golangsdk.ServiceClient, opts CreateSecretOpts) (*Secret, error) {
b, err := golangsdk.BuildRequestBody(opts, "")
if err != nil {
return nil, err
}
var rst golangsdk.Result
_, err = c.Post(rootURL(c), b, &rst.Body, &golangsdk.RequestOpts{
MoreHeaders: RequestOpts.MoreHeaders,
})
if err == nil {
var r SecretRst
rst.ExtractInto(&r)
return &r.Secret, nil
}
return nil, err
}
func Get(c *golangsdk.ServiceClient, secretName string) (*Secret, error) {
var rst golangsdk.Result
_, err := c.Get(resourceURL(c, secretName), &rst.Body, &golangsdk.RequestOpts{
MoreHeaders: RequestOpts.MoreHeaders,
})
if err == nil {
var r SecretRst
rst.ExtractInto(&r)
return &r.Secret, nil
}
return nil, err
}
type UpdateSecretOpts struct {
KmsKeyID string `json:"kms_key_id,omitempty"`
Description *string `json:"description,omitempty"`
}
func Update(c *golangsdk.ServiceClient, secretName string, opts UpdateSecretOpts) (*Secret, error) {
b, err := golangsdk.BuildRequestBody(opts, "")
if err != nil {
return nil, err
}
var rst golangsdk.Result
_, err = c.Put(resourceURL(c, secretName), b, &rst.Body, &golangsdk.RequestOpts{
MoreHeaders: RequestOpts.MoreHeaders,
})
if err == nil {
var r SecretRst
rst.ExtractInto(&r)
return &r.Secret, nil
}
return nil, err
}
func Delete(c *golangsdk.ServiceClient, secretName string) error {
_, err := c.Delete(resourceURL(c, secretName), &golangsdk.RequestOpts{
MoreHeaders: RequestOpts.MoreHeaders,
})
return err
}
type CreateVersionOpts struct {
SecretBinary string `json:"secret_binary,omitempty" xor:"SecretString"`
SecretString string `json:"secret_string,omitempty" xor:"SecretBinary"`
VersionStages []string `json:"version_stages,omitempty"`
}
func CreateSecretVersion(c *golangsdk.ServiceClient, secretName string, opts CreateVersionOpts) (*VersionMetadata, error) {
b, err := golangsdk.BuildRequestBody(opts, "")
if err != nil {
return nil, err
}
var rst golangsdk.Result
_, err = c.Post(versionRootURL(c, secretName), b, &rst.Body, &golangsdk.RequestOpts{
MoreHeaders: RequestOpts.MoreHeaders,
})
if err == nil {
var r struct {
VersionMetadata VersionMetadata `json:"version_metadata"`
}
rst.ExtractInto(&r)
return &r.VersionMetadata, nil
}
return nil, err
}
func ShowSecretVersion(c *golangsdk.ServiceClient, secretName string, versionId string) (*Version, error) {
var rst golangsdk.Result
_, err := c.Get(resourceVersionURL(c, secretName, versionId), &rst.Body, &golangsdk.RequestOpts{
MoreHeaders: RequestOpts.MoreHeaders,
})
if err == nil {
var r struct {
Version Version `json:"version"`
}
rst.ExtractInto(&r)
return &r.Version, nil
}
return nil, err
}
// ListSecretVersions 查询凭据的版本列表
func ListSecretVersions(c *golangsdk.ServiceClient, secretName string) ([]VersionMetadata, error) {
var rst golangsdk.Result
_, err := c.Get(versionRootURL(c, secretName), &rst.Body, &golangsdk.RequestOpts{
MoreHeaders: RequestOpts.MoreHeaders,
})
if err == nil {
var r struct {
VersionMetadatas []VersionMetadata `json:"version_metadatas"`
}
rst.ExtractInto(&r)
return r.VersionMetadatas, nil
}
return nil, err
}