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