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  }