-
Notifications
You must be signed in to change notification settings - Fork 598
/
api_op_CreateInterconnect.go
233 lines (192 loc) · 7.78 KB
/
api_op_CreateInterconnect.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
package directconnect
import (
"context"
"fmt"
"time"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/internal/awsutil"
)
// Please also see https://docs.aws.amazon.com/goto/WebAPI/directconnect-2012-10-25/CreateInterconnectRequest
type CreateInterconnectInput struct {
_ struct{} `type:"structure"`
// The port bandwidth, in Gbps. The possible values are 1 and 10.
//
// Bandwidth is a required field
Bandwidth *string `locationName:"bandwidth" type:"string" required:"true"`
// The name of the interconnect.
//
// InterconnectName is a required field
InterconnectName *string `locationName:"interconnectName" type:"string" required:"true"`
// The ID of the LAG.
LagId *string `locationName:"lagId" type:"string"`
// The location of the interconnect.
//
// Location is a required field
Location *string `locationName:"location" type:"string" required:"true"`
// The tags to assign to the interconnect,
Tags []Tag `locationName:"tags" min:"1" type:"list"`
}
// String returns the string representation
func (s CreateInterconnectInput) String() string {
return awsutil.Prettify(s)
}
// Validate inspects the fields of the type to determine if they are valid.
func (s *CreateInterconnectInput) Validate() error {
invalidParams := aws.ErrInvalidParams{Context: "CreateInterconnectInput"}
if s.Bandwidth == nil {
invalidParams.Add(aws.NewErrParamRequired("Bandwidth"))
}
if s.InterconnectName == nil {
invalidParams.Add(aws.NewErrParamRequired("InterconnectName"))
}
if s.Location == nil {
invalidParams.Add(aws.NewErrParamRequired("Location"))
}
if s.Tags != nil && len(s.Tags) < 1 {
invalidParams.Add(aws.NewErrParamMinLen("Tags", 1))
}
if s.Tags != nil {
for i, v := range s.Tags {
if err := v.Validate(); err != nil {
invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(aws.ErrInvalidParams))
}
}
}
if invalidParams.Len() > 0 {
return invalidParams
}
return nil
}
// Information about an interconnect.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/directconnect-2012-10-25/Interconnect
type CreateInterconnectOutput struct {
_ struct{} `type:"structure"`
// The Direct Connect endpoint on which the physical connection terminates.
AwsDevice *string `locationName:"awsDevice" deprecated:"true" type:"string"`
// The Direct Connect endpoint on which the physical connection terminates.
AwsDeviceV2 *string `locationName:"awsDeviceV2" type:"string"`
// The bandwidth of the connection.
Bandwidth *string `locationName:"bandwidth" type:"string"`
// Indicates whether the interconnect supports a secondary BGP in the same address
// family (IPv4/IPv6).
HasLogicalRedundancy HasLogicalRedundancy `locationName:"hasLogicalRedundancy" type:"string" enum:"true"`
// The ID of the interconnect.
InterconnectId *string `locationName:"interconnectId" type:"string"`
// The name of the interconnect.
InterconnectName *string `locationName:"interconnectName" type:"string"`
// The state of the interconnect. The following are the possible values:
//
// * requested: The initial state of an interconnect. The interconnect stays
// in the requested state until the Letter of Authorization (LOA) is sent
// to the customer.
//
// * pending: The interconnect is approved, and is being initialized.
//
// * available: The network link is up, and the interconnect is ready for
// use.
//
// * down: The network link is down.
//
// * deleting: The interconnect is being deleted.
//
// * deleted: The interconnect is deleted.
//
// * unknown: The state of the interconnect is not available.
InterconnectState InterconnectState `locationName:"interconnectState" type:"string" enum:"true"`
// Indicates whether jumbo frames (9001 MTU) are supported.
JumboFrameCapable *bool `locationName:"jumboFrameCapable" type:"boolean"`
// The ID of the LAG.
LagId *string `locationName:"lagId" type:"string"`
// The time of the most recent call to DescribeLoa for this connection.
LoaIssueTime *time.Time `locationName:"loaIssueTime" type:"timestamp"`
// The location of the connection.
Location *string `locationName:"location" type:"string"`
// The AWS Region where the connection is located.
Region *string `locationName:"region" type:"string"`
// Any tags assigned to the interconnect.
Tags []Tag `locationName:"tags" min:"1" type:"list"`
}
// String returns the string representation
func (s CreateInterconnectOutput) String() string {
return awsutil.Prettify(s)
}
const opCreateInterconnect = "CreateInterconnect"
// CreateInterconnectRequest returns a request value for making API operation for
// AWS Direct Connect.
//
// Creates an interconnect between an AWS Direct Connect Partner's network and
// a specific AWS Direct Connect location.
//
// An interconnect is a connection that is capable of hosting other connections.
// The AWS Direct Connect partner can use an interconnect to provide AWS Direct
// Connect hosted connections to customers through their own network services.
// Like a standard connection, an interconnect links the partner's network to
// an AWS Direct Connect location over a standard Ethernet fiber-optic cable.
// One end is connected to the partner's router, the other to an AWS Direct
// Connect router.
//
// You can automatically add the new interconnect to a link aggregation group
// (LAG) by specifying a LAG ID in the request. This ensures that the new interconnect
// is allocated on the same AWS Direct Connect endpoint that hosts the specified
// LAG. If there are no available ports on the endpoint, the request fails and
// no interconnect is created.
//
// For each end customer, the AWS Direct Connect Partner provisions a connection
// on their interconnect by calling AllocateHostedConnection. The end customer
// can then connect to AWS resources by creating a virtual interface on their
// connection, using the VLAN assigned to them by the AWS Direct Connect Partner.
//
// Intended for use by AWS Direct Connect Partners only.
//
// // Example sending a request using CreateInterconnectRequest.
// req := client.CreateInterconnectRequest(params)
// resp, err := req.Send(context.TODO())
// if err == nil {
// fmt.Println(resp)
// }
//
// Please also see https://docs.aws.amazon.com/goto/WebAPI/directconnect-2012-10-25/CreateInterconnect
func (c *Client) CreateInterconnectRequest(input *CreateInterconnectInput) CreateInterconnectRequest {
op := &aws.Operation{
Name: opCreateInterconnect,
HTTPMethod: "POST",
HTTPPath: "/",
}
if input == nil {
input = &CreateInterconnectInput{}
}
req := c.newRequest(op, input, &CreateInterconnectOutput{})
return CreateInterconnectRequest{Request: req, Input: input, Copy: c.CreateInterconnectRequest}
}
// CreateInterconnectRequest is the request type for the
// CreateInterconnect API operation.
type CreateInterconnectRequest struct {
*aws.Request
Input *CreateInterconnectInput
Copy func(*CreateInterconnectInput) CreateInterconnectRequest
}
// Send marshals and sends the CreateInterconnect API request.
func (r CreateInterconnectRequest) Send(ctx context.Context) (*CreateInterconnectResponse, error) {
r.Request.SetContext(ctx)
err := r.Request.Send()
if err != nil {
return nil, err
}
resp := &CreateInterconnectResponse{
CreateInterconnectOutput: r.Request.Data.(*CreateInterconnectOutput),
response: &aws.Response{Request: r.Request},
}
return resp, nil
}
// CreateInterconnectResponse is the response type for the
// CreateInterconnect API operation.
type CreateInterconnectResponse struct {
*CreateInterconnectOutput
response *aws.Response
}
// SDKResponseMetdata returns the response metadata for the
// CreateInterconnect request.
func (r *CreateInterconnectResponse) SDKResponseMetdata() *aws.Response {
return r.response
}