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 }