github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/dcaas/v2/virtual-interface/Create.go (about) 1 package virtual_interface 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 TenantID string `json:"tenant_id,omitempty"` 11 Name string `json:"name,omitempty"` 12 Description string `json:"description,omitempty"` 13 DirectConnectID string `json:"direct_connect_id" required:"true"` 14 VgwID string `json:"vgw_id" required:"true"` 15 Type string `json:"type" required:"true"` 16 ServiceType string `json:"service_type" required:"true"` 17 VLAN int `json:"vlan" required:"true"` 18 Bandwidth int `json:"bandwidth" required:"true"` 19 LocalGatewayV4IP string `json:"local_gateway_v4_ip" required:"true"` 20 RemoteGatewayV4IP string `json:"remote_gateway_v4_ip" required:"true"` 21 RouteMode string `json:"route_mode" required:"true"` 22 BGPASN int `json:"bgp_asn,omitempty"` 23 BGPMD5 string `json:"bgp_md5,omitempty"` 24 RemoteEPGroupID string `json:"remote_ep_group_id" required:"true"` 25 AdminStateUp bool `json:"admin_state_up,omitempty"` 26 } 27 28 func Create(c *golangsdk.ServiceClient, opts CreateOpts) (*VirtualInterface, error) { 29 b, err := build.RequestBody(opts, "virtual_interface") 30 if err != nil { 31 return nil, err 32 } 33 raw, err := c.Post(c.ServiceURL("dcaas", "virtual-interfaces"), b, nil, &golangsdk.RequestOpts{ 34 OkCodes: []int{201}, 35 }) 36 if err != nil { 37 return nil, err 38 } 39 40 var res VirtualInterface 41 err = extract.IntoStructPtr(raw.Body, &res, "virtual_interface") 42 return &res, err 43 }