github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/dcs/v2/instances/requests.go (about) 1 package instances 2 3 import ( 4 "github.com/chnsz/golangsdk" 5 "github.com/chnsz/golangsdk/openstack/dcs/v2/tags" 6 ) 7 8 var RequestOpts = golangsdk.RequestOpts{ 9 MoreHeaders: map[string]string{"Content-Type": "application/json", "X-Language": "en-us"}, 10 } 11 12 type CreateOpts struct { 13 Name string `json:"name" required:"true"` 14 Engine string `json:"engine" required:"true"` 15 EngineVersion string `json:"engine_version,omitempty"` 16 Capacity float64 `json:"capacity" required:"true"` 17 SpecCode string `json:"spec_code" required:"true"` 18 AzCodes []string `json:"az_codes" required:"true"` 19 VpcId string `json:"vpc_id" required:"true"` 20 SubnetId string `json:"subnet_id" required:"true"` 21 SecurityGroupId string `json:"security_group_id,omitempty"` 22 PublicIpId string `json:"publicip_id,omitempty"` 23 EnterpriseProjectId string `json:"enterprise_project_id,omitempty"` 24 EnterpriseProjectName string `json:"enterprise_project_name,omitempty"` 25 Description string `json:"description,omitempty"` 26 EnableSsl *bool `json:"enable_ssl,omitempty"` 27 PrivateIp string `json:"private_ip,omitempty"` 28 // instance number, the value range is 1-100. 29 InstanceNum int `json:"instance_num,omitempty"` 30 MaintainBegin string `json:"maintain_begin,omitempty"` 31 MaintainEnd string `json:"maintain_end,omitempty"` 32 Password string `json:"password,omitempty"` 33 NoPasswordAccess *bool `json:"no_password_access,omitempty"` 34 BssParam DcsBssParam `json:"bss_param,omitempty"` 35 BackupPolicy *InstanceBackupPolicyOpts `json:"instance_backup_policy,omitempty"` 36 Tags []tags.ResourceTag `json:"tags,omitempty"` 37 AccessUser string `json:"access_user,omitempty"` 38 EnablePublicIp *bool `json:"enable_publicip,omitempty"` 39 Port int `json:"port,omitempty"` 40 RenameCommands RedisCommand `json:"rename_commands,omitempty"` 41 TemplateId string `json:"template_id,omitempty"` 42 } 43 44 type RedisCommand struct { 45 Command string `json:"command,omitempty"` 46 Keys string `json:"keys,omitempty"` 47 Flushdb string `json:"flushdb,omitempty"` 48 Flushall string `json:"flushall,omitempty"` 49 Hgetall string `json:"hgetall,omitempty"` 50 } 51 52 type InstanceBackupPolicyOpts struct { 53 BackupType string `json:"backup_type" required:"true"` 54 SaveDays int `json:"save_days,omitempty"` 55 PeriodicalBackupPlan BackupPlan `json:"periodical_backup_plan,omitempty"` 56 } 57 58 type BackupPlan struct { 59 TimezoneOffset string `json:"timezone_offset,omitempty"` 60 BackupAt []int `json:"backup_at" required:"true"` 61 PeriodType string `json:"period_type" required:"true"` 62 BeginAt string `json:"begin_at" required:"true"` 63 } 64 65 type DcsBssParam struct { 66 ChargingMode string `json:"charging_mode" required:"true"` 67 PeriodType string `json:"period_type,omitempty"` 68 // period number, the value range is 1-9. 69 PeriodNum int `json:"period_num,omitempty"` 70 IsAutoRenew string `json:"is_auto_renew,omitempty"` 71 IsAutoPay string `json:"is_auto_pay,omitempty"` 72 } 73 74 func Create(c *golangsdk.ServiceClient, opts CreateOpts) (*CreateResponse, error) { 75 b, err := golangsdk.BuildRequestBody(opts, "") 76 if err != nil { 77 return nil, err 78 } 79 80 var rst golangsdk.Result 81 _, err = c.Post(rootURL(c), b, &rst.Body, &golangsdk.RequestOpts{ 82 OkCodes: []int{200}, 83 MoreHeaders: RequestOpts.MoreHeaders, 84 }) 85 if err == nil { 86 var r CreateResponse 87 rst.ExtractInto(&r) 88 return &r, nil 89 } 90 return nil, err 91 } 92 93 type ModifyInstanceOpt struct { 94 Name string `json:"name,omitempty"` 95 Description *string `json:"description,omitempty"` 96 Port int `json:"port,omitempty"` 97 MaintainBegin string `json:"maintain_begin,omitempty"` 98 MaintainEnd string `json:"maintain_end,omitempty"` 99 SecurityGroupId *string `json:"security_group_id,omitempty"` 100 BackupPolicy *InstanceBackupPolicyOpts `json:"instance_backup_policy,omitempty"` 101 RenameCommands *RedisCommand `json:"rename_commands,omitempty"` 102 } 103 104 func Update(c *golangsdk.ServiceClient, id string, opts ModifyInstanceOpt) (*golangsdk.Result, error) { 105 b, err := golangsdk.BuildRequestBody(opts, "") 106 if err != nil { 107 return nil, err 108 } 109 110 var r golangsdk.Result 111 _, err = c.Put(resourceURL(c, id), b, &r.Body, &golangsdk.RequestOpts{ 112 OkCodes: []int{204}, 113 MoreHeaders: RequestOpts.MoreHeaders, 114 }) 115 return &r, err 116 } 117 118 type ResizeInstanceOpts struct { 119 SpecCode string `json:"spec_code" required:"true"` 120 NewCapacity float64 `json:"new_capacity" required:"true"` 121 BssParam DcsBssParamOpts `json:"bss_param,omitempty"` 122 ReservedIp []string `json:"reserved_ip,omitempty"` 123 ChangeType string `json:"change_type,omitempty"` 124 AvailableZones []string `json:"available_zones,omitempty"` 125 NodeList []string `json:"node_list,omitempty"` 126 } 127 128 type DcsBssParamOpts struct { 129 IsAutoPay string `json:"is_auto_pay,omitempty"` 130 } 131 132 func ResizeInstance(c *golangsdk.ServiceClient, id string, opts ResizeInstanceOpts) (*ResizeResponse, error) { 133 b, err := golangsdk.BuildRequestBody(opts, "") 134 if err != nil { 135 return nil, err 136 } 137 138 var rst golangsdk.Result 139 _, err = c.Post(resizeResourceURL(c, id), b, &rst.Body, &golangsdk.RequestOpts{ 140 OkCodes: []int{200, 204}, 141 MoreHeaders: RequestOpts.MoreHeaders, 142 }) 143 if err == nil { 144 var r ResizeResponse 145 rst.ExtractInto(&r) 146 return &r, nil 147 } 148 return nil, err 149 } 150 151 type ResizePrePaidInstanceOpts struct { 152 AutoOpenSecurityGroupRule bool `json:"auto_open_security_group_rule,omitempty"` 153 ExecuteImmediately bool `json:"execute_immediately,omitempty"` 154 NewCapacity float64 `json:"new_capacity,omitempty"` 155 Password string `json:"password,omitempty"` 156 SpecCode string `json:"spec_code,omitempty"` 157 } 158 159 func ResizePrePaidInstance(c *golangsdk.ServiceClient, id string, opts ResizePrePaidInstanceOpts) (*ResizePrePaidResponse, error) { 160 b, err := golangsdk.BuildRequestBody(opts, "") 161 if err != nil { 162 return nil, err 163 } 164 165 var rst golangsdk.Result 166 _, err = c.Post(resizePrePaidResourceURL(c, id), b, &rst.Body, &golangsdk.RequestOpts{ 167 MoreHeaders: RequestOpts.MoreHeaders, 168 }) 169 if err == nil { 170 var r ResizePrePaidResponse 171 rst.ExtractInto(&r) 172 return &r, nil 173 } 174 return nil, err 175 } 176 177 func Get(c *golangsdk.ServiceClient, id string) (*DcsInstance, error) { 178 var rst golangsdk.Result 179 _, err := c.Get(resourceURL(c, id), &rst.Body, &golangsdk.RequestOpts{ 180 MoreHeaders: RequestOpts.MoreHeaders, 181 }) 182 if err == nil { 183 var r DcsInstance 184 rst.ExtractInto(&r) 185 return &r, nil 186 } 187 return nil, err 188 } 189 190 func Delete(c *golangsdk.ServiceClient, id string) error { 191 _, err := c.Delete(resourceURL(c, id), &golangsdk.RequestOpts{ 192 MoreHeaders: RequestOpts.MoreHeaders, 193 }) 194 return err 195 } 196 197 type UpdatePasswordOpts struct { 198 OldPassword string `json:"old_password,omitempty"` 199 NewPassword string `json:"new_password,omitempty"` 200 } 201 202 func UpdatePassword(c *golangsdk.ServiceClient, id string, opts UpdatePasswordOpts) (*golangsdk.Result, error) { 203 b, err := golangsdk.BuildRequestBody(opts, "") 204 if err != nil { 205 return nil, err 206 } 207 208 var r golangsdk.Result 209 _, err = c.Put(updatePasswordURL(c, id), b, &r.Body, &golangsdk.RequestOpts{ 210 OkCodes: []int{200}, 211 MoreHeaders: RequestOpts.MoreHeaders, 212 }) 213 return &r, err 214 } 215 216 type RestartOrFlushInstanceOpts struct { 217 Instances []string `json:"instances,omitempty"` 218 Action string `json:"action,omitempty"` 219 } 220 221 func RestartOrFlushInstance(c *golangsdk.ServiceClient, opts RestartOrFlushInstanceOpts) (*RestartResponse, error) { 222 b, err := golangsdk.BuildRequestBody(opts, "") 223 if err != nil { 224 return nil, err 225 } 226 227 var rst golangsdk.Result 228 _, err = c.Put(restartOrFlushInstanceURL(c), b, &rst.Body, &golangsdk.RequestOpts{ 229 MoreHeaders: RequestOpts.MoreHeaders, 230 }) 231 if err == nil { 232 var r RestartResponse 233 rst.ExtractInto(&r) 234 return &r, nil 235 } 236 return nil, err 237 } 238 239 type ModifyRedisConfigOpts struct { 240 RedisConfig []RedisConfigOpt `json:"redis_config"` 241 } 242 243 type RedisConfigOpt struct { 244 ParamId string `json:"param_id" required:"true"` 245 ParamName string `json:"param_name" required:"true"` 246 ParamValue string `json:"param_value" required:"true"` 247 } 248 249 func ModifyConfiguration(c *golangsdk.ServiceClient, instanceId string, opts ModifyRedisConfigOpts) (*golangsdk.Result, error) { 250 b, err := golangsdk.BuildRequestBody(opts, "") 251 if err != nil { 252 return nil, err 253 } 254 255 var r golangsdk.Result 256 _, err = c.Put(configurationsURL(c, instanceId), b, &r.Body, &golangsdk.RequestOpts{ 257 OkCodes: []int{204}, 258 MoreHeaders: RequestOpts.MoreHeaders, 259 }) 260 return &r, err 261 } 262 263 func GetConfigurations(c *golangsdk.ServiceClient, instanceID string) (*Configuration, error) { 264 var rst golangsdk.Result 265 _, err := c.Get(configurationsURL(c, instanceID), &rst.Body, &golangsdk.RequestOpts{ 266 MoreHeaders: RequestOpts.MoreHeaders, 267 }) 268 if err == nil { 269 var r Configuration 270 rst.ExtractInto(&r) 271 return &r, nil 272 } 273 return nil, err 274 } 275 276 type SslOpts struct { 277 Enable *bool `json:"enabled" required:"true"` 278 } 279 280 func UpdateSsl(client *golangsdk.ServiceClient, id string, opts SslOpts) (*golangsdk.Result, error) { 281 b, err := golangsdk.BuildRequestBody(opts, "") 282 if err != nil { 283 return nil, err 284 } 285 286 var r golangsdk.Result 287 _, err = client.Put(sslURL(client, id), b, &r.Body, &golangsdk.RequestOpts{ 288 MoreHeaders: RequestOpts.MoreHeaders, 289 }) 290 return &r, err 291 } 292 293 func GetSsl(client *golangsdk.ServiceClient, id string) (*GetSslResponse, error) { 294 var rst golangsdk.Result 295 _, err := client.Get(sslURL(client, id), &rst.Body, &golangsdk.RequestOpts{ 296 OkCodes: []int{200, 204}, 297 MoreHeaders: RequestOpts.MoreHeaders, 298 }) 299 if err == nil { 300 var r GetSslResponse 301 rst.ExtractInto(&r) 302 return &r, nil 303 } 304 return nil, err 305 }