github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/fgs/v2/alias/CreateAlias.go (about) 1 package alias 2 3 import ( 4 golangsdk "github.com/opentelekomcloud/gophertelekomcloud" 5 "github.com/opentelekomcloud/gophertelekomcloud/internal/build" 6 "github.com/opentelekomcloud/gophertelekomcloud/internal/extract" 7 ) 8 9 type CreateAliasOpts struct { 10 FuncUrn string `json:"-"` 11 Name string `json:"name" required:"true"` 12 Version string `json:"version" required:"true"` 13 Description string `json:"description,omitempty"` 14 AdditionalVersionWeights map[string]int `json:"additional_version_weights,omitempty"` 15 AdditionalVersionStrategy map[string]VectorStrategy `json:"additional_version_strategy,omitempty"` 16 } 17 18 type VectorStrategy struct { 19 CombineType string `json:"combine_type"` 20 Rules *VersionStrategyRules `json:"rules"` 21 } 22 23 type VersionStrategyRules struct { 24 RuleType string `json:"rule_type"` 25 Param string `json:"param"` 26 Op string `json:"op"` 27 Value string `json:"value"` 28 } 29 30 func CreateAlias(client *golangsdk.ServiceClient, opts CreateAliasOpts) (*FuncAliasesResp, error) { 31 b, err := build.RequestBody(opts, "") 32 if err != nil { 33 return nil, err 34 } 35 36 raw, err := client.Post(client.ServiceURL("fgs", "functions", opts.FuncUrn, "aliases"), b, nil, &golangsdk.RequestOpts{ 37 OkCodes: []int{200}, 38 }) 39 if err != nil { 40 return nil, err 41 } 42 43 var res FuncAliasesResp 44 return &res, extract.Into(raw.Body, &res) 45 } 46 47 type FuncAliasesResp struct { 48 Name string `json:"name"` 49 Version string `json:"version"` 50 Description string `json:"description"` 51 LastModified string `json:"last_modified"` 52 AliasUrn string `json:"alias_urn"` 53 AdditionalVersionWeights map[string]int `json:"additional_version_weights"` 54 AdditionalVersionStrategy map[string]VectorStrategy `json:"additional_version_strategy"` 55 }