github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/fgs/v2/trigger/Create.go (about)

     1  package trigger
     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 CreateOpts struct {
    10  	FuncUrn         string     `json:"-"`
    11  	TriggerTypeCode string     `json:"trigger_type_code" required:"true"`
    12  	TriggerStatus   string     `json:"trigger_status,omitempty"`
    13  	EventTypeCode   string     `json:"event_type_code,omitempty"`
    14  	EventData       *EventData `json:"event_data" required:"true"`
    15  }
    16  
    17  type EventData struct {
    18  	Name                string           `json:"name,omitempty"`
    19  	ScheduleType        string           `json:"schedule_type,omitempty"`
    20  	Schedule            string           `json:"schedule,omitempty"`
    21  	UserEvent           string           `json:"user_event,omitempty"`
    22  	Type                *int             `json:"type,omitempty"`
    23  	Path                string           `json:"path,omitempty"`
    24  	Protocol            string           `json:"protocol,omitempty"`
    25  	ReqMethod           string           `json:"req_method,omitempty"`
    26  	GroupID             string           `json:"group_id,omitempty"`
    27  	GroupName           string           `json:"group_name,omitempty"`
    28  	MatchMode           string           `json:"match_mode,omitempty"`
    29  	EnvName             string           `json:"env_name,omitempty"`
    30  	EnvID               string           `json:"env_id,omitempty"`
    31  	Auth                string           `json:"auth,omitempty"`
    32  	FuncInfo            *TriggerFuncInfo `json:"func_info,omitempty"`
    33  	SlDomain            string           `json:"sl_domain,omitempty"`
    34  	BackendType         string           `json:"backend_type,omitempty"`
    35  	Operations          []string         `json:"operations,omitempty"`
    36  	InstanceID          string           `json:"instance_id,omitempty"`
    37  	CollectionName      string           `json:"collection_name,omitempty"`
    38  	DbName              string           `json:"db_name,omitempty"`
    39  	DbPassword          string           `json:"db_password,omitempty"`
    40  	BatchSize           *int             `json:"batch_size,omitempty"`
    41  	QueueID             string           `json:"queue_id,omitempty"`
    42  	ConsumerGroupID     string           `json:"consumer_group_id,omitempty"`
    43  	PollingInterval     *int             `json:"polling_interval,omitempty"`
    44  	StreamName          string           `json:"stream_name,omitempty"`
    45  	SharditeratorType   string           `json:"sharditerator_type,omitempty"`
    46  	PollingUnit         string           `json:"polling_unit,omitempty"`
    47  	MaxFetchBytes       *int             `json:"max_fetch_bytes,omitempty"`
    48  	IsSerial            string           `json:"is_serial,omitempty"`
    49  	LogGroupID          string           `json:"log_group_id,omitempty"`
    50  	LogTopicID          string           `json:"log_topic_id,omitempty"`
    51  	Bucket              string           `json:"bucket,omitempty"`
    52  	Prefix              string           `json:"prefix,omitempty"`
    53  	Suffix              string           `json:"suffix,omitempty"`
    54  	Events              []string         `json:"events,omitempty"`
    55  	TopicUrn            string           `json:"topic_urn,omitempty"`
    56  	TopicIds            []string         `json:"topic_ids,omitempty"`
    57  	KafkaUser           string           `json:"kafka_user,omitempty"`
    58  	KafkaPassword       string           `json:"kafka_password,omitempty"`
    59  	KafkaConnectAddress string           `json:"kafka_connect_address,omitempty"`
    60  	KafkaSSLEnable      *bool            `json:"kafka_ssl_enable,omitempty"`
    61  	AccessPassword      string           `json:"access_password,omitempty"`
    62  	AccessUser          string           `json:"access_user,omitempty"`
    63  	ConnectAddress      string           `json:"connect_address,omitempty"`
    64  	ExchangeName        string           `json:"exchange_name,omitempty"`
    65  	Vhost               string           `json:"vhost,omitempty"`
    66  	SSLEnable           *bool            `json:"ssl_enable,omitempty"`
    67  	// return values
    68  	TriggerId     string   `json:"trigger_id,omitempty"`
    69  	InvokeUrl     string   `json:"invoke_url,omitempty"`
    70  	RomaAppId     string   `json:"roma_app_id,omitempty"`
    71  	InstanceAddrs []string `json:",omitempty"`
    72  	Mode          string   `json:"mode,omitempty"`
    73  }
    74  
    75  type TriggerFuncInfo struct {
    76  	FunctionUrn    string `json:"function_urn,omitempty"`
    77  	InvocationType string `json:"invocation_type,omitempty"`
    78  	Timeout        int    `json:"timeout" required:"true"`
    79  	Version        string `json:"version,omitempty"`
    80  }
    81  
    82  func Create(client *golangsdk.ServiceClient, opts CreateOpts) (*TriggerFuncResp, error) {
    83  	b, err := build.RequestBody(opts, "")
    84  	if err != nil {
    85  		return nil, err
    86  	}
    87  
    88  	raw, err := client.Post(client.ServiceURL("fgs", "triggers", opts.FuncUrn), b, nil, &golangsdk.RequestOpts{
    89  		OkCodes: []int{201},
    90  	})
    91  	if err != nil {
    92  		return nil, err
    93  	}
    94  
    95  	var res TriggerFuncResp
    96  	return &res, extract.Into(raw.Body, &res)
    97  }
    98  
    99  type TriggerFuncResp struct {
   100  	TriggerId       string     `json:"trigger_id"`
   101  	TriggerTypeCode string     `json:"trigger_type_code"`
   102  	TriggerStatus   string     `json:"trigger_status"`
   103  	EventData       *EventData `json:"event_data"`
   104  	LastUpdatedTime string     `json:"last_updated_time"`
   105  	CreatedTime     string     `json:"created_time"`
   106  }