1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package appmesh
4
5import (
6	"fmt"
7	"time"
8
9	"github.com/aws/aws-sdk-go/aws"
10	"github.com/aws/aws-sdk-go/aws/awsutil"
11	"github.com/aws/aws-sdk-go/aws/request"
12	"github.com/aws/aws-sdk-go/private/protocol"
13	"github.com/aws/aws-sdk-go/private/protocol/restjson"
14)
15
16const opCreateMesh = "CreateMesh"
17
18// CreateMeshRequest generates a "aws/request.Request" representing the
19// client's request for the CreateMesh operation. The "output" return
20// value will be populated with the request's response once the request completes
21// successfully.
22//
23// Use "Send" method on the returned Request to send the API call to the service.
24// the "output" return value is not valid until after Send returns without error.
25//
26// See CreateMesh for more information on using the CreateMesh
27// API call, and error handling.
28//
29// This method is useful when you want to inject custom logic or configuration
30// into the SDK's request lifecycle. Such as custom headers, or retry logic.
31//
32//
33//    // Example sending a request using the CreateMeshRequest method.
34//    req, resp := client.CreateMeshRequest(params)
35//
36//    err := req.Send()
37//    if err == nil { // resp is now filled
38//        fmt.Println(resp)
39//    }
40//
41// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateMesh
42func (c *AppMesh) CreateMeshRequest(input *CreateMeshInput) (req *request.Request, output *CreateMeshOutput) {
43	op := &request.Operation{
44		Name:       opCreateMesh,
45		HTTPMethod: "PUT",
46		HTTPPath:   "/v20190125/meshes",
47	}
48
49	if input == nil {
50		input = &CreateMeshInput{}
51	}
52
53	output = &CreateMeshOutput{}
54	req = c.newRequest(op, input, output)
55	return
56}
57
58// CreateMesh API operation for AWS App Mesh.
59//
60// Creates a service mesh. A service mesh is a logical boundary for network
61// traffic between the services that reside within it.
62//
63// After you create your service mesh, you can create virtual services, virtual
64// nodes, virtual routers, and routes to distribute traffic between the applications
65// in your mesh.
66//
67// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
68// with awserr.Error's Code and Message methods to get detailed information about
69// the error.
70//
71// See the AWS API reference guide for AWS App Mesh's
72// API operation CreateMesh for usage and error information.
73//
74// Returned Error Codes:
75//   * ErrCodeBadRequestException "BadRequestException"
76//   The request syntax was malformed. Check your request syntax and try again.
77//
78//   * ErrCodeConflictException "ConflictException"
79//   The request contains a client token that was used for a previous update resource
80//   call with different specifications. Try the request again with a new client
81//   token.
82//
83//   * ErrCodeForbiddenException "ForbiddenException"
84//   You don't have permissions to perform this action.
85//
86//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
87//   The request processing has failed because of an unknown error, exception,
88//   or failure.
89//
90//   * ErrCodeLimitExceededException "LimitExceededException"
91//   You have exceeded a service limit for your account. For more information,
92//   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service_limits.html)
93//   in the AWS App Mesh User Guide.
94//
95//   * ErrCodeNotFoundException "NotFoundException"
96//   The specified resource doesn't exist. Check your request syntax and try again.
97//
98//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
99//   The request has failed due to a temporary failure of the service.
100//
101//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
102//   The maximum request rate permitted by the App Mesh APIs has been exceeded
103//   for your account. For best results, use an increasing or variable sleep interval
104//   between requests.
105//
106// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateMesh
107func (c *AppMesh) CreateMesh(input *CreateMeshInput) (*CreateMeshOutput, error) {
108	req, out := c.CreateMeshRequest(input)
109	return out, req.Send()
110}
111
112// CreateMeshWithContext is the same as CreateMesh with the addition of
113// the ability to pass a context and additional request options.
114//
115// See CreateMesh for details on how to use this API operation.
116//
117// The context must be non-nil and will be used for request cancellation. If
118// the context is nil a panic will occur. In the future the SDK may create
119// sub-contexts for http.Requests. See https://golang.org/pkg/context/
120// for more information on using Contexts.
121func (c *AppMesh) CreateMeshWithContext(ctx aws.Context, input *CreateMeshInput, opts ...request.Option) (*CreateMeshOutput, error) {
122	req, out := c.CreateMeshRequest(input)
123	req.SetContext(ctx)
124	req.ApplyOptions(opts...)
125	return out, req.Send()
126}
127
128const opCreateRoute = "CreateRoute"
129
130// CreateRouteRequest generates a "aws/request.Request" representing the
131// client's request for the CreateRoute operation. The "output" return
132// value will be populated with the request's response once the request completes
133// successfully.
134//
135// Use "Send" method on the returned Request to send the API call to the service.
136// the "output" return value is not valid until after Send returns without error.
137//
138// See CreateRoute for more information on using the CreateRoute
139// API call, and error handling.
140//
141// This method is useful when you want to inject custom logic or configuration
142// into the SDK's request lifecycle. Such as custom headers, or retry logic.
143//
144//
145//    // Example sending a request using the CreateRouteRequest method.
146//    req, resp := client.CreateRouteRequest(params)
147//
148//    err := req.Send()
149//    if err == nil { // resp is now filled
150//        fmt.Println(resp)
151//    }
152//
153// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateRoute
154func (c *AppMesh) CreateRouteRequest(input *CreateRouteInput) (req *request.Request, output *CreateRouteOutput) {
155	op := &request.Operation{
156		Name:       opCreateRoute,
157		HTTPMethod: "PUT",
158		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes",
159	}
160
161	if input == nil {
162		input = &CreateRouteInput{}
163	}
164
165	output = &CreateRouteOutput{}
166	req = c.newRequest(op, input, output)
167	return
168}
169
170// CreateRoute API operation for AWS App Mesh.
171//
172// Creates a route that is associated with a virtual router.
173//
174// You can use the prefix parameter in your route specification for path-based
175// routing of requests. For example, if your virtual service name is my-service.local
176// and you want the route to match requests to my-service.local/metrics, your
177// prefix should be /metrics.
178//
179// If your route matches a request, you can distribute traffic to one or more
180// target virtual nodes with relative weighting.
181//
182// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
183// with awserr.Error's Code and Message methods to get detailed information about
184// the error.
185//
186// See the AWS API reference guide for AWS App Mesh's
187// API operation CreateRoute for usage and error information.
188//
189// Returned Error Codes:
190//   * ErrCodeBadRequestException "BadRequestException"
191//   The request syntax was malformed. Check your request syntax and try again.
192//
193//   * ErrCodeConflictException "ConflictException"
194//   The request contains a client token that was used for a previous update resource
195//   call with different specifications. Try the request again with a new client
196//   token.
197//
198//   * ErrCodeForbiddenException "ForbiddenException"
199//   You don't have permissions to perform this action.
200//
201//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
202//   The request processing has failed because of an unknown error, exception,
203//   or failure.
204//
205//   * ErrCodeLimitExceededException "LimitExceededException"
206//   You have exceeded a service limit for your account. For more information,
207//   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service_limits.html)
208//   in the AWS App Mesh User Guide.
209//
210//   * ErrCodeNotFoundException "NotFoundException"
211//   The specified resource doesn't exist. Check your request syntax and try again.
212//
213//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
214//   The request has failed due to a temporary failure of the service.
215//
216//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
217//   The maximum request rate permitted by the App Mesh APIs has been exceeded
218//   for your account. For best results, use an increasing or variable sleep interval
219//   between requests.
220//
221// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateRoute
222func (c *AppMesh) CreateRoute(input *CreateRouteInput) (*CreateRouteOutput, error) {
223	req, out := c.CreateRouteRequest(input)
224	return out, req.Send()
225}
226
227// CreateRouteWithContext is the same as CreateRoute with the addition of
228// the ability to pass a context and additional request options.
229//
230// See CreateRoute for details on how to use this API operation.
231//
232// The context must be non-nil and will be used for request cancellation. If
233// the context is nil a panic will occur. In the future the SDK may create
234// sub-contexts for http.Requests. See https://golang.org/pkg/context/
235// for more information on using Contexts.
236func (c *AppMesh) CreateRouteWithContext(ctx aws.Context, input *CreateRouteInput, opts ...request.Option) (*CreateRouteOutput, error) {
237	req, out := c.CreateRouteRequest(input)
238	req.SetContext(ctx)
239	req.ApplyOptions(opts...)
240	return out, req.Send()
241}
242
243const opCreateVirtualNode = "CreateVirtualNode"
244
245// CreateVirtualNodeRequest generates a "aws/request.Request" representing the
246// client's request for the CreateVirtualNode operation. The "output" return
247// value will be populated with the request's response once the request completes
248// successfully.
249//
250// Use "Send" method on the returned Request to send the API call to the service.
251// the "output" return value is not valid until after Send returns without error.
252//
253// See CreateVirtualNode for more information on using the CreateVirtualNode
254// API call, and error handling.
255//
256// This method is useful when you want to inject custom logic or configuration
257// into the SDK's request lifecycle. Such as custom headers, or retry logic.
258//
259//
260//    // Example sending a request using the CreateVirtualNodeRequest method.
261//    req, resp := client.CreateVirtualNodeRequest(params)
262//
263//    err := req.Send()
264//    if err == nil { // resp is now filled
265//        fmt.Println(resp)
266//    }
267//
268// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualNode
269func (c *AppMesh) CreateVirtualNodeRequest(input *CreateVirtualNodeInput) (req *request.Request, output *CreateVirtualNodeOutput) {
270	op := &request.Operation{
271		Name:       opCreateVirtualNode,
272		HTTPMethod: "PUT",
273		HTTPPath:   "/v20190125/meshes/{meshName}/virtualNodes",
274	}
275
276	if input == nil {
277		input = &CreateVirtualNodeInput{}
278	}
279
280	output = &CreateVirtualNodeOutput{}
281	req = c.newRequest(op, input, output)
282	return
283}
284
285// CreateVirtualNode API operation for AWS App Mesh.
286//
287// Creates a virtual node within a service mesh.
288//
289// A virtual node acts as a logical pointer to a particular task group, such
290// as an Amazon ECS service or a Kubernetes deployment. When you create a virtual
291// node, you can specify the service discovery information for your task group.
292//
293// Any inbound traffic that your virtual node expects should be specified as
294// a listener. Any outbound traffic that your virtual node expects to reach
295// should be specified as a backend.
296//
297// The response metadata for your new virtual node contains the arn that is
298// associated with the virtual node. Set this value (either the full ARN or
299// the truncated resource name: for example, mesh/default/virtualNode/simpleapp)
300// as the APPMESH_VIRTUAL_NODE_NAME environment variable for your task group's
301// Envoy proxy container in your task definition or pod spec. This is then mapped
302// to the node.id and node.cluster Envoy parameters.
303//
304// If you require your Envoy stats or tracing to use a different name, you can
305// override the node.cluster value that is set by APPMESH_VIRTUAL_NODE_NAME
306// with the APPMESH_VIRTUAL_NODE_CLUSTER environment variable.
307//
308// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
309// with awserr.Error's Code and Message methods to get detailed information about
310// the error.
311//
312// See the AWS API reference guide for AWS App Mesh's
313// API operation CreateVirtualNode for usage and error information.
314//
315// Returned Error Codes:
316//   * ErrCodeBadRequestException "BadRequestException"
317//   The request syntax was malformed. Check your request syntax and try again.
318//
319//   * ErrCodeConflictException "ConflictException"
320//   The request contains a client token that was used for a previous update resource
321//   call with different specifications. Try the request again with a new client
322//   token.
323//
324//   * ErrCodeForbiddenException "ForbiddenException"
325//   You don't have permissions to perform this action.
326//
327//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
328//   The request processing has failed because of an unknown error, exception,
329//   or failure.
330//
331//   * ErrCodeLimitExceededException "LimitExceededException"
332//   You have exceeded a service limit for your account. For more information,
333//   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service_limits.html)
334//   in the AWS App Mesh User Guide.
335//
336//   * ErrCodeNotFoundException "NotFoundException"
337//   The specified resource doesn't exist. Check your request syntax and try again.
338//
339//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
340//   The request has failed due to a temporary failure of the service.
341//
342//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
343//   The maximum request rate permitted by the App Mesh APIs has been exceeded
344//   for your account. For best results, use an increasing or variable sleep interval
345//   between requests.
346//
347// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualNode
348func (c *AppMesh) CreateVirtualNode(input *CreateVirtualNodeInput) (*CreateVirtualNodeOutput, error) {
349	req, out := c.CreateVirtualNodeRequest(input)
350	return out, req.Send()
351}
352
353// CreateVirtualNodeWithContext is the same as CreateVirtualNode with the addition of
354// the ability to pass a context and additional request options.
355//
356// See CreateVirtualNode for details on how to use this API operation.
357//
358// The context must be non-nil and will be used for request cancellation. If
359// the context is nil a panic will occur. In the future the SDK may create
360// sub-contexts for http.Requests. See https://golang.org/pkg/context/
361// for more information on using Contexts.
362func (c *AppMesh) CreateVirtualNodeWithContext(ctx aws.Context, input *CreateVirtualNodeInput, opts ...request.Option) (*CreateVirtualNodeOutput, error) {
363	req, out := c.CreateVirtualNodeRequest(input)
364	req.SetContext(ctx)
365	req.ApplyOptions(opts...)
366	return out, req.Send()
367}
368
369const opCreateVirtualRouter = "CreateVirtualRouter"
370
371// CreateVirtualRouterRequest generates a "aws/request.Request" representing the
372// client's request for the CreateVirtualRouter operation. The "output" return
373// value will be populated with the request's response once the request completes
374// successfully.
375//
376// Use "Send" method on the returned Request to send the API call to the service.
377// the "output" return value is not valid until after Send returns without error.
378//
379// See CreateVirtualRouter for more information on using the CreateVirtualRouter
380// API call, and error handling.
381//
382// This method is useful when you want to inject custom logic or configuration
383// into the SDK's request lifecycle. Such as custom headers, or retry logic.
384//
385//
386//    // Example sending a request using the CreateVirtualRouterRequest method.
387//    req, resp := client.CreateVirtualRouterRequest(params)
388//
389//    err := req.Send()
390//    if err == nil { // resp is now filled
391//        fmt.Println(resp)
392//    }
393//
394// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualRouter
395func (c *AppMesh) CreateVirtualRouterRequest(input *CreateVirtualRouterInput) (req *request.Request, output *CreateVirtualRouterOutput) {
396	op := &request.Operation{
397		Name:       opCreateVirtualRouter,
398		HTTPMethod: "PUT",
399		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouters",
400	}
401
402	if input == nil {
403		input = &CreateVirtualRouterInput{}
404	}
405
406	output = &CreateVirtualRouterOutput{}
407	req = c.newRequest(op, input, output)
408	return
409}
410
411// CreateVirtualRouter API operation for AWS App Mesh.
412//
413// Creates a virtual router within a service mesh.
414//
415// Any inbound traffic that your virtual router expects should be specified
416// as a listener.
417//
418// Virtual routers handle traffic for one or more virtual services within your
419// mesh. After you create your virtual router, create and associate routes for
420// your virtual router that direct incoming requests to different virtual nodes.
421//
422// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
423// with awserr.Error's Code and Message methods to get detailed information about
424// the error.
425//
426// See the AWS API reference guide for AWS App Mesh's
427// API operation CreateVirtualRouter for usage and error information.
428//
429// Returned Error Codes:
430//   * ErrCodeBadRequestException "BadRequestException"
431//   The request syntax was malformed. Check your request syntax and try again.
432//
433//   * ErrCodeConflictException "ConflictException"
434//   The request contains a client token that was used for a previous update resource
435//   call with different specifications. Try the request again with a new client
436//   token.
437//
438//   * ErrCodeForbiddenException "ForbiddenException"
439//   You don't have permissions to perform this action.
440//
441//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
442//   The request processing has failed because of an unknown error, exception,
443//   or failure.
444//
445//   * ErrCodeLimitExceededException "LimitExceededException"
446//   You have exceeded a service limit for your account. For more information,
447//   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service_limits.html)
448//   in the AWS App Mesh User Guide.
449//
450//   * ErrCodeNotFoundException "NotFoundException"
451//   The specified resource doesn't exist. Check your request syntax and try again.
452//
453//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
454//   The request has failed due to a temporary failure of the service.
455//
456//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
457//   The maximum request rate permitted by the App Mesh APIs has been exceeded
458//   for your account. For best results, use an increasing or variable sleep interval
459//   between requests.
460//
461// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualRouter
462func (c *AppMesh) CreateVirtualRouter(input *CreateVirtualRouterInput) (*CreateVirtualRouterOutput, error) {
463	req, out := c.CreateVirtualRouterRequest(input)
464	return out, req.Send()
465}
466
467// CreateVirtualRouterWithContext is the same as CreateVirtualRouter with the addition of
468// the ability to pass a context and additional request options.
469//
470// See CreateVirtualRouter for details on how to use this API operation.
471//
472// The context must be non-nil and will be used for request cancellation. If
473// the context is nil a panic will occur. In the future the SDK may create
474// sub-contexts for http.Requests. See https://golang.org/pkg/context/
475// for more information on using Contexts.
476func (c *AppMesh) CreateVirtualRouterWithContext(ctx aws.Context, input *CreateVirtualRouterInput, opts ...request.Option) (*CreateVirtualRouterOutput, error) {
477	req, out := c.CreateVirtualRouterRequest(input)
478	req.SetContext(ctx)
479	req.ApplyOptions(opts...)
480	return out, req.Send()
481}
482
483const opCreateVirtualService = "CreateVirtualService"
484
485// CreateVirtualServiceRequest generates a "aws/request.Request" representing the
486// client's request for the CreateVirtualService operation. The "output" return
487// value will be populated with the request's response once the request completes
488// successfully.
489//
490// Use "Send" method on the returned Request to send the API call to the service.
491// the "output" return value is not valid until after Send returns without error.
492//
493// See CreateVirtualService for more information on using the CreateVirtualService
494// API call, and error handling.
495//
496// This method is useful when you want to inject custom logic or configuration
497// into the SDK's request lifecycle. Such as custom headers, or retry logic.
498//
499//
500//    // Example sending a request using the CreateVirtualServiceRequest method.
501//    req, resp := client.CreateVirtualServiceRequest(params)
502//
503//    err := req.Send()
504//    if err == nil { // resp is now filled
505//        fmt.Println(resp)
506//    }
507//
508// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualService
509func (c *AppMesh) CreateVirtualServiceRequest(input *CreateVirtualServiceInput) (req *request.Request, output *CreateVirtualServiceOutput) {
510	op := &request.Operation{
511		Name:       opCreateVirtualService,
512		HTTPMethod: "PUT",
513		HTTPPath:   "/v20190125/meshes/{meshName}/virtualServices",
514	}
515
516	if input == nil {
517		input = &CreateVirtualServiceInput{}
518	}
519
520	output = &CreateVirtualServiceOutput{}
521	req = c.newRequest(op, input, output)
522	return
523}
524
525// CreateVirtualService API operation for AWS App Mesh.
526//
527// Creates a virtual service within a service mesh.
528//
529// A virtual service is an abstraction of a real service that is provided by
530// a virtual node directly or indirectly by means of a virtual router. Dependent
531// services call your virtual service by its virtualServiceName, and those requests
532// are routed to the virtual node or virtual router that is specified as the
533// provider for the virtual service.
534//
535// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
536// with awserr.Error's Code and Message methods to get detailed information about
537// the error.
538//
539// See the AWS API reference guide for AWS App Mesh's
540// API operation CreateVirtualService for usage and error information.
541//
542// Returned Error Codes:
543//   * ErrCodeBadRequestException "BadRequestException"
544//   The request syntax was malformed. Check your request syntax and try again.
545//
546//   * ErrCodeConflictException "ConflictException"
547//   The request contains a client token that was used for a previous update resource
548//   call with different specifications. Try the request again with a new client
549//   token.
550//
551//   * ErrCodeForbiddenException "ForbiddenException"
552//   You don't have permissions to perform this action.
553//
554//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
555//   The request processing has failed because of an unknown error, exception,
556//   or failure.
557//
558//   * ErrCodeLimitExceededException "LimitExceededException"
559//   You have exceeded a service limit for your account. For more information,
560//   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service_limits.html)
561//   in the AWS App Mesh User Guide.
562//
563//   * ErrCodeNotFoundException "NotFoundException"
564//   The specified resource doesn't exist. Check your request syntax and try again.
565//
566//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
567//   The request has failed due to a temporary failure of the service.
568//
569//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
570//   The maximum request rate permitted by the App Mesh APIs has been exceeded
571//   for your account. For best results, use an increasing or variable sleep interval
572//   between requests.
573//
574// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualService
575func (c *AppMesh) CreateVirtualService(input *CreateVirtualServiceInput) (*CreateVirtualServiceOutput, error) {
576	req, out := c.CreateVirtualServiceRequest(input)
577	return out, req.Send()
578}
579
580// CreateVirtualServiceWithContext is the same as CreateVirtualService with the addition of
581// the ability to pass a context and additional request options.
582//
583// See CreateVirtualService for details on how to use this API operation.
584//
585// The context must be non-nil and will be used for request cancellation. If
586// the context is nil a panic will occur. In the future the SDK may create
587// sub-contexts for http.Requests. See https://golang.org/pkg/context/
588// for more information on using Contexts.
589func (c *AppMesh) CreateVirtualServiceWithContext(ctx aws.Context, input *CreateVirtualServiceInput, opts ...request.Option) (*CreateVirtualServiceOutput, error) {
590	req, out := c.CreateVirtualServiceRequest(input)
591	req.SetContext(ctx)
592	req.ApplyOptions(opts...)
593	return out, req.Send()
594}
595
596const opDeleteMesh = "DeleteMesh"
597
598// DeleteMeshRequest generates a "aws/request.Request" representing the
599// client's request for the DeleteMesh operation. The "output" return
600// value will be populated with the request's response once the request completes
601// successfully.
602//
603// Use "Send" method on the returned Request to send the API call to the service.
604// the "output" return value is not valid until after Send returns without error.
605//
606// See DeleteMesh for more information on using the DeleteMesh
607// API call, and error handling.
608//
609// This method is useful when you want to inject custom logic or configuration
610// into the SDK's request lifecycle. Such as custom headers, or retry logic.
611//
612//
613//    // Example sending a request using the DeleteMeshRequest method.
614//    req, resp := client.DeleteMeshRequest(params)
615//
616//    err := req.Send()
617//    if err == nil { // resp is now filled
618//        fmt.Println(resp)
619//    }
620//
621// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteMesh
622func (c *AppMesh) DeleteMeshRequest(input *DeleteMeshInput) (req *request.Request, output *DeleteMeshOutput) {
623	op := &request.Operation{
624		Name:       opDeleteMesh,
625		HTTPMethod: "DELETE",
626		HTTPPath:   "/v20190125/meshes/{meshName}",
627	}
628
629	if input == nil {
630		input = &DeleteMeshInput{}
631	}
632
633	output = &DeleteMeshOutput{}
634	req = c.newRequest(op, input, output)
635	return
636}
637
638// DeleteMesh API operation for AWS App Mesh.
639//
640// Deletes an existing service mesh.
641//
642// You must delete all resources (virtual services, routes, virtual routers,
643// and virtual nodes) in the service mesh before you can delete the mesh itself.
644//
645// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
646// with awserr.Error's Code and Message methods to get detailed information about
647// the error.
648//
649// See the AWS API reference guide for AWS App Mesh's
650// API operation DeleteMesh for usage and error information.
651//
652// Returned Error Codes:
653//   * ErrCodeBadRequestException "BadRequestException"
654//   The request syntax was malformed. Check your request syntax and try again.
655//
656//   * ErrCodeForbiddenException "ForbiddenException"
657//   You don't have permissions to perform this action.
658//
659//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
660//   The request processing has failed because of an unknown error, exception,
661//   or failure.
662//
663//   * ErrCodeNotFoundException "NotFoundException"
664//   The specified resource doesn't exist. Check your request syntax and try again.
665//
666//   * ErrCodeResourceInUseException "ResourceInUseException"
667//   You can't delete the specified resource because it's in use or required by
668//   another resource.
669//
670//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
671//   The request has failed due to a temporary failure of the service.
672//
673//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
674//   The maximum request rate permitted by the App Mesh APIs has been exceeded
675//   for your account. For best results, use an increasing or variable sleep interval
676//   between requests.
677//
678// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteMesh
679func (c *AppMesh) DeleteMesh(input *DeleteMeshInput) (*DeleteMeshOutput, error) {
680	req, out := c.DeleteMeshRequest(input)
681	return out, req.Send()
682}
683
684// DeleteMeshWithContext is the same as DeleteMesh with the addition of
685// the ability to pass a context and additional request options.
686//
687// See DeleteMesh for details on how to use this API operation.
688//
689// The context must be non-nil and will be used for request cancellation. If
690// the context is nil a panic will occur. In the future the SDK may create
691// sub-contexts for http.Requests. See https://golang.org/pkg/context/
692// for more information on using Contexts.
693func (c *AppMesh) DeleteMeshWithContext(ctx aws.Context, input *DeleteMeshInput, opts ...request.Option) (*DeleteMeshOutput, error) {
694	req, out := c.DeleteMeshRequest(input)
695	req.SetContext(ctx)
696	req.ApplyOptions(opts...)
697	return out, req.Send()
698}
699
700const opDeleteRoute = "DeleteRoute"
701
702// DeleteRouteRequest generates a "aws/request.Request" representing the
703// client's request for the DeleteRoute operation. The "output" return
704// value will be populated with the request's response once the request completes
705// successfully.
706//
707// Use "Send" method on the returned Request to send the API call to the service.
708// the "output" return value is not valid until after Send returns without error.
709//
710// See DeleteRoute for more information on using the DeleteRoute
711// API call, and error handling.
712//
713// This method is useful when you want to inject custom logic or configuration
714// into the SDK's request lifecycle. Such as custom headers, or retry logic.
715//
716//
717//    // Example sending a request using the DeleteRouteRequest method.
718//    req, resp := client.DeleteRouteRequest(params)
719//
720//    err := req.Send()
721//    if err == nil { // resp is now filled
722//        fmt.Println(resp)
723//    }
724//
725// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteRoute
726func (c *AppMesh) DeleteRouteRequest(input *DeleteRouteInput) (req *request.Request, output *DeleteRouteOutput) {
727	op := &request.Operation{
728		Name:       opDeleteRoute,
729		HTTPMethod: "DELETE",
730		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}",
731	}
732
733	if input == nil {
734		input = &DeleteRouteInput{}
735	}
736
737	output = &DeleteRouteOutput{}
738	req = c.newRequest(op, input, output)
739	return
740}
741
742// DeleteRoute API operation for AWS App Mesh.
743//
744// Deletes an existing route.
745//
746// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
747// with awserr.Error's Code and Message methods to get detailed information about
748// the error.
749//
750// See the AWS API reference guide for AWS App Mesh's
751// API operation DeleteRoute for usage and error information.
752//
753// Returned Error Codes:
754//   * ErrCodeBadRequestException "BadRequestException"
755//   The request syntax was malformed. Check your request syntax and try again.
756//
757//   * ErrCodeForbiddenException "ForbiddenException"
758//   You don't have permissions to perform this action.
759//
760//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
761//   The request processing has failed because of an unknown error, exception,
762//   or failure.
763//
764//   * ErrCodeNotFoundException "NotFoundException"
765//   The specified resource doesn't exist. Check your request syntax and try again.
766//
767//   * ErrCodeResourceInUseException "ResourceInUseException"
768//   You can't delete the specified resource because it's in use or required by
769//   another resource.
770//
771//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
772//   The request has failed due to a temporary failure of the service.
773//
774//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
775//   The maximum request rate permitted by the App Mesh APIs has been exceeded
776//   for your account. For best results, use an increasing or variable sleep interval
777//   between requests.
778//
779// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteRoute
780func (c *AppMesh) DeleteRoute(input *DeleteRouteInput) (*DeleteRouteOutput, error) {
781	req, out := c.DeleteRouteRequest(input)
782	return out, req.Send()
783}
784
785// DeleteRouteWithContext is the same as DeleteRoute with the addition of
786// the ability to pass a context and additional request options.
787//
788// See DeleteRoute for details on how to use this API operation.
789//
790// The context must be non-nil and will be used for request cancellation. If
791// the context is nil a panic will occur. In the future the SDK may create
792// sub-contexts for http.Requests. See https://golang.org/pkg/context/
793// for more information on using Contexts.
794func (c *AppMesh) DeleteRouteWithContext(ctx aws.Context, input *DeleteRouteInput, opts ...request.Option) (*DeleteRouteOutput, error) {
795	req, out := c.DeleteRouteRequest(input)
796	req.SetContext(ctx)
797	req.ApplyOptions(opts...)
798	return out, req.Send()
799}
800
801const opDeleteVirtualNode = "DeleteVirtualNode"
802
803// DeleteVirtualNodeRequest generates a "aws/request.Request" representing the
804// client's request for the DeleteVirtualNode operation. The "output" return
805// value will be populated with the request's response once the request completes
806// successfully.
807//
808// Use "Send" method on the returned Request to send the API call to the service.
809// the "output" return value is not valid until after Send returns without error.
810//
811// See DeleteVirtualNode for more information on using the DeleteVirtualNode
812// API call, and error handling.
813//
814// This method is useful when you want to inject custom logic or configuration
815// into the SDK's request lifecycle. Such as custom headers, or retry logic.
816//
817//
818//    // Example sending a request using the DeleteVirtualNodeRequest method.
819//    req, resp := client.DeleteVirtualNodeRequest(params)
820//
821//    err := req.Send()
822//    if err == nil { // resp is now filled
823//        fmt.Println(resp)
824//    }
825//
826// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualNode
827func (c *AppMesh) DeleteVirtualNodeRequest(input *DeleteVirtualNodeInput) (req *request.Request, output *DeleteVirtualNodeOutput) {
828	op := &request.Operation{
829		Name:       opDeleteVirtualNode,
830		HTTPMethod: "DELETE",
831		HTTPPath:   "/v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}",
832	}
833
834	if input == nil {
835		input = &DeleteVirtualNodeInput{}
836	}
837
838	output = &DeleteVirtualNodeOutput{}
839	req = c.newRequest(op, input, output)
840	return
841}
842
843// DeleteVirtualNode API operation for AWS App Mesh.
844//
845// Deletes an existing virtual node.
846//
847// You must delete any virtual services that list a virtual node as a service
848// provider before you can delete the virtual node itself.
849//
850// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
851// with awserr.Error's Code and Message methods to get detailed information about
852// the error.
853//
854// See the AWS API reference guide for AWS App Mesh's
855// API operation DeleteVirtualNode for usage and error information.
856//
857// Returned Error Codes:
858//   * ErrCodeBadRequestException "BadRequestException"
859//   The request syntax was malformed. Check your request syntax and try again.
860//
861//   * ErrCodeForbiddenException "ForbiddenException"
862//   You don't have permissions to perform this action.
863//
864//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
865//   The request processing has failed because of an unknown error, exception,
866//   or failure.
867//
868//   * ErrCodeNotFoundException "NotFoundException"
869//   The specified resource doesn't exist. Check your request syntax and try again.
870//
871//   * ErrCodeResourceInUseException "ResourceInUseException"
872//   You can't delete the specified resource because it's in use or required by
873//   another resource.
874//
875//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
876//   The request has failed due to a temporary failure of the service.
877//
878//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
879//   The maximum request rate permitted by the App Mesh APIs has been exceeded
880//   for your account. For best results, use an increasing or variable sleep interval
881//   between requests.
882//
883// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualNode
884func (c *AppMesh) DeleteVirtualNode(input *DeleteVirtualNodeInput) (*DeleteVirtualNodeOutput, error) {
885	req, out := c.DeleteVirtualNodeRequest(input)
886	return out, req.Send()
887}
888
889// DeleteVirtualNodeWithContext is the same as DeleteVirtualNode with the addition of
890// the ability to pass a context and additional request options.
891//
892// See DeleteVirtualNode for details on how to use this API operation.
893//
894// The context must be non-nil and will be used for request cancellation. If
895// the context is nil a panic will occur. In the future the SDK may create
896// sub-contexts for http.Requests. See https://golang.org/pkg/context/
897// for more information on using Contexts.
898func (c *AppMesh) DeleteVirtualNodeWithContext(ctx aws.Context, input *DeleteVirtualNodeInput, opts ...request.Option) (*DeleteVirtualNodeOutput, error) {
899	req, out := c.DeleteVirtualNodeRequest(input)
900	req.SetContext(ctx)
901	req.ApplyOptions(opts...)
902	return out, req.Send()
903}
904
905const opDeleteVirtualRouter = "DeleteVirtualRouter"
906
907// DeleteVirtualRouterRequest generates a "aws/request.Request" representing the
908// client's request for the DeleteVirtualRouter operation. The "output" return
909// value will be populated with the request's response once the request completes
910// successfully.
911//
912// Use "Send" method on the returned Request to send the API call to the service.
913// the "output" return value is not valid until after Send returns without error.
914//
915// See DeleteVirtualRouter for more information on using the DeleteVirtualRouter
916// API call, and error handling.
917//
918// This method is useful when you want to inject custom logic or configuration
919// into the SDK's request lifecycle. Such as custom headers, or retry logic.
920//
921//
922//    // Example sending a request using the DeleteVirtualRouterRequest method.
923//    req, resp := client.DeleteVirtualRouterRequest(params)
924//
925//    err := req.Send()
926//    if err == nil { // resp is now filled
927//        fmt.Println(resp)
928//    }
929//
930// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualRouter
931func (c *AppMesh) DeleteVirtualRouterRequest(input *DeleteVirtualRouterInput) (req *request.Request, output *DeleteVirtualRouterOutput) {
932	op := &request.Operation{
933		Name:       opDeleteVirtualRouter,
934		HTTPMethod: "DELETE",
935		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}",
936	}
937
938	if input == nil {
939		input = &DeleteVirtualRouterInput{}
940	}
941
942	output = &DeleteVirtualRouterOutput{}
943	req = c.newRequest(op, input, output)
944	return
945}
946
947// DeleteVirtualRouter API operation for AWS App Mesh.
948//
949// Deletes an existing virtual router.
950//
951// You must delete any routes associated with the virtual router before you
952// can delete the router itself.
953//
954// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
955// with awserr.Error's Code and Message methods to get detailed information about
956// the error.
957//
958// See the AWS API reference guide for AWS App Mesh's
959// API operation DeleteVirtualRouter for usage and error information.
960//
961// Returned Error Codes:
962//   * ErrCodeBadRequestException "BadRequestException"
963//   The request syntax was malformed. Check your request syntax and try again.
964//
965//   * ErrCodeForbiddenException "ForbiddenException"
966//   You don't have permissions to perform this action.
967//
968//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
969//   The request processing has failed because of an unknown error, exception,
970//   or failure.
971//
972//   * ErrCodeNotFoundException "NotFoundException"
973//   The specified resource doesn't exist. Check your request syntax and try again.
974//
975//   * ErrCodeResourceInUseException "ResourceInUseException"
976//   You can't delete the specified resource because it's in use or required by
977//   another resource.
978//
979//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
980//   The request has failed due to a temporary failure of the service.
981//
982//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
983//   The maximum request rate permitted by the App Mesh APIs has been exceeded
984//   for your account. For best results, use an increasing or variable sleep interval
985//   between requests.
986//
987// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualRouter
988func (c *AppMesh) DeleteVirtualRouter(input *DeleteVirtualRouterInput) (*DeleteVirtualRouterOutput, error) {
989	req, out := c.DeleteVirtualRouterRequest(input)
990	return out, req.Send()
991}
992
993// DeleteVirtualRouterWithContext is the same as DeleteVirtualRouter with the addition of
994// the ability to pass a context and additional request options.
995//
996// See DeleteVirtualRouter for details on how to use this API operation.
997//
998// The context must be non-nil and will be used for request cancellation. If
999// the context is nil a panic will occur. In the future the SDK may create
1000// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1001// for more information on using Contexts.
1002func (c *AppMesh) DeleteVirtualRouterWithContext(ctx aws.Context, input *DeleteVirtualRouterInput, opts ...request.Option) (*DeleteVirtualRouterOutput, error) {
1003	req, out := c.DeleteVirtualRouterRequest(input)
1004	req.SetContext(ctx)
1005	req.ApplyOptions(opts...)
1006	return out, req.Send()
1007}
1008
1009const opDeleteVirtualService = "DeleteVirtualService"
1010
1011// DeleteVirtualServiceRequest generates a "aws/request.Request" representing the
1012// client's request for the DeleteVirtualService operation. The "output" return
1013// value will be populated with the request's response once the request completes
1014// successfully.
1015//
1016// Use "Send" method on the returned Request to send the API call to the service.
1017// the "output" return value is not valid until after Send returns without error.
1018//
1019// See DeleteVirtualService for more information on using the DeleteVirtualService
1020// API call, and error handling.
1021//
1022// This method is useful when you want to inject custom logic or configuration
1023// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1024//
1025//
1026//    // Example sending a request using the DeleteVirtualServiceRequest method.
1027//    req, resp := client.DeleteVirtualServiceRequest(params)
1028//
1029//    err := req.Send()
1030//    if err == nil { // resp is now filled
1031//        fmt.Println(resp)
1032//    }
1033//
1034// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualService
1035func (c *AppMesh) DeleteVirtualServiceRequest(input *DeleteVirtualServiceInput) (req *request.Request, output *DeleteVirtualServiceOutput) {
1036	op := &request.Operation{
1037		Name:       opDeleteVirtualService,
1038		HTTPMethod: "DELETE",
1039		HTTPPath:   "/v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}",
1040	}
1041
1042	if input == nil {
1043		input = &DeleteVirtualServiceInput{}
1044	}
1045
1046	output = &DeleteVirtualServiceOutput{}
1047	req = c.newRequest(op, input, output)
1048	return
1049}
1050
1051// DeleteVirtualService API operation for AWS App Mesh.
1052//
1053// Deletes an existing virtual service.
1054//
1055// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1056// with awserr.Error's Code and Message methods to get detailed information about
1057// the error.
1058//
1059// See the AWS API reference guide for AWS App Mesh's
1060// API operation DeleteVirtualService for usage and error information.
1061//
1062// Returned Error Codes:
1063//   * ErrCodeBadRequestException "BadRequestException"
1064//   The request syntax was malformed. Check your request syntax and try again.
1065//
1066//   * ErrCodeForbiddenException "ForbiddenException"
1067//   You don't have permissions to perform this action.
1068//
1069//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
1070//   The request processing has failed because of an unknown error, exception,
1071//   or failure.
1072//
1073//   * ErrCodeNotFoundException "NotFoundException"
1074//   The specified resource doesn't exist. Check your request syntax and try again.
1075//
1076//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
1077//   The request has failed due to a temporary failure of the service.
1078//
1079//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
1080//   The maximum request rate permitted by the App Mesh APIs has been exceeded
1081//   for your account. For best results, use an increasing or variable sleep interval
1082//   between requests.
1083//
1084// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualService
1085func (c *AppMesh) DeleteVirtualService(input *DeleteVirtualServiceInput) (*DeleteVirtualServiceOutput, error) {
1086	req, out := c.DeleteVirtualServiceRequest(input)
1087	return out, req.Send()
1088}
1089
1090// DeleteVirtualServiceWithContext is the same as DeleteVirtualService with the addition of
1091// the ability to pass a context and additional request options.
1092//
1093// See DeleteVirtualService for details on how to use this API operation.
1094//
1095// The context must be non-nil and will be used for request cancellation. If
1096// the context is nil a panic will occur. In the future the SDK may create
1097// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1098// for more information on using Contexts.
1099func (c *AppMesh) DeleteVirtualServiceWithContext(ctx aws.Context, input *DeleteVirtualServiceInput, opts ...request.Option) (*DeleteVirtualServiceOutput, error) {
1100	req, out := c.DeleteVirtualServiceRequest(input)
1101	req.SetContext(ctx)
1102	req.ApplyOptions(opts...)
1103	return out, req.Send()
1104}
1105
1106const opDescribeMesh = "DescribeMesh"
1107
1108// DescribeMeshRequest generates a "aws/request.Request" representing the
1109// client's request for the DescribeMesh operation. The "output" return
1110// value will be populated with the request's response once the request completes
1111// successfully.
1112//
1113// Use "Send" method on the returned Request to send the API call to the service.
1114// the "output" return value is not valid until after Send returns without error.
1115//
1116// See DescribeMesh for more information on using the DescribeMesh
1117// API call, and error handling.
1118//
1119// This method is useful when you want to inject custom logic or configuration
1120// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1121//
1122//
1123//    // Example sending a request using the DescribeMeshRequest method.
1124//    req, resp := client.DescribeMeshRequest(params)
1125//
1126//    err := req.Send()
1127//    if err == nil { // resp is now filled
1128//        fmt.Println(resp)
1129//    }
1130//
1131// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeMesh
1132func (c *AppMesh) DescribeMeshRequest(input *DescribeMeshInput) (req *request.Request, output *DescribeMeshOutput) {
1133	op := &request.Operation{
1134		Name:       opDescribeMesh,
1135		HTTPMethod: "GET",
1136		HTTPPath:   "/v20190125/meshes/{meshName}",
1137	}
1138
1139	if input == nil {
1140		input = &DescribeMeshInput{}
1141	}
1142
1143	output = &DescribeMeshOutput{}
1144	req = c.newRequest(op, input, output)
1145	return
1146}
1147
1148// DescribeMesh API operation for AWS App Mesh.
1149//
1150// Describes an existing service mesh.
1151//
1152// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1153// with awserr.Error's Code and Message methods to get detailed information about
1154// the error.
1155//
1156// See the AWS API reference guide for AWS App Mesh's
1157// API operation DescribeMesh for usage and error information.
1158//
1159// Returned Error Codes:
1160//   * ErrCodeBadRequestException "BadRequestException"
1161//   The request syntax was malformed. Check your request syntax and try again.
1162//
1163//   * ErrCodeForbiddenException "ForbiddenException"
1164//   You don't have permissions to perform this action.
1165//
1166//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
1167//   The request processing has failed because of an unknown error, exception,
1168//   or failure.
1169//
1170//   * ErrCodeNotFoundException "NotFoundException"
1171//   The specified resource doesn't exist. Check your request syntax and try again.
1172//
1173//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
1174//   The request has failed due to a temporary failure of the service.
1175//
1176//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
1177//   The maximum request rate permitted by the App Mesh APIs has been exceeded
1178//   for your account. For best results, use an increasing or variable sleep interval
1179//   between requests.
1180//
1181// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeMesh
1182func (c *AppMesh) DescribeMesh(input *DescribeMeshInput) (*DescribeMeshOutput, error) {
1183	req, out := c.DescribeMeshRequest(input)
1184	return out, req.Send()
1185}
1186
1187// DescribeMeshWithContext is the same as DescribeMesh with the addition of
1188// the ability to pass a context and additional request options.
1189//
1190// See DescribeMesh for details on how to use this API operation.
1191//
1192// The context must be non-nil and will be used for request cancellation. If
1193// the context is nil a panic will occur. In the future the SDK may create
1194// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1195// for more information on using Contexts.
1196func (c *AppMesh) DescribeMeshWithContext(ctx aws.Context, input *DescribeMeshInput, opts ...request.Option) (*DescribeMeshOutput, error) {
1197	req, out := c.DescribeMeshRequest(input)
1198	req.SetContext(ctx)
1199	req.ApplyOptions(opts...)
1200	return out, req.Send()
1201}
1202
1203const opDescribeRoute = "DescribeRoute"
1204
1205// DescribeRouteRequest generates a "aws/request.Request" representing the
1206// client's request for the DescribeRoute operation. The "output" return
1207// value will be populated with the request's response once the request completes
1208// successfully.
1209//
1210// Use "Send" method on the returned Request to send the API call to the service.
1211// the "output" return value is not valid until after Send returns without error.
1212//
1213// See DescribeRoute for more information on using the DescribeRoute
1214// API call, and error handling.
1215//
1216// This method is useful when you want to inject custom logic or configuration
1217// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1218//
1219//
1220//    // Example sending a request using the DescribeRouteRequest method.
1221//    req, resp := client.DescribeRouteRequest(params)
1222//
1223//    err := req.Send()
1224//    if err == nil { // resp is now filled
1225//        fmt.Println(resp)
1226//    }
1227//
1228// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeRoute
1229func (c *AppMesh) DescribeRouteRequest(input *DescribeRouteInput) (req *request.Request, output *DescribeRouteOutput) {
1230	op := &request.Operation{
1231		Name:       opDescribeRoute,
1232		HTTPMethod: "GET",
1233		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}",
1234	}
1235
1236	if input == nil {
1237		input = &DescribeRouteInput{}
1238	}
1239
1240	output = &DescribeRouteOutput{}
1241	req = c.newRequest(op, input, output)
1242	return
1243}
1244
1245// DescribeRoute API operation for AWS App Mesh.
1246//
1247// Describes an existing route.
1248//
1249// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1250// with awserr.Error's Code and Message methods to get detailed information about
1251// the error.
1252//
1253// See the AWS API reference guide for AWS App Mesh's
1254// API operation DescribeRoute for usage and error information.
1255//
1256// Returned Error Codes:
1257//   * ErrCodeBadRequestException "BadRequestException"
1258//   The request syntax was malformed. Check your request syntax and try again.
1259//
1260//   * ErrCodeForbiddenException "ForbiddenException"
1261//   You don't have permissions to perform this action.
1262//
1263//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
1264//   The request processing has failed because of an unknown error, exception,
1265//   or failure.
1266//
1267//   * ErrCodeNotFoundException "NotFoundException"
1268//   The specified resource doesn't exist. Check your request syntax and try again.
1269//
1270//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
1271//   The request has failed due to a temporary failure of the service.
1272//
1273//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
1274//   The maximum request rate permitted by the App Mesh APIs has been exceeded
1275//   for your account. For best results, use an increasing or variable sleep interval
1276//   between requests.
1277//
1278// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeRoute
1279func (c *AppMesh) DescribeRoute(input *DescribeRouteInput) (*DescribeRouteOutput, error) {
1280	req, out := c.DescribeRouteRequest(input)
1281	return out, req.Send()
1282}
1283
1284// DescribeRouteWithContext is the same as DescribeRoute with the addition of
1285// the ability to pass a context and additional request options.
1286//
1287// See DescribeRoute for details on how to use this API operation.
1288//
1289// The context must be non-nil and will be used for request cancellation. If
1290// the context is nil a panic will occur. In the future the SDK may create
1291// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1292// for more information on using Contexts.
1293func (c *AppMesh) DescribeRouteWithContext(ctx aws.Context, input *DescribeRouteInput, opts ...request.Option) (*DescribeRouteOutput, error) {
1294	req, out := c.DescribeRouteRequest(input)
1295	req.SetContext(ctx)
1296	req.ApplyOptions(opts...)
1297	return out, req.Send()
1298}
1299
1300const opDescribeVirtualNode = "DescribeVirtualNode"
1301
1302// DescribeVirtualNodeRequest generates a "aws/request.Request" representing the
1303// client's request for the DescribeVirtualNode operation. The "output" return
1304// value will be populated with the request's response once the request completes
1305// successfully.
1306//
1307// Use "Send" method on the returned Request to send the API call to the service.
1308// the "output" return value is not valid until after Send returns without error.
1309//
1310// See DescribeVirtualNode for more information on using the DescribeVirtualNode
1311// API call, and error handling.
1312//
1313// This method is useful when you want to inject custom logic or configuration
1314// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1315//
1316//
1317//    // Example sending a request using the DescribeVirtualNodeRequest method.
1318//    req, resp := client.DescribeVirtualNodeRequest(params)
1319//
1320//    err := req.Send()
1321//    if err == nil { // resp is now filled
1322//        fmt.Println(resp)
1323//    }
1324//
1325// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualNode
1326func (c *AppMesh) DescribeVirtualNodeRequest(input *DescribeVirtualNodeInput) (req *request.Request, output *DescribeVirtualNodeOutput) {
1327	op := &request.Operation{
1328		Name:       opDescribeVirtualNode,
1329		HTTPMethod: "GET",
1330		HTTPPath:   "/v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}",
1331	}
1332
1333	if input == nil {
1334		input = &DescribeVirtualNodeInput{}
1335	}
1336
1337	output = &DescribeVirtualNodeOutput{}
1338	req = c.newRequest(op, input, output)
1339	return
1340}
1341
1342// DescribeVirtualNode API operation for AWS App Mesh.
1343//
1344// Describes an existing virtual node.
1345//
1346// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1347// with awserr.Error's Code and Message methods to get detailed information about
1348// the error.
1349//
1350// See the AWS API reference guide for AWS App Mesh's
1351// API operation DescribeVirtualNode for usage and error information.
1352//
1353// Returned Error Codes:
1354//   * ErrCodeBadRequestException "BadRequestException"
1355//   The request syntax was malformed. Check your request syntax and try again.
1356//
1357//   * ErrCodeForbiddenException "ForbiddenException"
1358//   You don't have permissions to perform this action.
1359//
1360//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
1361//   The request processing has failed because of an unknown error, exception,
1362//   or failure.
1363//
1364//   * ErrCodeNotFoundException "NotFoundException"
1365//   The specified resource doesn't exist. Check your request syntax and try again.
1366//
1367//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
1368//   The request has failed due to a temporary failure of the service.
1369//
1370//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
1371//   The maximum request rate permitted by the App Mesh APIs has been exceeded
1372//   for your account. For best results, use an increasing or variable sleep interval
1373//   between requests.
1374//
1375// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualNode
1376func (c *AppMesh) DescribeVirtualNode(input *DescribeVirtualNodeInput) (*DescribeVirtualNodeOutput, error) {
1377	req, out := c.DescribeVirtualNodeRequest(input)
1378	return out, req.Send()
1379}
1380
1381// DescribeVirtualNodeWithContext is the same as DescribeVirtualNode with the addition of
1382// the ability to pass a context and additional request options.
1383//
1384// See DescribeVirtualNode for details on how to use this API operation.
1385//
1386// The context must be non-nil and will be used for request cancellation. If
1387// the context is nil a panic will occur. In the future the SDK may create
1388// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1389// for more information on using Contexts.
1390func (c *AppMesh) DescribeVirtualNodeWithContext(ctx aws.Context, input *DescribeVirtualNodeInput, opts ...request.Option) (*DescribeVirtualNodeOutput, error) {
1391	req, out := c.DescribeVirtualNodeRequest(input)
1392	req.SetContext(ctx)
1393	req.ApplyOptions(opts...)
1394	return out, req.Send()
1395}
1396
1397const opDescribeVirtualRouter = "DescribeVirtualRouter"
1398
1399// DescribeVirtualRouterRequest generates a "aws/request.Request" representing the
1400// client's request for the DescribeVirtualRouter operation. The "output" return
1401// value will be populated with the request's response once the request completes
1402// successfully.
1403//
1404// Use "Send" method on the returned Request to send the API call to the service.
1405// the "output" return value is not valid until after Send returns without error.
1406//
1407// See DescribeVirtualRouter for more information on using the DescribeVirtualRouter
1408// API call, and error handling.
1409//
1410// This method is useful when you want to inject custom logic or configuration
1411// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1412//
1413//
1414//    // Example sending a request using the DescribeVirtualRouterRequest method.
1415//    req, resp := client.DescribeVirtualRouterRequest(params)
1416//
1417//    err := req.Send()
1418//    if err == nil { // resp is now filled
1419//        fmt.Println(resp)
1420//    }
1421//
1422// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualRouter
1423func (c *AppMesh) DescribeVirtualRouterRequest(input *DescribeVirtualRouterInput) (req *request.Request, output *DescribeVirtualRouterOutput) {
1424	op := &request.Operation{
1425		Name:       opDescribeVirtualRouter,
1426		HTTPMethod: "GET",
1427		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}",
1428	}
1429
1430	if input == nil {
1431		input = &DescribeVirtualRouterInput{}
1432	}
1433
1434	output = &DescribeVirtualRouterOutput{}
1435	req = c.newRequest(op, input, output)
1436	return
1437}
1438
1439// DescribeVirtualRouter API operation for AWS App Mesh.
1440//
1441// Describes an existing virtual router.
1442//
1443// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1444// with awserr.Error's Code and Message methods to get detailed information about
1445// the error.
1446//
1447// See the AWS API reference guide for AWS App Mesh's
1448// API operation DescribeVirtualRouter for usage and error information.
1449//
1450// Returned Error Codes:
1451//   * ErrCodeBadRequestException "BadRequestException"
1452//   The request syntax was malformed. Check your request syntax and try again.
1453//
1454//   * ErrCodeForbiddenException "ForbiddenException"
1455//   You don't have permissions to perform this action.
1456//
1457//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
1458//   The request processing has failed because of an unknown error, exception,
1459//   or failure.
1460//
1461//   * ErrCodeNotFoundException "NotFoundException"
1462//   The specified resource doesn't exist. Check your request syntax and try again.
1463//
1464//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
1465//   The request has failed due to a temporary failure of the service.
1466//
1467//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
1468//   The maximum request rate permitted by the App Mesh APIs has been exceeded
1469//   for your account. For best results, use an increasing or variable sleep interval
1470//   between requests.
1471//
1472// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualRouter
1473func (c *AppMesh) DescribeVirtualRouter(input *DescribeVirtualRouterInput) (*DescribeVirtualRouterOutput, error) {
1474	req, out := c.DescribeVirtualRouterRequest(input)
1475	return out, req.Send()
1476}
1477
1478// DescribeVirtualRouterWithContext is the same as DescribeVirtualRouter with the addition of
1479// the ability to pass a context and additional request options.
1480//
1481// See DescribeVirtualRouter for details on how to use this API operation.
1482//
1483// The context must be non-nil and will be used for request cancellation. If
1484// the context is nil a panic will occur. In the future the SDK may create
1485// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1486// for more information on using Contexts.
1487func (c *AppMesh) DescribeVirtualRouterWithContext(ctx aws.Context, input *DescribeVirtualRouterInput, opts ...request.Option) (*DescribeVirtualRouterOutput, error) {
1488	req, out := c.DescribeVirtualRouterRequest(input)
1489	req.SetContext(ctx)
1490	req.ApplyOptions(opts...)
1491	return out, req.Send()
1492}
1493
1494const opDescribeVirtualService = "DescribeVirtualService"
1495
1496// DescribeVirtualServiceRequest generates a "aws/request.Request" representing the
1497// client's request for the DescribeVirtualService operation. The "output" return
1498// value will be populated with the request's response once the request completes
1499// successfully.
1500//
1501// Use "Send" method on the returned Request to send the API call to the service.
1502// the "output" return value is not valid until after Send returns without error.
1503//
1504// See DescribeVirtualService for more information on using the DescribeVirtualService
1505// API call, and error handling.
1506//
1507// This method is useful when you want to inject custom logic or configuration
1508// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1509//
1510//
1511//    // Example sending a request using the DescribeVirtualServiceRequest method.
1512//    req, resp := client.DescribeVirtualServiceRequest(params)
1513//
1514//    err := req.Send()
1515//    if err == nil { // resp is now filled
1516//        fmt.Println(resp)
1517//    }
1518//
1519// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualService
1520func (c *AppMesh) DescribeVirtualServiceRequest(input *DescribeVirtualServiceInput) (req *request.Request, output *DescribeVirtualServiceOutput) {
1521	op := &request.Operation{
1522		Name:       opDescribeVirtualService,
1523		HTTPMethod: "GET",
1524		HTTPPath:   "/v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}",
1525	}
1526
1527	if input == nil {
1528		input = &DescribeVirtualServiceInput{}
1529	}
1530
1531	output = &DescribeVirtualServiceOutput{}
1532	req = c.newRequest(op, input, output)
1533	return
1534}
1535
1536// DescribeVirtualService API operation for AWS App Mesh.
1537//
1538// Describes an existing virtual service.
1539//
1540// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1541// with awserr.Error's Code and Message methods to get detailed information about
1542// the error.
1543//
1544// See the AWS API reference guide for AWS App Mesh's
1545// API operation DescribeVirtualService for usage and error information.
1546//
1547// Returned Error Codes:
1548//   * ErrCodeBadRequestException "BadRequestException"
1549//   The request syntax was malformed. Check your request syntax and try again.
1550//
1551//   * ErrCodeForbiddenException "ForbiddenException"
1552//   You don't have permissions to perform this action.
1553//
1554//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
1555//   The request processing has failed because of an unknown error, exception,
1556//   or failure.
1557//
1558//   * ErrCodeNotFoundException "NotFoundException"
1559//   The specified resource doesn't exist. Check your request syntax and try again.
1560//
1561//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
1562//   The request has failed due to a temporary failure of the service.
1563//
1564//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
1565//   The maximum request rate permitted by the App Mesh APIs has been exceeded
1566//   for your account. For best results, use an increasing or variable sleep interval
1567//   between requests.
1568//
1569// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualService
1570func (c *AppMesh) DescribeVirtualService(input *DescribeVirtualServiceInput) (*DescribeVirtualServiceOutput, error) {
1571	req, out := c.DescribeVirtualServiceRequest(input)
1572	return out, req.Send()
1573}
1574
1575// DescribeVirtualServiceWithContext is the same as DescribeVirtualService with the addition of
1576// the ability to pass a context and additional request options.
1577//
1578// See DescribeVirtualService for details on how to use this API operation.
1579//
1580// The context must be non-nil and will be used for request cancellation. If
1581// the context is nil a panic will occur. In the future the SDK may create
1582// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1583// for more information on using Contexts.
1584func (c *AppMesh) DescribeVirtualServiceWithContext(ctx aws.Context, input *DescribeVirtualServiceInput, opts ...request.Option) (*DescribeVirtualServiceOutput, error) {
1585	req, out := c.DescribeVirtualServiceRequest(input)
1586	req.SetContext(ctx)
1587	req.ApplyOptions(opts...)
1588	return out, req.Send()
1589}
1590
1591const opListMeshes = "ListMeshes"
1592
1593// ListMeshesRequest generates a "aws/request.Request" representing the
1594// client's request for the ListMeshes operation. The "output" return
1595// value will be populated with the request's response once the request completes
1596// successfully.
1597//
1598// Use "Send" method on the returned Request to send the API call to the service.
1599// the "output" return value is not valid until after Send returns without error.
1600//
1601// See ListMeshes for more information on using the ListMeshes
1602// API call, and error handling.
1603//
1604// This method is useful when you want to inject custom logic or configuration
1605// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1606//
1607//
1608//    // Example sending a request using the ListMeshesRequest method.
1609//    req, resp := client.ListMeshesRequest(params)
1610//
1611//    err := req.Send()
1612//    if err == nil { // resp is now filled
1613//        fmt.Println(resp)
1614//    }
1615//
1616// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListMeshes
1617func (c *AppMesh) ListMeshesRequest(input *ListMeshesInput) (req *request.Request, output *ListMeshesOutput) {
1618	op := &request.Operation{
1619		Name:       opListMeshes,
1620		HTTPMethod: "GET",
1621		HTTPPath:   "/v20190125/meshes",
1622		Paginator: &request.Paginator{
1623			InputTokens:     []string{"nextToken"},
1624			OutputTokens:    []string{"nextToken"},
1625			LimitToken:      "limit",
1626			TruncationToken: "",
1627		},
1628	}
1629
1630	if input == nil {
1631		input = &ListMeshesInput{}
1632	}
1633
1634	output = &ListMeshesOutput{}
1635	req = c.newRequest(op, input, output)
1636	return
1637}
1638
1639// ListMeshes API operation for AWS App Mesh.
1640//
1641// Returns a list of existing service meshes.
1642//
1643// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1644// with awserr.Error's Code and Message methods to get detailed information about
1645// the error.
1646//
1647// See the AWS API reference guide for AWS App Mesh's
1648// API operation ListMeshes for usage and error information.
1649//
1650// Returned Error Codes:
1651//   * ErrCodeBadRequestException "BadRequestException"
1652//   The request syntax was malformed. Check your request syntax and try again.
1653//
1654//   * ErrCodeForbiddenException "ForbiddenException"
1655//   You don't have permissions to perform this action.
1656//
1657//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
1658//   The request processing has failed because of an unknown error, exception,
1659//   or failure.
1660//
1661//   * ErrCodeNotFoundException "NotFoundException"
1662//   The specified resource doesn't exist. Check your request syntax and try again.
1663//
1664//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
1665//   The request has failed due to a temporary failure of the service.
1666//
1667//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
1668//   The maximum request rate permitted by the App Mesh APIs has been exceeded
1669//   for your account. For best results, use an increasing or variable sleep interval
1670//   between requests.
1671//
1672// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListMeshes
1673func (c *AppMesh) ListMeshes(input *ListMeshesInput) (*ListMeshesOutput, error) {
1674	req, out := c.ListMeshesRequest(input)
1675	return out, req.Send()
1676}
1677
1678// ListMeshesWithContext is the same as ListMeshes with the addition of
1679// the ability to pass a context and additional request options.
1680//
1681// See ListMeshes for details on how to use this API operation.
1682//
1683// The context must be non-nil and will be used for request cancellation. If
1684// the context is nil a panic will occur. In the future the SDK may create
1685// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1686// for more information on using Contexts.
1687func (c *AppMesh) ListMeshesWithContext(ctx aws.Context, input *ListMeshesInput, opts ...request.Option) (*ListMeshesOutput, error) {
1688	req, out := c.ListMeshesRequest(input)
1689	req.SetContext(ctx)
1690	req.ApplyOptions(opts...)
1691	return out, req.Send()
1692}
1693
1694// ListMeshesPages iterates over the pages of a ListMeshes operation,
1695// calling the "fn" function with the response data for each page. To stop
1696// iterating, return false from the fn function.
1697//
1698// See ListMeshes method for more information on how to use this operation.
1699//
1700// Note: This operation can generate multiple requests to a service.
1701//
1702//    // Example iterating over at most 3 pages of a ListMeshes operation.
1703//    pageNum := 0
1704//    err := client.ListMeshesPages(params,
1705//        func(page *appmesh.ListMeshesOutput, lastPage bool) bool {
1706//            pageNum++
1707//            fmt.Println(page)
1708//            return pageNum <= 3
1709//        })
1710//
1711func (c *AppMesh) ListMeshesPages(input *ListMeshesInput, fn func(*ListMeshesOutput, bool) bool) error {
1712	return c.ListMeshesPagesWithContext(aws.BackgroundContext(), input, fn)
1713}
1714
1715// ListMeshesPagesWithContext same as ListMeshesPages except
1716// it takes a Context and allows setting request options on the pages.
1717//
1718// The context must be non-nil and will be used for request cancellation. If
1719// the context is nil a panic will occur. In the future the SDK may create
1720// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1721// for more information on using Contexts.
1722func (c *AppMesh) ListMeshesPagesWithContext(ctx aws.Context, input *ListMeshesInput, fn func(*ListMeshesOutput, bool) bool, opts ...request.Option) error {
1723	p := request.Pagination{
1724		NewRequest: func() (*request.Request, error) {
1725			var inCpy *ListMeshesInput
1726			if input != nil {
1727				tmp := *input
1728				inCpy = &tmp
1729			}
1730			req, _ := c.ListMeshesRequest(inCpy)
1731			req.SetContext(ctx)
1732			req.ApplyOptions(opts...)
1733			return req, nil
1734		},
1735	}
1736
1737	for p.Next() {
1738		if !fn(p.Page().(*ListMeshesOutput), !p.HasNextPage()) {
1739			break
1740		}
1741	}
1742
1743	return p.Err()
1744}
1745
1746const opListRoutes = "ListRoutes"
1747
1748// ListRoutesRequest generates a "aws/request.Request" representing the
1749// client's request for the ListRoutes operation. The "output" return
1750// value will be populated with the request's response once the request completes
1751// successfully.
1752//
1753// Use "Send" method on the returned Request to send the API call to the service.
1754// the "output" return value is not valid until after Send returns without error.
1755//
1756// See ListRoutes for more information on using the ListRoutes
1757// API call, and error handling.
1758//
1759// This method is useful when you want to inject custom logic or configuration
1760// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1761//
1762//
1763//    // Example sending a request using the ListRoutesRequest method.
1764//    req, resp := client.ListRoutesRequest(params)
1765//
1766//    err := req.Send()
1767//    if err == nil { // resp is now filled
1768//        fmt.Println(resp)
1769//    }
1770//
1771// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListRoutes
1772func (c *AppMesh) ListRoutesRequest(input *ListRoutesInput) (req *request.Request, output *ListRoutesOutput) {
1773	op := &request.Operation{
1774		Name:       opListRoutes,
1775		HTTPMethod: "GET",
1776		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes",
1777		Paginator: &request.Paginator{
1778			InputTokens:     []string{"nextToken"},
1779			OutputTokens:    []string{"nextToken"},
1780			LimitToken:      "limit",
1781			TruncationToken: "",
1782		},
1783	}
1784
1785	if input == nil {
1786		input = &ListRoutesInput{}
1787	}
1788
1789	output = &ListRoutesOutput{}
1790	req = c.newRequest(op, input, output)
1791	return
1792}
1793
1794// ListRoutes API operation for AWS App Mesh.
1795//
1796// Returns a list of existing routes in a service mesh.
1797//
1798// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1799// with awserr.Error's Code and Message methods to get detailed information about
1800// the error.
1801//
1802// See the AWS API reference guide for AWS App Mesh's
1803// API operation ListRoutes for usage and error information.
1804//
1805// Returned Error Codes:
1806//   * ErrCodeBadRequestException "BadRequestException"
1807//   The request syntax was malformed. Check your request syntax and try again.
1808//
1809//   * ErrCodeForbiddenException "ForbiddenException"
1810//   You don't have permissions to perform this action.
1811//
1812//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
1813//   The request processing has failed because of an unknown error, exception,
1814//   or failure.
1815//
1816//   * ErrCodeNotFoundException "NotFoundException"
1817//   The specified resource doesn't exist. Check your request syntax and try again.
1818//
1819//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
1820//   The request has failed due to a temporary failure of the service.
1821//
1822//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
1823//   The maximum request rate permitted by the App Mesh APIs has been exceeded
1824//   for your account. For best results, use an increasing or variable sleep interval
1825//   between requests.
1826//
1827// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListRoutes
1828func (c *AppMesh) ListRoutes(input *ListRoutesInput) (*ListRoutesOutput, error) {
1829	req, out := c.ListRoutesRequest(input)
1830	return out, req.Send()
1831}
1832
1833// ListRoutesWithContext is the same as ListRoutes with the addition of
1834// the ability to pass a context and additional request options.
1835//
1836// See ListRoutes for details on how to use this API operation.
1837//
1838// The context must be non-nil and will be used for request cancellation. If
1839// the context is nil a panic will occur. In the future the SDK may create
1840// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1841// for more information on using Contexts.
1842func (c *AppMesh) ListRoutesWithContext(ctx aws.Context, input *ListRoutesInput, opts ...request.Option) (*ListRoutesOutput, error) {
1843	req, out := c.ListRoutesRequest(input)
1844	req.SetContext(ctx)
1845	req.ApplyOptions(opts...)
1846	return out, req.Send()
1847}
1848
1849// ListRoutesPages iterates over the pages of a ListRoutes operation,
1850// calling the "fn" function with the response data for each page. To stop
1851// iterating, return false from the fn function.
1852//
1853// See ListRoutes method for more information on how to use this operation.
1854//
1855// Note: This operation can generate multiple requests to a service.
1856//
1857//    // Example iterating over at most 3 pages of a ListRoutes operation.
1858//    pageNum := 0
1859//    err := client.ListRoutesPages(params,
1860//        func(page *appmesh.ListRoutesOutput, lastPage bool) bool {
1861//            pageNum++
1862//            fmt.Println(page)
1863//            return pageNum <= 3
1864//        })
1865//
1866func (c *AppMesh) ListRoutesPages(input *ListRoutesInput, fn func(*ListRoutesOutput, bool) bool) error {
1867	return c.ListRoutesPagesWithContext(aws.BackgroundContext(), input, fn)
1868}
1869
1870// ListRoutesPagesWithContext same as ListRoutesPages except
1871// it takes a Context and allows setting request options on the pages.
1872//
1873// The context must be non-nil and will be used for request cancellation. If
1874// the context is nil a panic will occur. In the future the SDK may create
1875// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1876// for more information on using Contexts.
1877func (c *AppMesh) ListRoutesPagesWithContext(ctx aws.Context, input *ListRoutesInput, fn func(*ListRoutesOutput, bool) bool, opts ...request.Option) error {
1878	p := request.Pagination{
1879		NewRequest: func() (*request.Request, error) {
1880			var inCpy *ListRoutesInput
1881			if input != nil {
1882				tmp := *input
1883				inCpy = &tmp
1884			}
1885			req, _ := c.ListRoutesRequest(inCpy)
1886			req.SetContext(ctx)
1887			req.ApplyOptions(opts...)
1888			return req, nil
1889		},
1890	}
1891
1892	for p.Next() {
1893		if !fn(p.Page().(*ListRoutesOutput), !p.HasNextPage()) {
1894			break
1895		}
1896	}
1897
1898	return p.Err()
1899}
1900
1901const opListTagsForResource = "ListTagsForResource"
1902
1903// ListTagsForResourceRequest generates a "aws/request.Request" representing the
1904// client's request for the ListTagsForResource operation. The "output" return
1905// value will be populated with the request's response once the request completes
1906// successfully.
1907//
1908// Use "Send" method on the returned Request to send the API call to the service.
1909// the "output" return value is not valid until after Send returns without error.
1910//
1911// See ListTagsForResource for more information on using the ListTagsForResource
1912// API call, and error handling.
1913//
1914// This method is useful when you want to inject custom logic or configuration
1915// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1916//
1917//
1918//    // Example sending a request using the ListTagsForResourceRequest method.
1919//    req, resp := client.ListTagsForResourceRequest(params)
1920//
1921//    err := req.Send()
1922//    if err == nil { // resp is now filled
1923//        fmt.Println(resp)
1924//    }
1925//
1926// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListTagsForResource
1927func (c *AppMesh) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
1928	op := &request.Operation{
1929		Name:       opListTagsForResource,
1930		HTTPMethod: "GET",
1931		HTTPPath:   "/v20190125/tags",
1932		Paginator: &request.Paginator{
1933			InputTokens:     []string{"nextToken"},
1934			OutputTokens:    []string{"nextToken"},
1935			LimitToken:      "limit",
1936			TruncationToken: "",
1937		},
1938	}
1939
1940	if input == nil {
1941		input = &ListTagsForResourceInput{}
1942	}
1943
1944	output = &ListTagsForResourceOutput{}
1945	req = c.newRequest(op, input, output)
1946	return
1947}
1948
1949// ListTagsForResource API operation for AWS App Mesh.
1950//
1951// List the tags for an App Mesh resource.
1952//
1953// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1954// with awserr.Error's Code and Message methods to get detailed information about
1955// the error.
1956//
1957// See the AWS API reference guide for AWS App Mesh's
1958// API operation ListTagsForResource for usage and error information.
1959//
1960// Returned Error Codes:
1961//   * ErrCodeBadRequestException "BadRequestException"
1962//   The request syntax was malformed. Check your request syntax and try again.
1963//
1964//   * ErrCodeForbiddenException "ForbiddenException"
1965//   You don't have permissions to perform this action.
1966//
1967//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
1968//   The request processing has failed because of an unknown error, exception,
1969//   or failure.
1970//
1971//   * ErrCodeNotFoundException "NotFoundException"
1972//   The specified resource doesn't exist. Check your request syntax and try again.
1973//
1974//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
1975//   The request has failed due to a temporary failure of the service.
1976//
1977//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
1978//   The maximum request rate permitted by the App Mesh APIs has been exceeded
1979//   for your account. For best results, use an increasing or variable sleep interval
1980//   between requests.
1981//
1982// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListTagsForResource
1983func (c *AppMesh) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
1984	req, out := c.ListTagsForResourceRequest(input)
1985	return out, req.Send()
1986}
1987
1988// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
1989// the ability to pass a context and additional request options.
1990//
1991// See ListTagsForResource for details on how to use this API operation.
1992//
1993// The context must be non-nil and will be used for request cancellation. If
1994// the context is nil a panic will occur. In the future the SDK may create
1995// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1996// for more information on using Contexts.
1997func (c *AppMesh) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {
1998	req, out := c.ListTagsForResourceRequest(input)
1999	req.SetContext(ctx)
2000	req.ApplyOptions(opts...)
2001	return out, req.Send()
2002}
2003
2004// ListTagsForResourcePages iterates over the pages of a ListTagsForResource operation,
2005// calling the "fn" function with the response data for each page. To stop
2006// iterating, return false from the fn function.
2007//
2008// See ListTagsForResource method for more information on how to use this operation.
2009//
2010// Note: This operation can generate multiple requests to a service.
2011//
2012//    // Example iterating over at most 3 pages of a ListTagsForResource operation.
2013//    pageNum := 0
2014//    err := client.ListTagsForResourcePages(params,
2015//        func(page *appmesh.ListTagsForResourceOutput, lastPage bool) bool {
2016//            pageNum++
2017//            fmt.Println(page)
2018//            return pageNum <= 3
2019//        })
2020//
2021func (c *AppMesh) ListTagsForResourcePages(input *ListTagsForResourceInput, fn func(*ListTagsForResourceOutput, bool) bool) error {
2022	return c.ListTagsForResourcePagesWithContext(aws.BackgroundContext(), input, fn)
2023}
2024
2025// ListTagsForResourcePagesWithContext same as ListTagsForResourcePages except
2026// it takes a Context and allows setting request options on the pages.
2027//
2028// The context must be non-nil and will be used for request cancellation. If
2029// the context is nil a panic will occur. In the future the SDK may create
2030// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2031// for more information on using Contexts.
2032func (c *AppMesh) ListTagsForResourcePagesWithContext(ctx aws.Context, input *ListTagsForResourceInput, fn func(*ListTagsForResourceOutput, bool) bool, opts ...request.Option) error {
2033	p := request.Pagination{
2034		NewRequest: func() (*request.Request, error) {
2035			var inCpy *ListTagsForResourceInput
2036			if input != nil {
2037				tmp := *input
2038				inCpy = &tmp
2039			}
2040			req, _ := c.ListTagsForResourceRequest(inCpy)
2041			req.SetContext(ctx)
2042			req.ApplyOptions(opts...)
2043			return req, nil
2044		},
2045	}
2046
2047	for p.Next() {
2048		if !fn(p.Page().(*ListTagsForResourceOutput), !p.HasNextPage()) {
2049			break
2050		}
2051	}
2052
2053	return p.Err()
2054}
2055
2056const opListVirtualNodes = "ListVirtualNodes"
2057
2058// ListVirtualNodesRequest generates a "aws/request.Request" representing the
2059// client's request for the ListVirtualNodes operation. The "output" return
2060// value will be populated with the request's response once the request completes
2061// successfully.
2062//
2063// Use "Send" method on the returned Request to send the API call to the service.
2064// the "output" return value is not valid until after Send returns without error.
2065//
2066// See ListVirtualNodes for more information on using the ListVirtualNodes
2067// API call, and error handling.
2068//
2069// This method is useful when you want to inject custom logic or configuration
2070// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2071//
2072//
2073//    // Example sending a request using the ListVirtualNodesRequest method.
2074//    req, resp := client.ListVirtualNodesRequest(params)
2075//
2076//    err := req.Send()
2077//    if err == nil { // resp is now filled
2078//        fmt.Println(resp)
2079//    }
2080//
2081// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualNodes
2082func (c *AppMesh) ListVirtualNodesRequest(input *ListVirtualNodesInput) (req *request.Request, output *ListVirtualNodesOutput) {
2083	op := &request.Operation{
2084		Name:       opListVirtualNodes,
2085		HTTPMethod: "GET",
2086		HTTPPath:   "/v20190125/meshes/{meshName}/virtualNodes",
2087		Paginator: &request.Paginator{
2088			InputTokens:     []string{"nextToken"},
2089			OutputTokens:    []string{"nextToken"},
2090			LimitToken:      "limit",
2091			TruncationToken: "",
2092		},
2093	}
2094
2095	if input == nil {
2096		input = &ListVirtualNodesInput{}
2097	}
2098
2099	output = &ListVirtualNodesOutput{}
2100	req = c.newRequest(op, input, output)
2101	return
2102}
2103
2104// ListVirtualNodes API operation for AWS App Mesh.
2105//
2106// Returns a list of existing virtual nodes.
2107//
2108// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2109// with awserr.Error's Code and Message methods to get detailed information about
2110// the error.
2111//
2112// See the AWS API reference guide for AWS App Mesh's
2113// API operation ListVirtualNodes for usage and error information.
2114//
2115// Returned Error Codes:
2116//   * ErrCodeBadRequestException "BadRequestException"
2117//   The request syntax was malformed. Check your request syntax and try again.
2118//
2119//   * ErrCodeForbiddenException "ForbiddenException"
2120//   You don't have permissions to perform this action.
2121//
2122//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
2123//   The request processing has failed because of an unknown error, exception,
2124//   or failure.
2125//
2126//   * ErrCodeNotFoundException "NotFoundException"
2127//   The specified resource doesn't exist. Check your request syntax and try again.
2128//
2129//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
2130//   The request has failed due to a temporary failure of the service.
2131//
2132//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
2133//   The maximum request rate permitted by the App Mesh APIs has been exceeded
2134//   for your account. For best results, use an increasing or variable sleep interval
2135//   between requests.
2136//
2137// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualNodes
2138func (c *AppMesh) ListVirtualNodes(input *ListVirtualNodesInput) (*ListVirtualNodesOutput, error) {
2139	req, out := c.ListVirtualNodesRequest(input)
2140	return out, req.Send()
2141}
2142
2143// ListVirtualNodesWithContext is the same as ListVirtualNodes with the addition of
2144// the ability to pass a context and additional request options.
2145//
2146// See ListVirtualNodes for details on how to use this API operation.
2147//
2148// The context must be non-nil and will be used for request cancellation. If
2149// the context is nil a panic will occur. In the future the SDK may create
2150// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2151// for more information on using Contexts.
2152func (c *AppMesh) ListVirtualNodesWithContext(ctx aws.Context, input *ListVirtualNodesInput, opts ...request.Option) (*ListVirtualNodesOutput, error) {
2153	req, out := c.ListVirtualNodesRequest(input)
2154	req.SetContext(ctx)
2155	req.ApplyOptions(opts...)
2156	return out, req.Send()
2157}
2158
2159// ListVirtualNodesPages iterates over the pages of a ListVirtualNodes operation,
2160// calling the "fn" function with the response data for each page. To stop
2161// iterating, return false from the fn function.
2162//
2163// See ListVirtualNodes method for more information on how to use this operation.
2164//
2165// Note: This operation can generate multiple requests to a service.
2166//
2167//    // Example iterating over at most 3 pages of a ListVirtualNodes operation.
2168//    pageNum := 0
2169//    err := client.ListVirtualNodesPages(params,
2170//        func(page *appmesh.ListVirtualNodesOutput, lastPage bool) bool {
2171//            pageNum++
2172//            fmt.Println(page)
2173//            return pageNum <= 3
2174//        })
2175//
2176func (c *AppMesh) ListVirtualNodesPages(input *ListVirtualNodesInput, fn func(*ListVirtualNodesOutput, bool) bool) error {
2177	return c.ListVirtualNodesPagesWithContext(aws.BackgroundContext(), input, fn)
2178}
2179
2180// ListVirtualNodesPagesWithContext same as ListVirtualNodesPages except
2181// it takes a Context and allows setting request options on the pages.
2182//
2183// The context must be non-nil and will be used for request cancellation. If
2184// the context is nil a panic will occur. In the future the SDK may create
2185// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2186// for more information on using Contexts.
2187func (c *AppMesh) ListVirtualNodesPagesWithContext(ctx aws.Context, input *ListVirtualNodesInput, fn func(*ListVirtualNodesOutput, bool) bool, opts ...request.Option) error {
2188	p := request.Pagination{
2189		NewRequest: func() (*request.Request, error) {
2190			var inCpy *ListVirtualNodesInput
2191			if input != nil {
2192				tmp := *input
2193				inCpy = &tmp
2194			}
2195			req, _ := c.ListVirtualNodesRequest(inCpy)
2196			req.SetContext(ctx)
2197			req.ApplyOptions(opts...)
2198			return req, nil
2199		},
2200	}
2201
2202	for p.Next() {
2203		if !fn(p.Page().(*ListVirtualNodesOutput), !p.HasNextPage()) {
2204			break
2205		}
2206	}
2207
2208	return p.Err()
2209}
2210
2211const opListVirtualRouters = "ListVirtualRouters"
2212
2213// ListVirtualRoutersRequest generates a "aws/request.Request" representing the
2214// client's request for the ListVirtualRouters operation. The "output" return
2215// value will be populated with the request's response once the request completes
2216// successfully.
2217//
2218// Use "Send" method on the returned Request to send the API call to the service.
2219// the "output" return value is not valid until after Send returns without error.
2220//
2221// See ListVirtualRouters for more information on using the ListVirtualRouters
2222// API call, and error handling.
2223//
2224// This method is useful when you want to inject custom logic or configuration
2225// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2226//
2227//
2228//    // Example sending a request using the ListVirtualRoutersRequest method.
2229//    req, resp := client.ListVirtualRoutersRequest(params)
2230//
2231//    err := req.Send()
2232//    if err == nil { // resp is now filled
2233//        fmt.Println(resp)
2234//    }
2235//
2236// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualRouters
2237func (c *AppMesh) ListVirtualRoutersRequest(input *ListVirtualRoutersInput) (req *request.Request, output *ListVirtualRoutersOutput) {
2238	op := &request.Operation{
2239		Name:       opListVirtualRouters,
2240		HTTPMethod: "GET",
2241		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouters",
2242		Paginator: &request.Paginator{
2243			InputTokens:     []string{"nextToken"},
2244			OutputTokens:    []string{"nextToken"},
2245			LimitToken:      "limit",
2246			TruncationToken: "",
2247		},
2248	}
2249
2250	if input == nil {
2251		input = &ListVirtualRoutersInput{}
2252	}
2253
2254	output = &ListVirtualRoutersOutput{}
2255	req = c.newRequest(op, input, output)
2256	return
2257}
2258
2259// ListVirtualRouters API operation for AWS App Mesh.
2260//
2261// Returns a list of existing virtual routers in a service mesh.
2262//
2263// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2264// with awserr.Error's Code and Message methods to get detailed information about
2265// the error.
2266//
2267// See the AWS API reference guide for AWS App Mesh's
2268// API operation ListVirtualRouters for usage and error information.
2269//
2270// Returned Error Codes:
2271//   * ErrCodeBadRequestException "BadRequestException"
2272//   The request syntax was malformed. Check your request syntax and try again.
2273//
2274//   * ErrCodeForbiddenException "ForbiddenException"
2275//   You don't have permissions to perform this action.
2276//
2277//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
2278//   The request processing has failed because of an unknown error, exception,
2279//   or failure.
2280//
2281//   * ErrCodeNotFoundException "NotFoundException"
2282//   The specified resource doesn't exist. Check your request syntax and try again.
2283//
2284//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
2285//   The request has failed due to a temporary failure of the service.
2286//
2287//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
2288//   The maximum request rate permitted by the App Mesh APIs has been exceeded
2289//   for your account. For best results, use an increasing or variable sleep interval
2290//   between requests.
2291//
2292// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualRouters
2293func (c *AppMesh) ListVirtualRouters(input *ListVirtualRoutersInput) (*ListVirtualRoutersOutput, error) {
2294	req, out := c.ListVirtualRoutersRequest(input)
2295	return out, req.Send()
2296}
2297
2298// ListVirtualRoutersWithContext is the same as ListVirtualRouters with the addition of
2299// the ability to pass a context and additional request options.
2300//
2301// See ListVirtualRouters for details on how to use this API operation.
2302//
2303// The context must be non-nil and will be used for request cancellation. If
2304// the context is nil a panic will occur. In the future the SDK may create
2305// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2306// for more information on using Contexts.
2307func (c *AppMesh) ListVirtualRoutersWithContext(ctx aws.Context, input *ListVirtualRoutersInput, opts ...request.Option) (*ListVirtualRoutersOutput, error) {
2308	req, out := c.ListVirtualRoutersRequest(input)
2309	req.SetContext(ctx)
2310	req.ApplyOptions(opts...)
2311	return out, req.Send()
2312}
2313
2314// ListVirtualRoutersPages iterates over the pages of a ListVirtualRouters operation,
2315// calling the "fn" function with the response data for each page. To stop
2316// iterating, return false from the fn function.
2317//
2318// See ListVirtualRouters method for more information on how to use this operation.
2319//
2320// Note: This operation can generate multiple requests to a service.
2321//
2322//    // Example iterating over at most 3 pages of a ListVirtualRouters operation.
2323//    pageNum := 0
2324//    err := client.ListVirtualRoutersPages(params,
2325//        func(page *appmesh.ListVirtualRoutersOutput, lastPage bool) bool {
2326//            pageNum++
2327//            fmt.Println(page)
2328//            return pageNum <= 3
2329//        })
2330//
2331func (c *AppMesh) ListVirtualRoutersPages(input *ListVirtualRoutersInput, fn func(*ListVirtualRoutersOutput, bool) bool) error {
2332	return c.ListVirtualRoutersPagesWithContext(aws.BackgroundContext(), input, fn)
2333}
2334
2335// ListVirtualRoutersPagesWithContext same as ListVirtualRoutersPages except
2336// it takes a Context and allows setting request options on the pages.
2337//
2338// The context must be non-nil and will be used for request cancellation. If
2339// the context is nil a panic will occur. In the future the SDK may create
2340// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2341// for more information on using Contexts.
2342func (c *AppMesh) ListVirtualRoutersPagesWithContext(ctx aws.Context, input *ListVirtualRoutersInput, fn func(*ListVirtualRoutersOutput, bool) bool, opts ...request.Option) error {
2343	p := request.Pagination{
2344		NewRequest: func() (*request.Request, error) {
2345			var inCpy *ListVirtualRoutersInput
2346			if input != nil {
2347				tmp := *input
2348				inCpy = &tmp
2349			}
2350			req, _ := c.ListVirtualRoutersRequest(inCpy)
2351			req.SetContext(ctx)
2352			req.ApplyOptions(opts...)
2353			return req, nil
2354		},
2355	}
2356
2357	for p.Next() {
2358		if !fn(p.Page().(*ListVirtualRoutersOutput), !p.HasNextPage()) {
2359			break
2360		}
2361	}
2362
2363	return p.Err()
2364}
2365
2366const opListVirtualServices = "ListVirtualServices"
2367
2368// ListVirtualServicesRequest generates a "aws/request.Request" representing the
2369// client's request for the ListVirtualServices operation. The "output" return
2370// value will be populated with the request's response once the request completes
2371// successfully.
2372//
2373// Use "Send" method on the returned Request to send the API call to the service.
2374// the "output" return value is not valid until after Send returns without error.
2375//
2376// See ListVirtualServices for more information on using the ListVirtualServices
2377// API call, and error handling.
2378//
2379// This method is useful when you want to inject custom logic or configuration
2380// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2381//
2382//
2383//    // Example sending a request using the ListVirtualServicesRequest method.
2384//    req, resp := client.ListVirtualServicesRequest(params)
2385//
2386//    err := req.Send()
2387//    if err == nil { // resp is now filled
2388//        fmt.Println(resp)
2389//    }
2390//
2391// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualServices
2392func (c *AppMesh) ListVirtualServicesRequest(input *ListVirtualServicesInput) (req *request.Request, output *ListVirtualServicesOutput) {
2393	op := &request.Operation{
2394		Name:       opListVirtualServices,
2395		HTTPMethod: "GET",
2396		HTTPPath:   "/v20190125/meshes/{meshName}/virtualServices",
2397		Paginator: &request.Paginator{
2398			InputTokens:     []string{"nextToken"},
2399			OutputTokens:    []string{"nextToken"},
2400			LimitToken:      "limit",
2401			TruncationToken: "",
2402		},
2403	}
2404
2405	if input == nil {
2406		input = &ListVirtualServicesInput{}
2407	}
2408
2409	output = &ListVirtualServicesOutput{}
2410	req = c.newRequest(op, input, output)
2411	return
2412}
2413
2414// ListVirtualServices API operation for AWS App Mesh.
2415//
2416// Returns a list of existing virtual services in a service mesh.
2417//
2418// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2419// with awserr.Error's Code and Message methods to get detailed information about
2420// the error.
2421//
2422// See the AWS API reference guide for AWS App Mesh's
2423// API operation ListVirtualServices for usage and error information.
2424//
2425// Returned Error Codes:
2426//   * ErrCodeBadRequestException "BadRequestException"
2427//   The request syntax was malformed. Check your request syntax and try again.
2428//
2429//   * ErrCodeForbiddenException "ForbiddenException"
2430//   You don't have permissions to perform this action.
2431//
2432//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
2433//   The request processing has failed because of an unknown error, exception,
2434//   or failure.
2435//
2436//   * ErrCodeNotFoundException "NotFoundException"
2437//   The specified resource doesn't exist. Check your request syntax and try again.
2438//
2439//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
2440//   The request has failed due to a temporary failure of the service.
2441//
2442//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
2443//   The maximum request rate permitted by the App Mesh APIs has been exceeded
2444//   for your account. For best results, use an increasing or variable sleep interval
2445//   between requests.
2446//
2447// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualServices
2448func (c *AppMesh) ListVirtualServices(input *ListVirtualServicesInput) (*ListVirtualServicesOutput, error) {
2449	req, out := c.ListVirtualServicesRequest(input)
2450	return out, req.Send()
2451}
2452
2453// ListVirtualServicesWithContext is the same as ListVirtualServices with the addition of
2454// the ability to pass a context and additional request options.
2455//
2456// See ListVirtualServices for details on how to use this API operation.
2457//
2458// The context must be non-nil and will be used for request cancellation. If
2459// the context is nil a panic will occur. In the future the SDK may create
2460// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2461// for more information on using Contexts.
2462func (c *AppMesh) ListVirtualServicesWithContext(ctx aws.Context, input *ListVirtualServicesInput, opts ...request.Option) (*ListVirtualServicesOutput, error) {
2463	req, out := c.ListVirtualServicesRequest(input)
2464	req.SetContext(ctx)
2465	req.ApplyOptions(opts...)
2466	return out, req.Send()
2467}
2468
2469// ListVirtualServicesPages iterates over the pages of a ListVirtualServices operation,
2470// calling the "fn" function with the response data for each page. To stop
2471// iterating, return false from the fn function.
2472//
2473// See ListVirtualServices method for more information on how to use this operation.
2474//
2475// Note: This operation can generate multiple requests to a service.
2476//
2477//    // Example iterating over at most 3 pages of a ListVirtualServices operation.
2478//    pageNum := 0
2479//    err := client.ListVirtualServicesPages(params,
2480//        func(page *appmesh.ListVirtualServicesOutput, lastPage bool) bool {
2481//            pageNum++
2482//            fmt.Println(page)
2483//            return pageNum <= 3
2484//        })
2485//
2486func (c *AppMesh) ListVirtualServicesPages(input *ListVirtualServicesInput, fn func(*ListVirtualServicesOutput, bool) bool) error {
2487	return c.ListVirtualServicesPagesWithContext(aws.BackgroundContext(), input, fn)
2488}
2489
2490// ListVirtualServicesPagesWithContext same as ListVirtualServicesPages except
2491// it takes a Context and allows setting request options on the pages.
2492//
2493// The context must be non-nil and will be used for request cancellation. If
2494// the context is nil a panic will occur. In the future the SDK may create
2495// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2496// for more information on using Contexts.
2497func (c *AppMesh) ListVirtualServicesPagesWithContext(ctx aws.Context, input *ListVirtualServicesInput, fn func(*ListVirtualServicesOutput, bool) bool, opts ...request.Option) error {
2498	p := request.Pagination{
2499		NewRequest: func() (*request.Request, error) {
2500			var inCpy *ListVirtualServicesInput
2501			if input != nil {
2502				tmp := *input
2503				inCpy = &tmp
2504			}
2505			req, _ := c.ListVirtualServicesRequest(inCpy)
2506			req.SetContext(ctx)
2507			req.ApplyOptions(opts...)
2508			return req, nil
2509		},
2510	}
2511
2512	for p.Next() {
2513		if !fn(p.Page().(*ListVirtualServicesOutput), !p.HasNextPage()) {
2514			break
2515		}
2516	}
2517
2518	return p.Err()
2519}
2520
2521const opTagResource = "TagResource"
2522
2523// TagResourceRequest generates a "aws/request.Request" representing the
2524// client's request for the TagResource operation. The "output" return
2525// value will be populated with the request's response once the request completes
2526// successfully.
2527//
2528// Use "Send" method on the returned Request to send the API call to the service.
2529// the "output" return value is not valid until after Send returns without error.
2530//
2531// See TagResource for more information on using the TagResource
2532// API call, and error handling.
2533//
2534// This method is useful when you want to inject custom logic or configuration
2535// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2536//
2537//
2538//    // Example sending a request using the TagResourceRequest method.
2539//    req, resp := client.TagResourceRequest(params)
2540//
2541//    err := req.Send()
2542//    if err == nil { // resp is now filled
2543//        fmt.Println(resp)
2544//    }
2545//
2546// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/TagResource
2547func (c *AppMesh) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
2548	op := &request.Operation{
2549		Name:       opTagResource,
2550		HTTPMethod: "PUT",
2551		HTTPPath:   "/v20190125/tag",
2552	}
2553
2554	if input == nil {
2555		input = &TagResourceInput{}
2556	}
2557
2558	output = &TagResourceOutput{}
2559	req = c.newRequest(op, input, output)
2560	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2561	return
2562}
2563
2564// TagResource API operation for AWS App Mesh.
2565//
2566// Associates the specified tags to a resource with the specified resourceArn.
2567// If existing tags on a resource aren't specified in the request parameters,
2568// they aren't changed. When a resource is deleted, the tags associated with
2569// that resource are also deleted.
2570//
2571// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2572// with awserr.Error's Code and Message methods to get detailed information about
2573// the error.
2574//
2575// See the AWS API reference guide for AWS App Mesh's
2576// API operation TagResource for usage and error information.
2577//
2578// Returned Error Codes:
2579//   * ErrCodeBadRequestException "BadRequestException"
2580//   The request syntax was malformed. Check your request syntax and try again.
2581//
2582//   * ErrCodeForbiddenException "ForbiddenException"
2583//   You don't have permissions to perform this action.
2584//
2585//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
2586//   The request processing has failed because of an unknown error, exception,
2587//   or failure.
2588//
2589//   * ErrCodeNotFoundException "NotFoundException"
2590//   The specified resource doesn't exist. Check your request syntax and try again.
2591//
2592//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
2593//   The request has failed due to a temporary failure of the service.
2594//
2595//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
2596//   The maximum request rate permitted by the App Mesh APIs has been exceeded
2597//   for your account. For best results, use an increasing or variable sleep interval
2598//   between requests.
2599//
2600//   * ErrCodeTooManyTagsException "TooManyTagsException"
2601//   The request exceeds the maximum allowed number of tags allowed per resource.
2602//   The current limit is 50 user tags per resource. You must reduce the number
2603//   of tags in the request. None of the tags in this request were applied.
2604//
2605// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/TagResource
2606func (c *AppMesh) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
2607	req, out := c.TagResourceRequest(input)
2608	return out, req.Send()
2609}
2610
2611// TagResourceWithContext is the same as TagResource with the addition of
2612// the ability to pass a context and additional request options.
2613//
2614// See TagResource for details on how to use this API operation.
2615//
2616// The context must be non-nil and will be used for request cancellation. If
2617// the context is nil a panic will occur. In the future the SDK may create
2618// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2619// for more information on using Contexts.
2620func (c *AppMesh) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
2621	req, out := c.TagResourceRequest(input)
2622	req.SetContext(ctx)
2623	req.ApplyOptions(opts...)
2624	return out, req.Send()
2625}
2626
2627const opUntagResource = "UntagResource"
2628
2629// UntagResourceRequest generates a "aws/request.Request" representing the
2630// client's request for the UntagResource operation. The "output" return
2631// value will be populated with the request's response once the request completes
2632// successfully.
2633//
2634// Use "Send" method on the returned Request to send the API call to the service.
2635// the "output" return value is not valid until after Send returns without error.
2636//
2637// See UntagResource for more information on using the UntagResource
2638// API call, and error handling.
2639//
2640// This method is useful when you want to inject custom logic or configuration
2641// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2642//
2643//
2644//    // Example sending a request using the UntagResourceRequest method.
2645//    req, resp := client.UntagResourceRequest(params)
2646//
2647//    err := req.Send()
2648//    if err == nil { // resp is now filled
2649//        fmt.Println(resp)
2650//    }
2651//
2652// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UntagResource
2653func (c *AppMesh) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
2654	op := &request.Operation{
2655		Name:       opUntagResource,
2656		HTTPMethod: "PUT",
2657		HTTPPath:   "/v20190125/untag",
2658	}
2659
2660	if input == nil {
2661		input = &UntagResourceInput{}
2662	}
2663
2664	output = &UntagResourceOutput{}
2665	req = c.newRequest(op, input, output)
2666	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2667	return
2668}
2669
2670// UntagResource API operation for AWS App Mesh.
2671//
2672// Deletes specified tags from a resource.
2673//
2674// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2675// with awserr.Error's Code and Message methods to get detailed information about
2676// the error.
2677//
2678// See the AWS API reference guide for AWS App Mesh's
2679// API operation UntagResource for usage and error information.
2680//
2681// Returned Error Codes:
2682//   * ErrCodeBadRequestException "BadRequestException"
2683//   The request syntax was malformed. Check your request syntax and try again.
2684//
2685//   * ErrCodeForbiddenException "ForbiddenException"
2686//   You don't have permissions to perform this action.
2687//
2688//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
2689//   The request processing has failed because of an unknown error, exception,
2690//   or failure.
2691//
2692//   * ErrCodeNotFoundException "NotFoundException"
2693//   The specified resource doesn't exist. Check your request syntax and try again.
2694//
2695//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
2696//   The request has failed due to a temporary failure of the service.
2697//
2698//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
2699//   The maximum request rate permitted by the App Mesh APIs has been exceeded
2700//   for your account. For best results, use an increasing or variable sleep interval
2701//   between requests.
2702//
2703// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UntagResource
2704func (c *AppMesh) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
2705	req, out := c.UntagResourceRequest(input)
2706	return out, req.Send()
2707}
2708
2709// UntagResourceWithContext is the same as UntagResource with the addition of
2710// the ability to pass a context and additional request options.
2711//
2712// See UntagResource for details on how to use this API operation.
2713//
2714// The context must be non-nil and will be used for request cancellation. If
2715// the context is nil a panic will occur. In the future the SDK may create
2716// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2717// for more information on using Contexts.
2718func (c *AppMesh) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {
2719	req, out := c.UntagResourceRequest(input)
2720	req.SetContext(ctx)
2721	req.ApplyOptions(opts...)
2722	return out, req.Send()
2723}
2724
2725const opUpdateMesh = "UpdateMesh"
2726
2727// UpdateMeshRequest generates a "aws/request.Request" representing the
2728// client's request for the UpdateMesh operation. The "output" return
2729// value will be populated with the request's response once the request completes
2730// successfully.
2731//
2732// Use "Send" method on the returned Request to send the API call to the service.
2733// the "output" return value is not valid until after Send returns without error.
2734//
2735// See UpdateMesh for more information on using the UpdateMesh
2736// API call, and error handling.
2737//
2738// This method is useful when you want to inject custom logic or configuration
2739// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2740//
2741//
2742//    // Example sending a request using the UpdateMeshRequest method.
2743//    req, resp := client.UpdateMeshRequest(params)
2744//
2745//    err := req.Send()
2746//    if err == nil { // resp is now filled
2747//        fmt.Println(resp)
2748//    }
2749//
2750// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateMesh
2751func (c *AppMesh) UpdateMeshRequest(input *UpdateMeshInput) (req *request.Request, output *UpdateMeshOutput) {
2752	op := &request.Operation{
2753		Name:       opUpdateMesh,
2754		HTTPMethod: "PUT",
2755		HTTPPath:   "/v20190125/meshes/{meshName}",
2756	}
2757
2758	if input == nil {
2759		input = &UpdateMeshInput{}
2760	}
2761
2762	output = &UpdateMeshOutput{}
2763	req = c.newRequest(op, input, output)
2764	return
2765}
2766
2767// UpdateMesh API operation for AWS App Mesh.
2768//
2769// Updates an existing service mesh.
2770//
2771// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2772// with awserr.Error's Code and Message methods to get detailed information about
2773// the error.
2774//
2775// See the AWS API reference guide for AWS App Mesh's
2776// API operation UpdateMesh for usage and error information.
2777//
2778// Returned Error Codes:
2779//   * ErrCodeBadRequestException "BadRequestException"
2780//   The request syntax was malformed. Check your request syntax and try again.
2781//
2782//   * ErrCodeConflictException "ConflictException"
2783//   The request contains a client token that was used for a previous update resource
2784//   call with different specifications. Try the request again with a new client
2785//   token.
2786//
2787//   * ErrCodeForbiddenException "ForbiddenException"
2788//   You don't have permissions to perform this action.
2789//
2790//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
2791//   The request processing has failed because of an unknown error, exception,
2792//   or failure.
2793//
2794//   * ErrCodeNotFoundException "NotFoundException"
2795//   The specified resource doesn't exist. Check your request syntax and try again.
2796//
2797//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
2798//   The request has failed due to a temporary failure of the service.
2799//
2800//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
2801//   The maximum request rate permitted by the App Mesh APIs has been exceeded
2802//   for your account. For best results, use an increasing or variable sleep interval
2803//   between requests.
2804//
2805// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateMesh
2806func (c *AppMesh) UpdateMesh(input *UpdateMeshInput) (*UpdateMeshOutput, error) {
2807	req, out := c.UpdateMeshRequest(input)
2808	return out, req.Send()
2809}
2810
2811// UpdateMeshWithContext is the same as UpdateMesh with the addition of
2812// the ability to pass a context and additional request options.
2813//
2814// See UpdateMesh for details on how to use this API operation.
2815//
2816// The context must be non-nil and will be used for request cancellation. If
2817// the context is nil a panic will occur. In the future the SDK may create
2818// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2819// for more information on using Contexts.
2820func (c *AppMesh) UpdateMeshWithContext(ctx aws.Context, input *UpdateMeshInput, opts ...request.Option) (*UpdateMeshOutput, error) {
2821	req, out := c.UpdateMeshRequest(input)
2822	req.SetContext(ctx)
2823	req.ApplyOptions(opts...)
2824	return out, req.Send()
2825}
2826
2827const opUpdateRoute = "UpdateRoute"
2828
2829// UpdateRouteRequest generates a "aws/request.Request" representing the
2830// client's request for the UpdateRoute operation. The "output" return
2831// value will be populated with the request's response once the request completes
2832// successfully.
2833//
2834// Use "Send" method on the returned Request to send the API call to the service.
2835// the "output" return value is not valid until after Send returns without error.
2836//
2837// See UpdateRoute for more information on using the UpdateRoute
2838// API call, and error handling.
2839//
2840// This method is useful when you want to inject custom logic or configuration
2841// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2842//
2843//
2844//    // Example sending a request using the UpdateRouteRequest method.
2845//    req, resp := client.UpdateRouteRequest(params)
2846//
2847//    err := req.Send()
2848//    if err == nil { // resp is now filled
2849//        fmt.Println(resp)
2850//    }
2851//
2852// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateRoute
2853func (c *AppMesh) UpdateRouteRequest(input *UpdateRouteInput) (req *request.Request, output *UpdateRouteOutput) {
2854	op := &request.Operation{
2855		Name:       opUpdateRoute,
2856		HTTPMethod: "PUT",
2857		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}",
2858	}
2859
2860	if input == nil {
2861		input = &UpdateRouteInput{}
2862	}
2863
2864	output = &UpdateRouteOutput{}
2865	req = c.newRequest(op, input, output)
2866	return
2867}
2868
2869// UpdateRoute API operation for AWS App Mesh.
2870//
2871// Updates an existing route for a specified service mesh and virtual router.
2872//
2873// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2874// with awserr.Error's Code and Message methods to get detailed information about
2875// the error.
2876//
2877// See the AWS API reference guide for AWS App Mesh's
2878// API operation UpdateRoute for usage and error information.
2879//
2880// Returned Error Codes:
2881//   * ErrCodeBadRequestException "BadRequestException"
2882//   The request syntax was malformed. Check your request syntax and try again.
2883//
2884//   * ErrCodeConflictException "ConflictException"
2885//   The request contains a client token that was used for a previous update resource
2886//   call with different specifications. Try the request again with a new client
2887//   token.
2888//
2889//   * ErrCodeForbiddenException "ForbiddenException"
2890//   You don't have permissions to perform this action.
2891//
2892//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
2893//   The request processing has failed because of an unknown error, exception,
2894//   or failure.
2895//
2896//   * ErrCodeLimitExceededException "LimitExceededException"
2897//   You have exceeded a service limit for your account. For more information,
2898//   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service_limits.html)
2899//   in the AWS App Mesh User Guide.
2900//
2901//   * ErrCodeNotFoundException "NotFoundException"
2902//   The specified resource doesn't exist. Check your request syntax and try again.
2903//
2904//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
2905//   The request has failed due to a temporary failure of the service.
2906//
2907//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
2908//   The maximum request rate permitted by the App Mesh APIs has been exceeded
2909//   for your account. For best results, use an increasing or variable sleep interval
2910//   between requests.
2911//
2912// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateRoute
2913func (c *AppMesh) UpdateRoute(input *UpdateRouteInput) (*UpdateRouteOutput, error) {
2914	req, out := c.UpdateRouteRequest(input)
2915	return out, req.Send()
2916}
2917
2918// UpdateRouteWithContext is the same as UpdateRoute with the addition of
2919// the ability to pass a context and additional request options.
2920//
2921// See UpdateRoute for details on how to use this API operation.
2922//
2923// The context must be non-nil and will be used for request cancellation. If
2924// the context is nil a panic will occur. In the future the SDK may create
2925// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2926// for more information on using Contexts.
2927func (c *AppMesh) UpdateRouteWithContext(ctx aws.Context, input *UpdateRouteInput, opts ...request.Option) (*UpdateRouteOutput, error) {
2928	req, out := c.UpdateRouteRequest(input)
2929	req.SetContext(ctx)
2930	req.ApplyOptions(opts...)
2931	return out, req.Send()
2932}
2933
2934const opUpdateVirtualNode = "UpdateVirtualNode"
2935
2936// UpdateVirtualNodeRequest generates a "aws/request.Request" representing the
2937// client's request for the UpdateVirtualNode operation. The "output" return
2938// value will be populated with the request's response once the request completes
2939// successfully.
2940//
2941// Use "Send" method on the returned Request to send the API call to the service.
2942// the "output" return value is not valid until after Send returns without error.
2943//
2944// See UpdateVirtualNode for more information on using the UpdateVirtualNode
2945// API call, and error handling.
2946//
2947// This method is useful when you want to inject custom logic or configuration
2948// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2949//
2950//
2951//    // Example sending a request using the UpdateVirtualNodeRequest method.
2952//    req, resp := client.UpdateVirtualNodeRequest(params)
2953//
2954//    err := req.Send()
2955//    if err == nil { // resp is now filled
2956//        fmt.Println(resp)
2957//    }
2958//
2959// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualNode
2960func (c *AppMesh) UpdateVirtualNodeRequest(input *UpdateVirtualNodeInput) (req *request.Request, output *UpdateVirtualNodeOutput) {
2961	op := &request.Operation{
2962		Name:       opUpdateVirtualNode,
2963		HTTPMethod: "PUT",
2964		HTTPPath:   "/v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}",
2965	}
2966
2967	if input == nil {
2968		input = &UpdateVirtualNodeInput{}
2969	}
2970
2971	output = &UpdateVirtualNodeOutput{}
2972	req = c.newRequest(op, input, output)
2973	return
2974}
2975
2976// UpdateVirtualNode API operation for AWS App Mesh.
2977//
2978// Updates an existing virtual node in a specified service mesh.
2979//
2980// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2981// with awserr.Error's Code and Message methods to get detailed information about
2982// the error.
2983//
2984// See the AWS API reference guide for AWS App Mesh's
2985// API operation UpdateVirtualNode for usage and error information.
2986//
2987// Returned Error Codes:
2988//   * ErrCodeBadRequestException "BadRequestException"
2989//   The request syntax was malformed. Check your request syntax and try again.
2990//
2991//   * ErrCodeConflictException "ConflictException"
2992//   The request contains a client token that was used for a previous update resource
2993//   call with different specifications. Try the request again with a new client
2994//   token.
2995//
2996//   * ErrCodeForbiddenException "ForbiddenException"
2997//   You don't have permissions to perform this action.
2998//
2999//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
3000//   The request processing has failed because of an unknown error, exception,
3001//   or failure.
3002//
3003//   * ErrCodeLimitExceededException "LimitExceededException"
3004//   You have exceeded a service limit for your account. For more information,
3005//   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service_limits.html)
3006//   in the AWS App Mesh User Guide.
3007//
3008//   * ErrCodeNotFoundException "NotFoundException"
3009//   The specified resource doesn't exist. Check your request syntax and try again.
3010//
3011//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
3012//   The request has failed due to a temporary failure of the service.
3013//
3014//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
3015//   The maximum request rate permitted by the App Mesh APIs has been exceeded
3016//   for your account. For best results, use an increasing or variable sleep interval
3017//   between requests.
3018//
3019// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualNode
3020func (c *AppMesh) UpdateVirtualNode(input *UpdateVirtualNodeInput) (*UpdateVirtualNodeOutput, error) {
3021	req, out := c.UpdateVirtualNodeRequest(input)
3022	return out, req.Send()
3023}
3024
3025// UpdateVirtualNodeWithContext is the same as UpdateVirtualNode with the addition of
3026// the ability to pass a context and additional request options.
3027//
3028// See UpdateVirtualNode for details on how to use this API operation.
3029//
3030// The context must be non-nil and will be used for request cancellation. If
3031// the context is nil a panic will occur. In the future the SDK may create
3032// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3033// for more information on using Contexts.
3034func (c *AppMesh) UpdateVirtualNodeWithContext(ctx aws.Context, input *UpdateVirtualNodeInput, opts ...request.Option) (*UpdateVirtualNodeOutput, error) {
3035	req, out := c.UpdateVirtualNodeRequest(input)
3036	req.SetContext(ctx)
3037	req.ApplyOptions(opts...)
3038	return out, req.Send()
3039}
3040
3041const opUpdateVirtualRouter = "UpdateVirtualRouter"
3042
3043// UpdateVirtualRouterRequest generates a "aws/request.Request" representing the
3044// client's request for the UpdateVirtualRouter operation. The "output" return
3045// value will be populated with the request's response once the request completes
3046// successfully.
3047//
3048// Use "Send" method on the returned Request to send the API call to the service.
3049// the "output" return value is not valid until after Send returns without error.
3050//
3051// See UpdateVirtualRouter for more information on using the UpdateVirtualRouter
3052// API call, and error handling.
3053//
3054// This method is useful when you want to inject custom logic or configuration
3055// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3056//
3057//
3058//    // Example sending a request using the UpdateVirtualRouterRequest method.
3059//    req, resp := client.UpdateVirtualRouterRequest(params)
3060//
3061//    err := req.Send()
3062//    if err == nil { // resp is now filled
3063//        fmt.Println(resp)
3064//    }
3065//
3066// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualRouter
3067func (c *AppMesh) UpdateVirtualRouterRequest(input *UpdateVirtualRouterInput) (req *request.Request, output *UpdateVirtualRouterOutput) {
3068	op := &request.Operation{
3069		Name:       opUpdateVirtualRouter,
3070		HTTPMethod: "PUT",
3071		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}",
3072	}
3073
3074	if input == nil {
3075		input = &UpdateVirtualRouterInput{}
3076	}
3077
3078	output = &UpdateVirtualRouterOutput{}
3079	req = c.newRequest(op, input, output)
3080	return
3081}
3082
3083// UpdateVirtualRouter API operation for AWS App Mesh.
3084//
3085// Updates an existing virtual router in a specified service mesh.
3086//
3087// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3088// with awserr.Error's Code and Message methods to get detailed information about
3089// the error.
3090//
3091// See the AWS API reference guide for AWS App Mesh's
3092// API operation UpdateVirtualRouter for usage and error information.
3093//
3094// Returned Error Codes:
3095//   * ErrCodeBadRequestException "BadRequestException"
3096//   The request syntax was malformed. Check your request syntax and try again.
3097//
3098//   * ErrCodeConflictException "ConflictException"
3099//   The request contains a client token that was used for a previous update resource
3100//   call with different specifications. Try the request again with a new client
3101//   token.
3102//
3103//   * ErrCodeForbiddenException "ForbiddenException"
3104//   You don't have permissions to perform this action.
3105//
3106//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
3107//   The request processing has failed because of an unknown error, exception,
3108//   or failure.
3109//
3110//   * ErrCodeLimitExceededException "LimitExceededException"
3111//   You have exceeded a service limit for your account. For more information,
3112//   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service_limits.html)
3113//   in the AWS App Mesh User Guide.
3114//
3115//   * ErrCodeNotFoundException "NotFoundException"
3116//   The specified resource doesn't exist. Check your request syntax and try again.
3117//
3118//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
3119//   The request has failed due to a temporary failure of the service.
3120//
3121//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
3122//   The maximum request rate permitted by the App Mesh APIs has been exceeded
3123//   for your account. For best results, use an increasing or variable sleep interval
3124//   between requests.
3125//
3126// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualRouter
3127func (c *AppMesh) UpdateVirtualRouter(input *UpdateVirtualRouterInput) (*UpdateVirtualRouterOutput, error) {
3128	req, out := c.UpdateVirtualRouterRequest(input)
3129	return out, req.Send()
3130}
3131
3132// UpdateVirtualRouterWithContext is the same as UpdateVirtualRouter with the addition of
3133// the ability to pass a context and additional request options.
3134//
3135// See UpdateVirtualRouter for details on how to use this API operation.
3136//
3137// The context must be non-nil and will be used for request cancellation. If
3138// the context is nil a panic will occur. In the future the SDK may create
3139// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3140// for more information on using Contexts.
3141func (c *AppMesh) UpdateVirtualRouterWithContext(ctx aws.Context, input *UpdateVirtualRouterInput, opts ...request.Option) (*UpdateVirtualRouterOutput, error) {
3142	req, out := c.UpdateVirtualRouterRequest(input)
3143	req.SetContext(ctx)
3144	req.ApplyOptions(opts...)
3145	return out, req.Send()
3146}
3147
3148const opUpdateVirtualService = "UpdateVirtualService"
3149
3150// UpdateVirtualServiceRequest generates a "aws/request.Request" representing the
3151// client's request for the UpdateVirtualService operation. The "output" return
3152// value will be populated with the request's response once the request completes
3153// successfully.
3154//
3155// Use "Send" method on the returned Request to send the API call to the service.
3156// the "output" return value is not valid until after Send returns without error.
3157//
3158// See UpdateVirtualService for more information on using the UpdateVirtualService
3159// API call, and error handling.
3160//
3161// This method is useful when you want to inject custom logic or configuration
3162// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3163//
3164//
3165//    // Example sending a request using the UpdateVirtualServiceRequest method.
3166//    req, resp := client.UpdateVirtualServiceRequest(params)
3167//
3168//    err := req.Send()
3169//    if err == nil { // resp is now filled
3170//        fmt.Println(resp)
3171//    }
3172//
3173// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualService
3174func (c *AppMesh) UpdateVirtualServiceRequest(input *UpdateVirtualServiceInput) (req *request.Request, output *UpdateVirtualServiceOutput) {
3175	op := &request.Operation{
3176		Name:       opUpdateVirtualService,
3177		HTTPMethod: "PUT",
3178		HTTPPath:   "/v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}",
3179	}
3180
3181	if input == nil {
3182		input = &UpdateVirtualServiceInput{}
3183	}
3184
3185	output = &UpdateVirtualServiceOutput{}
3186	req = c.newRequest(op, input, output)
3187	return
3188}
3189
3190// UpdateVirtualService API operation for AWS App Mesh.
3191//
3192// Updates an existing virtual service in a specified service mesh.
3193//
3194// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3195// with awserr.Error's Code and Message methods to get detailed information about
3196// the error.
3197//
3198// See the AWS API reference guide for AWS App Mesh's
3199// API operation UpdateVirtualService for usage and error information.
3200//
3201// Returned Error Codes:
3202//   * ErrCodeBadRequestException "BadRequestException"
3203//   The request syntax was malformed. Check your request syntax and try again.
3204//
3205//   * ErrCodeConflictException "ConflictException"
3206//   The request contains a client token that was used for a previous update resource
3207//   call with different specifications. Try the request again with a new client
3208//   token.
3209//
3210//   * ErrCodeForbiddenException "ForbiddenException"
3211//   You don't have permissions to perform this action.
3212//
3213//   * ErrCodeInternalServerErrorException "InternalServerErrorException"
3214//   The request processing has failed because of an unknown error, exception,
3215//   or failure.
3216//
3217//   * ErrCodeLimitExceededException "LimitExceededException"
3218//   You have exceeded a service limit for your account. For more information,
3219//   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service_limits.html)
3220//   in the AWS App Mesh User Guide.
3221//
3222//   * ErrCodeNotFoundException "NotFoundException"
3223//   The specified resource doesn't exist. Check your request syntax and try again.
3224//
3225//   * ErrCodeServiceUnavailableException "ServiceUnavailableException"
3226//   The request has failed due to a temporary failure of the service.
3227//
3228//   * ErrCodeTooManyRequestsException "TooManyRequestsException"
3229//   The maximum request rate permitted by the App Mesh APIs has been exceeded
3230//   for your account. For best results, use an increasing or variable sleep interval
3231//   between requests.
3232//
3233// See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualService
3234func (c *AppMesh) UpdateVirtualService(input *UpdateVirtualServiceInput) (*UpdateVirtualServiceOutput, error) {
3235	req, out := c.UpdateVirtualServiceRequest(input)
3236	return out, req.Send()
3237}
3238
3239// UpdateVirtualServiceWithContext is the same as UpdateVirtualService with the addition of
3240// the ability to pass a context and additional request options.
3241//
3242// See UpdateVirtualService for details on how to use this API operation.
3243//
3244// The context must be non-nil and will be used for request cancellation. If
3245// the context is nil a panic will occur. In the future the SDK may create
3246// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3247// for more information on using Contexts.
3248func (c *AppMesh) UpdateVirtualServiceWithContext(ctx aws.Context, input *UpdateVirtualServiceInput, opts ...request.Option) (*UpdateVirtualServiceOutput, error) {
3249	req, out := c.UpdateVirtualServiceRequest(input)
3250	req.SetContext(ctx)
3251	req.ApplyOptions(opts...)
3252	return out, req.Send()
3253}
3254
3255// An object that represents the access logging information for a virtual node.
3256type AccessLog struct {
3257	_ struct{} `type:"structure"`
3258
3259	// An object that represents an access log file.
3260	File *FileAccessLog `locationName:"file" type:"structure"`
3261}
3262
3263// String returns the string representation
3264func (s AccessLog) String() string {
3265	return awsutil.Prettify(s)
3266}
3267
3268// GoString returns the string representation
3269func (s AccessLog) GoString() string {
3270	return s.String()
3271}
3272
3273// Validate inspects the fields of the type to determine if they are valid.
3274func (s *AccessLog) Validate() error {
3275	invalidParams := request.ErrInvalidParams{Context: "AccessLog"}
3276	if s.File != nil {
3277		if err := s.File.Validate(); err != nil {
3278			invalidParams.AddNested("File", err.(request.ErrInvalidParams))
3279		}
3280	}
3281
3282	if invalidParams.Len() > 0 {
3283		return invalidParams
3284	}
3285	return nil
3286}
3287
3288// SetFile sets the File field's value.
3289func (s *AccessLog) SetFile(v *FileAccessLog) *AccessLog {
3290	s.File = v
3291	return s
3292}
3293
3294// An object that represents the AWS Cloud Map attribute information for your
3295// virtual node.
3296type AwsCloudMapInstanceAttribute struct {
3297	_ struct{} `type:"structure"`
3298
3299	// Key is a required field
3300	Key *string `locationName:"key" min:"1" type:"string" required:"true"`
3301
3302	// Value is a required field
3303	Value *string `locationName:"value" min:"1" type:"string" required:"true"`
3304}
3305
3306// String returns the string representation
3307func (s AwsCloudMapInstanceAttribute) String() string {
3308	return awsutil.Prettify(s)
3309}
3310
3311// GoString returns the string representation
3312func (s AwsCloudMapInstanceAttribute) GoString() string {
3313	return s.String()
3314}
3315
3316// Validate inspects the fields of the type to determine if they are valid.
3317func (s *AwsCloudMapInstanceAttribute) Validate() error {
3318	invalidParams := request.ErrInvalidParams{Context: "AwsCloudMapInstanceAttribute"}
3319	if s.Key == nil {
3320		invalidParams.Add(request.NewErrParamRequired("Key"))
3321	}
3322	if s.Key != nil && len(*s.Key) < 1 {
3323		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
3324	}
3325	if s.Value == nil {
3326		invalidParams.Add(request.NewErrParamRequired("Value"))
3327	}
3328	if s.Value != nil && len(*s.Value) < 1 {
3329		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
3330	}
3331
3332	if invalidParams.Len() > 0 {
3333		return invalidParams
3334	}
3335	return nil
3336}
3337
3338// SetKey sets the Key field's value.
3339func (s *AwsCloudMapInstanceAttribute) SetKey(v string) *AwsCloudMapInstanceAttribute {
3340	s.Key = &v
3341	return s
3342}
3343
3344// SetValue sets the Value field's value.
3345func (s *AwsCloudMapInstanceAttribute) SetValue(v string) *AwsCloudMapInstanceAttribute {
3346	s.Value = &v
3347	return s
3348}
3349
3350// An object that represents the AWS Cloud Map service discovery information
3351// for your virtual node.
3352type AwsCloudMapServiceDiscovery struct {
3353	_ struct{} `type:"structure"`
3354
3355	Attributes []*AwsCloudMapInstanceAttribute `locationName:"attributes" type:"list"`
3356
3357	// NamespaceName is a required field
3358	NamespaceName *string `locationName:"namespaceName" min:"1" type:"string" required:"true"`
3359
3360	// ServiceName is a required field
3361	ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"`
3362}
3363
3364// String returns the string representation
3365func (s AwsCloudMapServiceDiscovery) String() string {
3366	return awsutil.Prettify(s)
3367}
3368
3369// GoString returns the string representation
3370func (s AwsCloudMapServiceDiscovery) GoString() string {
3371	return s.String()
3372}
3373
3374// Validate inspects the fields of the type to determine if they are valid.
3375func (s *AwsCloudMapServiceDiscovery) Validate() error {
3376	invalidParams := request.ErrInvalidParams{Context: "AwsCloudMapServiceDiscovery"}
3377	if s.NamespaceName == nil {
3378		invalidParams.Add(request.NewErrParamRequired("NamespaceName"))
3379	}
3380	if s.NamespaceName != nil && len(*s.NamespaceName) < 1 {
3381		invalidParams.Add(request.NewErrParamMinLen("NamespaceName", 1))
3382	}
3383	if s.ServiceName == nil {
3384		invalidParams.Add(request.NewErrParamRequired("ServiceName"))
3385	}
3386	if s.ServiceName != nil && len(*s.ServiceName) < 1 {
3387		invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1))
3388	}
3389	if s.Attributes != nil {
3390		for i, v := range s.Attributes {
3391			if v == nil {
3392				continue
3393			}
3394			if err := v.Validate(); err != nil {
3395				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Attributes", i), err.(request.ErrInvalidParams))
3396			}
3397		}
3398	}
3399
3400	if invalidParams.Len() > 0 {
3401		return invalidParams
3402	}
3403	return nil
3404}
3405
3406// SetAttributes sets the Attributes field's value.
3407func (s *AwsCloudMapServiceDiscovery) SetAttributes(v []*AwsCloudMapInstanceAttribute) *AwsCloudMapServiceDiscovery {
3408	s.Attributes = v
3409	return s
3410}
3411
3412// SetNamespaceName sets the NamespaceName field's value.
3413func (s *AwsCloudMapServiceDiscovery) SetNamespaceName(v string) *AwsCloudMapServiceDiscovery {
3414	s.NamespaceName = &v
3415	return s
3416}
3417
3418// SetServiceName sets the ServiceName field's value.
3419func (s *AwsCloudMapServiceDiscovery) SetServiceName(v string) *AwsCloudMapServiceDiscovery {
3420	s.ServiceName = &v
3421	return s
3422}
3423
3424// An object that represents the backends that a virtual node is expected to
3425// send outbound traffic to.
3426type Backend struct {
3427	_ struct{} `type:"structure"`
3428
3429	// An object that represents a virtual service backend for a virtual node.
3430	VirtualService *VirtualServiceBackend `locationName:"virtualService" type:"structure"`
3431}
3432
3433// String returns the string representation
3434func (s Backend) String() string {
3435	return awsutil.Prettify(s)
3436}
3437
3438// GoString returns the string representation
3439func (s Backend) GoString() string {
3440	return s.String()
3441}
3442
3443// Validate inspects the fields of the type to determine if they are valid.
3444func (s *Backend) Validate() error {
3445	invalidParams := request.ErrInvalidParams{Context: "Backend"}
3446	if s.VirtualService != nil {
3447		if err := s.VirtualService.Validate(); err != nil {
3448			invalidParams.AddNested("VirtualService", err.(request.ErrInvalidParams))
3449		}
3450	}
3451
3452	if invalidParams.Len() > 0 {
3453		return invalidParams
3454	}
3455	return nil
3456}
3457
3458// SetVirtualService sets the VirtualService field's value.
3459func (s *Backend) SetVirtualService(v *VirtualServiceBackend) *Backend {
3460	s.VirtualService = v
3461	return s
3462}
3463
3464type CreateMeshInput struct {
3465	_ struct{} `type:"structure"`
3466
3467	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
3468
3469	// MeshName is a required field
3470	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
3471
3472	// An object that represents the specification of a service mesh.
3473	Spec *MeshSpec `locationName:"spec" type:"structure"`
3474
3475	Tags []*TagRef `locationName:"tags" type:"list"`
3476}
3477
3478// String returns the string representation
3479func (s CreateMeshInput) String() string {
3480	return awsutil.Prettify(s)
3481}
3482
3483// GoString returns the string representation
3484func (s CreateMeshInput) GoString() string {
3485	return s.String()
3486}
3487
3488// Validate inspects the fields of the type to determine if they are valid.
3489func (s *CreateMeshInput) Validate() error {
3490	invalidParams := request.ErrInvalidParams{Context: "CreateMeshInput"}
3491	if s.MeshName == nil {
3492		invalidParams.Add(request.NewErrParamRequired("MeshName"))
3493	}
3494	if s.MeshName != nil && len(*s.MeshName) < 1 {
3495		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
3496	}
3497	if s.Spec != nil {
3498		if err := s.Spec.Validate(); err != nil {
3499			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
3500		}
3501	}
3502	if s.Tags != nil {
3503		for i, v := range s.Tags {
3504			if v == nil {
3505				continue
3506			}
3507			if err := v.Validate(); err != nil {
3508				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
3509			}
3510		}
3511	}
3512
3513	if invalidParams.Len() > 0 {
3514		return invalidParams
3515	}
3516	return nil
3517}
3518
3519// SetClientToken sets the ClientToken field's value.
3520func (s *CreateMeshInput) SetClientToken(v string) *CreateMeshInput {
3521	s.ClientToken = &v
3522	return s
3523}
3524
3525// SetMeshName sets the MeshName field's value.
3526func (s *CreateMeshInput) SetMeshName(v string) *CreateMeshInput {
3527	s.MeshName = &v
3528	return s
3529}
3530
3531// SetSpec sets the Spec field's value.
3532func (s *CreateMeshInput) SetSpec(v *MeshSpec) *CreateMeshInput {
3533	s.Spec = v
3534	return s
3535}
3536
3537// SetTags sets the Tags field's value.
3538func (s *CreateMeshInput) SetTags(v []*TagRef) *CreateMeshInput {
3539	s.Tags = v
3540	return s
3541}
3542
3543type CreateMeshOutput struct {
3544	_ struct{} `type:"structure" payload:"Mesh"`
3545
3546	// An object that represents a service mesh returned by a describe operation.
3547	//
3548	// Mesh is a required field
3549	Mesh *MeshData `locationName:"mesh" type:"structure" required:"true"`
3550}
3551
3552// String returns the string representation
3553func (s CreateMeshOutput) String() string {
3554	return awsutil.Prettify(s)
3555}
3556
3557// GoString returns the string representation
3558func (s CreateMeshOutput) GoString() string {
3559	return s.String()
3560}
3561
3562// SetMesh sets the Mesh field's value.
3563func (s *CreateMeshOutput) SetMesh(v *MeshData) *CreateMeshOutput {
3564	s.Mesh = v
3565	return s
3566}
3567
3568type CreateRouteInput struct {
3569	_ struct{} `type:"structure"`
3570
3571	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
3572
3573	// MeshName is a required field
3574	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
3575
3576	// RouteName is a required field
3577	RouteName *string `locationName:"routeName" min:"1" type:"string" required:"true"`
3578
3579	// An object that represents a route specification. Specify one route type.
3580	//
3581	// Spec is a required field
3582	Spec *RouteSpec `locationName:"spec" type:"structure" required:"true"`
3583
3584	Tags []*TagRef `locationName:"tags" type:"list"`
3585
3586	// VirtualRouterName is a required field
3587	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
3588}
3589
3590// String returns the string representation
3591func (s CreateRouteInput) String() string {
3592	return awsutil.Prettify(s)
3593}
3594
3595// GoString returns the string representation
3596func (s CreateRouteInput) GoString() string {
3597	return s.String()
3598}
3599
3600// Validate inspects the fields of the type to determine if they are valid.
3601func (s *CreateRouteInput) Validate() error {
3602	invalidParams := request.ErrInvalidParams{Context: "CreateRouteInput"}
3603	if s.MeshName == nil {
3604		invalidParams.Add(request.NewErrParamRequired("MeshName"))
3605	}
3606	if s.MeshName != nil && len(*s.MeshName) < 1 {
3607		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
3608	}
3609	if s.RouteName == nil {
3610		invalidParams.Add(request.NewErrParamRequired("RouteName"))
3611	}
3612	if s.RouteName != nil && len(*s.RouteName) < 1 {
3613		invalidParams.Add(request.NewErrParamMinLen("RouteName", 1))
3614	}
3615	if s.Spec == nil {
3616		invalidParams.Add(request.NewErrParamRequired("Spec"))
3617	}
3618	if s.VirtualRouterName == nil {
3619		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
3620	}
3621	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
3622		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
3623	}
3624	if s.Spec != nil {
3625		if err := s.Spec.Validate(); err != nil {
3626			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
3627		}
3628	}
3629	if s.Tags != nil {
3630		for i, v := range s.Tags {
3631			if v == nil {
3632				continue
3633			}
3634			if err := v.Validate(); err != nil {
3635				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
3636			}
3637		}
3638	}
3639
3640	if invalidParams.Len() > 0 {
3641		return invalidParams
3642	}
3643	return nil
3644}
3645
3646// SetClientToken sets the ClientToken field's value.
3647func (s *CreateRouteInput) SetClientToken(v string) *CreateRouteInput {
3648	s.ClientToken = &v
3649	return s
3650}
3651
3652// SetMeshName sets the MeshName field's value.
3653func (s *CreateRouteInput) SetMeshName(v string) *CreateRouteInput {
3654	s.MeshName = &v
3655	return s
3656}
3657
3658// SetRouteName sets the RouteName field's value.
3659func (s *CreateRouteInput) SetRouteName(v string) *CreateRouteInput {
3660	s.RouteName = &v
3661	return s
3662}
3663
3664// SetSpec sets the Spec field's value.
3665func (s *CreateRouteInput) SetSpec(v *RouteSpec) *CreateRouteInput {
3666	s.Spec = v
3667	return s
3668}
3669
3670// SetTags sets the Tags field's value.
3671func (s *CreateRouteInput) SetTags(v []*TagRef) *CreateRouteInput {
3672	s.Tags = v
3673	return s
3674}
3675
3676// SetVirtualRouterName sets the VirtualRouterName field's value.
3677func (s *CreateRouteInput) SetVirtualRouterName(v string) *CreateRouteInput {
3678	s.VirtualRouterName = &v
3679	return s
3680}
3681
3682type CreateRouteOutput struct {
3683	_ struct{} `type:"structure" payload:"Route"`
3684
3685	// An object that represents a route returned by a describe operation.
3686	//
3687	// Route is a required field
3688	Route *RouteData `locationName:"route" type:"structure" required:"true"`
3689}
3690
3691// String returns the string representation
3692func (s CreateRouteOutput) String() string {
3693	return awsutil.Prettify(s)
3694}
3695
3696// GoString returns the string representation
3697func (s CreateRouteOutput) GoString() string {
3698	return s.String()
3699}
3700
3701// SetRoute sets the Route field's value.
3702func (s *CreateRouteOutput) SetRoute(v *RouteData) *CreateRouteOutput {
3703	s.Route = v
3704	return s
3705}
3706
3707type CreateVirtualNodeInput struct {
3708	_ struct{} `type:"structure"`
3709
3710	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
3711
3712	// MeshName is a required field
3713	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
3714
3715	// An object that represents the specification of a virtual node.
3716	//
3717	// Spec is a required field
3718	Spec *VirtualNodeSpec `locationName:"spec" type:"structure" required:"true"`
3719
3720	Tags []*TagRef `locationName:"tags" type:"list"`
3721
3722	// VirtualNodeName is a required field
3723	VirtualNodeName *string `locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
3724}
3725
3726// String returns the string representation
3727func (s CreateVirtualNodeInput) String() string {
3728	return awsutil.Prettify(s)
3729}
3730
3731// GoString returns the string representation
3732func (s CreateVirtualNodeInput) GoString() string {
3733	return s.String()
3734}
3735
3736// Validate inspects the fields of the type to determine if they are valid.
3737func (s *CreateVirtualNodeInput) Validate() error {
3738	invalidParams := request.ErrInvalidParams{Context: "CreateVirtualNodeInput"}
3739	if s.MeshName == nil {
3740		invalidParams.Add(request.NewErrParamRequired("MeshName"))
3741	}
3742	if s.MeshName != nil && len(*s.MeshName) < 1 {
3743		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
3744	}
3745	if s.Spec == nil {
3746		invalidParams.Add(request.NewErrParamRequired("Spec"))
3747	}
3748	if s.VirtualNodeName == nil {
3749		invalidParams.Add(request.NewErrParamRequired("VirtualNodeName"))
3750	}
3751	if s.VirtualNodeName != nil && len(*s.VirtualNodeName) < 1 {
3752		invalidParams.Add(request.NewErrParamMinLen("VirtualNodeName", 1))
3753	}
3754	if s.Spec != nil {
3755		if err := s.Spec.Validate(); err != nil {
3756			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
3757		}
3758	}
3759	if s.Tags != nil {
3760		for i, v := range s.Tags {
3761			if v == nil {
3762				continue
3763			}
3764			if err := v.Validate(); err != nil {
3765				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
3766			}
3767		}
3768	}
3769
3770	if invalidParams.Len() > 0 {
3771		return invalidParams
3772	}
3773	return nil
3774}
3775
3776// SetClientToken sets the ClientToken field's value.
3777func (s *CreateVirtualNodeInput) SetClientToken(v string) *CreateVirtualNodeInput {
3778	s.ClientToken = &v
3779	return s
3780}
3781
3782// SetMeshName sets the MeshName field's value.
3783func (s *CreateVirtualNodeInput) SetMeshName(v string) *CreateVirtualNodeInput {
3784	s.MeshName = &v
3785	return s
3786}
3787
3788// SetSpec sets the Spec field's value.
3789func (s *CreateVirtualNodeInput) SetSpec(v *VirtualNodeSpec) *CreateVirtualNodeInput {
3790	s.Spec = v
3791	return s
3792}
3793
3794// SetTags sets the Tags field's value.
3795func (s *CreateVirtualNodeInput) SetTags(v []*TagRef) *CreateVirtualNodeInput {
3796	s.Tags = v
3797	return s
3798}
3799
3800// SetVirtualNodeName sets the VirtualNodeName field's value.
3801func (s *CreateVirtualNodeInput) SetVirtualNodeName(v string) *CreateVirtualNodeInput {
3802	s.VirtualNodeName = &v
3803	return s
3804}
3805
3806type CreateVirtualNodeOutput struct {
3807	_ struct{} `type:"structure" payload:"VirtualNode"`
3808
3809	// An object that represents a virtual node returned by a describe operation.
3810	//
3811	// VirtualNode is a required field
3812	VirtualNode *VirtualNodeData `locationName:"virtualNode" type:"structure" required:"true"`
3813}
3814
3815// String returns the string representation
3816func (s CreateVirtualNodeOutput) String() string {
3817	return awsutil.Prettify(s)
3818}
3819
3820// GoString returns the string representation
3821func (s CreateVirtualNodeOutput) GoString() string {
3822	return s.String()
3823}
3824
3825// SetVirtualNode sets the VirtualNode field's value.
3826func (s *CreateVirtualNodeOutput) SetVirtualNode(v *VirtualNodeData) *CreateVirtualNodeOutput {
3827	s.VirtualNode = v
3828	return s
3829}
3830
3831type CreateVirtualRouterInput struct {
3832	_ struct{} `type:"structure"`
3833
3834	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
3835
3836	// MeshName is a required field
3837	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
3838
3839	// An object that represents the specification of a virtual router.
3840	//
3841	// Spec is a required field
3842	Spec *VirtualRouterSpec `locationName:"spec" type:"structure" required:"true"`
3843
3844	Tags []*TagRef `locationName:"tags" type:"list"`
3845
3846	// VirtualRouterName is a required field
3847	VirtualRouterName *string `locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
3848}
3849
3850// String returns the string representation
3851func (s CreateVirtualRouterInput) String() string {
3852	return awsutil.Prettify(s)
3853}
3854
3855// GoString returns the string representation
3856func (s CreateVirtualRouterInput) GoString() string {
3857	return s.String()
3858}
3859
3860// Validate inspects the fields of the type to determine if they are valid.
3861func (s *CreateVirtualRouterInput) Validate() error {
3862	invalidParams := request.ErrInvalidParams{Context: "CreateVirtualRouterInput"}
3863	if s.MeshName == nil {
3864		invalidParams.Add(request.NewErrParamRequired("MeshName"))
3865	}
3866	if s.MeshName != nil && len(*s.MeshName) < 1 {
3867		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
3868	}
3869	if s.Spec == nil {
3870		invalidParams.Add(request.NewErrParamRequired("Spec"))
3871	}
3872	if s.VirtualRouterName == nil {
3873		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
3874	}
3875	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
3876		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
3877	}
3878	if s.Spec != nil {
3879		if err := s.Spec.Validate(); err != nil {
3880			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
3881		}
3882	}
3883	if s.Tags != nil {
3884		for i, v := range s.Tags {
3885			if v == nil {
3886				continue
3887			}
3888			if err := v.Validate(); err != nil {
3889				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
3890			}
3891		}
3892	}
3893
3894	if invalidParams.Len() > 0 {
3895		return invalidParams
3896	}
3897	return nil
3898}
3899
3900// SetClientToken sets the ClientToken field's value.
3901func (s *CreateVirtualRouterInput) SetClientToken(v string) *CreateVirtualRouterInput {
3902	s.ClientToken = &v
3903	return s
3904}
3905
3906// SetMeshName sets the MeshName field's value.
3907func (s *CreateVirtualRouterInput) SetMeshName(v string) *CreateVirtualRouterInput {
3908	s.MeshName = &v
3909	return s
3910}
3911
3912// SetSpec sets the Spec field's value.
3913func (s *CreateVirtualRouterInput) SetSpec(v *VirtualRouterSpec) *CreateVirtualRouterInput {
3914	s.Spec = v
3915	return s
3916}
3917
3918// SetTags sets the Tags field's value.
3919func (s *CreateVirtualRouterInput) SetTags(v []*TagRef) *CreateVirtualRouterInput {
3920	s.Tags = v
3921	return s
3922}
3923
3924// SetVirtualRouterName sets the VirtualRouterName field's value.
3925func (s *CreateVirtualRouterInput) SetVirtualRouterName(v string) *CreateVirtualRouterInput {
3926	s.VirtualRouterName = &v
3927	return s
3928}
3929
3930type CreateVirtualRouterOutput struct {
3931	_ struct{} `type:"structure" payload:"VirtualRouter"`
3932
3933	// An object that represents a virtual router returned by a describe operation.
3934	//
3935	// VirtualRouter is a required field
3936	VirtualRouter *VirtualRouterData `locationName:"virtualRouter" type:"structure" required:"true"`
3937}
3938
3939// String returns the string representation
3940func (s CreateVirtualRouterOutput) String() string {
3941	return awsutil.Prettify(s)
3942}
3943
3944// GoString returns the string representation
3945func (s CreateVirtualRouterOutput) GoString() string {
3946	return s.String()
3947}
3948
3949// SetVirtualRouter sets the VirtualRouter field's value.
3950func (s *CreateVirtualRouterOutput) SetVirtualRouter(v *VirtualRouterData) *CreateVirtualRouterOutput {
3951	s.VirtualRouter = v
3952	return s
3953}
3954
3955type CreateVirtualServiceInput struct {
3956	_ struct{} `type:"structure"`
3957
3958	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
3959
3960	// MeshName is a required field
3961	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
3962
3963	// An object that represents the specification of a virtual service.
3964	//
3965	// Spec is a required field
3966	Spec *VirtualServiceSpec `locationName:"spec" type:"structure" required:"true"`
3967
3968	Tags []*TagRef `locationName:"tags" type:"list"`
3969
3970	// VirtualServiceName is a required field
3971	VirtualServiceName *string `locationName:"virtualServiceName" type:"string" required:"true"`
3972}
3973
3974// String returns the string representation
3975func (s CreateVirtualServiceInput) String() string {
3976	return awsutil.Prettify(s)
3977}
3978
3979// GoString returns the string representation
3980func (s CreateVirtualServiceInput) GoString() string {
3981	return s.String()
3982}
3983
3984// Validate inspects the fields of the type to determine if they are valid.
3985func (s *CreateVirtualServiceInput) Validate() error {
3986	invalidParams := request.ErrInvalidParams{Context: "CreateVirtualServiceInput"}
3987	if s.MeshName == nil {
3988		invalidParams.Add(request.NewErrParamRequired("MeshName"))
3989	}
3990	if s.MeshName != nil && len(*s.MeshName) < 1 {
3991		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
3992	}
3993	if s.Spec == nil {
3994		invalidParams.Add(request.NewErrParamRequired("Spec"))
3995	}
3996	if s.VirtualServiceName == nil {
3997		invalidParams.Add(request.NewErrParamRequired("VirtualServiceName"))
3998	}
3999	if s.Spec != nil {
4000		if err := s.Spec.Validate(); err != nil {
4001			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
4002		}
4003	}
4004	if s.Tags != nil {
4005		for i, v := range s.Tags {
4006			if v == nil {
4007				continue
4008			}
4009			if err := v.Validate(); err != nil {
4010				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
4011			}
4012		}
4013	}
4014
4015	if invalidParams.Len() > 0 {
4016		return invalidParams
4017	}
4018	return nil
4019}
4020
4021// SetClientToken sets the ClientToken field's value.
4022func (s *CreateVirtualServiceInput) SetClientToken(v string) *CreateVirtualServiceInput {
4023	s.ClientToken = &v
4024	return s
4025}
4026
4027// SetMeshName sets the MeshName field's value.
4028func (s *CreateVirtualServiceInput) SetMeshName(v string) *CreateVirtualServiceInput {
4029	s.MeshName = &v
4030	return s
4031}
4032
4033// SetSpec sets the Spec field's value.
4034func (s *CreateVirtualServiceInput) SetSpec(v *VirtualServiceSpec) *CreateVirtualServiceInput {
4035	s.Spec = v
4036	return s
4037}
4038
4039// SetTags sets the Tags field's value.
4040func (s *CreateVirtualServiceInput) SetTags(v []*TagRef) *CreateVirtualServiceInput {
4041	s.Tags = v
4042	return s
4043}
4044
4045// SetVirtualServiceName sets the VirtualServiceName field's value.
4046func (s *CreateVirtualServiceInput) SetVirtualServiceName(v string) *CreateVirtualServiceInput {
4047	s.VirtualServiceName = &v
4048	return s
4049}
4050
4051type CreateVirtualServiceOutput struct {
4052	_ struct{} `type:"structure" payload:"VirtualService"`
4053
4054	// An object that represents a virtual service returned by a describe operation.
4055	//
4056	// VirtualService is a required field
4057	VirtualService *VirtualServiceData `locationName:"virtualService" type:"structure" required:"true"`
4058}
4059
4060// String returns the string representation
4061func (s CreateVirtualServiceOutput) String() string {
4062	return awsutil.Prettify(s)
4063}
4064
4065// GoString returns the string representation
4066func (s CreateVirtualServiceOutput) GoString() string {
4067	return s.String()
4068}
4069
4070// SetVirtualService sets the VirtualService field's value.
4071func (s *CreateVirtualServiceOutput) SetVirtualService(v *VirtualServiceData) *CreateVirtualServiceOutput {
4072	s.VirtualService = v
4073	return s
4074}
4075
4076type DeleteMeshInput struct {
4077	_ struct{} `type:"structure"`
4078
4079	// MeshName is a required field
4080	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
4081}
4082
4083// String returns the string representation
4084func (s DeleteMeshInput) String() string {
4085	return awsutil.Prettify(s)
4086}
4087
4088// GoString returns the string representation
4089func (s DeleteMeshInput) GoString() string {
4090	return s.String()
4091}
4092
4093// Validate inspects the fields of the type to determine if they are valid.
4094func (s *DeleteMeshInput) Validate() error {
4095	invalidParams := request.ErrInvalidParams{Context: "DeleteMeshInput"}
4096	if s.MeshName == nil {
4097		invalidParams.Add(request.NewErrParamRequired("MeshName"))
4098	}
4099	if s.MeshName != nil && len(*s.MeshName) < 1 {
4100		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
4101	}
4102
4103	if invalidParams.Len() > 0 {
4104		return invalidParams
4105	}
4106	return nil
4107}
4108
4109// SetMeshName sets the MeshName field's value.
4110func (s *DeleteMeshInput) SetMeshName(v string) *DeleteMeshInput {
4111	s.MeshName = &v
4112	return s
4113}
4114
4115type DeleteMeshOutput struct {
4116	_ struct{} `type:"structure" payload:"Mesh"`
4117
4118	// An object that represents a service mesh returned by a describe operation.
4119	//
4120	// Mesh is a required field
4121	Mesh *MeshData `locationName:"mesh" type:"structure" required:"true"`
4122}
4123
4124// String returns the string representation
4125func (s DeleteMeshOutput) String() string {
4126	return awsutil.Prettify(s)
4127}
4128
4129// GoString returns the string representation
4130func (s DeleteMeshOutput) GoString() string {
4131	return s.String()
4132}
4133
4134// SetMesh sets the Mesh field's value.
4135func (s *DeleteMeshOutput) SetMesh(v *MeshData) *DeleteMeshOutput {
4136	s.Mesh = v
4137	return s
4138}
4139
4140type DeleteRouteInput struct {
4141	_ struct{} `type:"structure"`
4142
4143	// MeshName is a required field
4144	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
4145
4146	// RouteName is a required field
4147	RouteName *string `location:"uri" locationName:"routeName" min:"1" type:"string" required:"true"`
4148
4149	// VirtualRouterName is a required field
4150	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
4151}
4152
4153// String returns the string representation
4154func (s DeleteRouteInput) String() string {
4155	return awsutil.Prettify(s)
4156}
4157
4158// GoString returns the string representation
4159func (s DeleteRouteInput) GoString() string {
4160	return s.String()
4161}
4162
4163// Validate inspects the fields of the type to determine if they are valid.
4164func (s *DeleteRouteInput) Validate() error {
4165	invalidParams := request.ErrInvalidParams{Context: "DeleteRouteInput"}
4166	if s.MeshName == nil {
4167		invalidParams.Add(request.NewErrParamRequired("MeshName"))
4168	}
4169	if s.MeshName != nil && len(*s.MeshName) < 1 {
4170		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
4171	}
4172	if s.RouteName == nil {
4173		invalidParams.Add(request.NewErrParamRequired("RouteName"))
4174	}
4175	if s.RouteName != nil && len(*s.RouteName) < 1 {
4176		invalidParams.Add(request.NewErrParamMinLen("RouteName", 1))
4177	}
4178	if s.VirtualRouterName == nil {
4179		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
4180	}
4181	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
4182		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
4183	}
4184
4185	if invalidParams.Len() > 0 {
4186		return invalidParams
4187	}
4188	return nil
4189}
4190
4191// SetMeshName sets the MeshName field's value.
4192func (s *DeleteRouteInput) SetMeshName(v string) *DeleteRouteInput {
4193	s.MeshName = &v
4194	return s
4195}
4196
4197// SetRouteName sets the RouteName field's value.
4198func (s *DeleteRouteInput) SetRouteName(v string) *DeleteRouteInput {
4199	s.RouteName = &v
4200	return s
4201}
4202
4203// SetVirtualRouterName sets the VirtualRouterName field's value.
4204func (s *DeleteRouteInput) SetVirtualRouterName(v string) *DeleteRouteInput {
4205	s.VirtualRouterName = &v
4206	return s
4207}
4208
4209type DeleteRouteOutput struct {
4210	_ struct{} `type:"structure" payload:"Route"`
4211
4212	// An object that represents a route returned by a describe operation.
4213	//
4214	// Route is a required field
4215	Route *RouteData `locationName:"route" type:"structure" required:"true"`
4216}
4217
4218// String returns the string representation
4219func (s DeleteRouteOutput) String() string {
4220	return awsutil.Prettify(s)
4221}
4222
4223// GoString returns the string representation
4224func (s DeleteRouteOutput) GoString() string {
4225	return s.String()
4226}
4227
4228// SetRoute sets the Route field's value.
4229func (s *DeleteRouteOutput) SetRoute(v *RouteData) *DeleteRouteOutput {
4230	s.Route = v
4231	return s
4232}
4233
4234type DeleteVirtualNodeInput struct {
4235	_ struct{} `type:"structure"`
4236
4237	// MeshName is a required field
4238	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
4239
4240	// VirtualNodeName is a required field
4241	VirtualNodeName *string `location:"uri" locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
4242}
4243
4244// String returns the string representation
4245func (s DeleteVirtualNodeInput) String() string {
4246	return awsutil.Prettify(s)
4247}
4248
4249// GoString returns the string representation
4250func (s DeleteVirtualNodeInput) GoString() string {
4251	return s.String()
4252}
4253
4254// Validate inspects the fields of the type to determine if they are valid.
4255func (s *DeleteVirtualNodeInput) Validate() error {
4256	invalidParams := request.ErrInvalidParams{Context: "DeleteVirtualNodeInput"}
4257	if s.MeshName == nil {
4258		invalidParams.Add(request.NewErrParamRequired("MeshName"))
4259	}
4260	if s.MeshName != nil && len(*s.MeshName) < 1 {
4261		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
4262	}
4263	if s.VirtualNodeName == nil {
4264		invalidParams.Add(request.NewErrParamRequired("VirtualNodeName"))
4265	}
4266	if s.VirtualNodeName != nil && len(*s.VirtualNodeName) < 1 {
4267		invalidParams.Add(request.NewErrParamMinLen("VirtualNodeName", 1))
4268	}
4269
4270	if invalidParams.Len() > 0 {
4271		return invalidParams
4272	}
4273	return nil
4274}
4275
4276// SetMeshName sets the MeshName field's value.
4277func (s *DeleteVirtualNodeInput) SetMeshName(v string) *DeleteVirtualNodeInput {
4278	s.MeshName = &v
4279	return s
4280}
4281
4282// SetVirtualNodeName sets the VirtualNodeName field's value.
4283func (s *DeleteVirtualNodeInput) SetVirtualNodeName(v string) *DeleteVirtualNodeInput {
4284	s.VirtualNodeName = &v
4285	return s
4286}
4287
4288type DeleteVirtualNodeOutput struct {
4289	_ struct{} `type:"structure" payload:"VirtualNode"`
4290
4291	// An object that represents a virtual node returned by a describe operation.
4292	//
4293	// VirtualNode is a required field
4294	VirtualNode *VirtualNodeData `locationName:"virtualNode" type:"structure" required:"true"`
4295}
4296
4297// String returns the string representation
4298func (s DeleteVirtualNodeOutput) String() string {
4299	return awsutil.Prettify(s)
4300}
4301
4302// GoString returns the string representation
4303func (s DeleteVirtualNodeOutput) GoString() string {
4304	return s.String()
4305}
4306
4307// SetVirtualNode sets the VirtualNode field's value.
4308func (s *DeleteVirtualNodeOutput) SetVirtualNode(v *VirtualNodeData) *DeleteVirtualNodeOutput {
4309	s.VirtualNode = v
4310	return s
4311}
4312
4313type DeleteVirtualRouterInput struct {
4314	_ struct{} `type:"structure"`
4315
4316	// MeshName is a required field
4317	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
4318
4319	// VirtualRouterName is a required field
4320	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
4321}
4322
4323// String returns the string representation
4324func (s DeleteVirtualRouterInput) String() string {
4325	return awsutil.Prettify(s)
4326}
4327
4328// GoString returns the string representation
4329func (s DeleteVirtualRouterInput) GoString() string {
4330	return s.String()
4331}
4332
4333// Validate inspects the fields of the type to determine if they are valid.
4334func (s *DeleteVirtualRouterInput) Validate() error {
4335	invalidParams := request.ErrInvalidParams{Context: "DeleteVirtualRouterInput"}
4336	if s.MeshName == nil {
4337		invalidParams.Add(request.NewErrParamRequired("MeshName"))
4338	}
4339	if s.MeshName != nil && len(*s.MeshName) < 1 {
4340		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
4341	}
4342	if s.VirtualRouterName == nil {
4343		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
4344	}
4345	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
4346		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
4347	}
4348
4349	if invalidParams.Len() > 0 {
4350		return invalidParams
4351	}
4352	return nil
4353}
4354
4355// SetMeshName sets the MeshName field's value.
4356func (s *DeleteVirtualRouterInput) SetMeshName(v string) *DeleteVirtualRouterInput {
4357	s.MeshName = &v
4358	return s
4359}
4360
4361// SetVirtualRouterName sets the VirtualRouterName field's value.
4362func (s *DeleteVirtualRouterInput) SetVirtualRouterName(v string) *DeleteVirtualRouterInput {
4363	s.VirtualRouterName = &v
4364	return s
4365}
4366
4367type DeleteVirtualRouterOutput struct {
4368	_ struct{} `type:"structure" payload:"VirtualRouter"`
4369
4370	// An object that represents a virtual router returned by a describe operation.
4371	//
4372	// VirtualRouter is a required field
4373	VirtualRouter *VirtualRouterData `locationName:"virtualRouter" type:"structure" required:"true"`
4374}
4375
4376// String returns the string representation
4377func (s DeleteVirtualRouterOutput) String() string {
4378	return awsutil.Prettify(s)
4379}
4380
4381// GoString returns the string representation
4382func (s DeleteVirtualRouterOutput) GoString() string {
4383	return s.String()
4384}
4385
4386// SetVirtualRouter sets the VirtualRouter field's value.
4387func (s *DeleteVirtualRouterOutput) SetVirtualRouter(v *VirtualRouterData) *DeleteVirtualRouterOutput {
4388	s.VirtualRouter = v
4389	return s
4390}
4391
4392type DeleteVirtualServiceInput struct {
4393	_ struct{} `type:"structure"`
4394
4395	// MeshName is a required field
4396	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
4397
4398	// VirtualServiceName is a required field
4399	VirtualServiceName *string `location:"uri" locationName:"virtualServiceName" type:"string" required:"true"`
4400}
4401
4402// String returns the string representation
4403func (s DeleteVirtualServiceInput) String() string {
4404	return awsutil.Prettify(s)
4405}
4406
4407// GoString returns the string representation
4408func (s DeleteVirtualServiceInput) GoString() string {
4409	return s.String()
4410}
4411
4412// Validate inspects the fields of the type to determine if they are valid.
4413func (s *DeleteVirtualServiceInput) Validate() error {
4414	invalidParams := request.ErrInvalidParams{Context: "DeleteVirtualServiceInput"}
4415	if s.MeshName == nil {
4416		invalidParams.Add(request.NewErrParamRequired("MeshName"))
4417	}
4418	if s.MeshName != nil && len(*s.MeshName) < 1 {
4419		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
4420	}
4421	if s.VirtualServiceName == nil {
4422		invalidParams.Add(request.NewErrParamRequired("VirtualServiceName"))
4423	}
4424	if s.VirtualServiceName != nil && len(*s.VirtualServiceName) < 1 {
4425		invalidParams.Add(request.NewErrParamMinLen("VirtualServiceName", 1))
4426	}
4427
4428	if invalidParams.Len() > 0 {
4429		return invalidParams
4430	}
4431	return nil
4432}
4433
4434// SetMeshName sets the MeshName field's value.
4435func (s *DeleteVirtualServiceInput) SetMeshName(v string) *DeleteVirtualServiceInput {
4436	s.MeshName = &v
4437	return s
4438}
4439
4440// SetVirtualServiceName sets the VirtualServiceName field's value.
4441func (s *DeleteVirtualServiceInput) SetVirtualServiceName(v string) *DeleteVirtualServiceInput {
4442	s.VirtualServiceName = &v
4443	return s
4444}
4445
4446type DeleteVirtualServiceOutput struct {
4447	_ struct{} `type:"structure" payload:"VirtualService"`
4448
4449	// An object that represents a virtual service returned by a describe operation.
4450	//
4451	// VirtualService is a required field
4452	VirtualService *VirtualServiceData `locationName:"virtualService" type:"structure" required:"true"`
4453}
4454
4455// String returns the string representation
4456func (s DeleteVirtualServiceOutput) String() string {
4457	return awsutil.Prettify(s)
4458}
4459
4460// GoString returns the string representation
4461func (s DeleteVirtualServiceOutput) GoString() string {
4462	return s.String()
4463}
4464
4465// SetVirtualService sets the VirtualService field's value.
4466func (s *DeleteVirtualServiceOutput) SetVirtualService(v *VirtualServiceData) *DeleteVirtualServiceOutput {
4467	s.VirtualService = v
4468	return s
4469}
4470
4471type DescribeMeshInput struct {
4472	_ struct{} `type:"structure"`
4473
4474	// MeshName is a required field
4475	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
4476}
4477
4478// String returns the string representation
4479func (s DescribeMeshInput) String() string {
4480	return awsutil.Prettify(s)
4481}
4482
4483// GoString returns the string representation
4484func (s DescribeMeshInput) GoString() string {
4485	return s.String()
4486}
4487
4488// Validate inspects the fields of the type to determine if they are valid.
4489func (s *DescribeMeshInput) Validate() error {
4490	invalidParams := request.ErrInvalidParams{Context: "DescribeMeshInput"}
4491	if s.MeshName == nil {
4492		invalidParams.Add(request.NewErrParamRequired("MeshName"))
4493	}
4494	if s.MeshName != nil && len(*s.MeshName) < 1 {
4495		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
4496	}
4497
4498	if invalidParams.Len() > 0 {
4499		return invalidParams
4500	}
4501	return nil
4502}
4503
4504// SetMeshName sets the MeshName field's value.
4505func (s *DescribeMeshInput) SetMeshName(v string) *DescribeMeshInput {
4506	s.MeshName = &v
4507	return s
4508}
4509
4510type DescribeMeshOutput struct {
4511	_ struct{} `type:"structure" payload:"Mesh"`
4512
4513	// An object that represents a service mesh returned by a describe operation.
4514	//
4515	// Mesh is a required field
4516	Mesh *MeshData `locationName:"mesh" type:"structure" required:"true"`
4517}
4518
4519// String returns the string representation
4520func (s DescribeMeshOutput) String() string {
4521	return awsutil.Prettify(s)
4522}
4523
4524// GoString returns the string representation
4525func (s DescribeMeshOutput) GoString() string {
4526	return s.String()
4527}
4528
4529// SetMesh sets the Mesh field's value.
4530func (s *DescribeMeshOutput) SetMesh(v *MeshData) *DescribeMeshOutput {
4531	s.Mesh = v
4532	return s
4533}
4534
4535type DescribeRouteInput struct {
4536	_ struct{} `type:"structure"`
4537
4538	// MeshName is a required field
4539	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
4540
4541	// RouteName is a required field
4542	RouteName *string `location:"uri" locationName:"routeName" min:"1" type:"string" required:"true"`
4543
4544	// VirtualRouterName is a required field
4545	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
4546}
4547
4548// String returns the string representation
4549func (s DescribeRouteInput) String() string {
4550	return awsutil.Prettify(s)
4551}
4552
4553// GoString returns the string representation
4554func (s DescribeRouteInput) GoString() string {
4555	return s.String()
4556}
4557
4558// Validate inspects the fields of the type to determine if they are valid.
4559func (s *DescribeRouteInput) Validate() error {
4560	invalidParams := request.ErrInvalidParams{Context: "DescribeRouteInput"}
4561	if s.MeshName == nil {
4562		invalidParams.Add(request.NewErrParamRequired("MeshName"))
4563	}
4564	if s.MeshName != nil && len(*s.MeshName) < 1 {
4565		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
4566	}
4567	if s.RouteName == nil {
4568		invalidParams.Add(request.NewErrParamRequired("RouteName"))
4569	}
4570	if s.RouteName != nil && len(*s.RouteName) < 1 {
4571		invalidParams.Add(request.NewErrParamMinLen("RouteName", 1))
4572	}
4573	if s.VirtualRouterName == nil {
4574		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
4575	}
4576	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
4577		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
4578	}
4579
4580	if invalidParams.Len() > 0 {
4581		return invalidParams
4582	}
4583	return nil
4584}
4585
4586// SetMeshName sets the MeshName field's value.
4587func (s *DescribeRouteInput) SetMeshName(v string) *DescribeRouteInput {
4588	s.MeshName = &v
4589	return s
4590}
4591
4592// SetRouteName sets the RouteName field's value.
4593func (s *DescribeRouteInput) SetRouteName(v string) *DescribeRouteInput {
4594	s.RouteName = &v
4595	return s
4596}
4597
4598// SetVirtualRouterName sets the VirtualRouterName field's value.
4599func (s *DescribeRouteInput) SetVirtualRouterName(v string) *DescribeRouteInput {
4600	s.VirtualRouterName = &v
4601	return s
4602}
4603
4604type DescribeRouteOutput struct {
4605	_ struct{} `type:"structure" payload:"Route"`
4606
4607	// An object that represents a route returned by a describe operation.
4608	//
4609	// Route is a required field
4610	Route *RouteData `locationName:"route" type:"structure" required:"true"`
4611}
4612
4613// String returns the string representation
4614func (s DescribeRouteOutput) String() string {
4615	return awsutil.Prettify(s)
4616}
4617
4618// GoString returns the string representation
4619func (s DescribeRouteOutput) GoString() string {
4620	return s.String()
4621}
4622
4623// SetRoute sets the Route field's value.
4624func (s *DescribeRouteOutput) SetRoute(v *RouteData) *DescribeRouteOutput {
4625	s.Route = v
4626	return s
4627}
4628
4629type DescribeVirtualNodeInput struct {
4630	_ struct{} `type:"structure"`
4631
4632	// MeshName is a required field
4633	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
4634
4635	// VirtualNodeName is a required field
4636	VirtualNodeName *string `location:"uri" locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
4637}
4638
4639// String returns the string representation
4640func (s DescribeVirtualNodeInput) String() string {
4641	return awsutil.Prettify(s)
4642}
4643
4644// GoString returns the string representation
4645func (s DescribeVirtualNodeInput) GoString() string {
4646	return s.String()
4647}
4648
4649// Validate inspects the fields of the type to determine if they are valid.
4650func (s *DescribeVirtualNodeInput) Validate() error {
4651	invalidParams := request.ErrInvalidParams{Context: "DescribeVirtualNodeInput"}
4652	if s.MeshName == nil {
4653		invalidParams.Add(request.NewErrParamRequired("MeshName"))
4654	}
4655	if s.MeshName != nil && len(*s.MeshName) < 1 {
4656		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
4657	}
4658	if s.VirtualNodeName == nil {
4659		invalidParams.Add(request.NewErrParamRequired("VirtualNodeName"))
4660	}
4661	if s.VirtualNodeName != nil && len(*s.VirtualNodeName) < 1 {
4662		invalidParams.Add(request.NewErrParamMinLen("VirtualNodeName", 1))
4663	}
4664
4665	if invalidParams.Len() > 0 {
4666		return invalidParams
4667	}
4668	return nil
4669}
4670
4671// SetMeshName sets the MeshName field's value.
4672func (s *DescribeVirtualNodeInput) SetMeshName(v string) *DescribeVirtualNodeInput {
4673	s.MeshName = &v
4674	return s
4675}
4676
4677// SetVirtualNodeName sets the VirtualNodeName field's value.
4678func (s *DescribeVirtualNodeInput) SetVirtualNodeName(v string) *DescribeVirtualNodeInput {
4679	s.VirtualNodeName = &v
4680	return s
4681}
4682
4683type DescribeVirtualNodeOutput struct {
4684	_ struct{} `type:"structure" payload:"VirtualNode"`
4685
4686	// An object that represents a virtual node returned by a describe operation.
4687	//
4688	// VirtualNode is a required field
4689	VirtualNode *VirtualNodeData `locationName:"virtualNode" type:"structure" required:"true"`
4690}
4691
4692// String returns the string representation
4693func (s DescribeVirtualNodeOutput) String() string {
4694	return awsutil.Prettify(s)
4695}
4696
4697// GoString returns the string representation
4698func (s DescribeVirtualNodeOutput) GoString() string {
4699	return s.String()
4700}
4701
4702// SetVirtualNode sets the VirtualNode field's value.
4703func (s *DescribeVirtualNodeOutput) SetVirtualNode(v *VirtualNodeData) *DescribeVirtualNodeOutput {
4704	s.VirtualNode = v
4705	return s
4706}
4707
4708type DescribeVirtualRouterInput struct {
4709	_ struct{} `type:"structure"`
4710
4711	// MeshName is a required field
4712	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
4713
4714	// VirtualRouterName is a required field
4715	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
4716}
4717
4718// String returns the string representation
4719func (s DescribeVirtualRouterInput) String() string {
4720	return awsutil.Prettify(s)
4721}
4722
4723// GoString returns the string representation
4724func (s DescribeVirtualRouterInput) GoString() string {
4725	return s.String()
4726}
4727
4728// Validate inspects the fields of the type to determine if they are valid.
4729func (s *DescribeVirtualRouterInput) Validate() error {
4730	invalidParams := request.ErrInvalidParams{Context: "DescribeVirtualRouterInput"}
4731	if s.MeshName == nil {
4732		invalidParams.Add(request.NewErrParamRequired("MeshName"))
4733	}
4734	if s.MeshName != nil && len(*s.MeshName) < 1 {
4735		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
4736	}
4737	if s.VirtualRouterName == nil {
4738		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
4739	}
4740	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
4741		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
4742	}
4743
4744	if invalidParams.Len() > 0 {
4745		return invalidParams
4746	}
4747	return nil
4748}
4749
4750// SetMeshName sets the MeshName field's value.
4751func (s *DescribeVirtualRouterInput) SetMeshName(v string) *DescribeVirtualRouterInput {
4752	s.MeshName = &v
4753	return s
4754}
4755
4756// SetVirtualRouterName sets the VirtualRouterName field's value.
4757func (s *DescribeVirtualRouterInput) SetVirtualRouterName(v string) *DescribeVirtualRouterInput {
4758	s.VirtualRouterName = &v
4759	return s
4760}
4761
4762type DescribeVirtualRouterOutput struct {
4763	_ struct{} `type:"structure" payload:"VirtualRouter"`
4764
4765	// An object that represents a virtual router returned by a describe operation.
4766	//
4767	// VirtualRouter is a required field
4768	VirtualRouter *VirtualRouterData `locationName:"virtualRouter" type:"structure" required:"true"`
4769}
4770
4771// String returns the string representation
4772func (s DescribeVirtualRouterOutput) String() string {
4773	return awsutil.Prettify(s)
4774}
4775
4776// GoString returns the string representation
4777func (s DescribeVirtualRouterOutput) GoString() string {
4778	return s.String()
4779}
4780
4781// SetVirtualRouter sets the VirtualRouter field's value.
4782func (s *DescribeVirtualRouterOutput) SetVirtualRouter(v *VirtualRouterData) *DescribeVirtualRouterOutput {
4783	s.VirtualRouter = v
4784	return s
4785}
4786
4787type DescribeVirtualServiceInput struct {
4788	_ struct{} `type:"structure"`
4789
4790	// MeshName is a required field
4791	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
4792
4793	// VirtualServiceName is a required field
4794	VirtualServiceName *string `location:"uri" locationName:"virtualServiceName" type:"string" required:"true"`
4795}
4796
4797// String returns the string representation
4798func (s DescribeVirtualServiceInput) String() string {
4799	return awsutil.Prettify(s)
4800}
4801
4802// GoString returns the string representation
4803func (s DescribeVirtualServiceInput) GoString() string {
4804	return s.String()
4805}
4806
4807// Validate inspects the fields of the type to determine if they are valid.
4808func (s *DescribeVirtualServiceInput) Validate() error {
4809	invalidParams := request.ErrInvalidParams{Context: "DescribeVirtualServiceInput"}
4810	if s.MeshName == nil {
4811		invalidParams.Add(request.NewErrParamRequired("MeshName"))
4812	}
4813	if s.MeshName != nil && len(*s.MeshName) < 1 {
4814		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
4815	}
4816	if s.VirtualServiceName == nil {
4817		invalidParams.Add(request.NewErrParamRequired("VirtualServiceName"))
4818	}
4819	if s.VirtualServiceName != nil && len(*s.VirtualServiceName) < 1 {
4820		invalidParams.Add(request.NewErrParamMinLen("VirtualServiceName", 1))
4821	}
4822
4823	if invalidParams.Len() > 0 {
4824		return invalidParams
4825	}
4826	return nil
4827}
4828
4829// SetMeshName sets the MeshName field's value.
4830func (s *DescribeVirtualServiceInput) SetMeshName(v string) *DescribeVirtualServiceInput {
4831	s.MeshName = &v
4832	return s
4833}
4834
4835// SetVirtualServiceName sets the VirtualServiceName field's value.
4836func (s *DescribeVirtualServiceInput) SetVirtualServiceName(v string) *DescribeVirtualServiceInput {
4837	s.VirtualServiceName = &v
4838	return s
4839}
4840
4841type DescribeVirtualServiceOutput struct {
4842	_ struct{} `type:"structure" payload:"VirtualService"`
4843
4844	// An object that represents a virtual service returned by a describe operation.
4845	//
4846	// VirtualService is a required field
4847	VirtualService *VirtualServiceData `locationName:"virtualService" type:"structure" required:"true"`
4848}
4849
4850// String returns the string representation
4851func (s DescribeVirtualServiceOutput) String() string {
4852	return awsutil.Prettify(s)
4853}
4854
4855// GoString returns the string representation
4856func (s DescribeVirtualServiceOutput) GoString() string {
4857	return s.String()
4858}
4859
4860// SetVirtualService sets the VirtualService field's value.
4861func (s *DescribeVirtualServiceOutput) SetVirtualService(v *VirtualServiceData) *DescribeVirtualServiceOutput {
4862	s.VirtualService = v
4863	return s
4864}
4865
4866// An object that represents the DNS service discovery information for your
4867// virtual node.
4868type DnsServiceDiscovery struct {
4869	_ struct{} `type:"structure"`
4870
4871	// Hostname is a required field
4872	Hostname *string `locationName:"hostname" type:"string" required:"true"`
4873}
4874
4875// String returns the string representation
4876func (s DnsServiceDiscovery) String() string {
4877	return awsutil.Prettify(s)
4878}
4879
4880// GoString returns the string representation
4881func (s DnsServiceDiscovery) GoString() string {
4882	return s.String()
4883}
4884
4885// Validate inspects the fields of the type to determine if they are valid.
4886func (s *DnsServiceDiscovery) Validate() error {
4887	invalidParams := request.ErrInvalidParams{Context: "DnsServiceDiscovery"}
4888	if s.Hostname == nil {
4889		invalidParams.Add(request.NewErrParamRequired("Hostname"))
4890	}
4891
4892	if invalidParams.Len() > 0 {
4893		return invalidParams
4894	}
4895	return nil
4896}
4897
4898// SetHostname sets the Hostname field's value.
4899func (s *DnsServiceDiscovery) SetHostname(v string) *DnsServiceDiscovery {
4900	s.Hostname = &v
4901	return s
4902}
4903
4904// An object that represents a duration of time.
4905type Duration struct {
4906	_ struct{} `type:"structure"`
4907
4908	Unit *string `locationName:"unit" type:"string" enum:"DurationUnit"`
4909
4910	Value *int64 `locationName:"value" type:"long"`
4911}
4912
4913// String returns the string representation
4914func (s Duration) String() string {
4915	return awsutil.Prettify(s)
4916}
4917
4918// GoString returns the string representation
4919func (s Duration) GoString() string {
4920	return s.String()
4921}
4922
4923// SetUnit sets the Unit field's value.
4924func (s *Duration) SetUnit(v string) *Duration {
4925	s.Unit = &v
4926	return s
4927}
4928
4929// SetValue sets the Value field's value.
4930func (s *Duration) SetValue(v int64) *Duration {
4931	s.Value = &v
4932	return s
4933}
4934
4935// An object that represents the egress filter rules for a service mesh.
4936type EgressFilter struct {
4937	_ struct{} `type:"structure"`
4938
4939	// Type is a required field
4940	Type *string `locationName:"type" type:"string" required:"true" enum:"EgressFilterType"`
4941}
4942
4943// String returns the string representation
4944func (s EgressFilter) String() string {
4945	return awsutil.Prettify(s)
4946}
4947
4948// GoString returns the string representation
4949func (s EgressFilter) GoString() string {
4950	return s.String()
4951}
4952
4953// Validate inspects the fields of the type to determine if they are valid.
4954func (s *EgressFilter) Validate() error {
4955	invalidParams := request.ErrInvalidParams{Context: "EgressFilter"}
4956	if s.Type == nil {
4957		invalidParams.Add(request.NewErrParamRequired("Type"))
4958	}
4959
4960	if invalidParams.Len() > 0 {
4961		return invalidParams
4962	}
4963	return nil
4964}
4965
4966// SetType sets the Type field's value.
4967func (s *EgressFilter) SetType(v string) *EgressFilter {
4968	s.Type = &v
4969	return s
4970}
4971
4972// An object that represents an access log file.
4973type FileAccessLog struct {
4974	_ struct{} `type:"structure"`
4975
4976	// Path is a required field
4977	Path *string `locationName:"path" min:"1" type:"string" required:"true"`
4978}
4979
4980// String returns the string representation
4981func (s FileAccessLog) String() string {
4982	return awsutil.Prettify(s)
4983}
4984
4985// GoString returns the string representation
4986func (s FileAccessLog) GoString() string {
4987	return s.String()
4988}
4989
4990// Validate inspects the fields of the type to determine if they are valid.
4991func (s *FileAccessLog) Validate() error {
4992	invalidParams := request.ErrInvalidParams{Context: "FileAccessLog"}
4993	if s.Path == nil {
4994		invalidParams.Add(request.NewErrParamRequired("Path"))
4995	}
4996	if s.Path != nil && len(*s.Path) < 1 {
4997		invalidParams.Add(request.NewErrParamMinLen("Path", 1))
4998	}
4999
5000	if invalidParams.Len() > 0 {
5001		return invalidParams
5002	}
5003	return nil
5004}
5005
5006// SetPath sets the Path field's value.
5007func (s *FileAccessLog) SetPath(v string) *FileAccessLog {
5008	s.Path = &v
5009	return s
5010}
5011
5012// An object that represents a retry policy. Specify at least one value for
5013// at least one of the types of RetryEvents, a value for maxRetries, and a value
5014// for perRetryTimeout.
5015type GrpcRetryPolicy struct {
5016	_ struct{} `type:"structure"`
5017
5018	GrpcRetryEvents []*string `locationName:"grpcRetryEvents" min:"1" type:"list"`
5019
5020	HttpRetryEvents []*string `locationName:"httpRetryEvents" min:"1" type:"list"`
5021
5022	// MaxRetries is a required field
5023	MaxRetries *int64 `locationName:"maxRetries" type:"long" required:"true"`
5024
5025	// An object that represents a duration of time.
5026	//
5027	// PerRetryTimeout is a required field
5028	PerRetryTimeout *Duration `locationName:"perRetryTimeout" type:"structure" required:"true"`
5029
5030	TcpRetryEvents []*string `locationName:"tcpRetryEvents" min:"1" type:"list"`
5031}
5032
5033// String returns the string representation
5034func (s GrpcRetryPolicy) String() string {
5035	return awsutil.Prettify(s)
5036}
5037
5038// GoString returns the string representation
5039func (s GrpcRetryPolicy) GoString() string {
5040	return s.String()
5041}
5042
5043// Validate inspects the fields of the type to determine if they are valid.
5044func (s *GrpcRetryPolicy) Validate() error {
5045	invalidParams := request.ErrInvalidParams{Context: "GrpcRetryPolicy"}
5046	if s.GrpcRetryEvents != nil && len(s.GrpcRetryEvents) < 1 {
5047		invalidParams.Add(request.NewErrParamMinLen("GrpcRetryEvents", 1))
5048	}
5049	if s.HttpRetryEvents != nil && len(s.HttpRetryEvents) < 1 {
5050		invalidParams.Add(request.NewErrParamMinLen("HttpRetryEvents", 1))
5051	}
5052	if s.MaxRetries == nil {
5053		invalidParams.Add(request.NewErrParamRequired("MaxRetries"))
5054	}
5055	if s.PerRetryTimeout == nil {
5056		invalidParams.Add(request.NewErrParamRequired("PerRetryTimeout"))
5057	}
5058	if s.TcpRetryEvents != nil && len(s.TcpRetryEvents) < 1 {
5059		invalidParams.Add(request.NewErrParamMinLen("TcpRetryEvents", 1))
5060	}
5061
5062	if invalidParams.Len() > 0 {
5063		return invalidParams
5064	}
5065	return nil
5066}
5067
5068// SetGrpcRetryEvents sets the GrpcRetryEvents field's value.
5069func (s *GrpcRetryPolicy) SetGrpcRetryEvents(v []*string) *GrpcRetryPolicy {
5070	s.GrpcRetryEvents = v
5071	return s
5072}
5073
5074// SetHttpRetryEvents sets the HttpRetryEvents field's value.
5075func (s *GrpcRetryPolicy) SetHttpRetryEvents(v []*string) *GrpcRetryPolicy {
5076	s.HttpRetryEvents = v
5077	return s
5078}
5079
5080// SetMaxRetries sets the MaxRetries field's value.
5081func (s *GrpcRetryPolicy) SetMaxRetries(v int64) *GrpcRetryPolicy {
5082	s.MaxRetries = &v
5083	return s
5084}
5085
5086// SetPerRetryTimeout sets the PerRetryTimeout field's value.
5087func (s *GrpcRetryPolicy) SetPerRetryTimeout(v *Duration) *GrpcRetryPolicy {
5088	s.PerRetryTimeout = v
5089	return s
5090}
5091
5092// SetTcpRetryEvents sets the TcpRetryEvents field's value.
5093func (s *GrpcRetryPolicy) SetTcpRetryEvents(v []*string) *GrpcRetryPolicy {
5094	s.TcpRetryEvents = v
5095	return s
5096}
5097
5098// An object that represents a GRPC route type.
5099type GrpcRoute struct {
5100	_ struct{} `type:"structure"`
5101
5102	// An object that represents the action to take if a match is determined.
5103	//
5104	// Action is a required field
5105	Action *GrpcRouteAction `locationName:"action" type:"structure" required:"true"`
5106
5107	// An object that represents the criteria for determining a request match.
5108	//
5109	// Match is a required field
5110	Match *GrpcRouteMatch `locationName:"match" type:"structure" required:"true"`
5111
5112	// An object that represents a retry policy. Specify at least one value for
5113	// at least one of the types of RetryEvents, a value for maxRetries, and a value
5114	// for perRetryTimeout.
5115	RetryPolicy *GrpcRetryPolicy `locationName:"retryPolicy" type:"structure"`
5116}
5117
5118// String returns the string representation
5119func (s GrpcRoute) String() string {
5120	return awsutil.Prettify(s)
5121}
5122
5123// GoString returns the string representation
5124func (s GrpcRoute) GoString() string {
5125	return s.String()
5126}
5127
5128// Validate inspects the fields of the type to determine if they are valid.
5129func (s *GrpcRoute) Validate() error {
5130	invalidParams := request.ErrInvalidParams{Context: "GrpcRoute"}
5131	if s.Action == nil {
5132		invalidParams.Add(request.NewErrParamRequired("Action"))
5133	}
5134	if s.Match == nil {
5135		invalidParams.Add(request.NewErrParamRequired("Match"))
5136	}
5137	if s.Action != nil {
5138		if err := s.Action.Validate(); err != nil {
5139			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
5140		}
5141	}
5142	if s.Match != nil {
5143		if err := s.Match.Validate(); err != nil {
5144			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
5145		}
5146	}
5147	if s.RetryPolicy != nil {
5148		if err := s.RetryPolicy.Validate(); err != nil {
5149			invalidParams.AddNested("RetryPolicy", err.(request.ErrInvalidParams))
5150		}
5151	}
5152
5153	if invalidParams.Len() > 0 {
5154		return invalidParams
5155	}
5156	return nil
5157}
5158
5159// SetAction sets the Action field's value.
5160func (s *GrpcRoute) SetAction(v *GrpcRouteAction) *GrpcRoute {
5161	s.Action = v
5162	return s
5163}
5164
5165// SetMatch sets the Match field's value.
5166func (s *GrpcRoute) SetMatch(v *GrpcRouteMatch) *GrpcRoute {
5167	s.Match = v
5168	return s
5169}
5170
5171// SetRetryPolicy sets the RetryPolicy field's value.
5172func (s *GrpcRoute) SetRetryPolicy(v *GrpcRetryPolicy) *GrpcRoute {
5173	s.RetryPolicy = v
5174	return s
5175}
5176
5177// An object that represents the action to take if a match is determined.
5178type GrpcRouteAction struct {
5179	_ struct{} `type:"structure"`
5180
5181	// WeightedTargets is a required field
5182	WeightedTargets []*WeightedTarget `locationName:"weightedTargets" min:"1" type:"list" required:"true"`
5183}
5184
5185// String returns the string representation
5186func (s GrpcRouteAction) String() string {
5187	return awsutil.Prettify(s)
5188}
5189
5190// GoString returns the string representation
5191func (s GrpcRouteAction) GoString() string {
5192	return s.String()
5193}
5194
5195// Validate inspects the fields of the type to determine if they are valid.
5196func (s *GrpcRouteAction) Validate() error {
5197	invalidParams := request.ErrInvalidParams{Context: "GrpcRouteAction"}
5198	if s.WeightedTargets == nil {
5199		invalidParams.Add(request.NewErrParamRequired("WeightedTargets"))
5200	}
5201	if s.WeightedTargets != nil && len(s.WeightedTargets) < 1 {
5202		invalidParams.Add(request.NewErrParamMinLen("WeightedTargets", 1))
5203	}
5204	if s.WeightedTargets != nil {
5205		for i, v := range s.WeightedTargets {
5206			if v == nil {
5207				continue
5208			}
5209			if err := v.Validate(); err != nil {
5210				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "WeightedTargets", i), err.(request.ErrInvalidParams))
5211			}
5212		}
5213	}
5214
5215	if invalidParams.Len() > 0 {
5216		return invalidParams
5217	}
5218	return nil
5219}
5220
5221// SetWeightedTargets sets the WeightedTargets field's value.
5222func (s *GrpcRouteAction) SetWeightedTargets(v []*WeightedTarget) *GrpcRouteAction {
5223	s.WeightedTargets = v
5224	return s
5225}
5226
5227// An object that represents the criteria for determining a request match.
5228type GrpcRouteMatch struct {
5229	_ struct{} `type:"structure"`
5230
5231	Metadata []*GrpcRouteMetadata `locationName:"metadata" min:"1" type:"list"`
5232
5233	MethodName *string `locationName:"methodName" min:"1" type:"string"`
5234
5235	ServiceName *string `locationName:"serviceName" type:"string"`
5236}
5237
5238// String returns the string representation
5239func (s GrpcRouteMatch) String() string {
5240	return awsutil.Prettify(s)
5241}
5242
5243// GoString returns the string representation
5244func (s GrpcRouteMatch) GoString() string {
5245	return s.String()
5246}
5247
5248// Validate inspects the fields of the type to determine if they are valid.
5249func (s *GrpcRouteMatch) Validate() error {
5250	invalidParams := request.ErrInvalidParams{Context: "GrpcRouteMatch"}
5251	if s.Metadata != nil && len(s.Metadata) < 1 {
5252		invalidParams.Add(request.NewErrParamMinLen("Metadata", 1))
5253	}
5254	if s.MethodName != nil && len(*s.MethodName) < 1 {
5255		invalidParams.Add(request.NewErrParamMinLen("MethodName", 1))
5256	}
5257	if s.Metadata != nil {
5258		for i, v := range s.Metadata {
5259			if v == nil {
5260				continue
5261			}
5262			if err := v.Validate(); err != nil {
5263				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Metadata", i), err.(request.ErrInvalidParams))
5264			}
5265		}
5266	}
5267
5268	if invalidParams.Len() > 0 {
5269		return invalidParams
5270	}
5271	return nil
5272}
5273
5274// SetMetadata sets the Metadata field's value.
5275func (s *GrpcRouteMatch) SetMetadata(v []*GrpcRouteMetadata) *GrpcRouteMatch {
5276	s.Metadata = v
5277	return s
5278}
5279
5280// SetMethodName sets the MethodName field's value.
5281func (s *GrpcRouteMatch) SetMethodName(v string) *GrpcRouteMatch {
5282	s.MethodName = &v
5283	return s
5284}
5285
5286// SetServiceName sets the ServiceName field's value.
5287func (s *GrpcRouteMatch) SetServiceName(v string) *GrpcRouteMatch {
5288	s.ServiceName = &v
5289	return s
5290}
5291
5292// An object that represents the match metadata for the route.
5293type GrpcRouteMetadata struct {
5294	_ struct{} `type:"structure"`
5295
5296	Invert *bool `locationName:"invert" type:"boolean"`
5297
5298	// An object that represents the match method. Specify one of the match values.
5299	Match *GrpcRouteMetadataMatchMethod `locationName:"match" type:"structure"`
5300
5301	// Name is a required field
5302	Name *string `locationName:"name" min:"1" type:"string" required:"true"`
5303}
5304
5305// String returns the string representation
5306func (s GrpcRouteMetadata) String() string {
5307	return awsutil.Prettify(s)
5308}
5309
5310// GoString returns the string representation
5311func (s GrpcRouteMetadata) GoString() string {
5312	return s.String()
5313}
5314
5315// Validate inspects the fields of the type to determine if they are valid.
5316func (s *GrpcRouteMetadata) Validate() error {
5317	invalidParams := request.ErrInvalidParams{Context: "GrpcRouteMetadata"}
5318	if s.Name == nil {
5319		invalidParams.Add(request.NewErrParamRequired("Name"))
5320	}
5321	if s.Name != nil && len(*s.Name) < 1 {
5322		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
5323	}
5324	if s.Match != nil {
5325		if err := s.Match.Validate(); err != nil {
5326			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
5327		}
5328	}
5329
5330	if invalidParams.Len() > 0 {
5331		return invalidParams
5332	}
5333	return nil
5334}
5335
5336// SetInvert sets the Invert field's value.
5337func (s *GrpcRouteMetadata) SetInvert(v bool) *GrpcRouteMetadata {
5338	s.Invert = &v
5339	return s
5340}
5341
5342// SetMatch sets the Match field's value.
5343func (s *GrpcRouteMetadata) SetMatch(v *GrpcRouteMetadataMatchMethod) *GrpcRouteMetadata {
5344	s.Match = v
5345	return s
5346}
5347
5348// SetName sets the Name field's value.
5349func (s *GrpcRouteMetadata) SetName(v string) *GrpcRouteMetadata {
5350	s.Name = &v
5351	return s
5352}
5353
5354// An object that represents the match method. Specify one of the match values.
5355type GrpcRouteMetadataMatchMethod struct {
5356	_ struct{} `type:"structure"`
5357
5358	Exact *string `locationName:"exact" min:"1" type:"string"`
5359
5360	Prefix *string `locationName:"prefix" min:"1" type:"string"`
5361
5362	// An object that represents the range of values to match on. The first character
5363	// of the range is included in the range, though the last character is not.
5364	// For example, if the range specified were 1-100, only values 1-99 would be
5365	// matched.
5366	Range *MatchRange `locationName:"range" type:"structure"`
5367
5368	Regex *string `locationName:"regex" min:"1" type:"string"`
5369
5370	Suffix *string `locationName:"suffix" min:"1" type:"string"`
5371}
5372
5373// String returns the string representation
5374func (s GrpcRouteMetadataMatchMethod) String() string {
5375	return awsutil.Prettify(s)
5376}
5377
5378// GoString returns the string representation
5379func (s GrpcRouteMetadataMatchMethod) GoString() string {
5380	return s.String()
5381}
5382
5383// Validate inspects the fields of the type to determine if they are valid.
5384func (s *GrpcRouteMetadataMatchMethod) Validate() error {
5385	invalidParams := request.ErrInvalidParams{Context: "GrpcRouteMetadataMatchMethod"}
5386	if s.Exact != nil && len(*s.Exact) < 1 {
5387		invalidParams.Add(request.NewErrParamMinLen("Exact", 1))
5388	}
5389	if s.Prefix != nil && len(*s.Prefix) < 1 {
5390		invalidParams.Add(request.NewErrParamMinLen("Prefix", 1))
5391	}
5392	if s.Regex != nil && len(*s.Regex) < 1 {
5393		invalidParams.Add(request.NewErrParamMinLen("Regex", 1))
5394	}
5395	if s.Suffix != nil && len(*s.Suffix) < 1 {
5396		invalidParams.Add(request.NewErrParamMinLen("Suffix", 1))
5397	}
5398	if s.Range != nil {
5399		if err := s.Range.Validate(); err != nil {
5400			invalidParams.AddNested("Range", err.(request.ErrInvalidParams))
5401		}
5402	}
5403
5404	if invalidParams.Len() > 0 {
5405		return invalidParams
5406	}
5407	return nil
5408}
5409
5410// SetExact sets the Exact field's value.
5411func (s *GrpcRouteMetadataMatchMethod) SetExact(v string) *GrpcRouteMetadataMatchMethod {
5412	s.Exact = &v
5413	return s
5414}
5415
5416// SetPrefix sets the Prefix field's value.
5417func (s *GrpcRouteMetadataMatchMethod) SetPrefix(v string) *GrpcRouteMetadataMatchMethod {
5418	s.Prefix = &v
5419	return s
5420}
5421
5422// SetRange sets the Range field's value.
5423func (s *GrpcRouteMetadataMatchMethod) SetRange(v *MatchRange) *GrpcRouteMetadataMatchMethod {
5424	s.Range = v
5425	return s
5426}
5427
5428// SetRegex sets the Regex field's value.
5429func (s *GrpcRouteMetadataMatchMethod) SetRegex(v string) *GrpcRouteMetadataMatchMethod {
5430	s.Regex = &v
5431	return s
5432}
5433
5434// SetSuffix sets the Suffix field's value.
5435func (s *GrpcRouteMetadataMatchMethod) SetSuffix(v string) *GrpcRouteMetadataMatchMethod {
5436	s.Suffix = &v
5437	return s
5438}
5439
5440// An object that represents the method and value to match with the header value
5441// sent in a request. Specify one match method.
5442type HeaderMatchMethod struct {
5443	_ struct{} `type:"structure"`
5444
5445	Exact *string `locationName:"exact" min:"1" type:"string"`
5446
5447	Prefix *string `locationName:"prefix" min:"1" type:"string"`
5448
5449	// An object that represents the range of values to match on. The first character
5450	// of the range is included in the range, though the last character is not.
5451	// For example, if the range specified were 1-100, only values 1-99 would be
5452	// matched.
5453	Range *MatchRange `locationName:"range" type:"structure"`
5454
5455	Regex *string `locationName:"regex" min:"1" type:"string"`
5456
5457	Suffix *string `locationName:"suffix" min:"1" type:"string"`
5458}
5459
5460// String returns the string representation
5461func (s HeaderMatchMethod) String() string {
5462	return awsutil.Prettify(s)
5463}
5464
5465// GoString returns the string representation
5466func (s HeaderMatchMethod) GoString() string {
5467	return s.String()
5468}
5469
5470// Validate inspects the fields of the type to determine if they are valid.
5471func (s *HeaderMatchMethod) Validate() error {
5472	invalidParams := request.ErrInvalidParams{Context: "HeaderMatchMethod"}
5473	if s.Exact != nil && len(*s.Exact) < 1 {
5474		invalidParams.Add(request.NewErrParamMinLen("Exact", 1))
5475	}
5476	if s.Prefix != nil && len(*s.Prefix) < 1 {
5477		invalidParams.Add(request.NewErrParamMinLen("Prefix", 1))
5478	}
5479	if s.Regex != nil && len(*s.Regex) < 1 {
5480		invalidParams.Add(request.NewErrParamMinLen("Regex", 1))
5481	}
5482	if s.Suffix != nil && len(*s.Suffix) < 1 {
5483		invalidParams.Add(request.NewErrParamMinLen("Suffix", 1))
5484	}
5485	if s.Range != nil {
5486		if err := s.Range.Validate(); err != nil {
5487			invalidParams.AddNested("Range", err.(request.ErrInvalidParams))
5488		}
5489	}
5490
5491	if invalidParams.Len() > 0 {
5492		return invalidParams
5493	}
5494	return nil
5495}
5496
5497// SetExact sets the Exact field's value.
5498func (s *HeaderMatchMethod) SetExact(v string) *HeaderMatchMethod {
5499	s.Exact = &v
5500	return s
5501}
5502
5503// SetPrefix sets the Prefix field's value.
5504func (s *HeaderMatchMethod) SetPrefix(v string) *HeaderMatchMethod {
5505	s.Prefix = &v
5506	return s
5507}
5508
5509// SetRange sets the Range field's value.
5510func (s *HeaderMatchMethod) SetRange(v *MatchRange) *HeaderMatchMethod {
5511	s.Range = v
5512	return s
5513}
5514
5515// SetRegex sets the Regex field's value.
5516func (s *HeaderMatchMethod) SetRegex(v string) *HeaderMatchMethod {
5517	s.Regex = &v
5518	return s
5519}
5520
5521// SetSuffix sets the Suffix field's value.
5522func (s *HeaderMatchMethod) SetSuffix(v string) *HeaderMatchMethod {
5523	s.Suffix = &v
5524	return s
5525}
5526
5527// An object that represents the health check policy for a virtual node's listener.
5528type HealthCheckPolicy struct {
5529	_ struct{} `type:"structure"`
5530
5531	// HealthyThreshold is a required field
5532	HealthyThreshold *int64 `locationName:"healthyThreshold" min:"2" type:"integer" required:"true"`
5533
5534	// IntervalMillis is a required field
5535	IntervalMillis *int64 `locationName:"intervalMillis" min:"5000" type:"long" required:"true"`
5536
5537	Path *string `locationName:"path" type:"string"`
5538
5539	Port *int64 `locationName:"port" min:"1" type:"integer"`
5540
5541	// Protocol is a required field
5542	Protocol *string `locationName:"protocol" type:"string" required:"true" enum:"PortProtocol"`
5543
5544	// TimeoutMillis is a required field
5545	TimeoutMillis *int64 `locationName:"timeoutMillis" min:"2000" type:"long" required:"true"`
5546
5547	// UnhealthyThreshold is a required field
5548	UnhealthyThreshold *int64 `locationName:"unhealthyThreshold" min:"2" type:"integer" required:"true"`
5549}
5550
5551// String returns the string representation
5552func (s HealthCheckPolicy) String() string {
5553	return awsutil.Prettify(s)
5554}
5555
5556// GoString returns the string representation
5557func (s HealthCheckPolicy) GoString() string {
5558	return s.String()
5559}
5560
5561// Validate inspects the fields of the type to determine if they are valid.
5562func (s *HealthCheckPolicy) Validate() error {
5563	invalidParams := request.ErrInvalidParams{Context: "HealthCheckPolicy"}
5564	if s.HealthyThreshold == nil {
5565		invalidParams.Add(request.NewErrParamRequired("HealthyThreshold"))
5566	}
5567	if s.HealthyThreshold != nil && *s.HealthyThreshold < 2 {
5568		invalidParams.Add(request.NewErrParamMinValue("HealthyThreshold", 2))
5569	}
5570	if s.IntervalMillis == nil {
5571		invalidParams.Add(request.NewErrParamRequired("IntervalMillis"))
5572	}
5573	if s.IntervalMillis != nil && *s.IntervalMillis < 5000 {
5574		invalidParams.Add(request.NewErrParamMinValue("IntervalMillis", 5000))
5575	}
5576	if s.Port != nil && *s.Port < 1 {
5577		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
5578	}
5579	if s.Protocol == nil {
5580		invalidParams.Add(request.NewErrParamRequired("Protocol"))
5581	}
5582	if s.TimeoutMillis == nil {
5583		invalidParams.Add(request.NewErrParamRequired("TimeoutMillis"))
5584	}
5585	if s.TimeoutMillis != nil && *s.TimeoutMillis < 2000 {
5586		invalidParams.Add(request.NewErrParamMinValue("TimeoutMillis", 2000))
5587	}
5588	if s.UnhealthyThreshold == nil {
5589		invalidParams.Add(request.NewErrParamRequired("UnhealthyThreshold"))
5590	}
5591	if s.UnhealthyThreshold != nil && *s.UnhealthyThreshold < 2 {
5592		invalidParams.Add(request.NewErrParamMinValue("UnhealthyThreshold", 2))
5593	}
5594
5595	if invalidParams.Len() > 0 {
5596		return invalidParams
5597	}
5598	return nil
5599}
5600
5601// SetHealthyThreshold sets the HealthyThreshold field's value.
5602func (s *HealthCheckPolicy) SetHealthyThreshold(v int64) *HealthCheckPolicy {
5603	s.HealthyThreshold = &v
5604	return s
5605}
5606
5607// SetIntervalMillis sets the IntervalMillis field's value.
5608func (s *HealthCheckPolicy) SetIntervalMillis(v int64) *HealthCheckPolicy {
5609	s.IntervalMillis = &v
5610	return s
5611}
5612
5613// SetPath sets the Path field's value.
5614func (s *HealthCheckPolicy) SetPath(v string) *HealthCheckPolicy {
5615	s.Path = &v
5616	return s
5617}
5618
5619// SetPort sets the Port field's value.
5620func (s *HealthCheckPolicy) SetPort(v int64) *HealthCheckPolicy {
5621	s.Port = &v
5622	return s
5623}
5624
5625// SetProtocol sets the Protocol field's value.
5626func (s *HealthCheckPolicy) SetProtocol(v string) *HealthCheckPolicy {
5627	s.Protocol = &v
5628	return s
5629}
5630
5631// SetTimeoutMillis sets the TimeoutMillis field's value.
5632func (s *HealthCheckPolicy) SetTimeoutMillis(v int64) *HealthCheckPolicy {
5633	s.TimeoutMillis = &v
5634	return s
5635}
5636
5637// SetUnhealthyThreshold sets the UnhealthyThreshold field's value.
5638func (s *HealthCheckPolicy) SetUnhealthyThreshold(v int64) *HealthCheckPolicy {
5639	s.UnhealthyThreshold = &v
5640	return s
5641}
5642
5643// An object that represents a retry policy. Specify at least one value for
5644// at least one of the types of RetryEvents, a value for maxRetries, and a value
5645// for perRetryTimeout.
5646type HttpRetryPolicy struct {
5647	_ struct{} `type:"structure"`
5648
5649	HttpRetryEvents []*string `locationName:"httpRetryEvents" min:"1" type:"list"`
5650
5651	// MaxRetries is a required field
5652	MaxRetries *int64 `locationName:"maxRetries" type:"long" required:"true"`
5653
5654	// An object that represents a duration of time.
5655	//
5656	// PerRetryTimeout is a required field
5657	PerRetryTimeout *Duration `locationName:"perRetryTimeout" type:"structure" required:"true"`
5658
5659	TcpRetryEvents []*string `locationName:"tcpRetryEvents" min:"1" type:"list"`
5660}
5661
5662// String returns the string representation
5663func (s HttpRetryPolicy) String() string {
5664	return awsutil.Prettify(s)
5665}
5666
5667// GoString returns the string representation
5668func (s HttpRetryPolicy) GoString() string {
5669	return s.String()
5670}
5671
5672// Validate inspects the fields of the type to determine if they are valid.
5673func (s *HttpRetryPolicy) Validate() error {
5674	invalidParams := request.ErrInvalidParams{Context: "HttpRetryPolicy"}
5675	if s.HttpRetryEvents != nil && len(s.HttpRetryEvents) < 1 {
5676		invalidParams.Add(request.NewErrParamMinLen("HttpRetryEvents", 1))
5677	}
5678	if s.MaxRetries == nil {
5679		invalidParams.Add(request.NewErrParamRequired("MaxRetries"))
5680	}
5681	if s.PerRetryTimeout == nil {
5682		invalidParams.Add(request.NewErrParamRequired("PerRetryTimeout"))
5683	}
5684	if s.TcpRetryEvents != nil && len(s.TcpRetryEvents) < 1 {
5685		invalidParams.Add(request.NewErrParamMinLen("TcpRetryEvents", 1))
5686	}
5687
5688	if invalidParams.Len() > 0 {
5689		return invalidParams
5690	}
5691	return nil
5692}
5693
5694// SetHttpRetryEvents sets the HttpRetryEvents field's value.
5695func (s *HttpRetryPolicy) SetHttpRetryEvents(v []*string) *HttpRetryPolicy {
5696	s.HttpRetryEvents = v
5697	return s
5698}
5699
5700// SetMaxRetries sets the MaxRetries field's value.
5701func (s *HttpRetryPolicy) SetMaxRetries(v int64) *HttpRetryPolicy {
5702	s.MaxRetries = &v
5703	return s
5704}
5705
5706// SetPerRetryTimeout sets the PerRetryTimeout field's value.
5707func (s *HttpRetryPolicy) SetPerRetryTimeout(v *Duration) *HttpRetryPolicy {
5708	s.PerRetryTimeout = v
5709	return s
5710}
5711
5712// SetTcpRetryEvents sets the TcpRetryEvents field's value.
5713func (s *HttpRetryPolicy) SetTcpRetryEvents(v []*string) *HttpRetryPolicy {
5714	s.TcpRetryEvents = v
5715	return s
5716}
5717
5718// An object that represents an HTTP or HTTP2 route type.
5719type HttpRoute struct {
5720	_ struct{} `type:"structure"`
5721
5722	// An object that represents the action to take if a match is determined.
5723	//
5724	// Action is a required field
5725	Action *HttpRouteAction `locationName:"action" type:"structure" required:"true"`
5726
5727	// An object that represents the requirements for a route to match HTTP requests
5728	// for a virtual router.
5729	//
5730	// Match is a required field
5731	Match *HttpRouteMatch `locationName:"match" type:"structure" required:"true"`
5732
5733	// An object that represents a retry policy. Specify at least one value for
5734	// at least one of the types of RetryEvents, a value for maxRetries, and a value
5735	// for perRetryTimeout.
5736	RetryPolicy *HttpRetryPolicy `locationName:"retryPolicy" type:"structure"`
5737}
5738
5739// String returns the string representation
5740func (s HttpRoute) String() string {
5741	return awsutil.Prettify(s)
5742}
5743
5744// GoString returns the string representation
5745func (s HttpRoute) GoString() string {
5746	return s.String()
5747}
5748
5749// Validate inspects the fields of the type to determine if they are valid.
5750func (s *HttpRoute) Validate() error {
5751	invalidParams := request.ErrInvalidParams{Context: "HttpRoute"}
5752	if s.Action == nil {
5753		invalidParams.Add(request.NewErrParamRequired("Action"))
5754	}
5755	if s.Match == nil {
5756		invalidParams.Add(request.NewErrParamRequired("Match"))
5757	}
5758	if s.Action != nil {
5759		if err := s.Action.Validate(); err != nil {
5760			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
5761		}
5762	}
5763	if s.Match != nil {
5764		if err := s.Match.Validate(); err != nil {
5765			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
5766		}
5767	}
5768	if s.RetryPolicy != nil {
5769		if err := s.RetryPolicy.Validate(); err != nil {
5770			invalidParams.AddNested("RetryPolicy", err.(request.ErrInvalidParams))
5771		}
5772	}
5773
5774	if invalidParams.Len() > 0 {
5775		return invalidParams
5776	}
5777	return nil
5778}
5779
5780// SetAction sets the Action field's value.
5781func (s *HttpRoute) SetAction(v *HttpRouteAction) *HttpRoute {
5782	s.Action = v
5783	return s
5784}
5785
5786// SetMatch sets the Match field's value.
5787func (s *HttpRoute) SetMatch(v *HttpRouteMatch) *HttpRoute {
5788	s.Match = v
5789	return s
5790}
5791
5792// SetRetryPolicy sets the RetryPolicy field's value.
5793func (s *HttpRoute) SetRetryPolicy(v *HttpRetryPolicy) *HttpRoute {
5794	s.RetryPolicy = v
5795	return s
5796}
5797
5798// An object that represents the action to take if a match is determined.
5799type HttpRouteAction struct {
5800	_ struct{} `type:"structure"`
5801
5802	// WeightedTargets is a required field
5803	WeightedTargets []*WeightedTarget `locationName:"weightedTargets" min:"1" type:"list" required:"true"`
5804}
5805
5806// String returns the string representation
5807func (s HttpRouteAction) String() string {
5808	return awsutil.Prettify(s)
5809}
5810
5811// GoString returns the string representation
5812func (s HttpRouteAction) GoString() string {
5813	return s.String()
5814}
5815
5816// Validate inspects the fields of the type to determine if they are valid.
5817func (s *HttpRouteAction) Validate() error {
5818	invalidParams := request.ErrInvalidParams{Context: "HttpRouteAction"}
5819	if s.WeightedTargets == nil {
5820		invalidParams.Add(request.NewErrParamRequired("WeightedTargets"))
5821	}
5822	if s.WeightedTargets != nil && len(s.WeightedTargets) < 1 {
5823		invalidParams.Add(request.NewErrParamMinLen("WeightedTargets", 1))
5824	}
5825	if s.WeightedTargets != nil {
5826		for i, v := range s.WeightedTargets {
5827			if v == nil {
5828				continue
5829			}
5830			if err := v.Validate(); err != nil {
5831				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "WeightedTargets", i), err.(request.ErrInvalidParams))
5832			}
5833		}
5834	}
5835
5836	if invalidParams.Len() > 0 {
5837		return invalidParams
5838	}
5839	return nil
5840}
5841
5842// SetWeightedTargets sets the WeightedTargets field's value.
5843func (s *HttpRouteAction) SetWeightedTargets(v []*WeightedTarget) *HttpRouteAction {
5844	s.WeightedTargets = v
5845	return s
5846}
5847
5848// An object that represents the HTTP header in the request.
5849type HttpRouteHeader struct {
5850	_ struct{} `type:"structure"`
5851
5852	Invert *bool `locationName:"invert" type:"boolean"`
5853
5854	// An object that represents the method and value to match with the header value
5855	// sent in a request. Specify one match method.
5856	Match *HeaderMatchMethod `locationName:"match" type:"structure"`
5857
5858	// Name is a required field
5859	Name *string `locationName:"name" min:"1" type:"string" required:"true"`
5860}
5861
5862// String returns the string representation
5863func (s HttpRouteHeader) String() string {
5864	return awsutil.Prettify(s)
5865}
5866
5867// GoString returns the string representation
5868func (s HttpRouteHeader) GoString() string {
5869	return s.String()
5870}
5871
5872// Validate inspects the fields of the type to determine if they are valid.
5873func (s *HttpRouteHeader) Validate() error {
5874	invalidParams := request.ErrInvalidParams{Context: "HttpRouteHeader"}
5875	if s.Name == nil {
5876		invalidParams.Add(request.NewErrParamRequired("Name"))
5877	}
5878	if s.Name != nil && len(*s.Name) < 1 {
5879		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
5880	}
5881	if s.Match != nil {
5882		if err := s.Match.Validate(); err != nil {
5883			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
5884		}
5885	}
5886
5887	if invalidParams.Len() > 0 {
5888		return invalidParams
5889	}
5890	return nil
5891}
5892
5893// SetInvert sets the Invert field's value.
5894func (s *HttpRouteHeader) SetInvert(v bool) *HttpRouteHeader {
5895	s.Invert = &v
5896	return s
5897}
5898
5899// SetMatch sets the Match field's value.
5900func (s *HttpRouteHeader) SetMatch(v *HeaderMatchMethod) *HttpRouteHeader {
5901	s.Match = v
5902	return s
5903}
5904
5905// SetName sets the Name field's value.
5906func (s *HttpRouteHeader) SetName(v string) *HttpRouteHeader {
5907	s.Name = &v
5908	return s
5909}
5910
5911// An object that represents the requirements for a route to match HTTP requests
5912// for a virtual router.
5913type HttpRouteMatch struct {
5914	_ struct{} `type:"structure"`
5915
5916	Headers []*HttpRouteHeader `locationName:"headers" min:"1" type:"list"`
5917
5918	Method *string `locationName:"method" type:"string" enum:"HttpMethod"`
5919
5920	// Prefix is a required field
5921	Prefix *string `locationName:"prefix" type:"string" required:"true"`
5922
5923	Scheme *string `locationName:"scheme" type:"string" enum:"HttpScheme"`
5924}
5925
5926// String returns the string representation
5927func (s HttpRouteMatch) String() string {
5928	return awsutil.Prettify(s)
5929}
5930
5931// GoString returns the string representation
5932func (s HttpRouteMatch) GoString() string {
5933	return s.String()
5934}
5935
5936// Validate inspects the fields of the type to determine if they are valid.
5937func (s *HttpRouteMatch) Validate() error {
5938	invalidParams := request.ErrInvalidParams{Context: "HttpRouteMatch"}
5939	if s.Headers != nil && len(s.Headers) < 1 {
5940		invalidParams.Add(request.NewErrParamMinLen("Headers", 1))
5941	}
5942	if s.Prefix == nil {
5943		invalidParams.Add(request.NewErrParamRequired("Prefix"))
5944	}
5945	if s.Headers != nil {
5946		for i, v := range s.Headers {
5947			if v == nil {
5948				continue
5949			}
5950			if err := v.Validate(); err != nil {
5951				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Headers", i), err.(request.ErrInvalidParams))
5952			}
5953		}
5954	}
5955
5956	if invalidParams.Len() > 0 {
5957		return invalidParams
5958	}
5959	return nil
5960}
5961
5962// SetHeaders sets the Headers field's value.
5963func (s *HttpRouteMatch) SetHeaders(v []*HttpRouteHeader) *HttpRouteMatch {
5964	s.Headers = v
5965	return s
5966}
5967
5968// SetMethod sets the Method field's value.
5969func (s *HttpRouteMatch) SetMethod(v string) *HttpRouteMatch {
5970	s.Method = &v
5971	return s
5972}
5973
5974// SetPrefix sets the Prefix field's value.
5975func (s *HttpRouteMatch) SetPrefix(v string) *HttpRouteMatch {
5976	s.Prefix = &v
5977	return s
5978}
5979
5980// SetScheme sets the Scheme field's value.
5981func (s *HttpRouteMatch) SetScheme(v string) *HttpRouteMatch {
5982	s.Scheme = &v
5983	return s
5984}
5985
5986type ListMeshesInput struct {
5987	_ struct{} `type:"structure"`
5988
5989	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
5990
5991	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
5992}
5993
5994// String returns the string representation
5995func (s ListMeshesInput) String() string {
5996	return awsutil.Prettify(s)
5997}
5998
5999// GoString returns the string representation
6000func (s ListMeshesInput) GoString() string {
6001	return s.String()
6002}
6003
6004// Validate inspects the fields of the type to determine if they are valid.
6005func (s *ListMeshesInput) Validate() error {
6006	invalidParams := request.ErrInvalidParams{Context: "ListMeshesInput"}
6007	if s.Limit != nil && *s.Limit < 1 {
6008		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
6009	}
6010
6011	if invalidParams.Len() > 0 {
6012		return invalidParams
6013	}
6014	return nil
6015}
6016
6017// SetLimit sets the Limit field's value.
6018func (s *ListMeshesInput) SetLimit(v int64) *ListMeshesInput {
6019	s.Limit = &v
6020	return s
6021}
6022
6023// SetNextToken sets the NextToken field's value.
6024func (s *ListMeshesInput) SetNextToken(v string) *ListMeshesInput {
6025	s.NextToken = &v
6026	return s
6027}
6028
6029type ListMeshesOutput struct {
6030	_ struct{} `type:"structure"`
6031
6032	// Meshes is a required field
6033	Meshes []*MeshRef `locationName:"meshes" type:"list" required:"true"`
6034
6035	NextToken *string `locationName:"nextToken" type:"string"`
6036}
6037
6038// String returns the string representation
6039func (s ListMeshesOutput) String() string {
6040	return awsutil.Prettify(s)
6041}
6042
6043// GoString returns the string representation
6044func (s ListMeshesOutput) GoString() string {
6045	return s.String()
6046}
6047
6048// SetMeshes sets the Meshes field's value.
6049func (s *ListMeshesOutput) SetMeshes(v []*MeshRef) *ListMeshesOutput {
6050	s.Meshes = v
6051	return s
6052}
6053
6054// SetNextToken sets the NextToken field's value.
6055func (s *ListMeshesOutput) SetNextToken(v string) *ListMeshesOutput {
6056	s.NextToken = &v
6057	return s
6058}
6059
6060type ListRoutesInput struct {
6061	_ struct{} `type:"structure"`
6062
6063	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
6064
6065	// MeshName is a required field
6066	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
6067
6068	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
6069
6070	// VirtualRouterName is a required field
6071	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
6072}
6073
6074// String returns the string representation
6075func (s ListRoutesInput) String() string {
6076	return awsutil.Prettify(s)
6077}
6078
6079// GoString returns the string representation
6080func (s ListRoutesInput) GoString() string {
6081	return s.String()
6082}
6083
6084// Validate inspects the fields of the type to determine if they are valid.
6085func (s *ListRoutesInput) Validate() error {
6086	invalidParams := request.ErrInvalidParams{Context: "ListRoutesInput"}
6087	if s.Limit != nil && *s.Limit < 1 {
6088		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
6089	}
6090	if s.MeshName == nil {
6091		invalidParams.Add(request.NewErrParamRequired("MeshName"))
6092	}
6093	if s.MeshName != nil && len(*s.MeshName) < 1 {
6094		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
6095	}
6096	if s.VirtualRouterName == nil {
6097		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
6098	}
6099	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
6100		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
6101	}
6102
6103	if invalidParams.Len() > 0 {
6104		return invalidParams
6105	}
6106	return nil
6107}
6108
6109// SetLimit sets the Limit field's value.
6110func (s *ListRoutesInput) SetLimit(v int64) *ListRoutesInput {
6111	s.Limit = &v
6112	return s
6113}
6114
6115// SetMeshName sets the MeshName field's value.
6116func (s *ListRoutesInput) SetMeshName(v string) *ListRoutesInput {
6117	s.MeshName = &v
6118	return s
6119}
6120
6121// SetNextToken sets the NextToken field's value.
6122func (s *ListRoutesInput) SetNextToken(v string) *ListRoutesInput {
6123	s.NextToken = &v
6124	return s
6125}
6126
6127// SetVirtualRouterName sets the VirtualRouterName field's value.
6128func (s *ListRoutesInput) SetVirtualRouterName(v string) *ListRoutesInput {
6129	s.VirtualRouterName = &v
6130	return s
6131}
6132
6133type ListRoutesOutput struct {
6134	_ struct{} `type:"structure"`
6135
6136	NextToken *string `locationName:"nextToken" type:"string"`
6137
6138	// Routes is a required field
6139	Routes []*RouteRef `locationName:"routes" type:"list" required:"true"`
6140}
6141
6142// String returns the string representation
6143func (s ListRoutesOutput) String() string {
6144	return awsutil.Prettify(s)
6145}
6146
6147// GoString returns the string representation
6148func (s ListRoutesOutput) GoString() string {
6149	return s.String()
6150}
6151
6152// SetNextToken sets the NextToken field's value.
6153func (s *ListRoutesOutput) SetNextToken(v string) *ListRoutesOutput {
6154	s.NextToken = &v
6155	return s
6156}
6157
6158// SetRoutes sets the Routes field's value.
6159func (s *ListRoutesOutput) SetRoutes(v []*RouteRef) *ListRoutesOutput {
6160	s.Routes = v
6161	return s
6162}
6163
6164type ListTagsForResourceInput struct {
6165	_ struct{} `type:"structure"`
6166
6167	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
6168
6169	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
6170
6171	// ResourceArn is a required field
6172	ResourceArn *string `location:"querystring" locationName:"resourceArn" type:"string" required:"true"`
6173}
6174
6175// String returns the string representation
6176func (s ListTagsForResourceInput) String() string {
6177	return awsutil.Prettify(s)
6178}
6179
6180// GoString returns the string representation
6181func (s ListTagsForResourceInput) GoString() string {
6182	return s.String()
6183}
6184
6185// Validate inspects the fields of the type to determine if they are valid.
6186func (s *ListTagsForResourceInput) Validate() error {
6187	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
6188	if s.Limit != nil && *s.Limit < 1 {
6189		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
6190	}
6191	if s.ResourceArn == nil {
6192		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
6193	}
6194
6195	if invalidParams.Len() > 0 {
6196		return invalidParams
6197	}
6198	return nil
6199}
6200
6201// SetLimit sets the Limit field's value.
6202func (s *ListTagsForResourceInput) SetLimit(v int64) *ListTagsForResourceInput {
6203	s.Limit = &v
6204	return s
6205}
6206
6207// SetNextToken sets the NextToken field's value.
6208func (s *ListTagsForResourceInput) SetNextToken(v string) *ListTagsForResourceInput {
6209	s.NextToken = &v
6210	return s
6211}
6212
6213// SetResourceArn sets the ResourceArn field's value.
6214func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
6215	s.ResourceArn = &v
6216	return s
6217}
6218
6219type ListTagsForResourceOutput struct {
6220	_ struct{} `type:"structure"`
6221
6222	NextToken *string `locationName:"nextToken" type:"string"`
6223
6224	// Tags is a required field
6225	Tags []*TagRef `locationName:"tags" type:"list" required:"true"`
6226}
6227
6228// String returns the string representation
6229func (s ListTagsForResourceOutput) String() string {
6230	return awsutil.Prettify(s)
6231}
6232
6233// GoString returns the string representation
6234func (s ListTagsForResourceOutput) GoString() string {
6235	return s.String()
6236}
6237
6238// SetNextToken sets the NextToken field's value.
6239func (s *ListTagsForResourceOutput) SetNextToken(v string) *ListTagsForResourceOutput {
6240	s.NextToken = &v
6241	return s
6242}
6243
6244// SetTags sets the Tags field's value.
6245func (s *ListTagsForResourceOutput) SetTags(v []*TagRef) *ListTagsForResourceOutput {
6246	s.Tags = v
6247	return s
6248}
6249
6250type ListVirtualNodesInput struct {
6251	_ struct{} `type:"structure"`
6252
6253	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
6254
6255	// MeshName is a required field
6256	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
6257
6258	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
6259}
6260
6261// String returns the string representation
6262func (s ListVirtualNodesInput) String() string {
6263	return awsutil.Prettify(s)
6264}
6265
6266// GoString returns the string representation
6267func (s ListVirtualNodesInput) GoString() string {
6268	return s.String()
6269}
6270
6271// Validate inspects the fields of the type to determine if they are valid.
6272func (s *ListVirtualNodesInput) Validate() error {
6273	invalidParams := request.ErrInvalidParams{Context: "ListVirtualNodesInput"}
6274	if s.Limit != nil && *s.Limit < 1 {
6275		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
6276	}
6277	if s.MeshName == nil {
6278		invalidParams.Add(request.NewErrParamRequired("MeshName"))
6279	}
6280	if s.MeshName != nil && len(*s.MeshName) < 1 {
6281		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
6282	}
6283
6284	if invalidParams.Len() > 0 {
6285		return invalidParams
6286	}
6287	return nil
6288}
6289
6290// SetLimit sets the Limit field's value.
6291func (s *ListVirtualNodesInput) SetLimit(v int64) *ListVirtualNodesInput {
6292	s.Limit = &v
6293	return s
6294}
6295
6296// SetMeshName sets the MeshName field's value.
6297func (s *ListVirtualNodesInput) SetMeshName(v string) *ListVirtualNodesInput {
6298	s.MeshName = &v
6299	return s
6300}
6301
6302// SetNextToken sets the NextToken field's value.
6303func (s *ListVirtualNodesInput) SetNextToken(v string) *ListVirtualNodesInput {
6304	s.NextToken = &v
6305	return s
6306}
6307
6308type ListVirtualNodesOutput struct {
6309	_ struct{} `type:"structure"`
6310
6311	NextToken *string `locationName:"nextToken" type:"string"`
6312
6313	// VirtualNodes is a required field
6314	VirtualNodes []*VirtualNodeRef `locationName:"virtualNodes" type:"list" required:"true"`
6315}
6316
6317// String returns the string representation
6318func (s ListVirtualNodesOutput) String() string {
6319	return awsutil.Prettify(s)
6320}
6321
6322// GoString returns the string representation
6323func (s ListVirtualNodesOutput) GoString() string {
6324	return s.String()
6325}
6326
6327// SetNextToken sets the NextToken field's value.
6328func (s *ListVirtualNodesOutput) SetNextToken(v string) *ListVirtualNodesOutput {
6329	s.NextToken = &v
6330	return s
6331}
6332
6333// SetVirtualNodes sets the VirtualNodes field's value.
6334func (s *ListVirtualNodesOutput) SetVirtualNodes(v []*VirtualNodeRef) *ListVirtualNodesOutput {
6335	s.VirtualNodes = v
6336	return s
6337}
6338
6339type ListVirtualRoutersInput struct {
6340	_ struct{} `type:"structure"`
6341
6342	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
6343
6344	// MeshName is a required field
6345	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
6346
6347	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
6348}
6349
6350// String returns the string representation
6351func (s ListVirtualRoutersInput) String() string {
6352	return awsutil.Prettify(s)
6353}
6354
6355// GoString returns the string representation
6356func (s ListVirtualRoutersInput) GoString() string {
6357	return s.String()
6358}
6359
6360// Validate inspects the fields of the type to determine if they are valid.
6361func (s *ListVirtualRoutersInput) Validate() error {
6362	invalidParams := request.ErrInvalidParams{Context: "ListVirtualRoutersInput"}
6363	if s.Limit != nil && *s.Limit < 1 {
6364		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
6365	}
6366	if s.MeshName == nil {
6367		invalidParams.Add(request.NewErrParamRequired("MeshName"))
6368	}
6369	if s.MeshName != nil && len(*s.MeshName) < 1 {
6370		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
6371	}
6372
6373	if invalidParams.Len() > 0 {
6374		return invalidParams
6375	}
6376	return nil
6377}
6378
6379// SetLimit sets the Limit field's value.
6380func (s *ListVirtualRoutersInput) SetLimit(v int64) *ListVirtualRoutersInput {
6381	s.Limit = &v
6382	return s
6383}
6384
6385// SetMeshName sets the MeshName field's value.
6386func (s *ListVirtualRoutersInput) SetMeshName(v string) *ListVirtualRoutersInput {
6387	s.MeshName = &v
6388	return s
6389}
6390
6391// SetNextToken sets the NextToken field's value.
6392func (s *ListVirtualRoutersInput) SetNextToken(v string) *ListVirtualRoutersInput {
6393	s.NextToken = &v
6394	return s
6395}
6396
6397type ListVirtualRoutersOutput struct {
6398	_ struct{} `type:"structure"`
6399
6400	NextToken *string `locationName:"nextToken" type:"string"`
6401
6402	// VirtualRouters is a required field
6403	VirtualRouters []*VirtualRouterRef `locationName:"virtualRouters" type:"list" required:"true"`
6404}
6405
6406// String returns the string representation
6407func (s ListVirtualRoutersOutput) String() string {
6408	return awsutil.Prettify(s)
6409}
6410
6411// GoString returns the string representation
6412func (s ListVirtualRoutersOutput) GoString() string {
6413	return s.String()
6414}
6415
6416// SetNextToken sets the NextToken field's value.
6417func (s *ListVirtualRoutersOutput) SetNextToken(v string) *ListVirtualRoutersOutput {
6418	s.NextToken = &v
6419	return s
6420}
6421
6422// SetVirtualRouters sets the VirtualRouters field's value.
6423func (s *ListVirtualRoutersOutput) SetVirtualRouters(v []*VirtualRouterRef) *ListVirtualRoutersOutput {
6424	s.VirtualRouters = v
6425	return s
6426}
6427
6428type ListVirtualServicesInput struct {
6429	_ struct{} `type:"structure"`
6430
6431	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
6432
6433	// MeshName is a required field
6434	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
6435
6436	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
6437}
6438
6439// String returns the string representation
6440func (s ListVirtualServicesInput) String() string {
6441	return awsutil.Prettify(s)
6442}
6443
6444// GoString returns the string representation
6445func (s ListVirtualServicesInput) GoString() string {
6446	return s.String()
6447}
6448
6449// Validate inspects the fields of the type to determine if they are valid.
6450func (s *ListVirtualServicesInput) Validate() error {
6451	invalidParams := request.ErrInvalidParams{Context: "ListVirtualServicesInput"}
6452	if s.Limit != nil && *s.Limit < 1 {
6453		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
6454	}
6455	if s.MeshName == nil {
6456		invalidParams.Add(request.NewErrParamRequired("MeshName"))
6457	}
6458	if s.MeshName != nil && len(*s.MeshName) < 1 {
6459		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
6460	}
6461
6462	if invalidParams.Len() > 0 {
6463		return invalidParams
6464	}
6465	return nil
6466}
6467
6468// SetLimit sets the Limit field's value.
6469func (s *ListVirtualServicesInput) SetLimit(v int64) *ListVirtualServicesInput {
6470	s.Limit = &v
6471	return s
6472}
6473
6474// SetMeshName sets the MeshName field's value.
6475func (s *ListVirtualServicesInput) SetMeshName(v string) *ListVirtualServicesInput {
6476	s.MeshName = &v
6477	return s
6478}
6479
6480// SetNextToken sets the NextToken field's value.
6481func (s *ListVirtualServicesInput) SetNextToken(v string) *ListVirtualServicesInput {
6482	s.NextToken = &v
6483	return s
6484}
6485
6486type ListVirtualServicesOutput struct {
6487	_ struct{} `type:"structure"`
6488
6489	NextToken *string `locationName:"nextToken" type:"string"`
6490
6491	// VirtualServices is a required field
6492	VirtualServices []*VirtualServiceRef `locationName:"virtualServices" type:"list" required:"true"`
6493}
6494
6495// String returns the string representation
6496func (s ListVirtualServicesOutput) String() string {
6497	return awsutil.Prettify(s)
6498}
6499
6500// GoString returns the string representation
6501func (s ListVirtualServicesOutput) GoString() string {
6502	return s.String()
6503}
6504
6505// SetNextToken sets the NextToken field's value.
6506func (s *ListVirtualServicesOutput) SetNextToken(v string) *ListVirtualServicesOutput {
6507	s.NextToken = &v
6508	return s
6509}
6510
6511// SetVirtualServices sets the VirtualServices field's value.
6512func (s *ListVirtualServicesOutput) SetVirtualServices(v []*VirtualServiceRef) *ListVirtualServicesOutput {
6513	s.VirtualServices = v
6514	return s
6515}
6516
6517// An object that represents a listener for a virtual node.
6518type Listener struct {
6519	_ struct{} `type:"structure"`
6520
6521	// An object that represents the health check policy for a virtual node's listener.
6522	HealthCheck *HealthCheckPolicy `locationName:"healthCheck" type:"structure"`
6523
6524	// An object that represents a port mapping.
6525	//
6526	// PortMapping is a required field
6527	PortMapping *PortMapping `locationName:"portMapping" type:"structure" required:"true"`
6528}
6529
6530// String returns the string representation
6531func (s Listener) String() string {
6532	return awsutil.Prettify(s)
6533}
6534
6535// GoString returns the string representation
6536func (s Listener) GoString() string {
6537	return s.String()
6538}
6539
6540// Validate inspects the fields of the type to determine if they are valid.
6541func (s *Listener) Validate() error {
6542	invalidParams := request.ErrInvalidParams{Context: "Listener"}
6543	if s.PortMapping == nil {
6544		invalidParams.Add(request.NewErrParamRequired("PortMapping"))
6545	}
6546	if s.HealthCheck != nil {
6547		if err := s.HealthCheck.Validate(); err != nil {
6548			invalidParams.AddNested("HealthCheck", err.(request.ErrInvalidParams))
6549		}
6550	}
6551	if s.PortMapping != nil {
6552		if err := s.PortMapping.Validate(); err != nil {
6553			invalidParams.AddNested("PortMapping", err.(request.ErrInvalidParams))
6554		}
6555	}
6556
6557	if invalidParams.Len() > 0 {
6558		return invalidParams
6559	}
6560	return nil
6561}
6562
6563// SetHealthCheck sets the HealthCheck field's value.
6564func (s *Listener) SetHealthCheck(v *HealthCheckPolicy) *Listener {
6565	s.HealthCheck = v
6566	return s
6567}
6568
6569// SetPortMapping sets the PortMapping field's value.
6570func (s *Listener) SetPortMapping(v *PortMapping) *Listener {
6571	s.PortMapping = v
6572	return s
6573}
6574
6575// An object that represents the logging information for a virtual node.
6576type Logging struct {
6577	_ struct{} `type:"structure"`
6578
6579	// An object that represents the access logging information for a virtual node.
6580	AccessLog *AccessLog `locationName:"accessLog" type:"structure"`
6581}
6582
6583// String returns the string representation
6584func (s Logging) String() string {
6585	return awsutil.Prettify(s)
6586}
6587
6588// GoString returns the string representation
6589func (s Logging) GoString() string {
6590	return s.String()
6591}
6592
6593// Validate inspects the fields of the type to determine if they are valid.
6594func (s *Logging) Validate() error {
6595	invalidParams := request.ErrInvalidParams{Context: "Logging"}
6596	if s.AccessLog != nil {
6597		if err := s.AccessLog.Validate(); err != nil {
6598			invalidParams.AddNested("AccessLog", err.(request.ErrInvalidParams))
6599		}
6600	}
6601
6602	if invalidParams.Len() > 0 {
6603		return invalidParams
6604	}
6605	return nil
6606}
6607
6608// SetAccessLog sets the AccessLog field's value.
6609func (s *Logging) SetAccessLog(v *AccessLog) *Logging {
6610	s.AccessLog = v
6611	return s
6612}
6613
6614// An object that represents the range of values to match on. The first character
6615// of the range is included in the range, though the last character is not.
6616// For example, if the range specified were 1-100, only values 1-99 would be
6617// matched.
6618type MatchRange struct {
6619	_ struct{} `type:"structure"`
6620
6621	// End is a required field
6622	End *int64 `locationName:"end" type:"long" required:"true"`
6623
6624	// Start is a required field
6625	Start *int64 `locationName:"start" type:"long" required:"true"`
6626}
6627
6628// String returns the string representation
6629func (s MatchRange) String() string {
6630	return awsutil.Prettify(s)
6631}
6632
6633// GoString returns the string representation
6634func (s MatchRange) GoString() string {
6635	return s.String()
6636}
6637
6638// Validate inspects the fields of the type to determine if they are valid.
6639func (s *MatchRange) Validate() error {
6640	invalidParams := request.ErrInvalidParams{Context: "MatchRange"}
6641	if s.End == nil {
6642		invalidParams.Add(request.NewErrParamRequired("End"))
6643	}
6644	if s.Start == nil {
6645		invalidParams.Add(request.NewErrParamRequired("Start"))
6646	}
6647
6648	if invalidParams.Len() > 0 {
6649		return invalidParams
6650	}
6651	return nil
6652}
6653
6654// SetEnd sets the End field's value.
6655func (s *MatchRange) SetEnd(v int64) *MatchRange {
6656	s.End = &v
6657	return s
6658}
6659
6660// SetStart sets the Start field's value.
6661func (s *MatchRange) SetStart(v int64) *MatchRange {
6662	s.Start = &v
6663	return s
6664}
6665
6666// An object that represents a service mesh returned by a describe operation.
6667type MeshData struct {
6668	_ struct{} `type:"structure"`
6669
6670	// MeshName is a required field
6671	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
6672
6673	// An object that represents metadata for a resource.
6674	//
6675	// Metadata is a required field
6676	Metadata *ResourceMetadata `locationName:"metadata" type:"structure" required:"true"`
6677
6678	// An object that represents the specification of a service mesh.
6679	//
6680	// Spec is a required field
6681	Spec *MeshSpec `locationName:"spec" type:"structure" required:"true"`
6682
6683	// An object that represents the status of a service mesh.
6684	//
6685	// Status is a required field
6686	Status *MeshStatus `locationName:"status" type:"structure" required:"true"`
6687}
6688
6689// String returns the string representation
6690func (s MeshData) String() string {
6691	return awsutil.Prettify(s)
6692}
6693
6694// GoString returns the string representation
6695func (s MeshData) GoString() string {
6696	return s.String()
6697}
6698
6699// SetMeshName sets the MeshName field's value.
6700func (s *MeshData) SetMeshName(v string) *MeshData {
6701	s.MeshName = &v
6702	return s
6703}
6704
6705// SetMetadata sets the Metadata field's value.
6706func (s *MeshData) SetMetadata(v *ResourceMetadata) *MeshData {
6707	s.Metadata = v
6708	return s
6709}
6710
6711// SetSpec sets the Spec field's value.
6712func (s *MeshData) SetSpec(v *MeshSpec) *MeshData {
6713	s.Spec = v
6714	return s
6715}
6716
6717// SetStatus sets the Status field's value.
6718func (s *MeshData) SetStatus(v *MeshStatus) *MeshData {
6719	s.Status = v
6720	return s
6721}
6722
6723// An object that represents a service mesh returned by a list operation.
6724type MeshRef struct {
6725	_ struct{} `type:"structure"`
6726
6727	// Arn is a required field
6728	Arn *string `locationName:"arn" type:"string" required:"true"`
6729
6730	// MeshName is a required field
6731	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
6732}
6733
6734// String returns the string representation
6735func (s MeshRef) String() string {
6736	return awsutil.Prettify(s)
6737}
6738
6739// GoString returns the string representation
6740func (s MeshRef) GoString() string {
6741	return s.String()
6742}
6743
6744// SetArn sets the Arn field's value.
6745func (s *MeshRef) SetArn(v string) *MeshRef {
6746	s.Arn = &v
6747	return s
6748}
6749
6750// SetMeshName sets the MeshName field's value.
6751func (s *MeshRef) SetMeshName(v string) *MeshRef {
6752	s.MeshName = &v
6753	return s
6754}
6755
6756// An object that represents the specification of a service mesh.
6757type MeshSpec struct {
6758	_ struct{} `type:"structure"`
6759
6760	// An object that represents the egress filter rules for a service mesh.
6761	EgressFilter *EgressFilter `locationName:"egressFilter" type:"structure"`
6762}
6763
6764// String returns the string representation
6765func (s MeshSpec) String() string {
6766	return awsutil.Prettify(s)
6767}
6768
6769// GoString returns the string representation
6770func (s MeshSpec) GoString() string {
6771	return s.String()
6772}
6773
6774// Validate inspects the fields of the type to determine if they are valid.
6775func (s *MeshSpec) Validate() error {
6776	invalidParams := request.ErrInvalidParams{Context: "MeshSpec"}
6777	if s.EgressFilter != nil {
6778		if err := s.EgressFilter.Validate(); err != nil {
6779			invalidParams.AddNested("EgressFilter", err.(request.ErrInvalidParams))
6780		}
6781	}
6782
6783	if invalidParams.Len() > 0 {
6784		return invalidParams
6785	}
6786	return nil
6787}
6788
6789// SetEgressFilter sets the EgressFilter field's value.
6790func (s *MeshSpec) SetEgressFilter(v *EgressFilter) *MeshSpec {
6791	s.EgressFilter = v
6792	return s
6793}
6794
6795// An object that represents the status of a service mesh.
6796type MeshStatus struct {
6797	_ struct{} `type:"structure"`
6798
6799	Status *string `locationName:"status" type:"string" enum:"MeshStatusCode"`
6800}
6801
6802// String returns the string representation
6803func (s MeshStatus) String() string {
6804	return awsutil.Prettify(s)
6805}
6806
6807// GoString returns the string representation
6808func (s MeshStatus) GoString() string {
6809	return s.String()
6810}
6811
6812// SetStatus sets the Status field's value.
6813func (s *MeshStatus) SetStatus(v string) *MeshStatus {
6814	s.Status = &v
6815	return s
6816}
6817
6818// An object that represents a port mapping.
6819type PortMapping struct {
6820	_ struct{} `type:"structure"`
6821
6822	// Port is a required field
6823	Port *int64 `locationName:"port" min:"1" type:"integer" required:"true"`
6824
6825	// Protocol is a required field
6826	Protocol *string `locationName:"protocol" type:"string" required:"true" enum:"PortProtocol"`
6827}
6828
6829// String returns the string representation
6830func (s PortMapping) String() string {
6831	return awsutil.Prettify(s)
6832}
6833
6834// GoString returns the string representation
6835func (s PortMapping) GoString() string {
6836	return s.String()
6837}
6838
6839// Validate inspects the fields of the type to determine if they are valid.
6840func (s *PortMapping) Validate() error {
6841	invalidParams := request.ErrInvalidParams{Context: "PortMapping"}
6842	if s.Port == nil {
6843		invalidParams.Add(request.NewErrParamRequired("Port"))
6844	}
6845	if s.Port != nil && *s.Port < 1 {
6846		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
6847	}
6848	if s.Protocol == nil {
6849		invalidParams.Add(request.NewErrParamRequired("Protocol"))
6850	}
6851
6852	if invalidParams.Len() > 0 {
6853		return invalidParams
6854	}
6855	return nil
6856}
6857
6858// SetPort sets the Port field's value.
6859func (s *PortMapping) SetPort(v int64) *PortMapping {
6860	s.Port = &v
6861	return s
6862}
6863
6864// SetProtocol sets the Protocol field's value.
6865func (s *PortMapping) SetProtocol(v string) *PortMapping {
6866	s.Protocol = &v
6867	return s
6868}
6869
6870// An object that represents metadata for a resource.
6871type ResourceMetadata struct {
6872	_ struct{} `type:"structure"`
6873
6874	// Arn is a required field
6875	Arn *string `locationName:"arn" type:"string" required:"true"`
6876
6877	// CreatedAt is a required field
6878	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`
6879
6880	// LastUpdatedAt is a required field
6881	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" required:"true"`
6882
6883	// Uid is a required field
6884	Uid *string `locationName:"uid" type:"string" required:"true"`
6885
6886	// Version is a required field
6887	Version *int64 `locationName:"version" type:"long" required:"true"`
6888}
6889
6890// String returns the string representation
6891func (s ResourceMetadata) String() string {
6892	return awsutil.Prettify(s)
6893}
6894
6895// GoString returns the string representation
6896func (s ResourceMetadata) GoString() string {
6897	return s.String()
6898}
6899
6900// SetArn sets the Arn field's value.
6901func (s *ResourceMetadata) SetArn(v string) *ResourceMetadata {
6902	s.Arn = &v
6903	return s
6904}
6905
6906// SetCreatedAt sets the CreatedAt field's value.
6907func (s *ResourceMetadata) SetCreatedAt(v time.Time) *ResourceMetadata {
6908	s.CreatedAt = &v
6909	return s
6910}
6911
6912// SetLastUpdatedAt sets the LastUpdatedAt field's value.
6913func (s *ResourceMetadata) SetLastUpdatedAt(v time.Time) *ResourceMetadata {
6914	s.LastUpdatedAt = &v
6915	return s
6916}
6917
6918// SetUid sets the Uid field's value.
6919func (s *ResourceMetadata) SetUid(v string) *ResourceMetadata {
6920	s.Uid = &v
6921	return s
6922}
6923
6924// SetVersion sets the Version field's value.
6925func (s *ResourceMetadata) SetVersion(v int64) *ResourceMetadata {
6926	s.Version = &v
6927	return s
6928}
6929
6930// An object that represents a route returned by a describe operation.
6931type RouteData struct {
6932	_ struct{} `type:"structure"`
6933
6934	// MeshName is a required field
6935	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
6936
6937	// An object that represents metadata for a resource.
6938	//
6939	// Metadata is a required field
6940	Metadata *ResourceMetadata `locationName:"metadata" type:"structure" required:"true"`
6941
6942	// RouteName is a required field
6943	RouteName *string `locationName:"routeName" min:"1" type:"string" required:"true"`
6944
6945	// An object that represents a route specification. Specify one route type.
6946	//
6947	// Spec is a required field
6948	Spec *RouteSpec `locationName:"spec" type:"structure" required:"true"`
6949
6950	// An object that represents the current status of a route.
6951	//
6952	// Status is a required field
6953	Status *RouteStatus `locationName:"status" type:"structure" required:"true"`
6954
6955	// VirtualRouterName is a required field
6956	VirtualRouterName *string `locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
6957}
6958
6959// String returns the string representation
6960func (s RouteData) String() string {
6961	return awsutil.Prettify(s)
6962}
6963
6964// GoString returns the string representation
6965func (s RouteData) GoString() string {
6966	return s.String()
6967}
6968
6969// SetMeshName sets the MeshName field's value.
6970func (s *RouteData) SetMeshName(v string) *RouteData {
6971	s.MeshName = &v
6972	return s
6973}
6974
6975// SetMetadata sets the Metadata field's value.
6976func (s *RouteData) SetMetadata(v *ResourceMetadata) *RouteData {
6977	s.Metadata = v
6978	return s
6979}
6980
6981// SetRouteName sets the RouteName field's value.
6982func (s *RouteData) SetRouteName(v string) *RouteData {
6983	s.RouteName = &v
6984	return s
6985}
6986
6987// SetSpec sets the Spec field's value.
6988func (s *RouteData) SetSpec(v *RouteSpec) *RouteData {
6989	s.Spec = v
6990	return s
6991}
6992
6993// SetStatus sets the Status field's value.
6994func (s *RouteData) SetStatus(v *RouteStatus) *RouteData {
6995	s.Status = v
6996	return s
6997}
6998
6999// SetVirtualRouterName sets the VirtualRouterName field's value.
7000func (s *RouteData) SetVirtualRouterName(v string) *RouteData {
7001	s.VirtualRouterName = &v
7002	return s
7003}
7004
7005// An object that represents a route returned by a list operation.
7006type RouteRef struct {
7007	_ struct{} `type:"structure"`
7008
7009	// Arn is a required field
7010	Arn *string `locationName:"arn" type:"string" required:"true"`
7011
7012	// MeshName is a required field
7013	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
7014
7015	// RouteName is a required field
7016	RouteName *string `locationName:"routeName" min:"1" type:"string" required:"true"`
7017
7018	// VirtualRouterName is a required field
7019	VirtualRouterName *string `locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
7020}
7021
7022// String returns the string representation
7023func (s RouteRef) String() string {
7024	return awsutil.Prettify(s)
7025}
7026
7027// GoString returns the string representation
7028func (s RouteRef) GoString() string {
7029	return s.String()
7030}
7031
7032// SetArn sets the Arn field's value.
7033func (s *RouteRef) SetArn(v string) *RouteRef {
7034	s.Arn = &v
7035	return s
7036}
7037
7038// SetMeshName sets the MeshName field's value.
7039func (s *RouteRef) SetMeshName(v string) *RouteRef {
7040	s.MeshName = &v
7041	return s
7042}
7043
7044// SetRouteName sets the RouteName field's value.
7045func (s *RouteRef) SetRouteName(v string) *RouteRef {
7046	s.RouteName = &v
7047	return s
7048}
7049
7050// SetVirtualRouterName sets the VirtualRouterName field's value.
7051func (s *RouteRef) SetVirtualRouterName(v string) *RouteRef {
7052	s.VirtualRouterName = &v
7053	return s
7054}
7055
7056// An object that represents a route specification. Specify one route type.
7057type RouteSpec struct {
7058	_ struct{} `type:"structure"`
7059
7060	// An object that represents a GRPC route type.
7061	GrpcRoute *GrpcRoute `locationName:"grpcRoute" type:"structure"`
7062
7063	// An object that represents an HTTP or HTTP2 route type.
7064	Http2Route *HttpRoute `locationName:"http2Route" type:"structure"`
7065
7066	// An object that represents an HTTP or HTTP2 route type.
7067	HttpRoute *HttpRoute `locationName:"httpRoute" type:"structure"`
7068
7069	Priority *int64 `locationName:"priority" type:"integer"`
7070
7071	// An object that represents a TCP route type.
7072	TcpRoute *TcpRoute `locationName:"tcpRoute" type:"structure"`
7073}
7074
7075// String returns the string representation
7076func (s RouteSpec) String() string {
7077	return awsutil.Prettify(s)
7078}
7079
7080// GoString returns the string representation
7081func (s RouteSpec) GoString() string {
7082	return s.String()
7083}
7084
7085// Validate inspects the fields of the type to determine if they are valid.
7086func (s *RouteSpec) Validate() error {
7087	invalidParams := request.ErrInvalidParams{Context: "RouteSpec"}
7088	if s.GrpcRoute != nil {
7089		if err := s.GrpcRoute.Validate(); err != nil {
7090			invalidParams.AddNested("GrpcRoute", err.(request.ErrInvalidParams))
7091		}
7092	}
7093	if s.Http2Route != nil {
7094		if err := s.Http2Route.Validate(); err != nil {
7095			invalidParams.AddNested("Http2Route", err.(request.ErrInvalidParams))
7096		}
7097	}
7098	if s.HttpRoute != nil {
7099		if err := s.HttpRoute.Validate(); err != nil {
7100			invalidParams.AddNested("HttpRoute", err.(request.ErrInvalidParams))
7101		}
7102	}
7103	if s.TcpRoute != nil {
7104		if err := s.TcpRoute.Validate(); err != nil {
7105			invalidParams.AddNested("TcpRoute", err.(request.ErrInvalidParams))
7106		}
7107	}
7108
7109	if invalidParams.Len() > 0 {
7110		return invalidParams
7111	}
7112	return nil
7113}
7114
7115// SetGrpcRoute sets the GrpcRoute field's value.
7116func (s *RouteSpec) SetGrpcRoute(v *GrpcRoute) *RouteSpec {
7117	s.GrpcRoute = v
7118	return s
7119}
7120
7121// SetHttp2Route sets the Http2Route field's value.
7122func (s *RouteSpec) SetHttp2Route(v *HttpRoute) *RouteSpec {
7123	s.Http2Route = v
7124	return s
7125}
7126
7127// SetHttpRoute sets the HttpRoute field's value.
7128func (s *RouteSpec) SetHttpRoute(v *HttpRoute) *RouteSpec {
7129	s.HttpRoute = v
7130	return s
7131}
7132
7133// SetPriority sets the Priority field's value.
7134func (s *RouteSpec) SetPriority(v int64) *RouteSpec {
7135	s.Priority = &v
7136	return s
7137}
7138
7139// SetTcpRoute sets the TcpRoute field's value.
7140func (s *RouteSpec) SetTcpRoute(v *TcpRoute) *RouteSpec {
7141	s.TcpRoute = v
7142	return s
7143}
7144
7145// An object that represents the current status of a route.
7146type RouteStatus struct {
7147	_ struct{} `type:"structure"`
7148
7149	// Status is a required field
7150	Status *string `locationName:"status" type:"string" required:"true" enum:"RouteStatusCode"`
7151}
7152
7153// String returns the string representation
7154func (s RouteStatus) String() string {
7155	return awsutil.Prettify(s)
7156}
7157
7158// GoString returns the string representation
7159func (s RouteStatus) GoString() string {
7160	return s.String()
7161}
7162
7163// SetStatus sets the Status field's value.
7164func (s *RouteStatus) SetStatus(v string) *RouteStatus {
7165	s.Status = &v
7166	return s
7167}
7168
7169// An object that represents the service discovery information for a virtual
7170// node.
7171type ServiceDiscovery struct {
7172	_ struct{} `type:"structure"`
7173
7174	// An object that represents the AWS Cloud Map service discovery information
7175	// for your virtual node.
7176	AwsCloudMap *AwsCloudMapServiceDiscovery `locationName:"awsCloudMap" type:"structure"`
7177
7178	// An object that represents the DNS service discovery information for your
7179	// virtual node.
7180	Dns *DnsServiceDiscovery `locationName:"dns" type:"structure"`
7181}
7182
7183// String returns the string representation
7184func (s ServiceDiscovery) String() string {
7185	return awsutil.Prettify(s)
7186}
7187
7188// GoString returns the string representation
7189func (s ServiceDiscovery) GoString() string {
7190	return s.String()
7191}
7192
7193// Validate inspects the fields of the type to determine if they are valid.
7194func (s *ServiceDiscovery) Validate() error {
7195	invalidParams := request.ErrInvalidParams{Context: "ServiceDiscovery"}
7196	if s.AwsCloudMap != nil {
7197		if err := s.AwsCloudMap.Validate(); err != nil {
7198			invalidParams.AddNested("AwsCloudMap", err.(request.ErrInvalidParams))
7199		}
7200	}
7201	if s.Dns != nil {
7202		if err := s.Dns.Validate(); err != nil {
7203			invalidParams.AddNested("Dns", err.(request.ErrInvalidParams))
7204		}
7205	}
7206
7207	if invalidParams.Len() > 0 {
7208		return invalidParams
7209	}
7210	return nil
7211}
7212
7213// SetAwsCloudMap sets the AwsCloudMap field's value.
7214func (s *ServiceDiscovery) SetAwsCloudMap(v *AwsCloudMapServiceDiscovery) *ServiceDiscovery {
7215	s.AwsCloudMap = v
7216	return s
7217}
7218
7219// SetDns sets the Dns field's value.
7220func (s *ServiceDiscovery) SetDns(v *DnsServiceDiscovery) *ServiceDiscovery {
7221	s.Dns = v
7222	return s
7223}
7224
7225// Optional metadata that you apply to a resource to assist with categorization
7226// and organization. Each tag consists of a key and an optional value, both
7227// of which you define. Tag keys can have a maximum character length of 128
7228// characters, and tag values can have a maximum length of 256 characters.
7229type TagRef struct {
7230	_ struct{} `type:"structure"`
7231
7232	// Key is a required field
7233	Key *string `locationName:"key" min:"1" type:"string" required:"true"`
7234
7235	Value *string `locationName:"value" type:"string"`
7236}
7237
7238// String returns the string representation
7239func (s TagRef) String() string {
7240	return awsutil.Prettify(s)
7241}
7242
7243// GoString returns the string representation
7244func (s TagRef) GoString() string {
7245	return s.String()
7246}
7247
7248// Validate inspects the fields of the type to determine if they are valid.
7249func (s *TagRef) Validate() error {
7250	invalidParams := request.ErrInvalidParams{Context: "TagRef"}
7251	if s.Key == nil {
7252		invalidParams.Add(request.NewErrParamRequired("Key"))
7253	}
7254	if s.Key != nil && len(*s.Key) < 1 {
7255		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
7256	}
7257
7258	if invalidParams.Len() > 0 {
7259		return invalidParams
7260	}
7261	return nil
7262}
7263
7264// SetKey sets the Key field's value.
7265func (s *TagRef) SetKey(v string) *TagRef {
7266	s.Key = &v
7267	return s
7268}
7269
7270// SetValue sets the Value field's value.
7271func (s *TagRef) SetValue(v string) *TagRef {
7272	s.Value = &v
7273	return s
7274}
7275
7276type TagResourceInput struct {
7277	_ struct{} `type:"structure"`
7278
7279	// ResourceArn is a required field
7280	ResourceArn *string `location:"querystring" locationName:"resourceArn" type:"string" required:"true"`
7281
7282	// Tags is a required field
7283	Tags []*TagRef `locationName:"tags" type:"list" required:"true"`
7284}
7285
7286// String returns the string representation
7287func (s TagResourceInput) String() string {
7288	return awsutil.Prettify(s)
7289}
7290
7291// GoString returns the string representation
7292func (s TagResourceInput) GoString() string {
7293	return s.String()
7294}
7295
7296// Validate inspects the fields of the type to determine if they are valid.
7297func (s *TagResourceInput) Validate() error {
7298	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
7299	if s.ResourceArn == nil {
7300		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
7301	}
7302	if s.Tags == nil {
7303		invalidParams.Add(request.NewErrParamRequired("Tags"))
7304	}
7305	if s.Tags != nil {
7306		for i, v := range s.Tags {
7307			if v == nil {
7308				continue
7309			}
7310			if err := v.Validate(); err != nil {
7311				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
7312			}
7313		}
7314	}
7315
7316	if invalidParams.Len() > 0 {
7317		return invalidParams
7318	}
7319	return nil
7320}
7321
7322// SetResourceArn sets the ResourceArn field's value.
7323func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
7324	s.ResourceArn = &v
7325	return s
7326}
7327
7328// SetTags sets the Tags field's value.
7329func (s *TagResourceInput) SetTags(v []*TagRef) *TagResourceInput {
7330	s.Tags = v
7331	return s
7332}
7333
7334type TagResourceOutput struct {
7335	_ struct{} `type:"structure"`
7336}
7337
7338// String returns the string representation
7339func (s TagResourceOutput) String() string {
7340	return awsutil.Prettify(s)
7341}
7342
7343// GoString returns the string representation
7344func (s TagResourceOutput) GoString() string {
7345	return s.String()
7346}
7347
7348// An object that represents a TCP route type.
7349type TcpRoute struct {
7350	_ struct{} `type:"structure"`
7351
7352	// An object that represents the action to take if a match is determined.
7353	//
7354	// Action is a required field
7355	Action *TcpRouteAction `locationName:"action" type:"structure" required:"true"`
7356}
7357
7358// String returns the string representation
7359func (s TcpRoute) String() string {
7360	return awsutil.Prettify(s)
7361}
7362
7363// GoString returns the string representation
7364func (s TcpRoute) GoString() string {
7365	return s.String()
7366}
7367
7368// Validate inspects the fields of the type to determine if they are valid.
7369func (s *TcpRoute) Validate() error {
7370	invalidParams := request.ErrInvalidParams{Context: "TcpRoute"}
7371	if s.Action == nil {
7372		invalidParams.Add(request.NewErrParamRequired("Action"))
7373	}
7374	if s.Action != nil {
7375		if err := s.Action.Validate(); err != nil {
7376			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
7377		}
7378	}
7379
7380	if invalidParams.Len() > 0 {
7381		return invalidParams
7382	}
7383	return nil
7384}
7385
7386// SetAction sets the Action field's value.
7387func (s *TcpRoute) SetAction(v *TcpRouteAction) *TcpRoute {
7388	s.Action = v
7389	return s
7390}
7391
7392// An object that represents the action to take if a match is determined.
7393type TcpRouteAction struct {
7394	_ struct{} `type:"structure"`
7395
7396	// WeightedTargets is a required field
7397	WeightedTargets []*WeightedTarget `locationName:"weightedTargets" min:"1" type:"list" required:"true"`
7398}
7399
7400// String returns the string representation
7401func (s TcpRouteAction) String() string {
7402	return awsutil.Prettify(s)
7403}
7404
7405// GoString returns the string representation
7406func (s TcpRouteAction) GoString() string {
7407	return s.String()
7408}
7409
7410// Validate inspects the fields of the type to determine if they are valid.
7411func (s *TcpRouteAction) Validate() error {
7412	invalidParams := request.ErrInvalidParams{Context: "TcpRouteAction"}
7413	if s.WeightedTargets == nil {
7414		invalidParams.Add(request.NewErrParamRequired("WeightedTargets"))
7415	}
7416	if s.WeightedTargets != nil && len(s.WeightedTargets) < 1 {
7417		invalidParams.Add(request.NewErrParamMinLen("WeightedTargets", 1))
7418	}
7419	if s.WeightedTargets != nil {
7420		for i, v := range s.WeightedTargets {
7421			if v == nil {
7422				continue
7423			}
7424			if err := v.Validate(); err != nil {
7425				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "WeightedTargets", i), err.(request.ErrInvalidParams))
7426			}
7427		}
7428	}
7429
7430	if invalidParams.Len() > 0 {
7431		return invalidParams
7432	}
7433	return nil
7434}
7435
7436// SetWeightedTargets sets the WeightedTargets field's value.
7437func (s *TcpRouteAction) SetWeightedTargets(v []*WeightedTarget) *TcpRouteAction {
7438	s.WeightedTargets = v
7439	return s
7440}
7441
7442type UntagResourceInput struct {
7443	_ struct{} `type:"structure"`
7444
7445	// ResourceArn is a required field
7446	ResourceArn *string `location:"querystring" locationName:"resourceArn" type:"string" required:"true"`
7447
7448	// TagKeys is a required field
7449	TagKeys []*string `locationName:"tagKeys" type:"list" required:"true"`
7450}
7451
7452// String returns the string representation
7453func (s UntagResourceInput) String() string {
7454	return awsutil.Prettify(s)
7455}
7456
7457// GoString returns the string representation
7458func (s UntagResourceInput) GoString() string {
7459	return s.String()
7460}
7461
7462// Validate inspects the fields of the type to determine if they are valid.
7463func (s *UntagResourceInput) Validate() error {
7464	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
7465	if s.ResourceArn == nil {
7466		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
7467	}
7468	if s.TagKeys == nil {
7469		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
7470	}
7471
7472	if invalidParams.Len() > 0 {
7473		return invalidParams
7474	}
7475	return nil
7476}
7477
7478// SetResourceArn sets the ResourceArn field's value.
7479func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
7480	s.ResourceArn = &v
7481	return s
7482}
7483
7484// SetTagKeys sets the TagKeys field's value.
7485func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
7486	s.TagKeys = v
7487	return s
7488}
7489
7490type UntagResourceOutput struct {
7491	_ struct{} `type:"structure"`
7492}
7493
7494// String returns the string representation
7495func (s UntagResourceOutput) String() string {
7496	return awsutil.Prettify(s)
7497}
7498
7499// GoString returns the string representation
7500func (s UntagResourceOutput) GoString() string {
7501	return s.String()
7502}
7503
7504type UpdateMeshInput struct {
7505	_ struct{} `type:"structure"`
7506
7507	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
7508
7509	// MeshName is a required field
7510	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
7511
7512	// An object that represents the specification of a service mesh.
7513	Spec *MeshSpec `locationName:"spec" type:"structure"`
7514}
7515
7516// String returns the string representation
7517func (s UpdateMeshInput) String() string {
7518	return awsutil.Prettify(s)
7519}
7520
7521// GoString returns the string representation
7522func (s UpdateMeshInput) GoString() string {
7523	return s.String()
7524}
7525
7526// Validate inspects the fields of the type to determine if they are valid.
7527func (s *UpdateMeshInput) Validate() error {
7528	invalidParams := request.ErrInvalidParams{Context: "UpdateMeshInput"}
7529	if s.MeshName == nil {
7530		invalidParams.Add(request.NewErrParamRequired("MeshName"))
7531	}
7532	if s.MeshName != nil && len(*s.MeshName) < 1 {
7533		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
7534	}
7535	if s.Spec != nil {
7536		if err := s.Spec.Validate(); err != nil {
7537			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
7538		}
7539	}
7540
7541	if invalidParams.Len() > 0 {
7542		return invalidParams
7543	}
7544	return nil
7545}
7546
7547// SetClientToken sets the ClientToken field's value.
7548func (s *UpdateMeshInput) SetClientToken(v string) *UpdateMeshInput {
7549	s.ClientToken = &v
7550	return s
7551}
7552
7553// SetMeshName sets the MeshName field's value.
7554func (s *UpdateMeshInput) SetMeshName(v string) *UpdateMeshInput {
7555	s.MeshName = &v
7556	return s
7557}
7558
7559// SetSpec sets the Spec field's value.
7560func (s *UpdateMeshInput) SetSpec(v *MeshSpec) *UpdateMeshInput {
7561	s.Spec = v
7562	return s
7563}
7564
7565type UpdateMeshOutput struct {
7566	_ struct{} `type:"structure" payload:"Mesh"`
7567
7568	// An object that represents a service mesh returned by a describe operation.
7569	//
7570	// Mesh is a required field
7571	Mesh *MeshData `locationName:"mesh" type:"structure" required:"true"`
7572}
7573
7574// String returns the string representation
7575func (s UpdateMeshOutput) String() string {
7576	return awsutil.Prettify(s)
7577}
7578
7579// GoString returns the string representation
7580func (s UpdateMeshOutput) GoString() string {
7581	return s.String()
7582}
7583
7584// SetMesh sets the Mesh field's value.
7585func (s *UpdateMeshOutput) SetMesh(v *MeshData) *UpdateMeshOutput {
7586	s.Mesh = v
7587	return s
7588}
7589
7590type UpdateRouteInput struct {
7591	_ struct{} `type:"structure"`
7592
7593	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
7594
7595	// MeshName is a required field
7596	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
7597
7598	// RouteName is a required field
7599	RouteName *string `location:"uri" locationName:"routeName" min:"1" type:"string" required:"true"`
7600
7601	// An object that represents a route specification. Specify one route type.
7602	//
7603	// Spec is a required field
7604	Spec *RouteSpec `locationName:"spec" type:"structure" required:"true"`
7605
7606	// VirtualRouterName is a required field
7607	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
7608}
7609
7610// String returns the string representation
7611func (s UpdateRouteInput) String() string {
7612	return awsutil.Prettify(s)
7613}
7614
7615// GoString returns the string representation
7616func (s UpdateRouteInput) GoString() string {
7617	return s.String()
7618}
7619
7620// Validate inspects the fields of the type to determine if they are valid.
7621func (s *UpdateRouteInput) Validate() error {
7622	invalidParams := request.ErrInvalidParams{Context: "UpdateRouteInput"}
7623	if s.MeshName == nil {
7624		invalidParams.Add(request.NewErrParamRequired("MeshName"))
7625	}
7626	if s.MeshName != nil && len(*s.MeshName) < 1 {
7627		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
7628	}
7629	if s.RouteName == nil {
7630		invalidParams.Add(request.NewErrParamRequired("RouteName"))
7631	}
7632	if s.RouteName != nil && len(*s.RouteName) < 1 {
7633		invalidParams.Add(request.NewErrParamMinLen("RouteName", 1))
7634	}
7635	if s.Spec == nil {
7636		invalidParams.Add(request.NewErrParamRequired("Spec"))
7637	}
7638	if s.VirtualRouterName == nil {
7639		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
7640	}
7641	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
7642		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
7643	}
7644	if s.Spec != nil {
7645		if err := s.Spec.Validate(); err != nil {
7646			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
7647		}
7648	}
7649
7650	if invalidParams.Len() > 0 {
7651		return invalidParams
7652	}
7653	return nil
7654}
7655
7656// SetClientToken sets the ClientToken field's value.
7657func (s *UpdateRouteInput) SetClientToken(v string) *UpdateRouteInput {
7658	s.ClientToken = &v
7659	return s
7660}
7661
7662// SetMeshName sets the MeshName field's value.
7663func (s *UpdateRouteInput) SetMeshName(v string) *UpdateRouteInput {
7664	s.MeshName = &v
7665	return s
7666}
7667
7668// SetRouteName sets the RouteName field's value.
7669func (s *UpdateRouteInput) SetRouteName(v string) *UpdateRouteInput {
7670	s.RouteName = &v
7671	return s
7672}
7673
7674// SetSpec sets the Spec field's value.
7675func (s *UpdateRouteInput) SetSpec(v *RouteSpec) *UpdateRouteInput {
7676	s.Spec = v
7677	return s
7678}
7679
7680// SetVirtualRouterName sets the VirtualRouterName field's value.
7681func (s *UpdateRouteInput) SetVirtualRouterName(v string) *UpdateRouteInput {
7682	s.VirtualRouterName = &v
7683	return s
7684}
7685
7686type UpdateRouteOutput struct {
7687	_ struct{} `type:"structure" payload:"Route"`
7688
7689	// An object that represents a route returned by a describe operation.
7690	//
7691	// Route is a required field
7692	Route *RouteData `locationName:"route" type:"structure" required:"true"`
7693}
7694
7695// String returns the string representation
7696func (s UpdateRouteOutput) String() string {
7697	return awsutil.Prettify(s)
7698}
7699
7700// GoString returns the string representation
7701func (s UpdateRouteOutput) GoString() string {
7702	return s.String()
7703}
7704
7705// SetRoute sets the Route field's value.
7706func (s *UpdateRouteOutput) SetRoute(v *RouteData) *UpdateRouteOutput {
7707	s.Route = v
7708	return s
7709}
7710
7711type UpdateVirtualNodeInput struct {
7712	_ struct{} `type:"structure"`
7713
7714	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
7715
7716	// MeshName is a required field
7717	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
7718
7719	// An object that represents the specification of a virtual node.
7720	//
7721	// Spec is a required field
7722	Spec *VirtualNodeSpec `locationName:"spec" type:"structure" required:"true"`
7723
7724	// VirtualNodeName is a required field
7725	VirtualNodeName *string `location:"uri" locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
7726}
7727
7728// String returns the string representation
7729func (s UpdateVirtualNodeInput) String() string {
7730	return awsutil.Prettify(s)
7731}
7732
7733// GoString returns the string representation
7734func (s UpdateVirtualNodeInput) GoString() string {
7735	return s.String()
7736}
7737
7738// Validate inspects the fields of the type to determine if they are valid.
7739func (s *UpdateVirtualNodeInput) Validate() error {
7740	invalidParams := request.ErrInvalidParams{Context: "UpdateVirtualNodeInput"}
7741	if s.MeshName == nil {
7742		invalidParams.Add(request.NewErrParamRequired("MeshName"))
7743	}
7744	if s.MeshName != nil && len(*s.MeshName) < 1 {
7745		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
7746	}
7747	if s.Spec == nil {
7748		invalidParams.Add(request.NewErrParamRequired("Spec"))
7749	}
7750	if s.VirtualNodeName == nil {
7751		invalidParams.Add(request.NewErrParamRequired("VirtualNodeName"))
7752	}
7753	if s.VirtualNodeName != nil && len(*s.VirtualNodeName) < 1 {
7754		invalidParams.Add(request.NewErrParamMinLen("VirtualNodeName", 1))
7755	}
7756	if s.Spec != nil {
7757		if err := s.Spec.Validate(); err != nil {
7758			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
7759		}
7760	}
7761
7762	if invalidParams.Len() > 0 {
7763		return invalidParams
7764	}
7765	return nil
7766}
7767
7768// SetClientToken sets the ClientToken field's value.
7769func (s *UpdateVirtualNodeInput) SetClientToken(v string) *UpdateVirtualNodeInput {
7770	s.ClientToken = &v
7771	return s
7772}
7773
7774// SetMeshName sets the MeshName field's value.
7775func (s *UpdateVirtualNodeInput) SetMeshName(v string) *UpdateVirtualNodeInput {
7776	s.MeshName = &v
7777	return s
7778}
7779
7780// SetSpec sets the Spec field's value.
7781func (s *UpdateVirtualNodeInput) SetSpec(v *VirtualNodeSpec) *UpdateVirtualNodeInput {
7782	s.Spec = v
7783	return s
7784}
7785
7786// SetVirtualNodeName sets the VirtualNodeName field's value.
7787func (s *UpdateVirtualNodeInput) SetVirtualNodeName(v string) *UpdateVirtualNodeInput {
7788	s.VirtualNodeName = &v
7789	return s
7790}
7791
7792type UpdateVirtualNodeOutput struct {
7793	_ struct{} `type:"structure" payload:"VirtualNode"`
7794
7795	// An object that represents a virtual node returned by a describe operation.
7796	//
7797	// VirtualNode is a required field
7798	VirtualNode *VirtualNodeData `locationName:"virtualNode" type:"structure" required:"true"`
7799}
7800
7801// String returns the string representation
7802func (s UpdateVirtualNodeOutput) String() string {
7803	return awsutil.Prettify(s)
7804}
7805
7806// GoString returns the string representation
7807func (s UpdateVirtualNodeOutput) GoString() string {
7808	return s.String()
7809}
7810
7811// SetVirtualNode sets the VirtualNode field's value.
7812func (s *UpdateVirtualNodeOutput) SetVirtualNode(v *VirtualNodeData) *UpdateVirtualNodeOutput {
7813	s.VirtualNode = v
7814	return s
7815}
7816
7817type UpdateVirtualRouterInput struct {
7818	_ struct{} `type:"structure"`
7819
7820	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
7821
7822	// MeshName is a required field
7823	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
7824
7825	// An object that represents the specification of a virtual router.
7826	//
7827	// Spec is a required field
7828	Spec *VirtualRouterSpec `locationName:"spec" type:"structure" required:"true"`
7829
7830	// VirtualRouterName is a required field
7831	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
7832}
7833
7834// String returns the string representation
7835func (s UpdateVirtualRouterInput) String() string {
7836	return awsutil.Prettify(s)
7837}
7838
7839// GoString returns the string representation
7840func (s UpdateVirtualRouterInput) GoString() string {
7841	return s.String()
7842}
7843
7844// Validate inspects the fields of the type to determine if they are valid.
7845func (s *UpdateVirtualRouterInput) Validate() error {
7846	invalidParams := request.ErrInvalidParams{Context: "UpdateVirtualRouterInput"}
7847	if s.MeshName == nil {
7848		invalidParams.Add(request.NewErrParamRequired("MeshName"))
7849	}
7850	if s.MeshName != nil && len(*s.MeshName) < 1 {
7851		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
7852	}
7853	if s.Spec == nil {
7854		invalidParams.Add(request.NewErrParamRequired("Spec"))
7855	}
7856	if s.VirtualRouterName == nil {
7857		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
7858	}
7859	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
7860		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
7861	}
7862	if s.Spec != nil {
7863		if err := s.Spec.Validate(); err != nil {
7864			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
7865		}
7866	}
7867
7868	if invalidParams.Len() > 0 {
7869		return invalidParams
7870	}
7871	return nil
7872}
7873
7874// SetClientToken sets the ClientToken field's value.
7875func (s *UpdateVirtualRouterInput) SetClientToken(v string) *UpdateVirtualRouterInput {
7876	s.ClientToken = &v
7877	return s
7878}
7879
7880// SetMeshName sets the MeshName field's value.
7881func (s *UpdateVirtualRouterInput) SetMeshName(v string) *UpdateVirtualRouterInput {
7882	s.MeshName = &v
7883	return s
7884}
7885
7886// SetSpec sets the Spec field's value.
7887func (s *UpdateVirtualRouterInput) SetSpec(v *VirtualRouterSpec) *UpdateVirtualRouterInput {
7888	s.Spec = v
7889	return s
7890}
7891
7892// SetVirtualRouterName sets the VirtualRouterName field's value.
7893func (s *UpdateVirtualRouterInput) SetVirtualRouterName(v string) *UpdateVirtualRouterInput {
7894	s.VirtualRouterName = &v
7895	return s
7896}
7897
7898type UpdateVirtualRouterOutput struct {
7899	_ struct{} `type:"structure" payload:"VirtualRouter"`
7900
7901	// An object that represents a virtual router returned by a describe operation.
7902	//
7903	// VirtualRouter is a required field
7904	VirtualRouter *VirtualRouterData `locationName:"virtualRouter" type:"structure" required:"true"`
7905}
7906
7907// String returns the string representation
7908func (s UpdateVirtualRouterOutput) String() string {
7909	return awsutil.Prettify(s)
7910}
7911
7912// GoString returns the string representation
7913func (s UpdateVirtualRouterOutput) GoString() string {
7914	return s.String()
7915}
7916
7917// SetVirtualRouter sets the VirtualRouter field's value.
7918func (s *UpdateVirtualRouterOutput) SetVirtualRouter(v *VirtualRouterData) *UpdateVirtualRouterOutput {
7919	s.VirtualRouter = v
7920	return s
7921}
7922
7923type UpdateVirtualServiceInput struct {
7924	_ struct{} `type:"structure"`
7925
7926	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
7927
7928	// MeshName is a required field
7929	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
7930
7931	// An object that represents the specification of a virtual service.
7932	//
7933	// Spec is a required field
7934	Spec *VirtualServiceSpec `locationName:"spec" type:"structure" required:"true"`
7935
7936	// VirtualServiceName is a required field
7937	VirtualServiceName *string `location:"uri" locationName:"virtualServiceName" type:"string" required:"true"`
7938}
7939
7940// String returns the string representation
7941func (s UpdateVirtualServiceInput) String() string {
7942	return awsutil.Prettify(s)
7943}
7944
7945// GoString returns the string representation
7946func (s UpdateVirtualServiceInput) GoString() string {
7947	return s.String()
7948}
7949
7950// Validate inspects the fields of the type to determine if they are valid.
7951func (s *UpdateVirtualServiceInput) Validate() error {
7952	invalidParams := request.ErrInvalidParams{Context: "UpdateVirtualServiceInput"}
7953	if s.MeshName == nil {
7954		invalidParams.Add(request.NewErrParamRequired("MeshName"))
7955	}
7956	if s.MeshName != nil && len(*s.MeshName) < 1 {
7957		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
7958	}
7959	if s.Spec == nil {
7960		invalidParams.Add(request.NewErrParamRequired("Spec"))
7961	}
7962	if s.VirtualServiceName == nil {
7963		invalidParams.Add(request.NewErrParamRequired("VirtualServiceName"))
7964	}
7965	if s.VirtualServiceName != nil && len(*s.VirtualServiceName) < 1 {
7966		invalidParams.Add(request.NewErrParamMinLen("VirtualServiceName", 1))
7967	}
7968	if s.Spec != nil {
7969		if err := s.Spec.Validate(); err != nil {
7970			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
7971		}
7972	}
7973
7974	if invalidParams.Len() > 0 {
7975		return invalidParams
7976	}
7977	return nil
7978}
7979
7980// SetClientToken sets the ClientToken field's value.
7981func (s *UpdateVirtualServiceInput) SetClientToken(v string) *UpdateVirtualServiceInput {
7982	s.ClientToken = &v
7983	return s
7984}
7985
7986// SetMeshName sets the MeshName field's value.
7987func (s *UpdateVirtualServiceInput) SetMeshName(v string) *UpdateVirtualServiceInput {
7988	s.MeshName = &v
7989	return s
7990}
7991
7992// SetSpec sets the Spec field's value.
7993func (s *UpdateVirtualServiceInput) SetSpec(v *VirtualServiceSpec) *UpdateVirtualServiceInput {
7994	s.Spec = v
7995	return s
7996}
7997
7998// SetVirtualServiceName sets the VirtualServiceName field's value.
7999func (s *UpdateVirtualServiceInput) SetVirtualServiceName(v string) *UpdateVirtualServiceInput {
8000	s.VirtualServiceName = &v
8001	return s
8002}
8003
8004type UpdateVirtualServiceOutput struct {
8005	_ struct{} `type:"structure" payload:"VirtualService"`
8006
8007	// An object that represents a virtual service returned by a describe operation.
8008	//
8009	// VirtualService is a required field
8010	VirtualService *VirtualServiceData `locationName:"virtualService" type:"structure" required:"true"`
8011}
8012
8013// String returns the string representation
8014func (s UpdateVirtualServiceOutput) String() string {
8015	return awsutil.Prettify(s)
8016}
8017
8018// GoString returns the string representation
8019func (s UpdateVirtualServiceOutput) GoString() string {
8020	return s.String()
8021}
8022
8023// SetVirtualService sets the VirtualService field's value.
8024func (s *UpdateVirtualServiceOutput) SetVirtualService(v *VirtualServiceData) *UpdateVirtualServiceOutput {
8025	s.VirtualService = v
8026	return s
8027}
8028
8029// An object that represents a virtual node returned by a describe operation.
8030type VirtualNodeData struct {
8031	_ struct{} `type:"structure"`
8032
8033	// MeshName is a required field
8034	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
8035
8036	// An object that represents metadata for a resource.
8037	//
8038	// Metadata is a required field
8039	Metadata *ResourceMetadata `locationName:"metadata" type:"structure" required:"true"`
8040
8041	// An object that represents the specification of a virtual node.
8042	//
8043	// Spec is a required field
8044	Spec *VirtualNodeSpec `locationName:"spec" type:"structure" required:"true"`
8045
8046	// An object that represents the current status of the virtual node.
8047	//
8048	// Status is a required field
8049	Status *VirtualNodeStatus `locationName:"status" type:"structure" required:"true"`
8050
8051	// VirtualNodeName is a required field
8052	VirtualNodeName *string `locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
8053}
8054
8055// String returns the string representation
8056func (s VirtualNodeData) String() string {
8057	return awsutil.Prettify(s)
8058}
8059
8060// GoString returns the string representation
8061func (s VirtualNodeData) GoString() string {
8062	return s.String()
8063}
8064
8065// SetMeshName sets the MeshName field's value.
8066func (s *VirtualNodeData) SetMeshName(v string) *VirtualNodeData {
8067	s.MeshName = &v
8068	return s
8069}
8070
8071// SetMetadata sets the Metadata field's value.
8072func (s *VirtualNodeData) SetMetadata(v *ResourceMetadata) *VirtualNodeData {
8073	s.Metadata = v
8074	return s
8075}
8076
8077// SetSpec sets the Spec field's value.
8078func (s *VirtualNodeData) SetSpec(v *VirtualNodeSpec) *VirtualNodeData {
8079	s.Spec = v
8080	return s
8081}
8082
8083// SetStatus sets the Status field's value.
8084func (s *VirtualNodeData) SetStatus(v *VirtualNodeStatus) *VirtualNodeData {
8085	s.Status = v
8086	return s
8087}
8088
8089// SetVirtualNodeName sets the VirtualNodeName field's value.
8090func (s *VirtualNodeData) SetVirtualNodeName(v string) *VirtualNodeData {
8091	s.VirtualNodeName = &v
8092	return s
8093}
8094
8095// An object that represents a virtual node returned by a list operation.
8096type VirtualNodeRef struct {
8097	_ struct{} `type:"structure"`
8098
8099	// Arn is a required field
8100	Arn *string `locationName:"arn" type:"string" required:"true"`
8101
8102	// MeshName is a required field
8103	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
8104
8105	// VirtualNodeName is a required field
8106	VirtualNodeName *string `locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
8107}
8108
8109// String returns the string representation
8110func (s VirtualNodeRef) String() string {
8111	return awsutil.Prettify(s)
8112}
8113
8114// GoString returns the string representation
8115func (s VirtualNodeRef) GoString() string {
8116	return s.String()
8117}
8118
8119// SetArn sets the Arn field's value.
8120func (s *VirtualNodeRef) SetArn(v string) *VirtualNodeRef {
8121	s.Arn = &v
8122	return s
8123}
8124
8125// SetMeshName sets the MeshName field's value.
8126func (s *VirtualNodeRef) SetMeshName(v string) *VirtualNodeRef {
8127	s.MeshName = &v
8128	return s
8129}
8130
8131// SetVirtualNodeName sets the VirtualNodeName field's value.
8132func (s *VirtualNodeRef) SetVirtualNodeName(v string) *VirtualNodeRef {
8133	s.VirtualNodeName = &v
8134	return s
8135}
8136
8137// An object that represents a virtual node service provider.
8138type VirtualNodeServiceProvider struct {
8139	_ struct{} `type:"structure"`
8140
8141	// VirtualNodeName is a required field
8142	VirtualNodeName *string `locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
8143}
8144
8145// String returns the string representation
8146func (s VirtualNodeServiceProvider) String() string {
8147	return awsutil.Prettify(s)
8148}
8149
8150// GoString returns the string representation
8151func (s VirtualNodeServiceProvider) GoString() string {
8152	return s.String()
8153}
8154
8155// Validate inspects the fields of the type to determine if they are valid.
8156func (s *VirtualNodeServiceProvider) Validate() error {
8157	invalidParams := request.ErrInvalidParams{Context: "VirtualNodeServiceProvider"}
8158	if s.VirtualNodeName == nil {
8159		invalidParams.Add(request.NewErrParamRequired("VirtualNodeName"))
8160	}
8161	if s.VirtualNodeName != nil && len(*s.VirtualNodeName) < 1 {
8162		invalidParams.Add(request.NewErrParamMinLen("VirtualNodeName", 1))
8163	}
8164
8165	if invalidParams.Len() > 0 {
8166		return invalidParams
8167	}
8168	return nil
8169}
8170
8171// SetVirtualNodeName sets the VirtualNodeName field's value.
8172func (s *VirtualNodeServiceProvider) SetVirtualNodeName(v string) *VirtualNodeServiceProvider {
8173	s.VirtualNodeName = &v
8174	return s
8175}
8176
8177// An object that represents the specification of a virtual node.
8178type VirtualNodeSpec struct {
8179	_ struct{} `type:"structure"`
8180
8181	Backends []*Backend `locationName:"backends" type:"list"`
8182
8183	Listeners []*Listener `locationName:"listeners" type:"list"`
8184
8185	// An object that represents the logging information for a virtual node.
8186	Logging *Logging `locationName:"logging" type:"structure"`
8187
8188	// An object that represents the service discovery information for a virtual
8189	// node.
8190	ServiceDiscovery *ServiceDiscovery `locationName:"serviceDiscovery" type:"structure"`
8191}
8192
8193// String returns the string representation
8194func (s VirtualNodeSpec) String() string {
8195	return awsutil.Prettify(s)
8196}
8197
8198// GoString returns the string representation
8199func (s VirtualNodeSpec) GoString() string {
8200	return s.String()
8201}
8202
8203// Validate inspects the fields of the type to determine if they are valid.
8204func (s *VirtualNodeSpec) Validate() error {
8205	invalidParams := request.ErrInvalidParams{Context: "VirtualNodeSpec"}
8206	if s.Backends != nil {
8207		for i, v := range s.Backends {
8208			if v == nil {
8209				continue
8210			}
8211			if err := v.Validate(); err != nil {
8212				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Backends", i), err.(request.ErrInvalidParams))
8213			}
8214		}
8215	}
8216	if s.Listeners != nil {
8217		for i, v := range s.Listeners {
8218			if v == nil {
8219				continue
8220			}
8221			if err := v.Validate(); err != nil {
8222				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Listeners", i), err.(request.ErrInvalidParams))
8223			}
8224		}
8225	}
8226	if s.Logging != nil {
8227		if err := s.Logging.Validate(); err != nil {
8228			invalidParams.AddNested("Logging", err.(request.ErrInvalidParams))
8229		}
8230	}
8231	if s.ServiceDiscovery != nil {
8232		if err := s.ServiceDiscovery.Validate(); err != nil {
8233			invalidParams.AddNested("ServiceDiscovery", err.(request.ErrInvalidParams))
8234		}
8235	}
8236
8237	if invalidParams.Len() > 0 {
8238		return invalidParams
8239	}
8240	return nil
8241}
8242
8243// SetBackends sets the Backends field's value.
8244func (s *VirtualNodeSpec) SetBackends(v []*Backend) *VirtualNodeSpec {
8245	s.Backends = v
8246	return s
8247}
8248
8249// SetListeners sets the Listeners field's value.
8250func (s *VirtualNodeSpec) SetListeners(v []*Listener) *VirtualNodeSpec {
8251	s.Listeners = v
8252	return s
8253}
8254
8255// SetLogging sets the Logging field's value.
8256func (s *VirtualNodeSpec) SetLogging(v *Logging) *VirtualNodeSpec {
8257	s.Logging = v
8258	return s
8259}
8260
8261// SetServiceDiscovery sets the ServiceDiscovery field's value.
8262func (s *VirtualNodeSpec) SetServiceDiscovery(v *ServiceDiscovery) *VirtualNodeSpec {
8263	s.ServiceDiscovery = v
8264	return s
8265}
8266
8267// An object that represents the current status of the virtual node.
8268type VirtualNodeStatus struct {
8269	_ struct{} `type:"structure"`
8270
8271	// Status is a required field
8272	Status *string `locationName:"status" type:"string" required:"true" enum:"VirtualNodeStatusCode"`
8273}
8274
8275// String returns the string representation
8276func (s VirtualNodeStatus) String() string {
8277	return awsutil.Prettify(s)
8278}
8279
8280// GoString returns the string representation
8281func (s VirtualNodeStatus) GoString() string {
8282	return s.String()
8283}
8284
8285// SetStatus sets the Status field's value.
8286func (s *VirtualNodeStatus) SetStatus(v string) *VirtualNodeStatus {
8287	s.Status = &v
8288	return s
8289}
8290
8291// An object that represents a virtual router returned by a describe operation.
8292type VirtualRouterData struct {
8293	_ struct{} `type:"structure"`
8294
8295	// MeshName is a required field
8296	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
8297
8298	// An object that represents metadata for a resource.
8299	//
8300	// Metadata is a required field
8301	Metadata *ResourceMetadata `locationName:"metadata" type:"structure" required:"true"`
8302
8303	// An object that represents the specification of a virtual router.
8304	//
8305	// Spec is a required field
8306	Spec *VirtualRouterSpec `locationName:"spec" type:"structure" required:"true"`
8307
8308	// An object that represents the status of a virtual router.
8309	//
8310	// Status is a required field
8311	Status *VirtualRouterStatus `locationName:"status" type:"structure" required:"true"`
8312
8313	// VirtualRouterName is a required field
8314	VirtualRouterName *string `locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
8315}
8316
8317// String returns the string representation
8318func (s VirtualRouterData) String() string {
8319	return awsutil.Prettify(s)
8320}
8321
8322// GoString returns the string representation
8323func (s VirtualRouterData) GoString() string {
8324	return s.String()
8325}
8326
8327// SetMeshName sets the MeshName field's value.
8328func (s *VirtualRouterData) SetMeshName(v string) *VirtualRouterData {
8329	s.MeshName = &v
8330	return s
8331}
8332
8333// SetMetadata sets the Metadata field's value.
8334func (s *VirtualRouterData) SetMetadata(v *ResourceMetadata) *VirtualRouterData {
8335	s.Metadata = v
8336	return s
8337}
8338
8339// SetSpec sets the Spec field's value.
8340func (s *VirtualRouterData) SetSpec(v *VirtualRouterSpec) *VirtualRouterData {
8341	s.Spec = v
8342	return s
8343}
8344
8345// SetStatus sets the Status field's value.
8346func (s *VirtualRouterData) SetStatus(v *VirtualRouterStatus) *VirtualRouterData {
8347	s.Status = v
8348	return s
8349}
8350
8351// SetVirtualRouterName sets the VirtualRouterName field's value.
8352func (s *VirtualRouterData) SetVirtualRouterName(v string) *VirtualRouterData {
8353	s.VirtualRouterName = &v
8354	return s
8355}
8356
8357// An object that represents a virtual router listener.
8358type VirtualRouterListener struct {
8359	_ struct{} `type:"structure"`
8360
8361	// An object that represents a port mapping.
8362	//
8363	// PortMapping is a required field
8364	PortMapping *PortMapping `locationName:"portMapping" type:"structure" required:"true"`
8365}
8366
8367// String returns the string representation
8368func (s VirtualRouterListener) String() string {
8369	return awsutil.Prettify(s)
8370}
8371
8372// GoString returns the string representation
8373func (s VirtualRouterListener) GoString() string {
8374	return s.String()
8375}
8376
8377// Validate inspects the fields of the type to determine if they are valid.
8378func (s *VirtualRouterListener) Validate() error {
8379	invalidParams := request.ErrInvalidParams{Context: "VirtualRouterListener"}
8380	if s.PortMapping == nil {
8381		invalidParams.Add(request.NewErrParamRequired("PortMapping"))
8382	}
8383	if s.PortMapping != nil {
8384		if err := s.PortMapping.Validate(); err != nil {
8385			invalidParams.AddNested("PortMapping", err.(request.ErrInvalidParams))
8386		}
8387	}
8388
8389	if invalidParams.Len() > 0 {
8390		return invalidParams
8391	}
8392	return nil
8393}
8394
8395// SetPortMapping sets the PortMapping field's value.
8396func (s *VirtualRouterListener) SetPortMapping(v *PortMapping) *VirtualRouterListener {
8397	s.PortMapping = v
8398	return s
8399}
8400
8401// An object that represents a virtual router returned by a list operation.
8402type VirtualRouterRef struct {
8403	_ struct{} `type:"structure"`
8404
8405	// Arn is a required field
8406	Arn *string `locationName:"arn" type:"string" required:"true"`
8407
8408	// MeshName is a required field
8409	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
8410
8411	// VirtualRouterName is a required field
8412	VirtualRouterName *string `locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
8413}
8414
8415// String returns the string representation
8416func (s VirtualRouterRef) String() string {
8417	return awsutil.Prettify(s)
8418}
8419
8420// GoString returns the string representation
8421func (s VirtualRouterRef) GoString() string {
8422	return s.String()
8423}
8424
8425// SetArn sets the Arn field's value.
8426func (s *VirtualRouterRef) SetArn(v string) *VirtualRouterRef {
8427	s.Arn = &v
8428	return s
8429}
8430
8431// SetMeshName sets the MeshName field's value.
8432func (s *VirtualRouterRef) SetMeshName(v string) *VirtualRouterRef {
8433	s.MeshName = &v
8434	return s
8435}
8436
8437// SetVirtualRouterName sets the VirtualRouterName field's value.
8438func (s *VirtualRouterRef) SetVirtualRouterName(v string) *VirtualRouterRef {
8439	s.VirtualRouterName = &v
8440	return s
8441}
8442
8443// An object that represents a virtual node service provider.
8444type VirtualRouterServiceProvider struct {
8445	_ struct{} `type:"structure"`
8446
8447	// VirtualRouterName is a required field
8448	VirtualRouterName *string `locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
8449}
8450
8451// String returns the string representation
8452func (s VirtualRouterServiceProvider) String() string {
8453	return awsutil.Prettify(s)
8454}
8455
8456// GoString returns the string representation
8457func (s VirtualRouterServiceProvider) GoString() string {
8458	return s.String()
8459}
8460
8461// Validate inspects the fields of the type to determine if they are valid.
8462func (s *VirtualRouterServiceProvider) Validate() error {
8463	invalidParams := request.ErrInvalidParams{Context: "VirtualRouterServiceProvider"}
8464	if s.VirtualRouterName == nil {
8465		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
8466	}
8467	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
8468		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
8469	}
8470
8471	if invalidParams.Len() > 0 {
8472		return invalidParams
8473	}
8474	return nil
8475}
8476
8477// SetVirtualRouterName sets the VirtualRouterName field's value.
8478func (s *VirtualRouterServiceProvider) SetVirtualRouterName(v string) *VirtualRouterServiceProvider {
8479	s.VirtualRouterName = &v
8480	return s
8481}
8482
8483// An object that represents the specification of a virtual router.
8484type VirtualRouterSpec struct {
8485	_ struct{} `type:"structure"`
8486
8487	Listeners []*VirtualRouterListener `locationName:"listeners" min:"1" type:"list"`
8488}
8489
8490// String returns the string representation
8491func (s VirtualRouterSpec) String() string {
8492	return awsutil.Prettify(s)
8493}
8494
8495// GoString returns the string representation
8496func (s VirtualRouterSpec) GoString() string {
8497	return s.String()
8498}
8499
8500// Validate inspects the fields of the type to determine if they are valid.
8501func (s *VirtualRouterSpec) Validate() error {
8502	invalidParams := request.ErrInvalidParams{Context: "VirtualRouterSpec"}
8503	if s.Listeners != nil && len(s.Listeners) < 1 {
8504		invalidParams.Add(request.NewErrParamMinLen("Listeners", 1))
8505	}
8506	if s.Listeners != nil {
8507		for i, v := range s.Listeners {
8508			if v == nil {
8509				continue
8510			}
8511			if err := v.Validate(); err != nil {
8512				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Listeners", i), err.(request.ErrInvalidParams))
8513			}
8514		}
8515	}
8516
8517	if invalidParams.Len() > 0 {
8518		return invalidParams
8519	}
8520	return nil
8521}
8522
8523// SetListeners sets the Listeners field's value.
8524func (s *VirtualRouterSpec) SetListeners(v []*VirtualRouterListener) *VirtualRouterSpec {
8525	s.Listeners = v
8526	return s
8527}
8528
8529// An object that represents the status of a virtual router.
8530type VirtualRouterStatus struct {
8531	_ struct{} `type:"structure"`
8532
8533	// Status is a required field
8534	Status *string `locationName:"status" type:"string" required:"true" enum:"VirtualRouterStatusCode"`
8535}
8536
8537// String returns the string representation
8538func (s VirtualRouterStatus) String() string {
8539	return awsutil.Prettify(s)
8540}
8541
8542// GoString returns the string representation
8543func (s VirtualRouterStatus) GoString() string {
8544	return s.String()
8545}
8546
8547// SetStatus sets the Status field's value.
8548func (s *VirtualRouterStatus) SetStatus(v string) *VirtualRouterStatus {
8549	s.Status = &v
8550	return s
8551}
8552
8553// An object that represents a virtual service backend for a virtual node.
8554type VirtualServiceBackend struct {
8555	_ struct{} `type:"structure"`
8556
8557	// VirtualServiceName is a required field
8558	VirtualServiceName *string `locationName:"virtualServiceName" type:"string" required:"true"`
8559}
8560
8561// String returns the string representation
8562func (s VirtualServiceBackend) String() string {
8563	return awsutil.Prettify(s)
8564}
8565
8566// GoString returns the string representation
8567func (s VirtualServiceBackend) GoString() string {
8568	return s.String()
8569}
8570
8571// Validate inspects the fields of the type to determine if they are valid.
8572func (s *VirtualServiceBackend) Validate() error {
8573	invalidParams := request.ErrInvalidParams{Context: "VirtualServiceBackend"}
8574	if s.VirtualServiceName == nil {
8575		invalidParams.Add(request.NewErrParamRequired("VirtualServiceName"))
8576	}
8577
8578	if invalidParams.Len() > 0 {
8579		return invalidParams
8580	}
8581	return nil
8582}
8583
8584// SetVirtualServiceName sets the VirtualServiceName field's value.
8585func (s *VirtualServiceBackend) SetVirtualServiceName(v string) *VirtualServiceBackend {
8586	s.VirtualServiceName = &v
8587	return s
8588}
8589
8590// An object that represents a virtual service returned by a describe operation.
8591type VirtualServiceData struct {
8592	_ struct{} `type:"structure"`
8593
8594	// MeshName is a required field
8595	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
8596
8597	// An object that represents metadata for a resource.
8598	//
8599	// Metadata is a required field
8600	Metadata *ResourceMetadata `locationName:"metadata" type:"structure" required:"true"`
8601
8602	// An object that represents the specification of a virtual service.
8603	//
8604	// Spec is a required field
8605	Spec *VirtualServiceSpec `locationName:"spec" type:"structure" required:"true"`
8606
8607	// An object that represents the status of a virtual service.
8608	//
8609	// Status is a required field
8610	Status *VirtualServiceStatus `locationName:"status" type:"structure" required:"true"`
8611
8612	// VirtualServiceName is a required field
8613	VirtualServiceName *string `locationName:"virtualServiceName" type:"string" required:"true"`
8614}
8615
8616// String returns the string representation
8617func (s VirtualServiceData) String() string {
8618	return awsutil.Prettify(s)
8619}
8620
8621// GoString returns the string representation
8622func (s VirtualServiceData) GoString() string {
8623	return s.String()
8624}
8625
8626// SetMeshName sets the MeshName field's value.
8627func (s *VirtualServiceData) SetMeshName(v string) *VirtualServiceData {
8628	s.MeshName = &v
8629	return s
8630}
8631
8632// SetMetadata sets the Metadata field's value.
8633func (s *VirtualServiceData) SetMetadata(v *ResourceMetadata) *VirtualServiceData {
8634	s.Metadata = v
8635	return s
8636}
8637
8638// SetSpec sets the Spec field's value.
8639func (s *VirtualServiceData) SetSpec(v *VirtualServiceSpec) *VirtualServiceData {
8640	s.Spec = v
8641	return s
8642}
8643
8644// SetStatus sets the Status field's value.
8645func (s *VirtualServiceData) SetStatus(v *VirtualServiceStatus) *VirtualServiceData {
8646	s.Status = v
8647	return s
8648}
8649
8650// SetVirtualServiceName sets the VirtualServiceName field's value.
8651func (s *VirtualServiceData) SetVirtualServiceName(v string) *VirtualServiceData {
8652	s.VirtualServiceName = &v
8653	return s
8654}
8655
8656// An object that represents the provider for a virtual service.
8657type VirtualServiceProvider struct {
8658	_ struct{} `type:"structure"`
8659
8660	// An object that represents a virtual node service provider.
8661	VirtualNode *VirtualNodeServiceProvider `locationName:"virtualNode" type:"structure"`
8662
8663	// An object that represents a virtual node service provider.
8664	VirtualRouter *VirtualRouterServiceProvider `locationName:"virtualRouter" type:"structure"`
8665}
8666
8667// String returns the string representation
8668func (s VirtualServiceProvider) String() string {
8669	return awsutil.Prettify(s)
8670}
8671
8672// GoString returns the string representation
8673func (s VirtualServiceProvider) GoString() string {
8674	return s.String()
8675}
8676
8677// Validate inspects the fields of the type to determine if they are valid.
8678func (s *VirtualServiceProvider) Validate() error {
8679	invalidParams := request.ErrInvalidParams{Context: "VirtualServiceProvider"}
8680	if s.VirtualNode != nil {
8681		if err := s.VirtualNode.Validate(); err != nil {
8682			invalidParams.AddNested("VirtualNode", err.(request.ErrInvalidParams))
8683		}
8684	}
8685	if s.VirtualRouter != nil {
8686		if err := s.VirtualRouter.Validate(); err != nil {
8687			invalidParams.AddNested("VirtualRouter", err.(request.ErrInvalidParams))
8688		}
8689	}
8690
8691	if invalidParams.Len() > 0 {
8692		return invalidParams
8693	}
8694	return nil
8695}
8696
8697// SetVirtualNode sets the VirtualNode field's value.
8698func (s *VirtualServiceProvider) SetVirtualNode(v *VirtualNodeServiceProvider) *VirtualServiceProvider {
8699	s.VirtualNode = v
8700	return s
8701}
8702
8703// SetVirtualRouter sets the VirtualRouter field's value.
8704func (s *VirtualServiceProvider) SetVirtualRouter(v *VirtualRouterServiceProvider) *VirtualServiceProvider {
8705	s.VirtualRouter = v
8706	return s
8707}
8708
8709// An object that represents a virtual service returned by a list operation.
8710type VirtualServiceRef struct {
8711	_ struct{} `type:"structure"`
8712
8713	// Arn is a required field
8714	Arn *string `locationName:"arn" type:"string" required:"true"`
8715
8716	// MeshName is a required field
8717	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
8718
8719	// VirtualServiceName is a required field
8720	VirtualServiceName *string `locationName:"virtualServiceName" type:"string" required:"true"`
8721}
8722
8723// String returns the string representation
8724func (s VirtualServiceRef) String() string {
8725	return awsutil.Prettify(s)
8726}
8727
8728// GoString returns the string representation
8729func (s VirtualServiceRef) GoString() string {
8730	return s.String()
8731}
8732
8733// SetArn sets the Arn field's value.
8734func (s *VirtualServiceRef) SetArn(v string) *VirtualServiceRef {
8735	s.Arn = &v
8736	return s
8737}
8738
8739// SetMeshName sets the MeshName field's value.
8740func (s *VirtualServiceRef) SetMeshName(v string) *VirtualServiceRef {
8741	s.MeshName = &v
8742	return s
8743}
8744
8745// SetVirtualServiceName sets the VirtualServiceName field's value.
8746func (s *VirtualServiceRef) SetVirtualServiceName(v string) *VirtualServiceRef {
8747	s.VirtualServiceName = &v
8748	return s
8749}
8750
8751// An object that represents the specification of a virtual service.
8752type VirtualServiceSpec struct {
8753	_ struct{} `type:"structure"`
8754
8755	// An object that represents the provider for a virtual service.
8756	Provider *VirtualServiceProvider `locationName:"provider" type:"structure"`
8757}
8758
8759// String returns the string representation
8760func (s VirtualServiceSpec) String() string {
8761	return awsutil.Prettify(s)
8762}
8763
8764// GoString returns the string representation
8765func (s VirtualServiceSpec) GoString() string {
8766	return s.String()
8767}
8768
8769// Validate inspects the fields of the type to determine if they are valid.
8770func (s *VirtualServiceSpec) Validate() error {
8771	invalidParams := request.ErrInvalidParams{Context: "VirtualServiceSpec"}
8772	if s.Provider != nil {
8773		if err := s.Provider.Validate(); err != nil {
8774			invalidParams.AddNested("Provider", err.(request.ErrInvalidParams))
8775		}
8776	}
8777
8778	if invalidParams.Len() > 0 {
8779		return invalidParams
8780	}
8781	return nil
8782}
8783
8784// SetProvider sets the Provider field's value.
8785func (s *VirtualServiceSpec) SetProvider(v *VirtualServiceProvider) *VirtualServiceSpec {
8786	s.Provider = v
8787	return s
8788}
8789
8790// An object that represents the status of a virtual service.
8791type VirtualServiceStatus struct {
8792	_ struct{} `type:"structure"`
8793
8794	// Status is a required field
8795	Status *string `locationName:"status" type:"string" required:"true" enum:"VirtualServiceStatusCode"`
8796}
8797
8798// String returns the string representation
8799func (s VirtualServiceStatus) String() string {
8800	return awsutil.Prettify(s)
8801}
8802
8803// GoString returns the string representation
8804func (s VirtualServiceStatus) GoString() string {
8805	return s.String()
8806}
8807
8808// SetStatus sets the Status field's value.
8809func (s *VirtualServiceStatus) SetStatus(v string) *VirtualServiceStatus {
8810	s.Status = &v
8811	return s
8812}
8813
8814// An object that represents a target and its relative weight. Traffic is distributed
8815// across targets according to their relative weight. For example, a weighted
8816// target with a relative weight of 50 receives five times as much traffic as
8817// one with a relative weight of 10. The total weight for all targets combined
8818// must be less than or equal to 100.
8819type WeightedTarget struct {
8820	_ struct{} `type:"structure"`
8821
8822	// VirtualNode is a required field
8823	VirtualNode *string `locationName:"virtualNode" min:"1" type:"string" required:"true"`
8824
8825	// Weight is a required field
8826	Weight *int64 `locationName:"weight" type:"integer" required:"true"`
8827}
8828
8829// String returns the string representation
8830func (s WeightedTarget) String() string {
8831	return awsutil.Prettify(s)
8832}
8833
8834// GoString returns the string representation
8835func (s WeightedTarget) GoString() string {
8836	return s.String()
8837}
8838
8839// Validate inspects the fields of the type to determine if they are valid.
8840func (s *WeightedTarget) Validate() error {
8841	invalidParams := request.ErrInvalidParams{Context: "WeightedTarget"}
8842	if s.VirtualNode == nil {
8843		invalidParams.Add(request.NewErrParamRequired("VirtualNode"))
8844	}
8845	if s.VirtualNode != nil && len(*s.VirtualNode) < 1 {
8846		invalidParams.Add(request.NewErrParamMinLen("VirtualNode", 1))
8847	}
8848	if s.Weight == nil {
8849		invalidParams.Add(request.NewErrParamRequired("Weight"))
8850	}
8851
8852	if invalidParams.Len() > 0 {
8853		return invalidParams
8854	}
8855	return nil
8856}
8857
8858// SetVirtualNode sets the VirtualNode field's value.
8859func (s *WeightedTarget) SetVirtualNode(v string) *WeightedTarget {
8860	s.VirtualNode = &v
8861	return s
8862}
8863
8864// SetWeight sets the Weight field's value.
8865func (s *WeightedTarget) SetWeight(v int64) *WeightedTarget {
8866	s.Weight = &v
8867	return s
8868}
8869
8870const (
8871	// DurationUnitMs is a DurationUnit enum value
8872	DurationUnitMs = "ms"
8873
8874	// DurationUnitS is a DurationUnit enum value
8875	DurationUnitS = "s"
8876)
8877
8878const (
8879	// EgressFilterTypeAllowAll is a EgressFilterType enum value
8880	EgressFilterTypeAllowAll = "ALLOW_ALL"
8881
8882	// EgressFilterTypeDropAll is a EgressFilterType enum value
8883	EgressFilterTypeDropAll = "DROP_ALL"
8884)
8885
8886const (
8887	// GrpcRetryPolicyEventCancelled is a GrpcRetryPolicyEvent enum value
8888	GrpcRetryPolicyEventCancelled = "cancelled"
8889
8890	// GrpcRetryPolicyEventDeadlineExceeded is a GrpcRetryPolicyEvent enum value
8891	GrpcRetryPolicyEventDeadlineExceeded = "deadline-exceeded"
8892
8893	// GrpcRetryPolicyEventInternal is a GrpcRetryPolicyEvent enum value
8894	GrpcRetryPolicyEventInternal = "internal"
8895
8896	// GrpcRetryPolicyEventResourceExhausted is a GrpcRetryPolicyEvent enum value
8897	GrpcRetryPolicyEventResourceExhausted = "resource-exhausted"
8898
8899	// GrpcRetryPolicyEventUnavailable is a GrpcRetryPolicyEvent enum value
8900	GrpcRetryPolicyEventUnavailable = "unavailable"
8901)
8902
8903const (
8904	// HttpMethodConnect is a HttpMethod enum value
8905	HttpMethodConnect = "CONNECT"
8906
8907	// HttpMethodDelete is a HttpMethod enum value
8908	HttpMethodDelete = "DELETE"
8909
8910	// HttpMethodGet is a HttpMethod enum value
8911	HttpMethodGet = "GET"
8912
8913	// HttpMethodHead is a HttpMethod enum value
8914	HttpMethodHead = "HEAD"
8915
8916	// HttpMethodOptions is a HttpMethod enum value
8917	HttpMethodOptions = "OPTIONS"
8918
8919	// HttpMethodPatch is a HttpMethod enum value
8920	HttpMethodPatch = "PATCH"
8921
8922	// HttpMethodPost is a HttpMethod enum value
8923	HttpMethodPost = "POST"
8924
8925	// HttpMethodPut is a HttpMethod enum value
8926	HttpMethodPut = "PUT"
8927
8928	// HttpMethodTrace is a HttpMethod enum value
8929	HttpMethodTrace = "TRACE"
8930)
8931
8932const (
8933	// HttpSchemeHttp is a HttpScheme enum value
8934	HttpSchemeHttp = "http"
8935
8936	// HttpSchemeHttps is a HttpScheme enum value
8937	HttpSchemeHttps = "https"
8938)
8939
8940const (
8941	// MeshStatusCodeActive is a MeshStatusCode enum value
8942	MeshStatusCodeActive = "ACTIVE"
8943
8944	// MeshStatusCodeDeleted is a MeshStatusCode enum value
8945	MeshStatusCodeDeleted = "DELETED"
8946
8947	// MeshStatusCodeInactive is a MeshStatusCode enum value
8948	MeshStatusCodeInactive = "INACTIVE"
8949)
8950
8951const (
8952	// PortProtocolGrpc is a PortProtocol enum value
8953	PortProtocolGrpc = "grpc"
8954
8955	// PortProtocolHttp is a PortProtocol enum value
8956	PortProtocolHttp = "http"
8957
8958	// PortProtocolHttp2 is a PortProtocol enum value
8959	PortProtocolHttp2 = "http2"
8960
8961	// PortProtocolTcp is a PortProtocol enum value
8962	PortProtocolTcp = "tcp"
8963)
8964
8965const (
8966	// RouteStatusCodeActive is a RouteStatusCode enum value
8967	RouteStatusCodeActive = "ACTIVE"
8968
8969	// RouteStatusCodeDeleted is a RouteStatusCode enum value
8970	RouteStatusCodeDeleted = "DELETED"
8971
8972	// RouteStatusCodeInactive is a RouteStatusCode enum value
8973	RouteStatusCodeInactive = "INACTIVE"
8974)
8975
8976const (
8977	// TcpRetryPolicyEventConnectionError is a TcpRetryPolicyEvent enum value
8978	TcpRetryPolicyEventConnectionError = "connection-error"
8979)
8980
8981const (
8982	// VirtualNodeStatusCodeActive is a VirtualNodeStatusCode enum value
8983	VirtualNodeStatusCodeActive = "ACTIVE"
8984
8985	// VirtualNodeStatusCodeDeleted is a VirtualNodeStatusCode enum value
8986	VirtualNodeStatusCodeDeleted = "DELETED"
8987
8988	// VirtualNodeStatusCodeInactive is a VirtualNodeStatusCode enum value
8989	VirtualNodeStatusCodeInactive = "INACTIVE"
8990)
8991
8992const (
8993	// VirtualRouterStatusCodeActive is a VirtualRouterStatusCode enum value
8994	VirtualRouterStatusCodeActive = "ACTIVE"
8995
8996	// VirtualRouterStatusCodeDeleted is a VirtualRouterStatusCode enum value
8997	VirtualRouterStatusCodeDeleted = "DELETED"
8998
8999	// VirtualRouterStatusCodeInactive is a VirtualRouterStatusCode enum value
9000	VirtualRouterStatusCodeInactive = "INACTIVE"
9001)
9002
9003const (
9004	// VirtualServiceStatusCodeActive is a VirtualServiceStatusCode enum value
9005	VirtualServiceStatusCodeActive = "ACTIVE"
9006
9007	// VirtualServiceStatusCodeDeleted is a VirtualServiceStatusCode enum value
9008	VirtualServiceStatusCodeDeleted = "DELETED"
9009
9010	// VirtualServiceStatusCodeInactive is a VirtualServiceStatusCode enum value
9011	VirtualServiceStatusCodeInactive = "INACTIVE"
9012)
9013