github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/dcaas/v2/direct-connect/Create.go (about) 1 package direct_connect 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 Name string `json:"name,omitempty"` 11 Description string `json:"description,omitempty"` 12 PortType string `json:"port_type" required:"true"` 13 Bandwidth int `json:"bandwidth" required:"true"` 14 Location string `json:"location" required:"true"` 15 PeerLocation string `json:"peer_location,omitempty"` 16 DeviceID string `json:"device_id,omitempty"` 17 InterfaceName string `json:"interface_name,omitempty"` 18 RedundantID string `json:"redundant_id,omitempty"` 19 Provider string `json:"provider" required:"true"` 20 ProviderStatus string `json:"provider_status,omitempty"` 21 Type string `json:"type,omitempty"` 22 HostingID string `json:"hosting_id,omitempty"` 23 ChargeMode string `json:"charge_mode,omitempty"` 24 OrderID string `json:"order_id,omitempty"` 25 ProductID string `json:"product_id,omitempty"` 26 Status string `json:"status,omitempty"` 27 AdminStateUp bool `json:"admin_state_up,omitempty"` 28 } 29 30 func Create(c *golangsdk.ServiceClient, opts CreateOpts) (*DirectConnect, error) { 31 b, err := build.RequestBody(opts, "direct_connect") 32 if err != nil { 33 return nil, err 34 } 35 raw, err := c.Post(c.ServiceURL("dcaas", "direct-connects"), b, nil, &golangsdk.RequestOpts{ 36 OkCodes: []int{201}, 37 }) 38 if err != nil { 39 return nil, err 40 } 41 42 var res DirectConnect 43 err = extract.IntoStructPtr(raw.Body, &res, "direct_connect") 44 return &res, err 45 }