github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/csms/v1/secrets/requests.go (about) 1 package secrets 2 3 import "github.com/chnsz/golangsdk" 4 5 var RequestOpts = golangsdk.RequestOpts{ 6 MoreHeaders: map[string]string{"Content-Type": "application/json", "X-Language": "en-us"}, 7 } 8 9 type CreateSecretOpts struct { 10 Name string `json:"name" required:"true"` 11 KmsKeyID string `json:"kms_key_id,omitempty"` 12 Description string `json:"description,omitempty"` 13 SecretBinary string `json:"secret_binary,omitempty" xor:"SecretString"` 14 SecretString string `json:"secret_string,omitempty" xor:"SecretBinary"` 15 } 16 17 func Create(c *golangsdk.ServiceClient, opts CreateSecretOpts) (*Secret, error) { 18 b, err := golangsdk.BuildRequestBody(opts, "") 19 if err != nil { 20 return nil, err 21 } 22 23 var rst golangsdk.Result 24 _, err = c.Post(rootURL(c), b, &rst.Body, &golangsdk.RequestOpts{ 25 MoreHeaders: RequestOpts.MoreHeaders, 26 }) 27 if err == nil { 28 var r SecretRst 29 rst.ExtractInto(&r) 30 return &r.Secret, nil 31 } 32 return nil, err 33 } 34 35 func Get(c *golangsdk.ServiceClient, secretName string) (*Secret, error) { 36 var rst golangsdk.Result 37 _, err := c.Get(resourceURL(c, secretName), &rst.Body, &golangsdk.RequestOpts{ 38 MoreHeaders: RequestOpts.MoreHeaders, 39 }) 40 if err == nil { 41 var r SecretRst 42 rst.ExtractInto(&r) 43 return &r.Secret, nil 44 } 45 return nil, err 46 } 47 48 type UpdateSecretOpts struct { 49 KmsKeyID string `json:"kms_key_id,omitempty"` 50 Description *string `json:"description,omitempty"` 51 } 52 53 func Update(c *golangsdk.ServiceClient, secretName string, opts UpdateSecretOpts) (*Secret, error) { 54 b, err := golangsdk.BuildRequestBody(opts, "") 55 if err != nil { 56 return nil, err 57 } 58 59 var rst golangsdk.Result 60 _, err = c.Put(resourceURL(c, secretName), b, &rst.Body, &golangsdk.RequestOpts{ 61 MoreHeaders: RequestOpts.MoreHeaders, 62 }) 63 if err == nil { 64 var r SecretRst 65 rst.ExtractInto(&r) 66 return &r.Secret, nil 67 } 68 return nil, err 69 } 70 71 func Delete(c *golangsdk.ServiceClient, secretName string) error { 72 _, err := c.Delete(resourceURL(c, secretName), &golangsdk.RequestOpts{ 73 MoreHeaders: RequestOpts.MoreHeaders, 74 }) 75 return err 76 } 77 78 type CreateVersionOpts struct { 79 SecretBinary string `json:"secret_binary,omitempty" xor:"SecretString"` 80 SecretString string `json:"secret_string,omitempty" xor:"SecretBinary"` 81 VersionStages []string `json:"version_stages,omitempty"` 82 ExpireTime int `json:"expire_time,omitempty"` 83 } 84 85 func CreateSecretVersion(c *golangsdk.ServiceClient, secretName string, opts CreateVersionOpts) (*VersionMetadata, error) { 86 b, err := golangsdk.BuildRequestBody(opts, "") 87 if err != nil { 88 return nil, err 89 } 90 91 var rst golangsdk.Result 92 _, err = c.Post(versionRootURL(c, secretName), b, &rst.Body, &golangsdk.RequestOpts{ 93 MoreHeaders: RequestOpts.MoreHeaders, 94 }) 95 if err == nil { 96 var r struct { 97 VersionMetadata VersionMetadata `json:"version_metadata"` 98 } 99 rst.ExtractInto(&r) 100 return &r.VersionMetadata, nil 101 } 102 return nil, err 103 } 104 105 func ShowSecretVersion(c *golangsdk.ServiceClient, secretName string, versionId string) (*Version, error) { 106 var rst golangsdk.Result 107 _, err := c.Get(resourceVersionURL(c, secretName, versionId), &rst.Body, &golangsdk.RequestOpts{ 108 MoreHeaders: RequestOpts.MoreHeaders, 109 }) 110 if err == nil { 111 var r struct { 112 Version Version `json:"version"` 113 } 114 rst.ExtractInto(&r) 115 return &r.Version, nil 116 } 117 return nil, err 118 } 119 120 type UpdateVersionOpts struct { 121 ExpireTime int `json:"expire_time" required:"true"` 122 } 123 124 // UpdateSecretVersion only support update expire_time field. 125 // The current method can only update secret in the ENABLED state 126 func UpdateSecretVersion(c *golangsdk.ServiceClient, secretName string, versionId string, opts UpdateVersionOpts) (*Version, error) { 127 b, err := golangsdk.BuildRequestBody(opts, "") 128 if err != nil { 129 return nil, err 130 } 131 132 var rst golangsdk.Result 133 _, err = c.Put(resourceVersionURL(c, secretName, versionId), b, &rst.Body, &golangsdk.RequestOpts{ 134 MoreHeaders: RequestOpts.MoreHeaders, 135 }) 136 if err == nil { 137 var r struct { 138 Version Version `json:"version"` 139 } 140 rst.ExtractInto(&r) 141 return &r.Version, nil 142 } 143 return nil, err 144 } 145 146 // ListSecretVersions 查询凭据的版本列表 147 func ListSecretVersions(c *golangsdk.ServiceClient, secretName string) ([]VersionMetadata, error) { 148 var rst golangsdk.Result 149 _, err := c.Get(versionRootURL(c, secretName), &rst.Body, &golangsdk.RequestOpts{ 150 MoreHeaders: RequestOpts.MoreHeaders, 151 }) 152 if err == nil { 153 var r struct { 154 VersionMetadatas []VersionMetadata `json:"version_metadatas"` 155 } 156 rst.ExtractInto(&r) 157 return r.VersionMetadatas, nil 158 } 159 return nil, err 160 }