github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/apigw/v2/gateway/Create.go (about) 1 package gateway 2 3 import ( 4 "github.com/opentelekomcloud/gophertelekomcloud" 5 "github.com/opentelekomcloud/gophertelekomcloud/internal/build" 6 "github.com/opentelekomcloud/gophertelekomcloud/internal/extract" 7 "github.com/opentelekomcloud/gophertelekomcloud/openstack/common/tags" 8 ) 9 10 type CreateOpts struct { 11 Description string `json:"description,omitempty"` 12 MaintainBegin string `json:"maintain_begin,omitempty"` 13 MaintainEnd string `json:"maintain_end,omitempty"` 14 InstanceName string `json:"instance_name" required:"true"` 15 InstanceID string `json:"instance_id,omitempty"` 16 SpecID string `json:"spec_id" required:"true"` 17 VpcID string `json:"vpc_id" required:"true"` 18 SubnetID string `json:"subnet_id" required:"true"` 19 SecGroupID string `json:"security_group_id" required:"true"` 20 AvailableZoneIDs []string `json:"available_zone_ids" required:"true"` 21 BandwidthSize *int `json:"bandwidth_size,omitempty"` 22 BandwidthChargingMode string `json:"bandwidth_charging_mode,omitempty"` 23 LoadBalancerProvider string `json:"loadbalancer_provider" required:"true"` 24 Tags []tags.ResourceTag `json:"tags"` 25 VpcepServiceName string `json:"vpcep_service_name,omitempty"` 26 IngressBandwidthSize *int `json:"ingress_bandwidth_size,omitempty"` 27 IngressBandwidthChargingMode string `json:"ingress_bandwidth_charging_mode,omitempty"` 28 EipId string `json:"eip_id,omitempty"` 29 Ipv6Enable bool `json:"ipv6_enable,omitempty"` 30 } 31 32 func Create(client *golangsdk.ServiceClient, opts CreateOpts) (*GatewayResp, error) { 33 b, err := build.RequestBody(opts, "") 34 if err != nil { 35 return nil, err 36 } 37 38 raw, err := client.Post(client.ServiceURL("apigw", "instances"), b, nil, &golangsdk.RequestOpts{ 39 OkCodes: []int{202}, 40 }) 41 if err != nil { 42 return nil, err 43 } 44 45 var res GatewayResp 46 47 err = extract.Into(raw.Body, &res) 48 return &res, err 49 } 50 51 type GatewayResp struct { 52 InstanceID string `json:"instance_id"` 53 Message string `json:"message"` 54 JobID string `json:"job_id"` 55 }