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