github.com/aavshr/aws-sdk-go@v1.41.3/service/appmesh/api.go (about)

     1  // Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
     2  
     3  package appmesh
     4  
     5  import (
     6  	"fmt"
     7  	"time"
     8  
     9  	"github.com/aavshr/aws-sdk-go/aws"
    10  	"github.com/aavshr/aws-sdk-go/aws/awsutil"
    11  	"github.com/aavshr/aws-sdk-go/aws/request"
    12  	"github.com/aavshr/aws-sdk-go/private/protocol"
    13  	"github.com/aavshr/aws-sdk-go/private/protocol/restjson"
    14  )
    15  
    16  const opCreateGatewayRoute = "CreateGatewayRoute"
    17  
    18  // CreateGatewayRouteRequest generates a "aws/request.Request" representing the
    19  // client's request for the CreateGatewayRoute 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 CreateGatewayRoute for more information on using the CreateGatewayRoute
    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 CreateGatewayRouteRequest method.
    34  //    req, resp := client.CreateGatewayRouteRequest(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/CreateGatewayRoute
    42  func (c *AppMesh) CreateGatewayRouteRequest(input *CreateGatewayRouteInput) (req *request.Request, output *CreateGatewayRouteOutput) {
    43  	op := &request.Operation{
    44  		Name:       opCreateGatewayRoute,
    45  		HTTPMethod: "PUT",
    46  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes",
    47  	}
    48  
    49  	if input == nil {
    50  		input = &CreateGatewayRouteInput{}
    51  	}
    52  
    53  	output = &CreateGatewayRouteOutput{}
    54  	req = c.newRequest(op, input, output)
    55  	return
    56  }
    57  
    58  // CreateGatewayRoute API operation for AWS App Mesh.
    59  //
    60  // Creates a gateway route.
    61  //
    62  // A gateway route is attached to a virtual gateway and routes traffic to an
    63  // existing virtual service. If a route matches a request, it can distribute
    64  // traffic to a target virtual service.
    65  //
    66  // For more information about gateway routes, see Gateway routes (https://docs.aws.amazon.com/app-mesh/latest/userguide/gateway-routes.html).
    67  //
    68  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
    69  // with awserr.Error's Code and Message methods to get detailed information about
    70  // the error.
    71  //
    72  // See the AWS API reference guide for AWS App Mesh's
    73  // API operation CreateGatewayRoute for usage and error information.
    74  //
    75  // Returned Error Types:
    76  //   * NotFoundException
    77  //   The specified resource doesn't exist. Check your request syntax and try again.
    78  //
    79  //   * BadRequestException
    80  //   The request syntax was malformed. Check your request syntax and try again.
    81  //
    82  //   * ConflictException
    83  //   The request contains a client token that was used for a previous update resource
    84  //   call with different specifications. Try the request again with a new client
    85  //   token.
    86  //
    87  //   * TooManyRequestsException
    88  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
    89  //   for your account. For best results, use an increasing or variable sleep interval
    90  //   between requests.
    91  //
    92  //   * ForbiddenException
    93  //   You don't have permissions to perform this action.
    94  //
    95  //   * ServiceUnavailableException
    96  //   The request has failed due to a temporary failure of the service.
    97  //
    98  //   * InternalServerErrorException
    99  //   The request processing has failed because of an unknown error, exception,
   100  //   or failure.
   101  //
   102  //   * LimitExceededException
   103  //   You have exceeded a service limit for your account. For more information,
   104  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
   105  //   in the AWS App Mesh User Guide.
   106  //
   107  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateGatewayRoute
   108  func (c *AppMesh) CreateGatewayRoute(input *CreateGatewayRouteInput) (*CreateGatewayRouteOutput, error) {
   109  	req, out := c.CreateGatewayRouteRequest(input)
   110  	return out, req.Send()
   111  }
   112  
   113  // CreateGatewayRouteWithContext is the same as CreateGatewayRoute with the addition of
   114  // the ability to pass a context and additional request options.
   115  //
   116  // See CreateGatewayRoute for details on how to use this API operation.
   117  //
   118  // The context must be non-nil and will be used for request cancellation. If
   119  // the context is nil a panic will occur. In the future the SDK may create
   120  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   121  // for more information on using Contexts.
   122  func (c *AppMesh) CreateGatewayRouteWithContext(ctx aws.Context, input *CreateGatewayRouteInput, opts ...request.Option) (*CreateGatewayRouteOutput, error) {
   123  	req, out := c.CreateGatewayRouteRequest(input)
   124  	req.SetContext(ctx)
   125  	req.ApplyOptions(opts...)
   126  	return out, req.Send()
   127  }
   128  
   129  const opCreateMesh = "CreateMesh"
   130  
   131  // CreateMeshRequest generates a "aws/request.Request" representing the
   132  // client's request for the CreateMesh operation. The "output" return
   133  // value will be populated with the request's response once the request completes
   134  // successfully.
   135  //
   136  // Use "Send" method on the returned Request to send the API call to the service.
   137  // the "output" return value is not valid until after Send returns without error.
   138  //
   139  // See CreateMesh for more information on using the CreateMesh
   140  // API call, and error handling.
   141  //
   142  // This method is useful when you want to inject custom logic or configuration
   143  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   144  //
   145  //
   146  //    // Example sending a request using the CreateMeshRequest method.
   147  //    req, resp := client.CreateMeshRequest(params)
   148  //
   149  //    err := req.Send()
   150  //    if err == nil { // resp is now filled
   151  //        fmt.Println(resp)
   152  //    }
   153  //
   154  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateMesh
   155  func (c *AppMesh) CreateMeshRequest(input *CreateMeshInput) (req *request.Request, output *CreateMeshOutput) {
   156  	op := &request.Operation{
   157  		Name:       opCreateMesh,
   158  		HTTPMethod: "PUT",
   159  		HTTPPath:   "/v20190125/meshes",
   160  	}
   161  
   162  	if input == nil {
   163  		input = &CreateMeshInput{}
   164  	}
   165  
   166  	output = &CreateMeshOutput{}
   167  	req = c.newRequest(op, input, output)
   168  	return
   169  }
   170  
   171  // CreateMesh API operation for AWS App Mesh.
   172  //
   173  // Creates a service mesh.
   174  //
   175  // A service mesh is a logical boundary for network traffic between services
   176  // that are represented by resources within the mesh. After you create your
   177  // service mesh, you can create virtual services, virtual nodes, virtual routers,
   178  // and routes to distribute traffic between the applications in your mesh.
   179  //
   180  // For more information about service meshes, see Service meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/meshes.html).
   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 CreateMesh for usage and error information.
   188  //
   189  // Returned Error Types:
   190  //   * NotFoundException
   191  //   The specified resource doesn't exist. Check your request syntax and try again.
   192  //
   193  //   * BadRequestException
   194  //   The request syntax was malformed. Check your request syntax and try again.
   195  //
   196  //   * ConflictException
   197  //   The request contains a client token that was used for a previous update resource
   198  //   call with different specifications. Try the request again with a new client
   199  //   token.
   200  //
   201  //   * TooManyRequestsException
   202  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
   203  //   for your account. For best results, use an increasing or variable sleep interval
   204  //   between requests.
   205  //
   206  //   * ForbiddenException
   207  //   You don't have permissions to perform this action.
   208  //
   209  //   * ServiceUnavailableException
   210  //   The request has failed due to a temporary failure of the service.
   211  //
   212  //   * InternalServerErrorException
   213  //   The request processing has failed because of an unknown error, exception,
   214  //   or failure.
   215  //
   216  //   * LimitExceededException
   217  //   You have exceeded a service limit for your account. For more information,
   218  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
   219  //   in the AWS App Mesh User Guide.
   220  //
   221  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateMesh
   222  func (c *AppMesh) CreateMesh(input *CreateMeshInput) (*CreateMeshOutput, error) {
   223  	req, out := c.CreateMeshRequest(input)
   224  	return out, req.Send()
   225  }
   226  
   227  // CreateMeshWithContext is the same as CreateMesh with the addition of
   228  // the ability to pass a context and additional request options.
   229  //
   230  // See CreateMesh 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.
   236  func (c *AppMesh) CreateMeshWithContext(ctx aws.Context, input *CreateMeshInput, opts ...request.Option) (*CreateMeshOutput, error) {
   237  	req, out := c.CreateMeshRequest(input)
   238  	req.SetContext(ctx)
   239  	req.ApplyOptions(opts...)
   240  	return out, req.Send()
   241  }
   242  
   243  const opCreateRoute = "CreateRoute"
   244  
   245  // CreateRouteRequest generates a "aws/request.Request" representing the
   246  // client's request for the CreateRoute 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 CreateRoute for more information on using the CreateRoute
   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 CreateRouteRequest method.
   261  //    req, resp := client.CreateRouteRequest(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/CreateRoute
   269  func (c *AppMesh) CreateRouteRequest(input *CreateRouteInput) (req *request.Request, output *CreateRouteOutput) {
   270  	op := &request.Operation{
   271  		Name:       opCreateRoute,
   272  		HTTPMethod: "PUT",
   273  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes",
   274  	}
   275  
   276  	if input == nil {
   277  		input = &CreateRouteInput{}
   278  	}
   279  
   280  	output = &CreateRouteOutput{}
   281  	req = c.newRequest(op, input, output)
   282  	return
   283  }
   284  
   285  // CreateRoute API operation for AWS App Mesh.
   286  //
   287  // Creates a route that is associated with a virtual router.
   288  //
   289  // You can route several different protocols and define a retry policy for a
   290  // route. Traffic can be routed to one or more virtual nodes.
   291  //
   292  // For more information about routes, see Routes (https://docs.aws.amazon.com/app-mesh/latest/userguide/routes.html).
   293  //
   294  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   295  // with awserr.Error's Code and Message methods to get detailed information about
   296  // the error.
   297  //
   298  // See the AWS API reference guide for AWS App Mesh's
   299  // API operation CreateRoute for usage and error information.
   300  //
   301  // Returned Error Types:
   302  //   * NotFoundException
   303  //   The specified resource doesn't exist. Check your request syntax and try again.
   304  //
   305  //   * BadRequestException
   306  //   The request syntax was malformed. Check your request syntax and try again.
   307  //
   308  //   * ConflictException
   309  //   The request contains a client token that was used for a previous update resource
   310  //   call with different specifications. Try the request again with a new client
   311  //   token.
   312  //
   313  //   * TooManyRequestsException
   314  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
   315  //   for your account. For best results, use an increasing or variable sleep interval
   316  //   between requests.
   317  //
   318  //   * ForbiddenException
   319  //   You don't have permissions to perform this action.
   320  //
   321  //   * ServiceUnavailableException
   322  //   The request has failed due to a temporary failure of the service.
   323  //
   324  //   * InternalServerErrorException
   325  //   The request processing has failed because of an unknown error, exception,
   326  //   or failure.
   327  //
   328  //   * LimitExceededException
   329  //   You have exceeded a service limit for your account. For more information,
   330  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
   331  //   in the AWS App Mesh User Guide.
   332  //
   333  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateRoute
   334  func (c *AppMesh) CreateRoute(input *CreateRouteInput) (*CreateRouteOutput, error) {
   335  	req, out := c.CreateRouteRequest(input)
   336  	return out, req.Send()
   337  }
   338  
   339  // CreateRouteWithContext is the same as CreateRoute with the addition of
   340  // the ability to pass a context and additional request options.
   341  //
   342  // See CreateRoute for details on how to use this API operation.
   343  //
   344  // The context must be non-nil and will be used for request cancellation. If
   345  // the context is nil a panic will occur. In the future the SDK may create
   346  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   347  // for more information on using Contexts.
   348  func (c *AppMesh) CreateRouteWithContext(ctx aws.Context, input *CreateRouteInput, opts ...request.Option) (*CreateRouteOutput, error) {
   349  	req, out := c.CreateRouteRequest(input)
   350  	req.SetContext(ctx)
   351  	req.ApplyOptions(opts...)
   352  	return out, req.Send()
   353  }
   354  
   355  const opCreateVirtualGateway = "CreateVirtualGateway"
   356  
   357  // CreateVirtualGatewayRequest generates a "aws/request.Request" representing the
   358  // client's request for the CreateVirtualGateway operation. The "output" return
   359  // value will be populated with the request's response once the request completes
   360  // successfully.
   361  //
   362  // Use "Send" method on the returned Request to send the API call to the service.
   363  // the "output" return value is not valid until after Send returns without error.
   364  //
   365  // See CreateVirtualGateway for more information on using the CreateVirtualGateway
   366  // API call, and error handling.
   367  //
   368  // This method is useful when you want to inject custom logic or configuration
   369  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   370  //
   371  //
   372  //    // Example sending a request using the CreateVirtualGatewayRequest method.
   373  //    req, resp := client.CreateVirtualGatewayRequest(params)
   374  //
   375  //    err := req.Send()
   376  //    if err == nil { // resp is now filled
   377  //        fmt.Println(resp)
   378  //    }
   379  //
   380  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualGateway
   381  func (c *AppMesh) CreateVirtualGatewayRequest(input *CreateVirtualGatewayInput) (req *request.Request, output *CreateVirtualGatewayOutput) {
   382  	op := &request.Operation{
   383  		Name:       opCreateVirtualGateway,
   384  		HTTPMethod: "PUT",
   385  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualGateways",
   386  	}
   387  
   388  	if input == nil {
   389  		input = &CreateVirtualGatewayInput{}
   390  	}
   391  
   392  	output = &CreateVirtualGatewayOutput{}
   393  	req = c.newRequest(op, input, output)
   394  	return
   395  }
   396  
   397  // CreateVirtualGateway API operation for AWS App Mesh.
   398  //
   399  // Creates a virtual gateway.
   400  //
   401  // A virtual gateway allows resources outside your mesh to communicate to resources
   402  // that are inside your mesh. The virtual gateway represents an Envoy proxy
   403  // running in an Amazon ECS task, in a Kubernetes service, or on an Amazon EC2
   404  // instance. Unlike a virtual node, which represents an Envoy running with an
   405  // application, a virtual gateway represents Envoy deployed by itself.
   406  //
   407  // For more information about virtual gateways, see Virtual gateways (https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_gateways.html).
   408  //
   409  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   410  // with awserr.Error's Code and Message methods to get detailed information about
   411  // the error.
   412  //
   413  // See the AWS API reference guide for AWS App Mesh's
   414  // API operation CreateVirtualGateway for usage and error information.
   415  //
   416  // Returned Error Types:
   417  //   * NotFoundException
   418  //   The specified resource doesn't exist. Check your request syntax and try again.
   419  //
   420  //   * BadRequestException
   421  //   The request syntax was malformed. Check your request syntax and try again.
   422  //
   423  //   * ConflictException
   424  //   The request contains a client token that was used for a previous update resource
   425  //   call with different specifications. Try the request again with a new client
   426  //   token.
   427  //
   428  //   * TooManyRequestsException
   429  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
   430  //   for your account. For best results, use an increasing or variable sleep interval
   431  //   between requests.
   432  //
   433  //   * ForbiddenException
   434  //   You don't have permissions to perform this action.
   435  //
   436  //   * ServiceUnavailableException
   437  //   The request has failed due to a temporary failure of the service.
   438  //
   439  //   * InternalServerErrorException
   440  //   The request processing has failed because of an unknown error, exception,
   441  //   or failure.
   442  //
   443  //   * LimitExceededException
   444  //   You have exceeded a service limit for your account. For more information,
   445  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
   446  //   in the AWS App Mesh User Guide.
   447  //
   448  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualGateway
   449  func (c *AppMesh) CreateVirtualGateway(input *CreateVirtualGatewayInput) (*CreateVirtualGatewayOutput, error) {
   450  	req, out := c.CreateVirtualGatewayRequest(input)
   451  	return out, req.Send()
   452  }
   453  
   454  // CreateVirtualGatewayWithContext is the same as CreateVirtualGateway with the addition of
   455  // the ability to pass a context and additional request options.
   456  //
   457  // See CreateVirtualGateway for details on how to use this API operation.
   458  //
   459  // The context must be non-nil and will be used for request cancellation. If
   460  // the context is nil a panic will occur. In the future the SDK may create
   461  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   462  // for more information on using Contexts.
   463  func (c *AppMesh) CreateVirtualGatewayWithContext(ctx aws.Context, input *CreateVirtualGatewayInput, opts ...request.Option) (*CreateVirtualGatewayOutput, error) {
   464  	req, out := c.CreateVirtualGatewayRequest(input)
   465  	req.SetContext(ctx)
   466  	req.ApplyOptions(opts...)
   467  	return out, req.Send()
   468  }
   469  
   470  const opCreateVirtualNode = "CreateVirtualNode"
   471  
   472  // CreateVirtualNodeRequest generates a "aws/request.Request" representing the
   473  // client's request for the CreateVirtualNode operation. The "output" return
   474  // value will be populated with the request's response once the request completes
   475  // successfully.
   476  //
   477  // Use "Send" method on the returned Request to send the API call to the service.
   478  // the "output" return value is not valid until after Send returns without error.
   479  //
   480  // See CreateVirtualNode for more information on using the CreateVirtualNode
   481  // API call, and error handling.
   482  //
   483  // This method is useful when you want to inject custom logic or configuration
   484  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   485  //
   486  //
   487  //    // Example sending a request using the CreateVirtualNodeRequest method.
   488  //    req, resp := client.CreateVirtualNodeRequest(params)
   489  //
   490  //    err := req.Send()
   491  //    if err == nil { // resp is now filled
   492  //        fmt.Println(resp)
   493  //    }
   494  //
   495  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualNode
   496  func (c *AppMesh) CreateVirtualNodeRequest(input *CreateVirtualNodeInput) (req *request.Request, output *CreateVirtualNodeOutput) {
   497  	op := &request.Operation{
   498  		Name:       opCreateVirtualNode,
   499  		HTTPMethod: "PUT",
   500  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualNodes",
   501  	}
   502  
   503  	if input == nil {
   504  		input = &CreateVirtualNodeInput{}
   505  	}
   506  
   507  	output = &CreateVirtualNodeOutput{}
   508  	req = c.newRequest(op, input, output)
   509  	return
   510  }
   511  
   512  // CreateVirtualNode API operation for AWS App Mesh.
   513  //
   514  // Creates a virtual node within a service mesh.
   515  //
   516  // A virtual node acts as a logical pointer to a particular task group, such
   517  // as an Amazon ECS service or a Kubernetes deployment. When you create a virtual
   518  // node, you can specify the service discovery information for your task group,
   519  // and whether the proxy running in a task group will communicate with other
   520  // proxies using Transport Layer Security (TLS).
   521  //
   522  // You define a listener for any inbound traffic that your virtual node expects.
   523  // Any virtual service that your virtual node expects to communicate to is specified
   524  // as a backend.
   525  //
   526  // The response metadata for your new virtual node contains the arn that is
   527  // associated with the virtual node. Set this value to the full ARN; for example,
   528  // arn:aws:appmesh:us-west-2:123456789012:myMesh/default/virtualNode/myApp)
   529  // as the APPMESH_RESOURCE_ARN environment variable for your task group's Envoy
   530  // proxy container in your task definition or pod spec. This is then mapped
   531  // to the node.id and node.cluster Envoy parameters.
   532  //
   533  // By default, App Mesh uses the name of the resource you specified in APPMESH_RESOURCE_ARN
   534  // when Envoy is referring to itself in metrics and traces. You can override
   535  // this behavior by setting the APPMESH_RESOURCE_CLUSTER environment variable
   536  // with your own name.
   537  //
   538  // For more information about virtual nodes, see Virtual nodes (https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html).
   539  // You must be using 1.15.0 or later of the Envoy image when setting these variables.
   540  // For more information aboutApp Mesh Envoy variables, see Envoy image (https://docs.aws.amazon.com/app-mesh/latest/userguide/envoy.html)
   541  // in the AWS App Mesh User Guide.
   542  //
   543  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   544  // with awserr.Error's Code and Message methods to get detailed information about
   545  // the error.
   546  //
   547  // See the AWS API reference guide for AWS App Mesh's
   548  // API operation CreateVirtualNode for usage and error information.
   549  //
   550  // Returned Error Types:
   551  //   * NotFoundException
   552  //   The specified resource doesn't exist. Check your request syntax and try again.
   553  //
   554  //   * BadRequestException
   555  //   The request syntax was malformed. Check your request syntax and try again.
   556  //
   557  //   * ConflictException
   558  //   The request contains a client token that was used for a previous update resource
   559  //   call with different specifications. Try the request again with a new client
   560  //   token.
   561  //
   562  //   * TooManyRequestsException
   563  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
   564  //   for your account. For best results, use an increasing or variable sleep interval
   565  //   between requests.
   566  //
   567  //   * ForbiddenException
   568  //   You don't have permissions to perform this action.
   569  //
   570  //   * ServiceUnavailableException
   571  //   The request has failed due to a temporary failure of the service.
   572  //
   573  //   * InternalServerErrorException
   574  //   The request processing has failed because of an unknown error, exception,
   575  //   or failure.
   576  //
   577  //   * LimitExceededException
   578  //   You have exceeded a service limit for your account. For more information,
   579  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
   580  //   in the AWS App Mesh User Guide.
   581  //
   582  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualNode
   583  func (c *AppMesh) CreateVirtualNode(input *CreateVirtualNodeInput) (*CreateVirtualNodeOutput, error) {
   584  	req, out := c.CreateVirtualNodeRequest(input)
   585  	return out, req.Send()
   586  }
   587  
   588  // CreateVirtualNodeWithContext is the same as CreateVirtualNode with the addition of
   589  // the ability to pass a context and additional request options.
   590  //
   591  // See CreateVirtualNode for details on how to use this API operation.
   592  //
   593  // The context must be non-nil and will be used for request cancellation. If
   594  // the context is nil a panic will occur. In the future the SDK may create
   595  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   596  // for more information on using Contexts.
   597  func (c *AppMesh) CreateVirtualNodeWithContext(ctx aws.Context, input *CreateVirtualNodeInput, opts ...request.Option) (*CreateVirtualNodeOutput, error) {
   598  	req, out := c.CreateVirtualNodeRequest(input)
   599  	req.SetContext(ctx)
   600  	req.ApplyOptions(opts...)
   601  	return out, req.Send()
   602  }
   603  
   604  const opCreateVirtualRouter = "CreateVirtualRouter"
   605  
   606  // CreateVirtualRouterRequest generates a "aws/request.Request" representing the
   607  // client's request for the CreateVirtualRouter operation. The "output" return
   608  // value will be populated with the request's response once the request completes
   609  // successfully.
   610  //
   611  // Use "Send" method on the returned Request to send the API call to the service.
   612  // the "output" return value is not valid until after Send returns without error.
   613  //
   614  // See CreateVirtualRouter for more information on using the CreateVirtualRouter
   615  // API call, and error handling.
   616  //
   617  // This method is useful when you want to inject custom logic or configuration
   618  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   619  //
   620  //
   621  //    // Example sending a request using the CreateVirtualRouterRequest method.
   622  //    req, resp := client.CreateVirtualRouterRequest(params)
   623  //
   624  //    err := req.Send()
   625  //    if err == nil { // resp is now filled
   626  //        fmt.Println(resp)
   627  //    }
   628  //
   629  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualRouter
   630  func (c *AppMesh) CreateVirtualRouterRequest(input *CreateVirtualRouterInput) (req *request.Request, output *CreateVirtualRouterOutput) {
   631  	op := &request.Operation{
   632  		Name:       opCreateVirtualRouter,
   633  		HTTPMethod: "PUT",
   634  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouters",
   635  	}
   636  
   637  	if input == nil {
   638  		input = &CreateVirtualRouterInput{}
   639  	}
   640  
   641  	output = &CreateVirtualRouterOutput{}
   642  	req = c.newRequest(op, input, output)
   643  	return
   644  }
   645  
   646  // CreateVirtualRouter API operation for AWS App Mesh.
   647  //
   648  // Creates a virtual router within a service mesh.
   649  //
   650  // Specify a listener for any inbound traffic that your virtual router receives.
   651  // Create a virtual router for each protocol and port that you need to route.
   652  // Virtual routers handle traffic for one or more virtual services within your
   653  // mesh. After you create your virtual router, create and associate routes for
   654  // your virtual router that direct incoming requests to different virtual nodes.
   655  //
   656  // For more information about virtual routers, see Virtual routers (https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_routers.html).
   657  //
   658  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   659  // with awserr.Error's Code and Message methods to get detailed information about
   660  // the error.
   661  //
   662  // See the AWS API reference guide for AWS App Mesh's
   663  // API operation CreateVirtualRouter for usage and error information.
   664  //
   665  // Returned Error Types:
   666  //   * NotFoundException
   667  //   The specified resource doesn't exist. Check your request syntax and try again.
   668  //
   669  //   * BadRequestException
   670  //   The request syntax was malformed. Check your request syntax and try again.
   671  //
   672  //   * ConflictException
   673  //   The request contains a client token that was used for a previous update resource
   674  //   call with different specifications. Try the request again with a new client
   675  //   token.
   676  //
   677  //   * TooManyRequestsException
   678  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
   679  //   for your account. For best results, use an increasing or variable sleep interval
   680  //   between requests.
   681  //
   682  //   * ForbiddenException
   683  //   You don't have permissions to perform this action.
   684  //
   685  //   * ServiceUnavailableException
   686  //   The request has failed due to a temporary failure of the service.
   687  //
   688  //   * InternalServerErrorException
   689  //   The request processing has failed because of an unknown error, exception,
   690  //   or failure.
   691  //
   692  //   * LimitExceededException
   693  //   You have exceeded a service limit for your account. For more information,
   694  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
   695  //   in the AWS App Mesh User Guide.
   696  //
   697  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualRouter
   698  func (c *AppMesh) CreateVirtualRouter(input *CreateVirtualRouterInput) (*CreateVirtualRouterOutput, error) {
   699  	req, out := c.CreateVirtualRouterRequest(input)
   700  	return out, req.Send()
   701  }
   702  
   703  // CreateVirtualRouterWithContext is the same as CreateVirtualRouter with the addition of
   704  // the ability to pass a context and additional request options.
   705  //
   706  // See CreateVirtualRouter for details on how to use this API operation.
   707  //
   708  // The context must be non-nil and will be used for request cancellation. If
   709  // the context is nil a panic will occur. In the future the SDK may create
   710  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   711  // for more information on using Contexts.
   712  func (c *AppMesh) CreateVirtualRouterWithContext(ctx aws.Context, input *CreateVirtualRouterInput, opts ...request.Option) (*CreateVirtualRouterOutput, error) {
   713  	req, out := c.CreateVirtualRouterRequest(input)
   714  	req.SetContext(ctx)
   715  	req.ApplyOptions(opts...)
   716  	return out, req.Send()
   717  }
   718  
   719  const opCreateVirtualService = "CreateVirtualService"
   720  
   721  // CreateVirtualServiceRequest generates a "aws/request.Request" representing the
   722  // client's request for the CreateVirtualService operation. The "output" return
   723  // value will be populated with the request's response once the request completes
   724  // successfully.
   725  //
   726  // Use "Send" method on the returned Request to send the API call to the service.
   727  // the "output" return value is not valid until after Send returns without error.
   728  //
   729  // See CreateVirtualService for more information on using the CreateVirtualService
   730  // API call, and error handling.
   731  //
   732  // This method is useful when you want to inject custom logic or configuration
   733  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   734  //
   735  //
   736  //    // Example sending a request using the CreateVirtualServiceRequest method.
   737  //    req, resp := client.CreateVirtualServiceRequest(params)
   738  //
   739  //    err := req.Send()
   740  //    if err == nil { // resp is now filled
   741  //        fmt.Println(resp)
   742  //    }
   743  //
   744  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualService
   745  func (c *AppMesh) CreateVirtualServiceRequest(input *CreateVirtualServiceInput) (req *request.Request, output *CreateVirtualServiceOutput) {
   746  	op := &request.Operation{
   747  		Name:       opCreateVirtualService,
   748  		HTTPMethod: "PUT",
   749  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualServices",
   750  	}
   751  
   752  	if input == nil {
   753  		input = &CreateVirtualServiceInput{}
   754  	}
   755  
   756  	output = &CreateVirtualServiceOutput{}
   757  	req = c.newRequest(op, input, output)
   758  	return
   759  }
   760  
   761  // CreateVirtualService API operation for AWS App Mesh.
   762  //
   763  // Creates a virtual service within a service mesh.
   764  //
   765  // A virtual service is an abstraction of a real service that is provided by
   766  // a virtual node directly or indirectly by means of a virtual router. Dependent
   767  // services call your virtual service by its virtualServiceName, and those requests
   768  // are routed to the virtual node or virtual router that is specified as the
   769  // provider for the virtual service.
   770  //
   771  // For more information about virtual services, see Virtual services (https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_services.html).
   772  //
   773  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   774  // with awserr.Error's Code and Message methods to get detailed information about
   775  // the error.
   776  //
   777  // See the AWS API reference guide for AWS App Mesh's
   778  // API operation CreateVirtualService for usage and error information.
   779  //
   780  // Returned Error Types:
   781  //   * NotFoundException
   782  //   The specified resource doesn't exist. Check your request syntax and try again.
   783  //
   784  //   * BadRequestException
   785  //   The request syntax was malformed. Check your request syntax and try again.
   786  //
   787  //   * ConflictException
   788  //   The request contains a client token that was used for a previous update resource
   789  //   call with different specifications. Try the request again with a new client
   790  //   token.
   791  //
   792  //   * TooManyRequestsException
   793  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
   794  //   for your account. For best results, use an increasing or variable sleep interval
   795  //   between requests.
   796  //
   797  //   * ForbiddenException
   798  //   You don't have permissions to perform this action.
   799  //
   800  //   * ServiceUnavailableException
   801  //   The request has failed due to a temporary failure of the service.
   802  //
   803  //   * InternalServerErrorException
   804  //   The request processing has failed because of an unknown error, exception,
   805  //   or failure.
   806  //
   807  //   * LimitExceededException
   808  //   You have exceeded a service limit for your account. For more information,
   809  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
   810  //   in the AWS App Mesh User Guide.
   811  //
   812  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/CreateVirtualService
   813  func (c *AppMesh) CreateVirtualService(input *CreateVirtualServiceInput) (*CreateVirtualServiceOutput, error) {
   814  	req, out := c.CreateVirtualServiceRequest(input)
   815  	return out, req.Send()
   816  }
   817  
   818  // CreateVirtualServiceWithContext is the same as CreateVirtualService with the addition of
   819  // the ability to pass a context and additional request options.
   820  //
   821  // See CreateVirtualService for details on how to use this API operation.
   822  //
   823  // The context must be non-nil and will be used for request cancellation. If
   824  // the context is nil a panic will occur. In the future the SDK may create
   825  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   826  // for more information on using Contexts.
   827  func (c *AppMesh) CreateVirtualServiceWithContext(ctx aws.Context, input *CreateVirtualServiceInput, opts ...request.Option) (*CreateVirtualServiceOutput, error) {
   828  	req, out := c.CreateVirtualServiceRequest(input)
   829  	req.SetContext(ctx)
   830  	req.ApplyOptions(opts...)
   831  	return out, req.Send()
   832  }
   833  
   834  const opDeleteGatewayRoute = "DeleteGatewayRoute"
   835  
   836  // DeleteGatewayRouteRequest generates a "aws/request.Request" representing the
   837  // client's request for the DeleteGatewayRoute operation. The "output" return
   838  // value will be populated with the request's response once the request completes
   839  // successfully.
   840  //
   841  // Use "Send" method on the returned Request to send the API call to the service.
   842  // the "output" return value is not valid until after Send returns without error.
   843  //
   844  // See DeleteGatewayRoute for more information on using the DeleteGatewayRoute
   845  // API call, and error handling.
   846  //
   847  // This method is useful when you want to inject custom logic or configuration
   848  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   849  //
   850  //
   851  //    // Example sending a request using the DeleteGatewayRouteRequest method.
   852  //    req, resp := client.DeleteGatewayRouteRequest(params)
   853  //
   854  //    err := req.Send()
   855  //    if err == nil { // resp is now filled
   856  //        fmt.Println(resp)
   857  //    }
   858  //
   859  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteGatewayRoute
   860  func (c *AppMesh) DeleteGatewayRouteRequest(input *DeleteGatewayRouteInput) (req *request.Request, output *DeleteGatewayRouteOutput) {
   861  	op := &request.Operation{
   862  		Name:       opDeleteGatewayRoute,
   863  		HTTPMethod: "DELETE",
   864  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes/{gatewayRouteName}",
   865  	}
   866  
   867  	if input == nil {
   868  		input = &DeleteGatewayRouteInput{}
   869  	}
   870  
   871  	output = &DeleteGatewayRouteOutput{}
   872  	req = c.newRequest(op, input, output)
   873  	return
   874  }
   875  
   876  // DeleteGatewayRoute API operation for AWS App Mesh.
   877  //
   878  // Deletes an existing gateway route.
   879  //
   880  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   881  // with awserr.Error's Code and Message methods to get detailed information about
   882  // the error.
   883  //
   884  // See the AWS API reference guide for AWS App Mesh's
   885  // API operation DeleteGatewayRoute for usage and error information.
   886  //
   887  // Returned Error Types:
   888  //   * NotFoundException
   889  //   The specified resource doesn't exist. Check your request syntax and try again.
   890  //
   891  //   * BadRequestException
   892  //   The request syntax was malformed. Check your request syntax and try again.
   893  //
   894  //   * TooManyRequestsException
   895  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
   896  //   for your account. For best results, use an increasing or variable sleep interval
   897  //   between requests.
   898  //
   899  //   * ForbiddenException
   900  //   You don't have permissions to perform this action.
   901  //
   902  //   * ResourceInUseException
   903  //   You can't delete the specified resource because it's in use or required by
   904  //   another resource.
   905  //
   906  //   * ServiceUnavailableException
   907  //   The request has failed due to a temporary failure of the service.
   908  //
   909  //   * InternalServerErrorException
   910  //   The request processing has failed because of an unknown error, exception,
   911  //   or failure.
   912  //
   913  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteGatewayRoute
   914  func (c *AppMesh) DeleteGatewayRoute(input *DeleteGatewayRouteInput) (*DeleteGatewayRouteOutput, error) {
   915  	req, out := c.DeleteGatewayRouteRequest(input)
   916  	return out, req.Send()
   917  }
   918  
   919  // DeleteGatewayRouteWithContext is the same as DeleteGatewayRoute with the addition of
   920  // the ability to pass a context and additional request options.
   921  //
   922  // See DeleteGatewayRoute for details on how to use this API operation.
   923  //
   924  // The context must be non-nil and will be used for request cancellation. If
   925  // the context is nil a panic will occur. In the future the SDK may create
   926  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   927  // for more information on using Contexts.
   928  func (c *AppMesh) DeleteGatewayRouteWithContext(ctx aws.Context, input *DeleteGatewayRouteInput, opts ...request.Option) (*DeleteGatewayRouteOutput, error) {
   929  	req, out := c.DeleteGatewayRouteRequest(input)
   930  	req.SetContext(ctx)
   931  	req.ApplyOptions(opts...)
   932  	return out, req.Send()
   933  }
   934  
   935  const opDeleteMesh = "DeleteMesh"
   936  
   937  // DeleteMeshRequest generates a "aws/request.Request" representing the
   938  // client's request for the DeleteMesh operation. The "output" return
   939  // value will be populated with the request's response once the request completes
   940  // successfully.
   941  //
   942  // Use "Send" method on the returned Request to send the API call to the service.
   943  // the "output" return value is not valid until after Send returns without error.
   944  //
   945  // See DeleteMesh for more information on using the DeleteMesh
   946  // API call, and error handling.
   947  //
   948  // This method is useful when you want to inject custom logic or configuration
   949  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   950  //
   951  //
   952  //    // Example sending a request using the DeleteMeshRequest method.
   953  //    req, resp := client.DeleteMeshRequest(params)
   954  //
   955  //    err := req.Send()
   956  //    if err == nil { // resp is now filled
   957  //        fmt.Println(resp)
   958  //    }
   959  //
   960  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteMesh
   961  func (c *AppMesh) DeleteMeshRequest(input *DeleteMeshInput) (req *request.Request, output *DeleteMeshOutput) {
   962  	op := &request.Operation{
   963  		Name:       opDeleteMesh,
   964  		HTTPMethod: "DELETE",
   965  		HTTPPath:   "/v20190125/meshes/{meshName}",
   966  	}
   967  
   968  	if input == nil {
   969  		input = &DeleteMeshInput{}
   970  	}
   971  
   972  	output = &DeleteMeshOutput{}
   973  	req = c.newRequest(op, input, output)
   974  	return
   975  }
   976  
   977  // DeleteMesh API operation for AWS App Mesh.
   978  //
   979  // Deletes an existing service mesh.
   980  //
   981  // You must delete all resources (virtual services, routes, virtual routers,
   982  // and virtual nodes) in the service mesh before you can delete the mesh itself.
   983  //
   984  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   985  // with awserr.Error's Code and Message methods to get detailed information about
   986  // the error.
   987  //
   988  // See the AWS API reference guide for AWS App Mesh's
   989  // API operation DeleteMesh for usage and error information.
   990  //
   991  // Returned Error Types:
   992  //   * NotFoundException
   993  //   The specified resource doesn't exist. Check your request syntax and try again.
   994  //
   995  //   * BadRequestException
   996  //   The request syntax was malformed. Check your request syntax and try again.
   997  //
   998  //   * TooManyRequestsException
   999  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  1000  //   for your account. For best results, use an increasing or variable sleep interval
  1001  //   between requests.
  1002  //
  1003  //   * ForbiddenException
  1004  //   You don't have permissions to perform this action.
  1005  //
  1006  //   * ResourceInUseException
  1007  //   You can't delete the specified resource because it's in use or required by
  1008  //   another resource.
  1009  //
  1010  //   * ServiceUnavailableException
  1011  //   The request has failed due to a temporary failure of the service.
  1012  //
  1013  //   * InternalServerErrorException
  1014  //   The request processing has failed because of an unknown error, exception,
  1015  //   or failure.
  1016  //
  1017  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteMesh
  1018  func (c *AppMesh) DeleteMesh(input *DeleteMeshInput) (*DeleteMeshOutput, error) {
  1019  	req, out := c.DeleteMeshRequest(input)
  1020  	return out, req.Send()
  1021  }
  1022  
  1023  // DeleteMeshWithContext is the same as DeleteMesh with the addition of
  1024  // the ability to pass a context and additional request options.
  1025  //
  1026  // See DeleteMesh for details on how to use this API operation.
  1027  //
  1028  // The context must be non-nil and will be used for request cancellation. If
  1029  // the context is nil a panic will occur. In the future the SDK may create
  1030  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1031  // for more information on using Contexts.
  1032  func (c *AppMesh) DeleteMeshWithContext(ctx aws.Context, input *DeleteMeshInput, opts ...request.Option) (*DeleteMeshOutput, error) {
  1033  	req, out := c.DeleteMeshRequest(input)
  1034  	req.SetContext(ctx)
  1035  	req.ApplyOptions(opts...)
  1036  	return out, req.Send()
  1037  }
  1038  
  1039  const opDeleteRoute = "DeleteRoute"
  1040  
  1041  // DeleteRouteRequest generates a "aws/request.Request" representing the
  1042  // client's request for the DeleteRoute operation. The "output" return
  1043  // value will be populated with the request's response once the request completes
  1044  // successfully.
  1045  //
  1046  // Use "Send" method on the returned Request to send the API call to the service.
  1047  // the "output" return value is not valid until after Send returns without error.
  1048  //
  1049  // See DeleteRoute for more information on using the DeleteRoute
  1050  // API call, and error handling.
  1051  //
  1052  // This method is useful when you want to inject custom logic or configuration
  1053  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1054  //
  1055  //
  1056  //    // Example sending a request using the DeleteRouteRequest method.
  1057  //    req, resp := client.DeleteRouteRequest(params)
  1058  //
  1059  //    err := req.Send()
  1060  //    if err == nil { // resp is now filled
  1061  //        fmt.Println(resp)
  1062  //    }
  1063  //
  1064  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteRoute
  1065  func (c *AppMesh) DeleteRouteRequest(input *DeleteRouteInput) (req *request.Request, output *DeleteRouteOutput) {
  1066  	op := &request.Operation{
  1067  		Name:       opDeleteRoute,
  1068  		HTTPMethod: "DELETE",
  1069  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}",
  1070  	}
  1071  
  1072  	if input == nil {
  1073  		input = &DeleteRouteInput{}
  1074  	}
  1075  
  1076  	output = &DeleteRouteOutput{}
  1077  	req = c.newRequest(op, input, output)
  1078  	return
  1079  }
  1080  
  1081  // DeleteRoute API operation for AWS App Mesh.
  1082  //
  1083  // Deletes an existing route.
  1084  //
  1085  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1086  // with awserr.Error's Code and Message methods to get detailed information about
  1087  // the error.
  1088  //
  1089  // See the AWS API reference guide for AWS App Mesh's
  1090  // API operation DeleteRoute for usage and error information.
  1091  //
  1092  // Returned Error Types:
  1093  //   * NotFoundException
  1094  //   The specified resource doesn't exist. Check your request syntax and try again.
  1095  //
  1096  //   * BadRequestException
  1097  //   The request syntax was malformed. Check your request syntax and try again.
  1098  //
  1099  //   * TooManyRequestsException
  1100  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  1101  //   for your account. For best results, use an increasing or variable sleep interval
  1102  //   between requests.
  1103  //
  1104  //   * ForbiddenException
  1105  //   You don't have permissions to perform this action.
  1106  //
  1107  //   * ResourceInUseException
  1108  //   You can't delete the specified resource because it's in use or required by
  1109  //   another resource.
  1110  //
  1111  //   * ServiceUnavailableException
  1112  //   The request has failed due to a temporary failure of the service.
  1113  //
  1114  //   * InternalServerErrorException
  1115  //   The request processing has failed because of an unknown error, exception,
  1116  //   or failure.
  1117  //
  1118  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteRoute
  1119  func (c *AppMesh) DeleteRoute(input *DeleteRouteInput) (*DeleteRouteOutput, error) {
  1120  	req, out := c.DeleteRouteRequest(input)
  1121  	return out, req.Send()
  1122  }
  1123  
  1124  // DeleteRouteWithContext is the same as DeleteRoute with the addition of
  1125  // the ability to pass a context and additional request options.
  1126  //
  1127  // See DeleteRoute for details on how to use this API operation.
  1128  //
  1129  // The context must be non-nil and will be used for request cancellation. If
  1130  // the context is nil a panic will occur. In the future the SDK may create
  1131  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1132  // for more information on using Contexts.
  1133  func (c *AppMesh) DeleteRouteWithContext(ctx aws.Context, input *DeleteRouteInput, opts ...request.Option) (*DeleteRouteOutput, error) {
  1134  	req, out := c.DeleteRouteRequest(input)
  1135  	req.SetContext(ctx)
  1136  	req.ApplyOptions(opts...)
  1137  	return out, req.Send()
  1138  }
  1139  
  1140  const opDeleteVirtualGateway = "DeleteVirtualGateway"
  1141  
  1142  // DeleteVirtualGatewayRequest generates a "aws/request.Request" representing the
  1143  // client's request for the DeleteVirtualGateway operation. The "output" return
  1144  // value will be populated with the request's response once the request completes
  1145  // successfully.
  1146  //
  1147  // Use "Send" method on the returned Request to send the API call to the service.
  1148  // the "output" return value is not valid until after Send returns without error.
  1149  //
  1150  // See DeleteVirtualGateway for more information on using the DeleteVirtualGateway
  1151  // API call, and error handling.
  1152  //
  1153  // This method is useful when you want to inject custom logic or configuration
  1154  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1155  //
  1156  //
  1157  //    // Example sending a request using the DeleteVirtualGatewayRequest method.
  1158  //    req, resp := client.DeleteVirtualGatewayRequest(params)
  1159  //
  1160  //    err := req.Send()
  1161  //    if err == nil { // resp is now filled
  1162  //        fmt.Println(resp)
  1163  //    }
  1164  //
  1165  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualGateway
  1166  func (c *AppMesh) DeleteVirtualGatewayRequest(input *DeleteVirtualGatewayInput) (req *request.Request, output *DeleteVirtualGatewayOutput) {
  1167  	op := &request.Operation{
  1168  		Name:       opDeleteVirtualGateway,
  1169  		HTTPMethod: "DELETE",
  1170  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualGateways/{virtualGatewayName}",
  1171  	}
  1172  
  1173  	if input == nil {
  1174  		input = &DeleteVirtualGatewayInput{}
  1175  	}
  1176  
  1177  	output = &DeleteVirtualGatewayOutput{}
  1178  	req = c.newRequest(op, input, output)
  1179  	return
  1180  }
  1181  
  1182  // DeleteVirtualGateway API operation for AWS App Mesh.
  1183  //
  1184  // Deletes an existing virtual gateway. You cannot delete a virtual gateway
  1185  // if any gateway routes are associated to it.
  1186  //
  1187  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1188  // with awserr.Error's Code and Message methods to get detailed information about
  1189  // the error.
  1190  //
  1191  // See the AWS API reference guide for AWS App Mesh's
  1192  // API operation DeleteVirtualGateway for usage and error information.
  1193  //
  1194  // Returned Error Types:
  1195  //   * NotFoundException
  1196  //   The specified resource doesn't exist. Check your request syntax and try again.
  1197  //
  1198  //   * BadRequestException
  1199  //   The request syntax was malformed. Check your request syntax and try again.
  1200  //
  1201  //   * TooManyRequestsException
  1202  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  1203  //   for your account. For best results, use an increasing or variable sleep interval
  1204  //   between requests.
  1205  //
  1206  //   * ForbiddenException
  1207  //   You don't have permissions to perform this action.
  1208  //
  1209  //   * ResourceInUseException
  1210  //   You can't delete the specified resource because it's in use or required by
  1211  //   another resource.
  1212  //
  1213  //   * ServiceUnavailableException
  1214  //   The request has failed due to a temporary failure of the service.
  1215  //
  1216  //   * InternalServerErrorException
  1217  //   The request processing has failed because of an unknown error, exception,
  1218  //   or failure.
  1219  //
  1220  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualGateway
  1221  func (c *AppMesh) DeleteVirtualGateway(input *DeleteVirtualGatewayInput) (*DeleteVirtualGatewayOutput, error) {
  1222  	req, out := c.DeleteVirtualGatewayRequest(input)
  1223  	return out, req.Send()
  1224  }
  1225  
  1226  // DeleteVirtualGatewayWithContext is the same as DeleteVirtualGateway with the addition of
  1227  // the ability to pass a context and additional request options.
  1228  //
  1229  // See DeleteVirtualGateway for details on how to use this API operation.
  1230  //
  1231  // The context must be non-nil and will be used for request cancellation. If
  1232  // the context is nil a panic will occur. In the future the SDK may create
  1233  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1234  // for more information on using Contexts.
  1235  func (c *AppMesh) DeleteVirtualGatewayWithContext(ctx aws.Context, input *DeleteVirtualGatewayInput, opts ...request.Option) (*DeleteVirtualGatewayOutput, error) {
  1236  	req, out := c.DeleteVirtualGatewayRequest(input)
  1237  	req.SetContext(ctx)
  1238  	req.ApplyOptions(opts...)
  1239  	return out, req.Send()
  1240  }
  1241  
  1242  const opDeleteVirtualNode = "DeleteVirtualNode"
  1243  
  1244  // DeleteVirtualNodeRequest generates a "aws/request.Request" representing the
  1245  // client's request for the DeleteVirtualNode operation. The "output" return
  1246  // value will be populated with the request's response once the request completes
  1247  // successfully.
  1248  //
  1249  // Use "Send" method on the returned Request to send the API call to the service.
  1250  // the "output" return value is not valid until after Send returns without error.
  1251  //
  1252  // See DeleteVirtualNode for more information on using the DeleteVirtualNode
  1253  // API call, and error handling.
  1254  //
  1255  // This method is useful when you want to inject custom logic or configuration
  1256  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1257  //
  1258  //
  1259  //    // Example sending a request using the DeleteVirtualNodeRequest method.
  1260  //    req, resp := client.DeleteVirtualNodeRequest(params)
  1261  //
  1262  //    err := req.Send()
  1263  //    if err == nil { // resp is now filled
  1264  //        fmt.Println(resp)
  1265  //    }
  1266  //
  1267  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualNode
  1268  func (c *AppMesh) DeleteVirtualNodeRequest(input *DeleteVirtualNodeInput) (req *request.Request, output *DeleteVirtualNodeOutput) {
  1269  	op := &request.Operation{
  1270  		Name:       opDeleteVirtualNode,
  1271  		HTTPMethod: "DELETE",
  1272  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}",
  1273  	}
  1274  
  1275  	if input == nil {
  1276  		input = &DeleteVirtualNodeInput{}
  1277  	}
  1278  
  1279  	output = &DeleteVirtualNodeOutput{}
  1280  	req = c.newRequest(op, input, output)
  1281  	return
  1282  }
  1283  
  1284  // DeleteVirtualNode API operation for AWS App Mesh.
  1285  //
  1286  // Deletes an existing virtual node.
  1287  //
  1288  // You must delete any virtual services that list a virtual node as a service
  1289  // provider before you can delete the virtual node itself.
  1290  //
  1291  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1292  // with awserr.Error's Code and Message methods to get detailed information about
  1293  // the error.
  1294  //
  1295  // See the AWS API reference guide for AWS App Mesh's
  1296  // API operation DeleteVirtualNode for usage and error information.
  1297  //
  1298  // Returned Error Types:
  1299  //   * NotFoundException
  1300  //   The specified resource doesn't exist. Check your request syntax and try again.
  1301  //
  1302  //   * BadRequestException
  1303  //   The request syntax was malformed. Check your request syntax and try again.
  1304  //
  1305  //   * TooManyRequestsException
  1306  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  1307  //   for your account. For best results, use an increasing or variable sleep interval
  1308  //   between requests.
  1309  //
  1310  //   * ForbiddenException
  1311  //   You don't have permissions to perform this action.
  1312  //
  1313  //   * ResourceInUseException
  1314  //   You can't delete the specified resource because it's in use or required by
  1315  //   another resource.
  1316  //
  1317  //   * ServiceUnavailableException
  1318  //   The request has failed due to a temporary failure of the service.
  1319  //
  1320  //   * InternalServerErrorException
  1321  //   The request processing has failed because of an unknown error, exception,
  1322  //   or failure.
  1323  //
  1324  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualNode
  1325  func (c *AppMesh) DeleteVirtualNode(input *DeleteVirtualNodeInput) (*DeleteVirtualNodeOutput, error) {
  1326  	req, out := c.DeleteVirtualNodeRequest(input)
  1327  	return out, req.Send()
  1328  }
  1329  
  1330  // DeleteVirtualNodeWithContext is the same as DeleteVirtualNode with the addition of
  1331  // the ability to pass a context and additional request options.
  1332  //
  1333  // See DeleteVirtualNode for details on how to use this API operation.
  1334  //
  1335  // The context must be non-nil and will be used for request cancellation. If
  1336  // the context is nil a panic will occur. In the future the SDK may create
  1337  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1338  // for more information on using Contexts.
  1339  func (c *AppMesh) DeleteVirtualNodeWithContext(ctx aws.Context, input *DeleteVirtualNodeInput, opts ...request.Option) (*DeleteVirtualNodeOutput, error) {
  1340  	req, out := c.DeleteVirtualNodeRequest(input)
  1341  	req.SetContext(ctx)
  1342  	req.ApplyOptions(opts...)
  1343  	return out, req.Send()
  1344  }
  1345  
  1346  const opDeleteVirtualRouter = "DeleteVirtualRouter"
  1347  
  1348  // DeleteVirtualRouterRequest generates a "aws/request.Request" representing the
  1349  // client's request for the DeleteVirtualRouter operation. The "output" return
  1350  // value will be populated with the request's response once the request completes
  1351  // successfully.
  1352  //
  1353  // Use "Send" method on the returned Request to send the API call to the service.
  1354  // the "output" return value is not valid until after Send returns without error.
  1355  //
  1356  // See DeleteVirtualRouter for more information on using the DeleteVirtualRouter
  1357  // API call, and error handling.
  1358  //
  1359  // This method is useful when you want to inject custom logic or configuration
  1360  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1361  //
  1362  //
  1363  //    // Example sending a request using the DeleteVirtualRouterRequest method.
  1364  //    req, resp := client.DeleteVirtualRouterRequest(params)
  1365  //
  1366  //    err := req.Send()
  1367  //    if err == nil { // resp is now filled
  1368  //        fmt.Println(resp)
  1369  //    }
  1370  //
  1371  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualRouter
  1372  func (c *AppMesh) DeleteVirtualRouterRequest(input *DeleteVirtualRouterInput) (req *request.Request, output *DeleteVirtualRouterOutput) {
  1373  	op := &request.Operation{
  1374  		Name:       opDeleteVirtualRouter,
  1375  		HTTPMethod: "DELETE",
  1376  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}",
  1377  	}
  1378  
  1379  	if input == nil {
  1380  		input = &DeleteVirtualRouterInput{}
  1381  	}
  1382  
  1383  	output = &DeleteVirtualRouterOutput{}
  1384  	req = c.newRequest(op, input, output)
  1385  	return
  1386  }
  1387  
  1388  // DeleteVirtualRouter API operation for AWS App Mesh.
  1389  //
  1390  // Deletes an existing virtual router.
  1391  //
  1392  // You must delete any routes associated with the virtual router before you
  1393  // can delete the router itself.
  1394  //
  1395  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1396  // with awserr.Error's Code and Message methods to get detailed information about
  1397  // the error.
  1398  //
  1399  // See the AWS API reference guide for AWS App Mesh's
  1400  // API operation DeleteVirtualRouter for usage and error information.
  1401  //
  1402  // Returned Error Types:
  1403  //   * NotFoundException
  1404  //   The specified resource doesn't exist. Check your request syntax and try again.
  1405  //
  1406  //   * BadRequestException
  1407  //   The request syntax was malformed. Check your request syntax and try again.
  1408  //
  1409  //   * TooManyRequestsException
  1410  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  1411  //   for your account. For best results, use an increasing or variable sleep interval
  1412  //   between requests.
  1413  //
  1414  //   * ForbiddenException
  1415  //   You don't have permissions to perform this action.
  1416  //
  1417  //   * ResourceInUseException
  1418  //   You can't delete the specified resource because it's in use or required by
  1419  //   another resource.
  1420  //
  1421  //   * ServiceUnavailableException
  1422  //   The request has failed due to a temporary failure of the service.
  1423  //
  1424  //   * InternalServerErrorException
  1425  //   The request processing has failed because of an unknown error, exception,
  1426  //   or failure.
  1427  //
  1428  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualRouter
  1429  func (c *AppMesh) DeleteVirtualRouter(input *DeleteVirtualRouterInput) (*DeleteVirtualRouterOutput, error) {
  1430  	req, out := c.DeleteVirtualRouterRequest(input)
  1431  	return out, req.Send()
  1432  }
  1433  
  1434  // DeleteVirtualRouterWithContext is the same as DeleteVirtualRouter with the addition of
  1435  // the ability to pass a context and additional request options.
  1436  //
  1437  // See DeleteVirtualRouter for details on how to use this API operation.
  1438  //
  1439  // The context must be non-nil and will be used for request cancellation. If
  1440  // the context is nil a panic will occur. In the future the SDK may create
  1441  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1442  // for more information on using Contexts.
  1443  func (c *AppMesh) DeleteVirtualRouterWithContext(ctx aws.Context, input *DeleteVirtualRouterInput, opts ...request.Option) (*DeleteVirtualRouterOutput, error) {
  1444  	req, out := c.DeleteVirtualRouterRequest(input)
  1445  	req.SetContext(ctx)
  1446  	req.ApplyOptions(opts...)
  1447  	return out, req.Send()
  1448  }
  1449  
  1450  const opDeleteVirtualService = "DeleteVirtualService"
  1451  
  1452  // DeleteVirtualServiceRequest generates a "aws/request.Request" representing the
  1453  // client's request for the DeleteVirtualService operation. The "output" return
  1454  // value will be populated with the request's response once the request completes
  1455  // successfully.
  1456  //
  1457  // Use "Send" method on the returned Request to send the API call to the service.
  1458  // the "output" return value is not valid until after Send returns without error.
  1459  //
  1460  // See DeleteVirtualService for more information on using the DeleteVirtualService
  1461  // API call, and error handling.
  1462  //
  1463  // This method is useful when you want to inject custom logic or configuration
  1464  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1465  //
  1466  //
  1467  //    // Example sending a request using the DeleteVirtualServiceRequest method.
  1468  //    req, resp := client.DeleteVirtualServiceRequest(params)
  1469  //
  1470  //    err := req.Send()
  1471  //    if err == nil { // resp is now filled
  1472  //        fmt.Println(resp)
  1473  //    }
  1474  //
  1475  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualService
  1476  func (c *AppMesh) DeleteVirtualServiceRequest(input *DeleteVirtualServiceInput) (req *request.Request, output *DeleteVirtualServiceOutput) {
  1477  	op := &request.Operation{
  1478  		Name:       opDeleteVirtualService,
  1479  		HTTPMethod: "DELETE",
  1480  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}",
  1481  	}
  1482  
  1483  	if input == nil {
  1484  		input = &DeleteVirtualServiceInput{}
  1485  	}
  1486  
  1487  	output = &DeleteVirtualServiceOutput{}
  1488  	req = c.newRequest(op, input, output)
  1489  	return
  1490  }
  1491  
  1492  // DeleteVirtualService API operation for AWS App Mesh.
  1493  //
  1494  // Deletes an existing virtual service.
  1495  //
  1496  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1497  // with awserr.Error's Code and Message methods to get detailed information about
  1498  // the error.
  1499  //
  1500  // See the AWS API reference guide for AWS App Mesh's
  1501  // API operation DeleteVirtualService for usage and error information.
  1502  //
  1503  // Returned Error Types:
  1504  //   * NotFoundException
  1505  //   The specified resource doesn't exist. Check your request syntax and try again.
  1506  //
  1507  //   * BadRequestException
  1508  //   The request syntax was malformed. Check your request syntax and try again.
  1509  //
  1510  //   * TooManyRequestsException
  1511  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  1512  //   for your account. For best results, use an increasing or variable sleep interval
  1513  //   between requests.
  1514  //
  1515  //   * ForbiddenException
  1516  //   You don't have permissions to perform this action.
  1517  //
  1518  //   * ResourceInUseException
  1519  //   You can't delete the specified resource because it's in use or required by
  1520  //   another resource.
  1521  //
  1522  //   * ServiceUnavailableException
  1523  //   The request has failed due to a temporary failure of the service.
  1524  //
  1525  //   * InternalServerErrorException
  1526  //   The request processing has failed because of an unknown error, exception,
  1527  //   or failure.
  1528  //
  1529  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DeleteVirtualService
  1530  func (c *AppMesh) DeleteVirtualService(input *DeleteVirtualServiceInput) (*DeleteVirtualServiceOutput, error) {
  1531  	req, out := c.DeleteVirtualServiceRequest(input)
  1532  	return out, req.Send()
  1533  }
  1534  
  1535  // DeleteVirtualServiceWithContext is the same as DeleteVirtualService with the addition of
  1536  // the ability to pass a context and additional request options.
  1537  //
  1538  // See DeleteVirtualService for details on how to use this API operation.
  1539  //
  1540  // The context must be non-nil and will be used for request cancellation. If
  1541  // the context is nil a panic will occur. In the future the SDK may create
  1542  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1543  // for more information on using Contexts.
  1544  func (c *AppMesh) DeleteVirtualServiceWithContext(ctx aws.Context, input *DeleteVirtualServiceInput, opts ...request.Option) (*DeleteVirtualServiceOutput, error) {
  1545  	req, out := c.DeleteVirtualServiceRequest(input)
  1546  	req.SetContext(ctx)
  1547  	req.ApplyOptions(opts...)
  1548  	return out, req.Send()
  1549  }
  1550  
  1551  const opDescribeGatewayRoute = "DescribeGatewayRoute"
  1552  
  1553  // DescribeGatewayRouteRequest generates a "aws/request.Request" representing the
  1554  // client's request for the DescribeGatewayRoute operation. The "output" return
  1555  // value will be populated with the request's response once the request completes
  1556  // successfully.
  1557  //
  1558  // Use "Send" method on the returned Request to send the API call to the service.
  1559  // the "output" return value is not valid until after Send returns without error.
  1560  //
  1561  // See DescribeGatewayRoute for more information on using the DescribeGatewayRoute
  1562  // API call, and error handling.
  1563  //
  1564  // This method is useful when you want to inject custom logic or configuration
  1565  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1566  //
  1567  //
  1568  //    // Example sending a request using the DescribeGatewayRouteRequest method.
  1569  //    req, resp := client.DescribeGatewayRouteRequest(params)
  1570  //
  1571  //    err := req.Send()
  1572  //    if err == nil { // resp is now filled
  1573  //        fmt.Println(resp)
  1574  //    }
  1575  //
  1576  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeGatewayRoute
  1577  func (c *AppMesh) DescribeGatewayRouteRequest(input *DescribeGatewayRouteInput) (req *request.Request, output *DescribeGatewayRouteOutput) {
  1578  	op := &request.Operation{
  1579  		Name:       opDescribeGatewayRoute,
  1580  		HTTPMethod: "GET",
  1581  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes/{gatewayRouteName}",
  1582  	}
  1583  
  1584  	if input == nil {
  1585  		input = &DescribeGatewayRouteInput{}
  1586  	}
  1587  
  1588  	output = &DescribeGatewayRouteOutput{}
  1589  	req = c.newRequest(op, input, output)
  1590  	return
  1591  }
  1592  
  1593  // DescribeGatewayRoute API operation for AWS App Mesh.
  1594  //
  1595  // Describes an existing gateway route.
  1596  //
  1597  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1598  // with awserr.Error's Code and Message methods to get detailed information about
  1599  // the error.
  1600  //
  1601  // See the AWS API reference guide for AWS App Mesh's
  1602  // API operation DescribeGatewayRoute for usage and error information.
  1603  //
  1604  // Returned Error Types:
  1605  //   * NotFoundException
  1606  //   The specified resource doesn't exist. Check your request syntax and try again.
  1607  //
  1608  //   * BadRequestException
  1609  //   The request syntax was malformed. Check your request syntax and try again.
  1610  //
  1611  //   * TooManyRequestsException
  1612  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  1613  //   for your account. For best results, use an increasing or variable sleep interval
  1614  //   between requests.
  1615  //
  1616  //   * ForbiddenException
  1617  //   You don't have permissions to perform this action.
  1618  //
  1619  //   * ServiceUnavailableException
  1620  //   The request has failed due to a temporary failure of the service.
  1621  //
  1622  //   * InternalServerErrorException
  1623  //   The request processing has failed because of an unknown error, exception,
  1624  //   or failure.
  1625  //
  1626  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeGatewayRoute
  1627  func (c *AppMesh) DescribeGatewayRoute(input *DescribeGatewayRouteInput) (*DescribeGatewayRouteOutput, error) {
  1628  	req, out := c.DescribeGatewayRouteRequest(input)
  1629  	return out, req.Send()
  1630  }
  1631  
  1632  // DescribeGatewayRouteWithContext is the same as DescribeGatewayRoute with the addition of
  1633  // the ability to pass a context and additional request options.
  1634  //
  1635  // See DescribeGatewayRoute for details on how to use this API operation.
  1636  //
  1637  // The context must be non-nil and will be used for request cancellation. If
  1638  // the context is nil a panic will occur. In the future the SDK may create
  1639  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1640  // for more information on using Contexts.
  1641  func (c *AppMesh) DescribeGatewayRouteWithContext(ctx aws.Context, input *DescribeGatewayRouteInput, opts ...request.Option) (*DescribeGatewayRouteOutput, error) {
  1642  	req, out := c.DescribeGatewayRouteRequest(input)
  1643  	req.SetContext(ctx)
  1644  	req.ApplyOptions(opts...)
  1645  	return out, req.Send()
  1646  }
  1647  
  1648  const opDescribeMesh = "DescribeMesh"
  1649  
  1650  // DescribeMeshRequest generates a "aws/request.Request" representing the
  1651  // client's request for the DescribeMesh operation. The "output" return
  1652  // value will be populated with the request's response once the request completes
  1653  // successfully.
  1654  //
  1655  // Use "Send" method on the returned Request to send the API call to the service.
  1656  // the "output" return value is not valid until after Send returns without error.
  1657  //
  1658  // See DescribeMesh for more information on using the DescribeMesh
  1659  // API call, and error handling.
  1660  //
  1661  // This method is useful when you want to inject custom logic or configuration
  1662  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1663  //
  1664  //
  1665  //    // Example sending a request using the DescribeMeshRequest method.
  1666  //    req, resp := client.DescribeMeshRequest(params)
  1667  //
  1668  //    err := req.Send()
  1669  //    if err == nil { // resp is now filled
  1670  //        fmt.Println(resp)
  1671  //    }
  1672  //
  1673  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeMesh
  1674  func (c *AppMesh) DescribeMeshRequest(input *DescribeMeshInput) (req *request.Request, output *DescribeMeshOutput) {
  1675  	op := &request.Operation{
  1676  		Name:       opDescribeMesh,
  1677  		HTTPMethod: "GET",
  1678  		HTTPPath:   "/v20190125/meshes/{meshName}",
  1679  	}
  1680  
  1681  	if input == nil {
  1682  		input = &DescribeMeshInput{}
  1683  	}
  1684  
  1685  	output = &DescribeMeshOutput{}
  1686  	req = c.newRequest(op, input, output)
  1687  	return
  1688  }
  1689  
  1690  // DescribeMesh API operation for AWS App Mesh.
  1691  //
  1692  // Describes an existing service mesh.
  1693  //
  1694  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1695  // with awserr.Error's Code and Message methods to get detailed information about
  1696  // the error.
  1697  //
  1698  // See the AWS API reference guide for AWS App Mesh's
  1699  // API operation DescribeMesh for usage and error information.
  1700  //
  1701  // Returned Error Types:
  1702  //   * NotFoundException
  1703  //   The specified resource doesn't exist. Check your request syntax and try again.
  1704  //
  1705  //   * BadRequestException
  1706  //   The request syntax was malformed. Check your request syntax and try again.
  1707  //
  1708  //   * TooManyRequestsException
  1709  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  1710  //   for your account. For best results, use an increasing or variable sleep interval
  1711  //   between requests.
  1712  //
  1713  //   * ForbiddenException
  1714  //   You don't have permissions to perform this action.
  1715  //
  1716  //   * ServiceUnavailableException
  1717  //   The request has failed due to a temporary failure of the service.
  1718  //
  1719  //   * InternalServerErrorException
  1720  //   The request processing has failed because of an unknown error, exception,
  1721  //   or failure.
  1722  //
  1723  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeMesh
  1724  func (c *AppMesh) DescribeMesh(input *DescribeMeshInput) (*DescribeMeshOutput, error) {
  1725  	req, out := c.DescribeMeshRequest(input)
  1726  	return out, req.Send()
  1727  }
  1728  
  1729  // DescribeMeshWithContext is the same as DescribeMesh with the addition of
  1730  // the ability to pass a context and additional request options.
  1731  //
  1732  // See DescribeMesh for details on how to use this API operation.
  1733  //
  1734  // The context must be non-nil and will be used for request cancellation. If
  1735  // the context is nil a panic will occur. In the future the SDK may create
  1736  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1737  // for more information on using Contexts.
  1738  func (c *AppMesh) DescribeMeshWithContext(ctx aws.Context, input *DescribeMeshInput, opts ...request.Option) (*DescribeMeshOutput, error) {
  1739  	req, out := c.DescribeMeshRequest(input)
  1740  	req.SetContext(ctx)
  1741  	req.ApplyOptions(opts...)
  1742  	return out, req.Send()
  1743  }
  1744  
  1745  const opDescribeRoute = "DescribeRoute"
  1746  
  1747  // DescribeRouteRequest generates a "aws/request.Request" representing the
  1748  // client's request for the DescribeRoute operation. The "output" return
  1749  // value will be populated with the request's response once the request completes
  1750  // successfully.
  1751  //
  1752  // Use "Send" method on the returned Request to send the API call to the service.
  1753  // the "output" return value is not valid until after Send returns without error.
  1754  //
  1755  // See DescribeRoute for more information on using the DescribeRoute
  1756  // API call, and error handling.
  1757  //
  1758  // This method is useful when you want to inject custom logic or configuration
  1759  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1760  //
  1761  //
  1762  //    // Example sending a request using the DescribeRouteRequest method.
  1763  //    req, resp := client.DescribeRouteRequest(params)
  1764  //
  1765  //    err := req.Send()
  1766  //    if err == nil { // resp is now filled
  1767  //        fmt.Println(resp)
  1768  //    }
  1769  //
  1770  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeRoute
  1771  func (c *AppMesh) DescribeRouteRequest(input *DescribeRouteInput) (req *request.Request, output *DescribeRouteOutput) {
  1772  	op := &request.Operation{
  1773  		Name:       opDescribeRoute,
  1774  		HTTPMethod: "GET",
  1775  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}",
  1776  	}
  1777  
  1778  	if input == nil {
  1779  		input = &DescribeRouteInput{}
  1780  	}
  1781  
  1782  	output = &DescribeRouteOutput{}
  1783  	req = c.newRequest(op, input, output)
  1784  	return
  1785  }
  1786  
  1787  // DescribeRoute API operation for AWS App Mesh.
  1788  //
  1789  // Describes an existing route.
  1790  //
  1791  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1792  // with awserr.Error's Code and Message methods to get detailed information about
  1793  // the error.
  1794  //
  1795  // See the AWS API reference guide for AWS App Mesh's
  1796  // API operation DescribeRoute for usage and error information.
  1797  //
  1798  // Returned Error Types:
  1799  //   * NotFoundException
  1800  //   The specified resource doesn't exist. Check your request syntax and try again.
  1801  //
  1802  //   * BadRequestException
  1803  //   The request syntax was malformed. Check your request syntax and try again.
  1804  //
  1805  //   * TooManyRequestsException
  1806  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  1807  //   for your account. For best results, use an increasing or variable sleep interval
  1808  //   between requests.
  1809  //
  1810  //   * ForbiddenException
  1811  //   You don't have permissions to perform this action.
  1812  //
  1813  //   * ServiceUnavailableException
  1814  //   The request has failed due to a temporary failure of the service.
  1815  //
  1816  //   * InternalServerErrorException
  1817  //   The request processing has failed because of an unknown error, exception,
  1818  //   or failure.
  1819  //
  1820  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeRoute
  1821  func (c *AppMesh) DescribeRoute(input *DescribeRouteInput) (*DescribeRouteOutput, error) {
  1822  	req, out := c.DescribeRouteRequest(input)
  1823  	return out, req.Send()
  1824  }
  1825  
  1826  // DescribeRouteWithContext is the same as DescribeRoute with the addition of
  1827  // the ability to pass a context and additional request options.
  1828  //
  1829  // See DescribeRoute for details on how to use this API operation.
  1830  //
  1831  // The context must be non-nil and will be used for request cancellation. If
  1832  // the context is nil a panic will occur. In the future the SDK may create
  1833  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1834  // for more information on using Contexts.
  1835  func (c *AppMesh) DescribeRouteWithContext(ctx aws.Context, input *DescribeRouteInput, opts ...request.Option) (*DescribeRouteOutput, error) {
  1836  	req, out := c.DescribeRouteRequest(input)
  1837  	req.SetContext(ctx)
  1838  	req.ApplyOptions(opts...)
  1839  	return out, req.Send()
  1840  }
  1841  
  1842  const opDescribeVirtualGateway = "DescribeVirtualGateway"
  1843  
  1844  // DescribeVirtualGatewayRequest generates a "aws/request.Request" representing the
  1845  // client's request for the DescribeVirtualGateway operation. The "output" return
  1846  // value will be populated with the request's response once the request completes
  1847  // successfully.
  1848  //
  1849  // Use "Send" method on the returned Request to send the API call to the service.
  1850  // the "output" return value is not valid until after Send returns without error.
  1851  //
  1852  // See DescribeVirtualGateway for more information on using the DescribeVirtualGateway
  1853  // API call, and error handling.
  1854  //
  1855  // This method is useful when you want to inject custom logic or configuration
  1856  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1857  //
  1858  //
  1859  //    // Example sending a request using the DescribeVirtualGatewayRequest method.
  1860  //    req, resp := client.DescribeVirtualGatewayRequest(params)
  1861  //
  1862  //    err := req.Send()
  1863  //    if err == nil { // resp is now filled
  1864  //        fmt.Println(resp)
  1865  //    }
  1866  //
  1867  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualGateway
  1868  func (c *AppMesh) DescribeVirtualGatewayRequest(input *DescribeVirtualGatewayInput) (req *request.Request, output *DescribeVirtualGatewayOutput) {
  1869  	op := &request.Operation{
  1870  		Name:       opDescribeVirtualGateway,
  1871  		HTTPMethod: "GET",
  1872  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualGateways/{virtualGatewayName}",
  1873  	}
  1874  
  1875  	if input == nil {
  1876  		input = &DescribeVirtualGatewayInput{}
  1877  	}
  1878  
  1879  	output = &DescribeVirtualGatewayOutput{}
  1880  	req = c.newRequest(op, input, output)
  1881  	return
  1882  }
  1883  
  1884  // DescribeVirtualGateway API operation for AWS App Mesh.
  1885  //
  1886  // Describes an existing virtual gateway.
  1887  //
  1888  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1889  // with awserr.Error's Code and Message methods to get detailed information about
  1890  // the error.
  1891  //
  1892  // See the AWS API reference guide for AWS App Mesh's
  1893  // API operation DescribeVirtualGateway for usage and error information.
  1894  //
  1895  // Returned Error Types:
  1896  //   * NotFoundException
  1897  //   The specified resource doesn't exist. Check your request syntax and try again.
  1898  //
  1899  //   * BadRequestException
  1900  //   The request syntax was malformed. Check your request syntax and try again.
  1901  //
  1902  //   * TooManyRequestsException
  1903  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  1904  //   for your account. For best results, use an increasing or variable sleep interval
  1905  //   between requests.
  1906  //
  1907  //   * ForbiddenException
  1908  //   You don't have permissions to perform this action.
  1909  //
  1910  //   * ServiceUnavailableException
  1911  //   The request has failed due to a temporary failure of the service.
  1912  //
  1913  //   * InternalServerErrorException
  1914  //   The request processing has failed because of an unknown error, exception,
  1915  //   or failure.
  1916  //
  1917  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualGateway
  1918  func (c *AppMesh) DescribeVirtualGateway(input *DescribeVirtualGatewayInput) (*DescribeVirtualGatewayOutput, error) {
  1919  	req, out := c.DescribeVirtualGatewayRequest(input)
  1920  	return out, req.Send()
  1921  }
  1922  
  1923  // DescribeVirtualGatewayWithContext is the same as DescribeVirtualGateway with the addition of
  1924  // the ability to pass a context and additional request options.
  1925  //
  1926  // See DescribeVirtualGateway for details on how to use this API operation.
  1927  //
  1928  // The context must be non-nil and will be used for request cancellation. If
  1929  // the context is nil a panic will occur. In the future the SDK may create
  1930  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1931  // for more information on using Contexts.
  1932  func (c *AppMesh) DescribeVirtualGatewayWithContext(ctx aws.Context, input *DescribeVirtualGatewayInput, opts ...request.Option) (*DescribeVirtualGatewayOutput, error) {
  1933  	req, out := c.DescribeVirtualGatewayRequest(input)
  1934  	req.SetContext(ctx)
  1935  	req.ApplyOptions(opts...)
  1936  	return out, req.Send()
  1937  }
  1938  
  1939  const opDescribeVirtualNode = "DescribeVirtualNode"
  1940  
  1941  // DescribeVirtualNodeRequest generates a "aws/request.Request" representing the
  1942  // client's request for the DescribeVirtualNode operation. The "output" return
  1943  // value will be populated with the request's response once the request completes
  1944  // successfully.
  1945  //
  1946  // Use "Send" method on the returned Request to send the API call to the service.
  1947  // the "output" return value is not valid until after Send returns without error.
  1948  //
  1949  // See DescribeVirtualNode for more information on using the DescribeVirtualNode
  1950  // API call, and error handling.
  1951  //
  1952  // This method is useful when you want to inject custom logic or configuration
  1953  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1954  //
  1955  //
  1956  //    // Example sending a request using the DescribeVirtualNodeRequest method.
  1957  //    req, resp := client.DescribeVirtualNodeRequest(params)
  1958  //
  1959  //    err := req.Send()
  1960  //    if err == nil { // resp is now filled
  1961  //        fmt.Println(resp)
  1962  //    }
  1963  //
  1964  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualNode
  1965  func (c *AppMesh) DescribeVirtualNodeRequest(input *DescribeVirtualNodeInput) (req *request.Request, output *DescribeVirtualNodeOutput) {
  1966  	op := &request.Operation{
  1967  		Name:       opDescribeVirtualNode,
  1968  		HTTPMethod: "GET",
  1969  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}",
  1970  	}
  1971  
  1972  	if input == nil {
  1973  		input = &DescribeVirtualNodeInput{}
  1974  	}
  1975  
  1976  	output = &DescribeVirtualNodeOutput{}
  1977  	req = c.newRequest(op, input, output)
  1978  	return
  1979  }
  1980  
  1981  // DescribeVirtualNode API operation for AWS App Mesh.
  1982  //
  1983  // Describes an existing virtual node.
  1984  //
  1985  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1986  // with awserr.Error's Code and Message methods to get detailed information about
  1987  // the error.
  1988  //
  1989  // See the AWS API reference guide for AWS App Mesh's
  1990  // API operation DescribeVirtualNode for usage and error information.
  1991  //
  1992  // Returned Error Types:
  1993  //   * NotFoundException
  1994  //   The specified resource doesn't exist. Check your request syntax and try again.
  1995  //
  1996  //   * BadRequestException
  1997  //   The request syntax was malformed. Check your request syntax and try again.
  1998  //
  1999  //   * TooManyRequestsException
  2000  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  2001  //   for your account. For best results, use an increasing or variable sleep interval
  2002  //   between requests.
  2003  //
  2004  //   * ForbiddenException
  2005  //   You don't have permissions to perform this action.
  2006  //
  2007  //   * ServiceUnavailableException
  2008  //   The request has failed due to a temporary failure of the service.
  2009  //
  2010  //   * InternalServerErrorException
  2011  //   The request processing has failed because of an unknown error, exception,
  2012  //   or failure.
  2013  //
  2014  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualNode
  2015  func (c *AppMesh) DescribeVirtualNode(input *DescribeVirtualNodeInput) (*DescribeVirtualNodeOutput, error) {
  2016  	req, out := c.DescribeVirtualNodeRequest(input)
  2017  	return out, req.Send()
  2018  }
  2019  
  2020  // DescribeVirtualNodeWithContext is the same as DescribeVirtualNode with the addition of
  2021  // the ability to pass a context and additional request options.
  2022  //
  2023  // See DescribeVirtualNode for details on how to use this API operation.
  2024  //
  2025  // The context must be non-nil and will be used for request cancellation. If
  2026  // the context is nil a panic will occur. In the future the SDK may create
  2027  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2028  // for more information on using Contexts.
  2029  func (c *AppMesh) DescribeVirtualNodeWithContext(ctx aws.Context, input *DescribeVirtualNodeInput, opts ...request.Option) (*DescribeVirtualNodeOutput, error) {
  2030  	req, out := c.DescribeVirtualNodeRequest(input)
  2031  	req.SetContext(ctx)
  2032  	req.ApplyOptions(opts...)
  2033  	return out, req.Send()
  2034  }
  2035  
  2036  const opDescribeVirtualRouter = "DescribeVirtualRouter"
  2037  
  2038  // DescribeVirtualRouterRequest generates a "aws/request.Request" representing the
  2039  // client's request for the DescribeVirtualRouter operation. The "output" return
  2040  // value will be populated with the request's response once the request completes
  2041  // successfully.
  2042  //
  2043  // Use "Send" method on the returned Request to send the API call to the service.
  2044  // the "output" return value is not valid until after Send returns without error.
  2045  //
  2046  // See DescribeVirtualRouter for more information on using the DescribeVirtualRouter
  2047  // API call, and error handling.
  2048  //
  2049  // This method is useful when you want to inject custom logic or configuration
  2050  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2051  //
  2052  //
  2053  //    // Example sending a request using the DescribeVirtualRouterRequest method.
  2054  //    req, resp := client.DescribeVirtualRouterRequest(params)
  2055  //
  2056  //    err := req.Send()
  2057  //    if err == nil { // resp is now filled
  2058  //        fmt.Println(resp)
  2059  //    }
  2060  //
  2061  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualRouter
  2062  func (c *AppMesh) DescribeVirtualRouterRequest(input *DescribeVirtualRouterInput) (req *request.Request, output *DescribeVirtualRouterOutput) {
  2063  	op := &request.Operation{
  2064  		Name:       opDescribeVirtualRouter,
  2065  		HTTPMethod: "GET",
  2066  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}",
  2067  	}
  2068  
  2069  	if input == nil {
  2070  		input = &DescribeVirtualRouterInput{}
  2071  	}
  2072  
  2073  	output = &DescribeVirtualRouterOutput{}
  2074  	req = c.newRequest(op, input, output)
  2075  	return
  2076  }
  2077  
  2078  // DescribeVirtualRouter API operation for AWS App Mesh.
  2079  //
  2080  // Describes an existing virtual router.
  2081  //
  2082  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2083  // with awserr.Error's Code and Message methods to get detailed information about
  2084  // the error.
  2085  //
  2086  // See the AWS API reference guide for AWS App Mesh's
  2087  // API operation DescribeVirtualRouter for usage and error information.
  2088  //
  2089  // Returned Error Types:
  2090  //   * NotFoundException
  2091  //   The specified resource doesn't exist. Check your request syntax and try again.
  2092  //
  2093  //   * BadRequestException
  2094  //   The request syntax was malformed. Check your request syntax and try again.
  2095  //
  2096  //   * TooManyRequestsException
  2097  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  2098  //   for your account. For best results, use an increasing or variable sleep interval
  2099  //   between requests.
  2100  //
  2101  //   * ForbiddenException
  2102  //   You don't have permissions to perform this action.
  2103  //
  2104  //   * ServiceUnavailableException
  2105  //   The request has failed due to a temporary failure of the service.
  2106  //
  2107  //   * InternalServerErrorException
  2108  //   The request processing has failed because of an unknown error, exception,
  2109  //   or failure.
  2110  //
  2111  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualRouter
  2112  func (c *AppMesh) DescribeVirtualRouter(input *DescribeVirtualRouterInput) (*DescribeVirtualRouterOutput, error) {
  2113  	req, out := c.DescribeVirtualRouterRequest(input)
  2114  	return out, req.Send()
  2115  }
  2116  
  2117  // DescribeVirtualRouterWithContext is the same as DescribeVirtualRouter with the addition of
  2118  // the ability to pass a context and additional request options.
  2119  //
  2120  // See DescribeVirtualRouter for details on how to use this API operation.
  2121  //
  2122  // The context must be non-nil and will be used for request cancellation. If
  2123  // the context is nil a panic will occur. In the future the SDK may create
  2124  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2125  // for more information on using Contexts.
  2126  func (c *AppMesh) DescribeVirtualRouterWithContext(ctx aws.Context, input *DescribeVirtualRouterInput, opts ...request.Option) (*DescribeVirtualRouterOutput, error) {
  2127  	req, out := c.DescribeVirtualRouterRequest(input)
  2128  	req.SetContext(ctx)
  2129  	req.ApplyOptions(opts...)
  2130  	return out, req.Send()
  2131  }
  2132  
  2133  const opDescribeVirtualService = "DescribeVirtualService"
  2134  
  2135  // DescribeVirtualServiceRequest generates a "aws/request.Request" representing the
  2136  // client's request for the DescribeVirtualService operation. The "output" return
  2137  // value will be populated with the request's response once the request completes
  2138  // successfully.
  2139  //
  2140  // Use "Send" method on the returned Request to send the API call to the service.
  2141  // the "output" return value is not valid until after Send returns without error.
  2142  //
  2143  // See DescribeVirtualService for more information on using the DescribeVirtualService
  2144  // API call, and error handling.
  2145  //
  2146  // This method is useful when you want to inject custom logic or configuration
  2147  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2148  //
  2149  //
  2150  //    // Example sending a request using the DescribeVirtualServiceRequest method.
  2151  //    req, resp := client.DescribeVirtualServiceRequest(params)
  2152  //
  2153  //    err := req.Send()
  2154  //    if err == nil { // resp is now filled
  2155  //        fmt.Println(resp)
  2156  //    }
  2157  //
  2158  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualService
  2159  func (c *AppMesh) DescribeVirtualServiceRequest(input *DescribeVirtualServiceInput) (req *request.Request, output *DescribeVirtualServiceOutput) {
  2160  	op := &request.Operation{
  2161  		Name:       opDescribeVirtualService,
  2162  		HTTPMethod: "GET",
  2163  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}",
  2164  	}
  2165  
  2166  	if input == nil {
  2167  		input = &DescribeVirtualServiceInput{}
  2168  	}
  2169  
  2170  	output = &DescribeVirtualServiceOutput{}
  2171  	req = c.newRequest(op, input, output)
  2172  	return
  2173  }
  2174  
  2175  // DescribeVirtualService API operation for AWS App Mesh.
  2176  //
  2177  // Describes an existing virtual service.
  2178  //
  2179  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2180  // with awserr.Error's Code and Message methods to get detailed information about
  2181  // the error.
  2182  //
  2183  // See the AWS API reference guide for AWS App Mesh's
  2184  // API operation DescribeVirtualService for usage and error information.
  2185  //
  2186  // Returned Error Types:
  2187  //   * NotFoundException
  2188  //   The specified resource doesn't exist. Check your request syntax and try again.
  2189  //
  2190  //   * BadRequestException
  2191  //   The request syntax was malformed. Check your request syntax and try again.
  2192  //
  2193  //   * TooManyRequestsException
  2194  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  2195  //   for your account. For best results, use an increasing or variable sleep interval
  2196  //   between requests.
  2197  //
  2198  //   * ForbiddenException
  2199  //   You don't have permissions to perform this action.
  2200  //
  2201  //   * ServiceUnavailableException
  2202  //   The request has failed due to a temporary failure of the service.
  2203  //
  2204  //   * InternalServerErrorException
  2205  //   The request processing has failed because of an unknown error, exception,
  2206  //   or failure.
  2207  //
  2208  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/DescribeVirtualService
  2209  func (c *AppMesh) DescribeVirtualService(input *DescribeVirtualServiceInput) (*DescribeVirtualServiceOutput, error) {
  2210  	req, out := c.DescribeVirtualServiceRequest(input)
  2211  	return out, req.Send()
  2212  }
  2213  
  2214  // DescribeVirtualServiceWithContext is the same as DescribeVirtualService with the addition of
  2215  // the ability to pass a context and additional request options.
  2216  //
  2217  // See DescribeVirtualService for details on how to use this API operation.
  2218  //
  2219  // The context must be non-nil and will be used for request cancellation. If
  2220  // the context is nil a panic will occur. In the future the SDK may create
  2221  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2222  // for more information on using Contexts.
  2223  func (c *AppMesh) DescribeVirtualServiceWithContext(ctx aws.Context, input *DescribeVirtualServiceInput, opts ...request.Option) (*DescribeVirtualServiceOutput, error) {
  2224  	req, out := c.DescribeVirtualServiceRequest(input)
  2225  	req.SetContext(ctx)
  2226  	req.ApplyOptions(opts...)
  2227  	return out, req.Send()
  2228  }
  2229  
  2230  const opListGatewayRoutes = "ListGatewayRoutes"
  2231  
  2232  // ListGatewayRoutesRequest generates a "aws/request.Request" representing the
  2233  // client's request for the ListGatewayRoutes operation. The "output" return
  2234  // value will be populated with the request's response once the request completes
  2235  // successfully.
  2236  //
  2237  // Use "Send" method on the returned Request to send the API call to the service.
  2238  // the "output" return value is not valid until after Send returns without error.
  2239  //
  2240  // See ListGatewayRoutes for more information on using the ListGatewayRoutes
  2241  // API call, and error handling.
  2242  //
  2243  // This method is useful when you want to inject custom logic or configuration
  2244  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2245  //
  2246  //
  2247  //    // Example sending a request using the ListGatewayRoutesRequest method.
  2248  //    req, resp := client.ListGatewayRoutesRequest(params)
  2249  //
  2250  //    err := req.Send()
  2251  //    if err == nil { // resp is now filled
  2252  //        fmt.Println(resp)
  2253  //    }
  2254  //
  2255  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListGatewayRoutes
  2256  func (c *AppMesh) ListGatewayRoutesRequest(input *ListGatewayRoutesInput) (req *request.Request, output *ListGatewayRoutesOutput) {
  2257  	op := &request.Operation{
  2258  		Name:       opListGatewayRoutes,
  2259  		HTTPMethod: "GET",
  2260  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes",
  2261  		Paginator: &request.Paginator{
  2262  			InputTokens:     []string{"nextToken"},
  2263  			OutputTokens:    []string{"nextToken"},
  2264  			LimitToken:      "limit",
  2265  			TruncationToken: "",
  2266  		},
  2267  	}
  2268  
  2269  	if input == nil {
  2270  		input = &ListGatewayRoutesInput{}
  2271  	}
  2272  
  2273  	output = &ListGatewayRoutesOutput{}
  2274  	req = c.newRequest(op, input, output)
  2275  	return
  2276  }
  2277  
  2278  // ListGatewayRoutes API operation for AWS App Mesh.
  2279  //
  2280  // Returns a list of existing gateway routes that are associated to a virtual
  2281  // gateway.
  2282  //
  2283  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2284  // with awserr.Error's Code and Message methods to get detailed information about
  2285  // the error.
  2286  //
  2287  // See the AWS API reference guide for AWS App Mesh's
  2288  // API operation ListGatewayRoutes for usage and error information.
  2289  //
  2290  // Returned Error Types:
  2291  //   * NotFoundException
  2292  //   The specified resource doesn't exist. Check your request syntax and try again.
  2293  //
  2294  //   * BadRequestException
  2295  //   The request syntax was malformed. Check your request syntax and try again.
  2296  //
  2297  //   * TooManyRequestsException
  2298  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  2299  //   for your account. For best results, use an increasing or variable sleep interval
  2300  //   between requests.
  2301  //
  2302  //   * ForbiddenException
  2303  //   You don't have permissions to perform this action.
  2304  //
  2305  //   * ServiceUnavailableException
  2306  //   The request has failed due to a temporary failure of the service.
  2307  //
  2308  //   * InternalServerErrorException
  2309  //   The request processing has failed because of an unknown error, exception,
  2310  //   or failure.
  2311  //
  2312  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListGatewayRoutes
  2313  func (c *AppMesh) ListGatewayRoutes(input *ListGatewayRoutesInput) (*ListGatewayRoutesOutput, error) {
  2314  	req, out := c.ListGatewayRoutesRequest(input)
  2315  	return out, req.Send()
  2316  }
  2317  
  2318  // ListGatewayRoutesWithContext is the same as ListGatewayRoutes with the addition of
  2319  // the ability to pass a context and additional request options.
  2320  //
  2321  // See ListGatewayRoutes for details on how to use this API operation.
  2322  //
  2323  // The context must be non-nil and will be used for request cancellation. If
  2324  // the context is nil a panic will occur. In the future the SDK may create
  2325  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2326  // for more information on using Contexts.
  2327  func (c *AppMesh) ListGatewayRoutesWithContext(ctx aws.Context, input *ListGatewayRoutesInput, opts ...request.Option) (*ListGatewayRoutesOutput, error) {
  2328  	req, out := c.ListGatewayRoutesRequest(input)
  2329  	req.SetContext(ctx)
  2330  	req.ApplyOptions(opts...)
  2331  	return out, req.Send()
  2332  }
  2333  
  2334  // ListGatewayRoutesPages iterates over the pages of a ListGatewayRoutes operation,
  2335  // calling the "fn" function with the response data for each page. To stop
  2336  // iterating, return false from the fn function.
  2337  //
  2338  // See ListGatewayRoutes method for more information on how to use this operation.
  2339  //
  2340  // Note: This operation can generate multiple requests to a service.
  2341  //
  2342  //    // Example iterating over at most 3 pages of a ListGatewayRoutes operation.
  2343  //    pageNum := 0
  2344  //    err := client.ListGatewayRoutesPages(params,
  2345  //        func(page *appmesh.ListGatewayRoutesOutput, lastPage bool) bool {
  2346  //            pageNum++
  2347  //            fmt.Println(page)
  2348  //            return pageNum <= 3
  2349  //        })
  2350  //
  2351  func (c *AppMesh) ListGatewayRoutesPages(input *ListGatewayRoutesInput, fn func(*ListGatewayRoutesOutput, bool) bool) error {
  2352  	return c.ListGatewayRoutesPagesWithContext(aws.BackgroundContext(), input, fn)
  2353  }
  2354  
  2355  // ListGatewayRoutesPagesWithContext same as ListGatewayRoutesPages except
  2356  // it takes a Context and allows setting request options on the pages.
  2357  //
  2358  // The context must be non-nil and will be used for request cancellation. If
  2359  // the context is nil a panic will occur. In the future the SDK may create
  2360  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2361  // for more information on using Contexts.
  2362  func (c *AppMesh) ListGatewayRoutesPagesWithContext(ctx aws.Context, input *ListGatewayRoutesInput, fn func(*ListGatewayRoutesOutput, bool) bool, opts ...request.Option) error {
  2363  	p := request.Pagination{
  2364  		NewRequest: func() (*request.Request, error) {
  2365  			var inCpy *ListGatewayRoutesInput
  2366  			if input != nil {
  2367  				tmp := *input
  2368  				inCpy = &tmp
  2369  			}
  2370  			req, _ := c.ListGatewayRoutesRequest(inCpy)
  2371  			req.SetContext(ctx)
  2372  			req.ApplyOptions(opts...)
  2373  			return req, nil
  2374  		},
  2375  	}
  2376  
  2377  	for p.Next() {
  2378  		if !fn(p.Page().(*ListGatewayRoutesOutput), !p.HasNextPage()) {
  2379  			break
  2380  		}
  2381  	}
  2382  
  2383  	return p.Err()
  2384  }
  2385  
  2386  const opListMeshes = "ListMeshes"
  2387  
  2388  // ListMeshesRequest generates a "aws/request.Request" representing the
  2389  // client's request for the ListMeshes operation. The "output" return
  2390  // value will be populated with the request's response once the request completes
  2391  // successfully.
  2392  //
  2393  // Use "Send" method on the returned Request to send the API call to the service.
  2394  // the "output" return value is not valid until after Send returns without error.
  2395  //
  2396  // See ListMeshes for more information on using the ListMeshes
  2397  // API call, and error handling.
  2398  //
  2399  // This method is useful when you want to inject custom logic or configuration
  2400  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2401  //
  2402  //
  2403  //    // Example sending a request using the ListMeshesRequest method.
  2404  //    req, resp := client.ListMeshesRequest(params)
  2405  //
  2406  //    err := req.Send()
  2407  //    if err == nil { // resp is now filled
  2408  //        fmt.Println(resp)
  2409  //    }
  2410  //
  2411  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListMeshes
  2412  func (c *AppMesh) ListMeshesRequest(input *ListMeshesInput) (req *request.Request, output *ListMeshesOutput) {
  2413  	op := &request.Operation{
  2414  		Name:       opListMeshes,
  2415  		HTTPMethod: "GET",
  2416  		HTTPPath:   "/v20190125/meshes",
  2417  		Paginator: &request.Paginator{
  2418  			InputTokens:     []string{"nextToken"},
  2419  			OutputTokens:    []string{"nextToken"},
  2420  			LimitToken:      "limit",
  2421  			TruncationToken: "",
  2422  		},
  2423  	}
  2424  
  2425  	if input == nil {
  2426  		input = &ListMeshesInput{}
  2427  	}
  2428  
  2429  	output = &ListMeshesOutput{}
  2430  	req = c.newRequest(op, input, output)
  2431  	return
  2432  }
  2433  
  2434  // ListMeshes API operation for AWS App Mesh.
  2435  //
  2436  // Returns a list of existing service meshes.
  2437  //
  2438  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2439  // with awserr.Error's Code and Message methods to get detailed information about
  2440  // the error.
  2441  //
  2442  // See the AWS API reference guide for AWS App Mesh's
  2443  // API operation ListMeshes for usage and error information.
  2444  //
  2445  // Returned Error Types:
  2446  //   * NotFoundException
  2447  //   The specified resource doesn't exist. Check your request syntax and try again.
  2448  //
  2449  //   * BadRequestException
  2450  //   The request syntax was malformed. Check your request syntax and try again.
  2451  //
  2452  //   * TooManyRequestsException
  2453  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  2454  //   for your account. For best results, use an increasing or variable sleep interval
  2455  //   between requests.
  2456  //
  2457  //   * ForbiddenException
  2458  //   You don't have permissions to perform this action.
  2459  //
  2460  //   * ServiceUnavailableException
  2461  //   The request has failed due to a temporary failure of the service.
  2462  //
  2463  //   * InternalServerErrorException
  2464  //   The request processing has failed because of an unknown error, exception,
  2465  //   or failure.
  2466  //
  2467  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListMeshes
  2468  func (c *AppMesh) ListMeshes(input *ListMeshesInput) (*ListMeshesOutput, error) {
  2469  	req, out := c.ListMeshesRequest(input)
  2470  	return out, req.Send()
  2471  }
  2472  
  2473  // ListMeshesWithContext is the same as ListMeshes with the addition of
  2474  // the ability to pass a context and additional request options.
  2475  //
  2476  // See ListMeshes for details on how to use this API operation.
  2477  //
  2478  // The context must be non-nil and will be used for request cancellation. If
  2479  // the context is nil a panic will occur. In the future the SDK may create
  2480  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2481  // for more information on using Contexts.
  2482  func (c *AppMesh) ListMeshesWithContext(ctx aws.Context, input *ListMeshesInput, opts ...request.Option) (*ListMeshesOutput, error) {
  2483  	req, out := c.ListMeshesRequest(input)
  2484  	req.SetContext(ctx)
  2485  	req.ApplyOptions(opts...)
  2486  	return out, req.Send()
  2487  }
  2488  
  2489  // ListMeshesPages iterates over the pages of a ListMeshes operation,
  2490  // calling the "fn" function with the response data for each page. To stop
  2491  // iterating, return false from the fn function.
  2492  //
  2493  // See ListMeshes method for more information on how to use this operation.
  2494  //
  2495  // Note: This operation can generate multiple requests to a service.
  2496  //
  2497  //    // Example iterating over at most 3 pages of a ListMeshes operation.
  2498  //    pageNum := 0
  2499  //    err := client.ListMeshesPages(params,
  2500  //        func(page *appmesh.ListMeshesOutput, lastPage bool) bool {
  2501  //            pageNum++
  2502  //            fmt.Println(page)
  2503  //            return pageNum <= 3
  2504  //        })
  2505  //
  2506  func (c *AppMesh) ListMeshesPages(input *ListMeshesInput, fn func(*ListMeshesOutput, bool) bool) error {
  2507  	return c.ListMeshesPagesWithContext(aws.BackgroundContext(), input, fn)
  2508  }
  2509  
  2510  // ListMeshesPagesWithContext same as ListMeshesPages except
  2511  // it takes a Context and allows setting request options on the pages.
  2512  //
  2513  // The context must be non-nil and will be used for request cancellation. If
  2514  // the context is nil a panic will occur. In the future the SDK may create
  2515  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2516  // for more information on using Contexts.
  2517  func (c *AppMesh) ListMeshesPagesWithContext(ctx aws.Context, input *ListMeshesInput, fn func(*ListMeshesOutput, bool) bool, opts ...request.Option) error {
  2518  	p := request.Pagination{
  2519  		NewRequest: func() (*request.Request, error) {
  2520  			var inCpy *ListMeshesInput
  2521  			if input != nil {
  2522  				tmp := *input
  2523  				inCpy = &tmp
  2524  			}
  2525  			req, _ := c.ListMeshesRequest(inCpy)
  2526  			req.SetContext(ctx)
  2527  			req.ApplyOptions(opts...)
  2528  			return req, nil
  2529  		},
  2530  	}
  2531  
  2532  	for p.Next() {
  2533  		if !fn(p.Page().(*ListMeshesOutput), !p.HasNextPage()) {
  2534  			break
  2535  		}
  2536  	}
  2537  
  2538  	return p.Err()
  2539  }
  2540  
  2541  const opListRoutes = "ListRoutes"
  2542  
  2543  // ListRoutesRequest generates a "aws/request.Request" representing the
  2544  // client's request for the ListRoutes operation. The "output" return
  2545  // value will be populated with the request's response once the request completes
  2546  // successfully.
  2547  //
  2548  // Use "Send" method on the returned Request to send the API call to the service.
  2549  // the "output" return value is not valid until after Send returns without error.
  2550  //
  2551  // See ListRoutes for more information on using the ListRoutes
  2552  // API call, and error handling.
  2553  //
  2554  // This method is useful when you want to inject custom logic or configuration
  2555  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2556  //
  2557  //
  2558  //    // Example sending a request using the ListRoutesRequest method.
  2559  //    req, resp := client.ListRoutesRequest(params)
  2560  //
  2561  //    err := req.Send()
  2562  //    if err == nil { // resp is now filled
  2563  //        fmt.Println(resp)
  2564  //    }
  2565  //
  2566  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListRoutes
  2567  func (c *AppMesh) ListRoutesRequest(input *ListRoutesInput) (req *request.Request, output *ListRoutesOutput) {
  2568  	op := &request.Operation{
  2569  		Name:       opListRoutes,
  2570  		HTTPMethod: "GET",
  2571  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes",
  2572  		Paginator: &request.Paginator{
  2573  			InputTokens:     []string{"nextToken"},
  2574  			OutputTokens:    []string{"nextToken"},
  2575  			LimitToken:      "limit",
  2576  			TruncationToken: "",
  2577  		},
  2578  	}
  2579  
  2580  	if input == nil {
  2581  		input = &ListRoutesInput{}
  2582  	}
  2583  
  2584  	output = &ListRoutesOutput{}
  2585  	req = c.newRequest(op, input, output)
  2586  	return
  2587  }
  2588  
  2589  // ListRoutes API operation for AWS App Mesh.
  2590  //
  2591  // Returns a list of existing routes in a service mesh.
  2592  //
  2593  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2594  // with awserr.Error's Code and Message methods to get detailed information about
  2595  // the error.
  2596  //
  2597  // See the AWS API reference guide for AWS App Mesh's
  2598  // API operation ListRoutes for usage and error information.
  2599  //
  2600  // Returned Error Types:
  2601  //   * NotFoundException
  2602  //   The specified resource doesn't exist. Check your request syntax and try again.
  2603  //
  2604  //   * BadRequestException
  2605  //   The request syntax was malformed. Check your request syntax and try again.
  2606  //
  2607  //   * TooManyRequestsException
  2608  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  2609  //   for your account. For best results, use an increasing or variable sleep interval
  2610  //   between requests.
  2611  //
  2612  //   * ForbiddenException
  2613  //   You don't have permissions to perform this action.
  2614  //
  2615  //   * ServiceUnavailableException
  2616  //   The request has failed due to a temporary failure of the service.
  2617  //
  2618  //   * InternalServerErrorException
  2619  //   The request processing has failed because of an unknown error, exception,
  2620  //   or failure.
  2621  //
  2622  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListRoutes
  2623  func (c *AppMesh) ListRoutes(input *ListRoutesInput) (*ListRoutesOutput, error) {
  2624  	req, out := c.ListRoutesRequest(input)
  2625  	return out, req.Send()
  2626  }
  2627  
  2628  // ListRoutesWithContext is the same as ListRoutes with the addition of
  2629  // the ability to pass a context and additional request options.
  2630  //
  2631  // See ListRoutes for details on how to use this API operation.
  2632  //
  2633  // The context must be non-nil and will be used for request cancellation. If
  2634  // the context is nil a panic will occur. In the future the SDK may create
  2635  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2636  // for more information on using Contexts.
  2637  func (c *AppMesh) ListRoutesWithContext(ctx aws.Context, input *ListRoutesInput, opts ...request.Option) (*ListRoutesOutput, error) {
  2638  	req, out := c.ListRoutesRequest(input)
  2639  	req.SetContext(ctx)
  2640  	req.ApplyOptions(opts...)
  2641  	return out, req.Send()
  2642  }
  2643  
  2644  // ListRoutesPages iterates over the pages of a ListRoutes operation,
  2645  // calling the "fn" function with the response data for each page. To stop
  2646  // iterating, return false from the fn function.
  2647  //
  2648  // See ListRoutes method for more information on how to use this operation.
  2649  //
  2650  // Note: This operation can generate multiple requests to a service.
  2651  //
  2652  //    // Example iterating over at most 3 pages of a ListRoutes operation.
  2653  //    pageNum := 0
  2654  //    err := client.ListRoutesPages(params,
  2655  //        func(page *appmesh.ListRoutesOutput, lastPage bool) bool {
  2656  //            pageNum++
  2657  //            fmt.Println(page)
  2658  //            return pageNum <= 3
  2659  //        })
  2660  //
  2661  func (c *AppMesh) ListRoutesPages(input *ListRoutesInput, fn func(*ListRoutesOutput, bool) bool) error {
  2662  	return c.ListRoutesPagesWithContext(aws.BackgroundContext(), input, fn)
  2663  }
  2664  
  2665  // ListRoutesPagesWithContext same as ListRoutesPages except
  2666  // it takes a Context and allows setting request options on the pages.
  2667  //
  2668  // The context must be non-nil and will be used for request cancellation. If
  2669  // the context is nil a panic will occur. In the future the SDK may create
  2670  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2671  // for more information on using Contexts.
  2672  func (c *AppMesh) ListRoutesPagesWithContext(ctx aws.Context, input *ListRoutesInput, fn func(*ListRoutesOutput, bool) bool, opts ...request.Option) error {
  2673  	p := request.Pagination{
  2674  		NewRequest: func() (*request.Request, error) {
  2675  			var inCpy *ListRoutesInput
  2676  			if input != nil {
  2677  				tmp := *input
  2678  				inCpy = &tmp
  2679  			}
  2680  			req, _ := c.ListRoutesRequest(inCpy)
  2681  			req.SetContext(ctx)
  2682  			req.ApplyOptions(opts...)
  2683  			return req, nil
  2684  		},
  2685  	}
  2686  
  2687  	for p.Next() {
  2688  		if !fn(p.Page().(*ListRoutesOutput), !p.HasNextPage()) {
  2689  			break
  2690  		}
  2691  	}
  2692  
  2693  	return p.Err()
  2694  }
  2695  
  2696  const opListTagsForResource = "ListTagsForResource"
  2697  
  2698  // ListTagsForResourceRequest generates a "aws/request.Request" representing the
  2699  // client's request for the ListTagsForResource operation. The "output" return
  2700  // value will be populated with the request's response once the request completes
  2701  // successfully.
  2702  //
  2703  // Use "Send" method on the returned Request to send the API call to the service.
  2704  // the "output" return value is not valid until after Send returns without error.
  2705  //
  2706  // See ListTagsForResource for more information on using the ListTagsForResource
  2707  // API call, and error handling.
  2708  //
  2709  // This method is useful when you want to inject custom logic or configuration
  2710  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2711  //
  2712  //
  2713  //    // Example sending a request using the ListTagsForResourceRequest method.
  2714  //    req, resp := client.ListTagsForResourceRequest(params)
  2715  //
  2716  //    err := req.Send()
  2717  //    if err == nil { // resp is now filled
  2718  //        fmt.Println(resp)
  2719  //    }
  2720  //
  2721  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListTagsForResource
  2722  func (c *AppMesh) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
  2723  	op := &request.Operation{
  2724  		Name:       opListTagsForResource,
  2725  		HTTPMethod: "GET",
  2726  		HTTPPath:   "/v20190125/tags",
  2727  		Paginator: &request.Paginator{
  2728  			InputTokens:     []string{"nextToken"},
  2729  			OutputTokens:    []string{"nextToken"},
  2730  			LimitToken:      "limit",
  2731  			TruncationToken: "",
  2732  		},
  2733  	}
  2734  
  2735  	if input == nil {
  2736  		input = &ListTagsForResourceInput{}
  2737  	}
  2738  
  2739  	output = &ListTagsForResourceOutput{}
  2740  	req = c.newRequest(op, input, output)
  2741  	return
  2742  }
  2743  
  2744  // ListTagsForResource API operation for AWS App Mesh.
  2745  //
  2746  // List the tags for an App Mesh resource.
  2747  //
  2748  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2749  // with awserr.Error's Code and Message methods to get detailed information about
  2750  // the error.
  2751  //
  2752  // See the AWS API reference guide for AWS App Mesh's
  2753  // API operation ListTagsForResource for usage and error information.
  2754  //
  2755  // Returned Error Types:
  2756  //   * NotFoundException
  2757  //   The specified resource doesn't exist. Check your request syntax and try again.
  2758  //
  2759  //   * BadRequestException
  2760  //   The request syntax was malformed. Check your request syntax and try again.
  2761  //
  2762  //   * TooManyRequestsException
  2763  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  2764  //   for your account. For best results, use an increasing or variable sleep interval
  2765  //   between requests.
  2766  //
  2767  //   * ForbiddenException
  2768  //   You don't have permissions to perform this action.
  2769  //
  2770  //   * ServiceUnavailableException
  2771  //   The request has failed due to a temporary failure of the service.
  2772  //
  2773  //   * InternalServerErrorException
  2774  //   The request processing has failed because of an unknown error, exception,
  2775  //   or failure.
  2776  //
  2777  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListTagsForResource
  2778  func (c *AppMesh) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
  2779  	req, out := c.ListTagsForResourceRequest(input)
  2780  	return out, req.Send()
  2781  }
  2782  
  2783  // ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
  2784  // the ability to pass a context and additional request options.
  2785  //
  2786  // See ListTagsForResource for details on how to use this API operation.
  2787  //
  2788  // The context must be non-nil and will be used for request cancellation. If
  2789  // the context is nil a panic will occur. In the future the SDK may create
  2790  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2791  // for more information on using Contexts.
  2792  func (c *AppMesh) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {
  2793  	req, out := c.ListTagsForResourceRequest(input)
  2794  	req.SetContext(ctx)
  2795  	req.ApplyOptions(opts...)
  2796  	return out, req.Send()
  2797  }
  2798  
  2799  // ListTagsForResourcePages iterates over the pages of a ListTagsForResource operation,
  2800  // calling the "fn" function with the response data for each page. To stop
  2801  // iterating, return false from the fn function.
  2802  //
  2803  // See ListTagsForResource method for more information on how to use this operation.
  2804  //
  2805  // Note: This operation can generate multiple requests to a service.
  2806  //
  2807  //    // Example iterating over at most 3 pages of a ListTagsForResource operation.
  2808  //    pageNum := 0
  2809  //    err := client.ListTagsForResourcePages(params,
  2810  //        func(page *appmesh.ListTagsForResourceOutput, lastPage bool) bool {
  2811  //            pageNum++
  2812  //            fmt.Println(page)
  2813  //            return pageNum <= 3
  2814  //        })
  2815  //
  2816  func (c *AppMesh) ListTagsForResourcePages(input *ListTagsForResourceInput, fn func(*ListTagsForResourceOutput, bool) bool) error {
  2817  	return c.ListTagsForResourcePagesWithContext(aws.BackgroundContext(), input, fn)
  2818  }
  2819  
  2820  // ListTagsForResourcePagesWithContext same as ListTagsForResourcePages except
  2821  // it takes a Context and allows setting request options on the pages.
  2822  //
  2823  // The context must be non-nil and will be used for request cancellation. If
  2824  // the context is nil a panic will occur. In the future the SDK may create
  2825  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2826  // for more information on using Contexts.
  2827  func (c *AppMesh) ListTagsForResourcePagesWithContext(ctx aws.Context, input *ListTagsForResourceInput, fn func(*ListTagsForResourceOutput, bool) bool, opts ...request.Option) error {
  2828  	p := request.Pagination{
  2829  		NewRequest: func() (*request.Request, error) {
  2830  			var inCpy *ListTagsForResourceInput
  2831  			if input != nil {
  2832  				tmp := *input
  2833  				inCpy = &tmp
  2834  			}
  2835  			req, _ := c.ListTagsForResourceRequest(inCpy)
  2836  			req.SetContext(ctx)
  2837  			req.ApplyOptions(opts...)
  2838  			return req, nil
  2839  		},
  2840  	}
  2841  
  2842  	for p.Next() {
  2843  		if !fn(p.Page().(*ListTagsForResourceOutput), !p.HasNextPage()) {
  2844  			break
  2845  		}
  2846  	}
  2847  
  2848  	return p.Err()
  2849  }
  2850  
  2851  const opListVirtualGateways = "ListVirtualGateways"
  2852  
  2853  // ListVirtualGatewaysRequest generates a "aws/request.Request" representing the
  2854  // client's request for the ListVirtualGateways operation. The "output" return
  2855  // value will be populated with the request's response once the request completes
  2856  // successfully.
  2857  //
  2858  // Use "Send" method on the returned Request to send the API call to the service.
  2859  // the "output" return value is not valid until after Send returns without error.
  2860  //
  2861  // See ListVirtualGateways for more information on using the ListVirtualGateways
  2862  // API call, and error handling.
  2863  //
  2864  // This method is useful when you want to inject custom logic or configuration
  2865  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2866  //
  2867  //
  2868  //    // Example sending a request using the ListVirtualGatewaysRequest method.
  2869  //    req, resp := client.ListVirtualGatewaysRequest(params)
  2870  //
  2871  //    err := req.Send()
  2872  //    if err == nil { // resp is now filled
  2873  //        fmt.Println(resp)
  2874  //    }
  2875  //
  2876  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualGateways
  2877  func (c *AppMesh) ListVirtualGatewaysRequest(input *ListVirtualGatewaysInput) (req *request.Request, output *ListVirtualGatewaysOutput) {
  2878  	op := &request.Operation{
  2879  		Name:       opListVirtualGateways,
  2880  		HTTPMethod: "GET",
  2881  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualGateways",
  2882  		Paginator: &request.Paginator{
  2883  			InputTokens:     []string{"nextToken"},
  2884  			OutputTokens:    []string{"nextToken"},
  2885  			LimitToken:      "limit",
  2886  			TruncationToken: "",
  2887  		},
  2888  	}
  2889  
  2890  	if input == nil {
  2891  		input = &ListVirtualGatewaysInput{}
  2892  	}
  2893  
  2894  	output = &ListVirtualGatewaysOutput{}
  2895  	req = c.newRequest(op, input, output)
  2896  	return
  2897  }
  2898  
  2899  // ListVirtualGateways API operation for AWS App Mesh.
  2900  //
  2901  // Returns a list of existing virtual gateways in a service mesh.
  2902  //
  2903  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2904  // with awserr.Error's Code and Message methods to get detailed information about
  2905  // the error.
  2906  //
  2907  // See the AWS API reference guide for AWS App Mesh's
  2908  // API operation ListVirtualGateways for usage and error information.
  2909  //
  2910  // Returned Error Types:
  2911  //   * NotFoundException
  2912  //   The specified resource doesn't exist. Check your request syntax and try again.
  2913  //
  2914  //   * BadRequestException
  2915  //   The request syntax was malformed. Check your request syntax and try again.
  2916  //
  2917  //   * TooManyRequestsException
  2918  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  2919  //   for your account. For best results, use an increasing or variable sleep interval
  2920  //   between requests.
  2921  //
  2922  //   * ForbiddenException
  2923  //   You don't have permissions to perform this action.
  2924  //
  2925  //   * ServiceUnavailableException
  2926  //   The request has failed due to a temporary failure of the service.
  2927  //
  2928  //   * InternalServerErrorException
  2929  //   The request processing has failed because of an unknown error, exception,
  2930  //   or failure.
  2931  //
  2932  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualGateways
  2933  func (c *AppMesh) ListVirtualGateways(input *ListVirtualGatewaysInput) (*ListVirtualGatewaysOutput, error) {
  2934  	req, out := c.ListVirtualGatewaysRequest(input)
  2935  	return out, req.Send()
  2936  }
  2937  
  2938  // ListVirtualGatewaysWithContext is the same as ListVirtualGateways with the addition of
  2939  // the ability to pass a context and additional request options.
  2940  //
  2941  // See ListVirtualGateways for details on how to use this API operation.
  2942  //
  2943  // The context must be non-nil and will be used for request cancellation. If
  2944  // the context is nil a panic will occur. In the future the SDK may create
  2945  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2946  // for more information on using Contexts.
  2947  func (c *AppMesh) ListVirtualGatewaysWithContext(ctx aws.Context, input *ListVirtualGatewaysInput, opts ...request.Option) (*ListVirtualGatewaysOutput, error) {
  2948  	req, out := c.ListVirtualGatewaysRequest(input)
  2949  	req.SetContext(ctx)
  2950  	req.ApplyOptions(opts...)
  2951  	return out, req.Send()
  2952  }
  2953  
  2954  // ListVirtualGatewaysPages iterates over the pages of a ListVirtualGateways operation,
  2955  // calling the "fn" function with the response data for each page. To stop
  2956  // iterating, return false from the fn function.
  2957  //
  2958  // See ListVirtualGateways method for more information on how to use this operation.
  2959  //
  2960  // Note: This operation can generate multiple requests to a service.
  2961  //
  2962  //    // Example iterating over at most 3 pages of a ListVirtualGateways operation.
  2963  //    pageNum := 0
  2964  //    err := client.ListVirtualGatewaysPages(params,
  2965  //        func(page *appmesh.ListVirtualGatewaysOutput, lastPage bool) bool {
  2966  //            pageNum++
  2967  //            fmt.Println(page)
  2968  //            return pageNum <= 3
  2969  //        })
  2970  //
  2971  func (c *AppMesh) ListVirtualGatewaysPages(input *ListVirtualGatewaysInput, fn func(*ListVirtualGatewaysOutput, bool) bool) error {
  2972  	return c.ListVirtualGatewaysPagesWithContext(aws.BackgroundContext(), input, fn)
  2973  }
  2974  
  2975  // ListVirtualGatewaysPagesWithContext same as ListVirtualGatewaysPages except
  2976  // it takes a Context and allows setting request options on the pages.
  2977  //
  2978  // The context must be non-nil and will be used for request cancellation. If
  2979  // the context is nil a panic will occur. In the future the SDK may create
  2980  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2981  // for more information on using Contexts.
  2982  func (c *AppMesh) ListVirtualGatewaysPagesWithContext(ctx aws.Context, input *ListVirtualGatewaysInput, fn func(*ListVirtualGatewaysOutput, bool) bool, opts ...request.Option) error {
  2983  	p := request.Pagination{
  2984  		NewRequest: func() (*request.Request, error) {
  2985  			var inCpy *ListVirtualGatewaysInput
  2986  			if input != nil {
  2987  				tmp := *input
  2988  				inCpy = &tmp
  2989  			}
  2990  			req, _ := c.ListVirtualGatewaysRequest(inCpy)
  2991  			req.SetContext(ctx)
  2992  			req.ApplyOptions(opts...)
  2993  			return req, nil
  2994  		},
  2995  	}
  2996  
  2997  	for p.Next() {
  2998  		if !fn(p.Page().(*ListVirtualGatewaysOutput), !p.HasNextPage()) {
  2999  			break
  3000  		}
  3001  	}
  3002  
  3003  	return p.Err()
  3004  }
  3005  
  3006  const opListVirtualNodes = "ListVirtualNodes"
  3007  
  3008  // ListVirtualNodesRequest generates a "aws/request.Request" representing the
  3009  // client's request for the ListVirtualNodes operation. The "output" return
  3010  // value will be populated with the request's response once the request completes
  3011  // successfully.
  3012  //
  3013  // Use "Send" method on the returned Request to send the API call to the service.
  3014  // the "output" return value is not valid until after Send returns without error.
  3015  //
  3016  // See ListVirtualNodes for more information on using the ListVirtualNodes
  3017  // API call, and error handling.
  3018  //
  3019  // This method is useful when you want to inject custom logic or configuration
  3020  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3021  //
  3022  //
  3023  //    // Example sending a request using the ListVirtualNodesRequest method.
  3024  //    req, resp := client.ListVirtualNodesRequest(params)
  3025  //
  3026  //    err := req.Send()
  3027  //    if err == nil { // resp is now filled
  3028  //        fmt.Println(resp)
  3029  //    }
  3030  //
  3031  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualNodes
  3032  func (c *AppMesh) ListVirtualNodesRequest(input *ListVirtualNodesInput) (req *request.Request, output *ListVirtualNodesOutput) {
  3033  	op := &request.Operation{
  3034  		Name:       opListVirtualNodes,
  3035  		HTTPMethod: "GET",
  3036  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualNodes",
  3037  		Paginator: &request.Paginator{
  3038  			InputTokens:     []string{"nextToken"},
  3039  			OutputTokens:    []string{"nextToken"},
  3040  			LimitToken:      "limit",
  3041  			TruncationToken: "",
  3042  		},
  3043  	}
  3044  
  3045  	if input == nil {
  3046  		input = &ListVirtualNodesInput{}
  3047  	}
  3048  
  3049  	output = &ListVirtualNodesOutput{}
  3050  	req = c.newRequest(op, input, output)
  3051  	return
  3052  }
  3053  
  3054  // ListVirtualNodes API operation for AWS App Mesh.
  3055  //
  3056  // Returns a list of existing virtual nodes.
  3057  //
  3058  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3059  // with awserr.Error's Code and Message methods to get detailed information about
  3060  // the error.
  3061  //
  3062  // See the AWS API reference guide for AWS App Mesh's
  3063  // API operation ListVirtualNodes for usage and error information.
  3064  //
  3065  // Returned Error Types:
  3066  //   * NotFoundException
  3067  //   The specified resource doesn't exist. Check your request syntax and try again.
  3068  //
  3069  //   * BadRequestException
  3070  //   The request syntax was malformed. Check your request syntax and try again.
  3071  //
  3072  //   * TooManyRequestsException
  3073  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  3074  //   for your account. For best results, use an increasing or variable sleep interval
  3075  //   between requests.
  3076  //
  3077  //   * ForbiddenException
  3078  //   You don't have permissions to perform this action.
  3079  //
  3080  //   * ServiceUnavailableException
  3081  //   The request has failed due to a temporary failure of the service.
  3082  //
  3083  //   * InternalServerErrorException
  3084  //   The request processing has failed because of an unknown error, exception,
  3085  //   or failure.
  3086  //
  3087  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualNodes
  3088  func (c *AppMesh) ListVirtualNodes(input *ListVirtualNodesInput) (*ListVirtualNodesOutput, error) {
  3089  	req, out := c.ListVirtualNodesRequest(input)
  3090  	return out, req.Send()
  3091  }
  3092  
  3093  // ListVirtualNodesWithContext is the same as ListVirtualNodes with the addition of
  3094  // the ability to pass a context and additional request options.
  3095  //
  3096  // See ListVirtualNodes for details on how to use this API operation.
  3097  //
  3098  // The context must be non-nil and will be used for request cancellation. If
  3099  // the context is nil a panic will occur. In the future the SDK may create
  3100  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3101  // for more information on using Contexts.
  3102  func (c *AppMesh) ListVirtualNodesWithContext(ctx aws.Context, input *ListVirtualNodesInput, opts ...request.Option) (*ListVirtualNodesOutput, error) {
  3103  	req, out := c.ListVirtualNodesRequest(input)
  3104  	req.SetContext(ctx)
  3105  	req.ApplyOptions(opts...)
  3106  	return out, req.Send()
  3107  }
  3108  
  3109  // ListVirtualNodesPages iterates over the pages of a ListVirtualNodes operation,
  3110  // calling the "fn" function with the response data for each page. To stop
  3111  // iterating, return false from the fn function.
  3112  //
  3113  // See ListVirtualNodes method for more information on how to use this operation.
  3114  //
  3115  // Note: This operation can generate multiple requests to a service.
  3116  //
  3117  //    // Example iterating over at most 3 pages of a ListVirtualNodes operation.
  3118  //    pageNum := 0
  3119  //    err := client.ListVirtualNodesPages(params,
  3120  //        func(page *appmesh.ListVirtualNodesOutput, lastPage bool) bool {
  3121  //            pageNum++
  3122  //            fmt.Println(page)
  3123  //            return pageNum <= 3
  3124  //        })
  3125  //
  3126  func (c *AppMesh) ListVirtualNodesPages(input *ListVirtualNodesInput, fn func(*ListVirtualNodesOutput, bool) bool) error {
  3127  	return c.ListVirtualNodesPagesWithContext(aws.BackgroundContext(), input, fn)
  3128  }
  3129  
  3130  // ListVirtualNodesPagesWithContext same as ListVirtualNodesPages except
  3131  // it takes a Context and allows setting request options on the pages.
  3132  //
  3133  // The context must be non-nil and will be used for request cancellation. If
  3134  // the context is nil a panic will occur. In the future the SDK may create
  3135  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3136  // for more information on using Contexts.
  3137  func (c *AppMesh) ListVirtualNodesPagesWithContext(ctx aws.Context, input *ListVirtualNodesInput, fn func(*ListVirtualNodesOutput, bool) bool, opts ...request.Option) error {
  3138  	p := request.Pagination{
  3139  		NewRequest: func() (*request.Request, error) {
  3140  			var inCpy *ListVirtualNodesInput
  3141  			if input != nil {
  3142  				tmp := *input
  3143  				inCpy = &tmp
  3144  			}
  3145  			req, _ := c.ListVirtualNodesRequest(inCpy)
  3146  			req.SetContext(ctx)
  3147  			req.ApplyOptions(opts...)
  3148  			return req, nil
  3149  		},
  3150  	}
  3151  
  3152  	for p.Next() {
  3153  		if !fn(p.Page().(*ListVirtualNodesOutput), !p.HasNextPage()) {
  3154  			break
  3155  		}
  3156  	}
  3157  
  3158  	return p.Err()
  3159  }
  3160  
  3161  const opListVirtualRouters = "ListVirtualRouters"
  3162  
  3163  // ListVirtualRoutersRequest generates a "aws/request.Request" representing the
  3164  // client's request for the ListVirtualRouters operation. The "output" return
  3165  // value will be populated with the request's response once the request completes
  3166  // successfully.
  3167  //
  3168  // Use "Send" method on the returned Request to send the API call to the service.
  3169  // the "output" return value is not valid until after Send returns without error.
  3170  //
  3171  // See ListVirtualRouters for more information on using the ListVirtualRouters
  3172  // API call, and error handling.
  3173  //
  3174  // This method is useful when you want to inject custom logic or configuration
  3175  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3176  //
  3177  //
  3178  //    // Example sending a request using the ListVirtualRoutersRequest method.
  3179  //    req, resp := client.ListVirtualRoutersRequest(params)
  3180  //
  3181  //    err := req.Send()
  3182  //    if err == nil { // resp is now filled
  3183  //        fmt.Println(resp)
  3184  //    }
  3185  //
  3186  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualRouters
  3187  func (c *AppMesh) ListVirtualRoutersRequest(input *ListVirtualRoutersInput) (req *request.Request, output *ListVirtualRoutersOutput) {
  3188  	op := &request.Operation{
  3189  		Name:       opListVirtualRouters,
  3190  		HTTPMethod: "GET",
  3191  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouters",
  3192  		Paginator: &request.Paginator{
  3193  			InputTokens:     []string{"nextToken"},
  3194  			OutputTokens:    []string{"nextToken"},
  3195  			LimitToken:      "limit",
  3196  			TruncationToken: "",
  3197  		},
  3198  	}
  3199  
  3200  	if input == nil {
  3201  		input = &ListVirtualRoutersInput{}
  3202  	}
  3203  
  3204  	output = &ListVirtualRoutersOutput{}
  3205  	req = c.newRequest(op, input, output)
  3206  	return
  3207  }
  3208  
  3209  // ListVirtualRouters API operation for AWS App Mesh.
  3210  //
  3211  // Returns a list of existing virtual routers in a service mesh.
  3212  //
  3213  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3214  // with awserr.Error's Code and Message methods to get detailed information about
  3215  // the error.
  3216  //
  3217  // See the AWS API reference guide for AWS App Mesh's
  3218  // API operation ListVirtualRouters for usage and error information.
  3219  //
  3220  // Returned Error Types:
  3221  //   * NotFoundException
  3222  //   The specified resource doesn't exist. Check your request syntax and try again.
  3223  //
  3224  //   * BadRequestException
  3225  //   The request syntax was malformed. Check your request syntax and try again.
  3226  //
  3227  //   * TooManyRequestsException
  3228  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  3229  //   for your account. For best results, use an increasing or variable sleep interval
  3230  //   between requests.
  3231  //
  3232  //   * ForbiddenException
  3233  //   You don't have permissions to perform this action.
  3234  //
  3235  //   * ServiceUnavailableException
  3236  //   The request has failed due to a temporary failure of the service.
  3237  //
  3238  //   * InternalServerErrorException
  3239  //   The request processing has failed because of an unknown error, exception,
  3240  //   or failure.
  3241  //
  3242  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualRouters
  3243  func (c *AppMesh) ListVirtualRouters(input *ListVirtualRoutersInput) (*ListVirtualRoutersOutput, error) {
  3244  	req, out := c.ListVirtualRoutersRequest(input)
  3245  	return out, req.Send()
  3246  }
  3247  
  3248  // ListVirtualRoutersWithContext is the same as ListVirtualRouters with the addition of
  3249  // the ability to pass a context and additional request options.
  3250  //
  3251  // See ListVirtualRouters for details on how to use this API operation.
  3252  //
  3253  // The context must be non-nil and will be used for request cancellation. If
  3254  // the context is nil a panic will occur. In the future the SDK may create
  3255  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3256  // for more information on using Contexts.
  3257  func (c *AppMesh) ListVirtualRoutersWithContext(ctx aws.Context, input *ListVirtualRoutersInput, opts ...request.Option) (*ListVirtualRoutersOutput, error) {
  3258  	req, out := c.ListVirtualRoutersRequest(input)
  3259  	req.SetContext(ctx)
  3260  	req.ApplyOptions(opts...)
  3261  	return out, req.Send()
  3262  }
  3263  
  3264  // ListVirtualRoutersPages iterates over the pages of a ListVirtualRouters operation,
  3265  // calling the "fn" function with the response data for each page. To stop
  3266  // iterating, return false from the fn function.
  3267  //
  3268  // See ListVirtualRouters method for more information on how to use this operation.
  3269  //
  3270  // Note: This operation can generate multiple requests to a service.
  3271  //
  3272  //    // Example iterating over at most 3 pages of a ListVirtualRouters operation.
  3273  //    pageNum := 0
  3274  //    err := client.ListVirtualRoutersPages(params,
  3275  //        func(page *appmesh.ListVirtualRoutersOutput, lastPage bool) bool {
  3276  //            pageNum++
  3277  //            fmt.Println(page)
  3278  //            return pageNum <= 3
  3279  //        })
  3280  //
  3281  func (c *AppMesh) ListVirtualRoutersPages(input *ListVirtualRoutersInput, fn func(*ListVirtualRoutersOutput, bool) bool) error {
  3282  	return c.ListVirtualRoutersPagesWithContext(aws.BackgroundContext(), input, fn)
  3283  }
  3284  
  3285  // ListVirtualRoutersPagesWithContext same as ListVirtualRoutersPages except
  3286  // it takes a Context and allows setting request options on the pages.
  3287  //
  3288  // The context must be non-nil and will be used for request cancellation. If
  3289  // the context is nil a panic will occur. In the future the SDK may create
  3290  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3291  // for more information on using Contexts.
  3292  func (c *AppMesh) ListVirtualRoutersPagesWithContext(ctx aws.Context, input *ListVirtualRoutersInput, fn func(*ListVirtualRoutersOutput, bool) bool, opts ...request.Option) error {
  3293  	p := request.Pagination{
  3294  		NewRequest: func() (*request.Request, error) {
  3295  			var inCpy *ListVirtualRoutersInput
  3296  			if input != nil {
  3297  				tmp := *input
  3298  				inCpy = &tmp
  3299  			}
  3300  			req, _ := c.ListVirtualRoutersRequest(inCpy)
  3301  			req.SetContext(ctx)
  3302  			req.ApplyOptions(opts...)
  3303  			return req, nil
  3304  		},
  3305  	}
  3306  
  3307  	for p.Next() {
  3308  		if !fn(p.Page().(*ListVirtualRoutersOutput), !p.HasNextPage()) {
  3309  			break
  3310  		}
  3311  	}
  3312  
  3313  	return p.Err()
  3314  }
  3315  
  3316  const opListVirtualServices = "ListVirtualServices"
  3317  
  3318  // ListVirtualServicesRequest generates a "aws/request.Request" representing the
  3319  // client's request for the ListVirtualServices operation. The "output" return
  3320  // value will be populated with the request's response once the request completes
  3321  // successfully.
  3322  //
  3323  // Use "Send" method on the returned Request to send the API call to the service.
  3324  // the "output" return value is not valid until after Send returns without error.
  3325  //
  3326  // See ListVirtualServices for more information on using the ListVirtualServices
  3327  // API call, and error handling.
  3328  //
  3329  // This method is useful when you want to inject custom logic or configuration
  3330  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3331  //
  3332  //
  3333  //    // Example sending a request using the ListVirtualServicesRequest method.
  3334  //    req, resp := client.ListVirtualServicesRequest(params)
  3335  //
  3336  //    err := req.Send()
  3337  //    if err == nil { // resp is now filled
  3338  //        fmt.Println(resp)
  3339  //    }
  3340  //
  3341  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualServices
  3342  func (c *AppMesh) ListVirtualServicesRequest(input *ListVirtualServicesInput) (req *request.Request, output *ListVirtualServicesOutput) {
  3343  	op := &request.Operation{
  3344  		Name:       opListVirtualServices,
  3345  		HTTPMethod: "GET",
  3346  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualServices",
  3347  		Paginator: &request.Paginator{
  3348  			InputTokens:     []string{"nextToken"},
  3349  			OutputTokens:    []string{"nextToken"},
  3350  			LimitToken:      "limit",
  3351  			TruncationToken: "",
  3352  		},
  3353  	}
  3354  
  3355  	if input == nil {
  3356  		input = &ListVirtualServicesInput{}
  3357  	}
  3358  
  3359  	output = &ListVirtualServicesOutput{}
  3360  	req = c.newRequest(op, input, output)
  3361  	return
  3362  }
  3363  
  3364  // ListVirtualServices API operation for AWS App Mesh.
  3365  //
  3366  // Returns a list of existing virtual services in a service mesh.
  3367  //
  3368  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3369  // with awserr.Error's Code and Message methods to get detailed information about
  3370  // the error.
  3371  //
  3372  // See the AWS API reference guide for AWS App Mesh's
  3373  // API operation ListVirtualServices for usage and error information.
  3374  //
  3375  // Returned Error Types:
  3376  //   * NotFoundException
  3377  //   The specified resource doesn't exist. Check your request syntax and try again.
  3378  //
  3379  //   * BadRequestException
  3380  //   The request syntax was malformed. Check your request syntax and try again.
  3381  //
  3382  //   * TooManyRequestsException
  3383  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  3384  //   for your account. For best results, use an increasing or variable sleep interval
  3385  //   between requests.
  3386  //
  3387  //   * ForbiddenException
  3388  //   You don't have permissions to perform this action.
  3389  //
  3390  //   * ServiceUnavailableException
  3391  //   The request has failed due to a temporary failure of the service.
  3392  //
  3393  //   * InternalServerErrorException
  3394  //   The request processing has failed because of an unknown error, exception,
  3395  //   or failure.
  3396  //
  3397  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/ListVirtualServices
  3398  func (c *AppMesh) ListVirtualServices(input *ListVirtualServicesInput) (*ListVirtualServicesOutput, error) {
  3399  	req, out := c.ListVirtualServicesRequest(input)
  3400  	return out, req.Send()
  3401  }
  3402  
  3403  // ListVirtualServicesWithContext is the same as ListVirtualServices with the addition of
  3404  // the ability to pass a context and additional request options.
  3405  //
  3406  // See ListVirtualServices for details on how to use this API operation.
  3407  //
  3408  // The context must be non-nil and will be used for request cancellation. If
  3409  // the context is nil a panic will occur. In the future the SDK may create
  3410  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3411  // for more information on using Contexts.
  3412  func (c *AppMesh) ListVirtualServicesWithContext(ctx aws.Context, input *ListVirtualServicesInput, opts ...request.Option) (*ListVirtualServicesOutput, error) {
  3413  	req, out := c.ListVirtualServicesRequest(input)
  3414  	req.SetContext(ctx)
  3415  	req.ApplyOptions(opts...)
  3416  	return out, req.Send()
  3417  }
  3418  
  3419  // ListVirtualServicesPages iterates over the pages of a ListVirtualServices operation,
  3420  // calling the "fn" function with the response data for each page. To stop
  3421  // iterating, return false from the fn function.
  3422  //
  3423  // See ListVirtualServices method for more information on how to use this operation.
  3424  //
  3425  // Note: This operation can generate multiple requests to a service.
  3426  //
  3427  //    // Example iterating over at most 3 pages of a ListVirtualServices operation.
  3428  //    pageNum := 0
  3429  //    err := client.ListVirtualServicesPages(params,
  3430  //        func(page *appmesh.ListVirtualServicesOutput, lastPage bool) bool {
  3431  //            pageNum++
  3432  //            fmt.Println(page)
  3433  //            return pageNum <= 3
  3434  //        })
  3435  //
  3436  func (c *AppMesh) ListVirtualServicesPages(input *ListVirtualServicesInput, fn func(*ListVirtualServicesOutput, bool) bool) error {
  3437  	return c.ListVirtualServicesPagesWithContext(aws.BackgroundContext(), input, fn)
  3438  }
  3439  
  3440  // ListVirtualServicesPagesWithContext same as ListVirtualServicesPages except
  3441  // it takes a Context and allows setting request options on the pages.
  3442  //
  3443  // The context must be non-nil and will be used for request cancellation. If
  3444  // the context is nil a panic will occur. In the future the SDK may create
  3445  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3446  // for more information on using Contexts.
  3447  func (c *AppMesh) ListVirtualServicesPagesWithContext(ctx aws.Context, input *ListVirtualServicesInput, fn func(*ListVirtualServicesOutput, bool) bool, opts ...request.Option) error {
  3448  	p := request.Pagination{
  3449  		NewRequest: func() (*request.Request, error) {
  3450  			var inCpy *ListVirtualServicesInput
  3451  			if input != nil {
  3452  				tmp := *input
  3453  				inCpy = &tmp
  3454  			}
  3455  			req, _ := c.ListVirtualServicesRequest(inCpy)
  3456  			req.SetContext(ctx)
  3457  			req.ApplyOptions(opts...)
  3458  			return req, nil
  3459  		},
  3460  	}
  3461  
  3462  	for p.Next() {
  3463  		if !fn(p.Page().(*ListVirtualServicesOutput), !p.HasNextPage()) {
  3464  			break
  3465  		}
  3466  	}
  3467  
  3468  	return p.Err()
  3469  }
  3470  
  3471  const opTagResource = "TagResource"
  3472  
  3473  // TagResourceRequest generates a "aws/request.Request" representing the
  3474  // client's request for the TagResource operation. The "output" return
  3475  // value will be populated with the request's response once the request completes
  3476  // successfully.
  3477  //
  3478  // Use "Send" method on the returned Request to send the API call to the service.
  3479  // the "output" return value is not valid until after Send returns without error.
  3480  //
  3481  // See TagResource for more information on using the TagResource
  3482  // API call, and error handling.
  3483  //
  3484  // This method is useful when you want to inject custom logic or configuration
  3485  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3486  //
  3487  //
  3488  //    // Example sending a request using the TagResourceRequest method.
  3489  //    req, resp := client.TagResourceRequest(params)
  3490  //
  3491  //    err := req.Send()
  3492  //    if err == nil { // resp is now filled
  3493  //        fmt.Println(resp)
  3494  //    }
  3495  //
  3496  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/TagResource
  3497  func (c *AppMesh) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
  3498  	op := &request.Operation{
  3499  		Name:       opTagResource,
  3500  		HTTPMethod: "PUT",
  3501  		HTTPPath:   "/v20190125/tag",
  3502  	}
  3503  
  3504  	if input == nil {
  3505  		input = &TagResourceInput{}
  3506  	}
  3507  
  3508  	output = &TagResourceOutput{}
  3509  	req = c.newRequest(op, input, output)
  3510  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  3511  	return
  3512  }
  3513  
  3514  // TagResource API operation for AWS App Mesh.
  3515  //
  3516  // Associates the specified tags to a resource with the specified resourceArn.
  3517  // If existing tags on a resource aren't specified in the request parameters,
  3518  // they aren't changed. When a resource is deleted, the tags associated with
  3519  // that resource are also deleted.
  3520  //
  3521  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3522  // with awserr.Error's Code and Message methods to get detailed information about
  3523  // the error.
  3524  //
  3525  // See the AWS API reference guide for AWS App Mesh's
  3526  // API operation TagResource for usage and error information.
  3527  //
  3528  // Returned Error Types:
  3529  //   * NotFoundException
  3530  //   The specified resource doesn't exist. Check your request syntax and try again.
  3531  //
  3532  //   * BadRequestException
  3533  //   The request syntax was malformed. Check your request syntax and try again.
  3534  //
  3535  //   * TooManyTagsException
  3536  //   The request exceeds the maximum allowed number of tags allowed per resource.
  3537  //   The current limit is 50 user tags per resource. You must reduce the number
  3538  //   of tags in the request. None of the tags in this request were applied.
  3539  //
  3540  //   * TooManyRequestsException
  3541  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  3542  //   for your account. For best results, use an increasing or variable sleep interval
  3543  //   between requests.
  3544  //
  3545  //   * ForbiddenException
  3546  //   You don't have permissions to perform this action.
  3547  //
  3548  //   * ServiceUnavailableException
  3549  //   The request has failed due to a temporary failure of the service.
  3550  //
  3551  //   * InternalServerErrorException
  3552  //   The request processing has failed because of an unknown error, exception,
  3553  //   or failure.
  3554  //
  3555  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/TagResource
  3556  func (c *AppMesh) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
  3557  	req, out := c.TagResourceRequest(input)
  3558  	return out, req.Send()
  3559  }
  3560  
  3561  // TagResourceWithContext is the same as TagResource with the addition of
  3562  // the ability to pass a context and additional request options.
  3563  //
  3564  // See TagResource for details on how to use this API operation.
  3565  //
  3566  // The context must be non-nil and will be used for request cancellation. If
  3567  // the context is nil a panic will occur. In the future the SDK may create
  3568  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3569  // for more information on using Contexts.
  3570  func (c *AppMesh) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
  3571  	req, out := c.TagResourceRequest(input)
  3572  	req.SetContext(ctx)
  3573  	req.ApplyOptions(opts...)
  3574  	return out, req.Send()
  3575  }
  3576  
  3577  const opUntagResource = "UntagResource"
  3578  
  3579  // UntagResourceRequest generates a "aws/request.Request" representing the
  3580  // client's request for the UntagResource operation. The "output" return
  3581  // value will be populated with the request's response once the request completes
  3582  // successfully.
  3583  //
  3584  // Use "Send" method on the returned Request to send the API call to the service.
  3585  // the "output" return value is not valid until after Send returns without error.
  3586  //
  3587  // See UntagResource for more information on using the UntagResource
  3588  // API call, and error handling.
  3589  //
  3590  // This method is useful when you want to inject custom logic or configuration
  3591  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3592  //
  3593  //
  3594  //    // Example sending a request using the UntagResourceRequest method.
  3595  //    req, resp := client.UntagResourceRequest(params)
  3596  //
  3597  //    err := req.Send()
  3598  //    if err == nil { // resp is now filled
  3599  //        fmt.Println(resp)
  3600  //    }
  3601  //
  3602  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UntagResource
  3603  func (c *AppMesh) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
  3604  	op := &request.Operation{
  3605  		Name:       opUntagResource,
  3606  		HTTPMethod: "PUT",
  3607  		HTTPPath:   "/v20190125/untag",
  3608  	}
  3609  
  3610  	if input == nil {
  3611  		input = &UntagResourceInput{}
  3612  	}
  3613  
  3614  	output = &UntagResourceOutput{}
  3615  	req = c.newRequest(op, input, output)
  3616  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  3617  	return
  3618  }
  3619  
  3620  // UntagResource API operation for AWS App Mesh.
  3621  //
  3622  // Deletes specified tags from a resource.
  3623  //
  3624  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3625  // with awserr.Error's Code and Message methods to get detailed information about
  3626  // the error.
  3627  //
  3628  // See the AWS API reference guide for AWS App Mesh's
  3629  // API operation UntagResource for usage and error information.
  3630  //
  3631  // Returned Error Types:
  3632  //   * NotFoundException
  3633  //   The specified resource doesn't exist. Check your request syntax and try again.
  3634  //
  3635  //   * BadRequestException
  3636  //   The request syntax was malformed. Check your request syntax and try again.
  3637  //
  3638  //   * TooManyRequestsException
  3639  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  3640  //   for your account. For best results, use an increasing or variable sleep interval
  3641  //   between requests.
  3642  //
  3643  //   * ForbiddenException
  3644  //   You don't have permissions to perform this action.
  3645  //
  3646  //   * ServiceUnavailableException
  3647  //   The request has failed due to a temporary failure of the service.
  3648  //
  3649  //   * InternalServerErrorException
  3650  //   The request processing has failed because of an unknown error, exception,
  3651  //   or failure.
  3652  //
  3653  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UntagResource
  3654  func (c *AppMesh) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
  3655  	req, out := c.UntagResourceRequest(input)
  3656  	return out, req.Send()
  3657  }
  3658  
  3659  // UntagResourceWithContext is the same as UntagResource with the addition of
  3660  // the ability to pass a context and additional request options.
  3661  //
  3662  // See UntagResource for details on how to use this API operation.
  3663  //
  3664  // The context must be non-nil and will be used for request cancellation. If
  3665  // the context is nil a panic will occur. In the future the SDK may create
  3666  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3667  // for more information on using Contexts.
  3668  func (c *AppMesh) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {
  3669  	req, out := c.UntagResourceRequest(input)
  3670  	req.SetContext(ctx)
  3671  	req.ApplyOptions(opts...)
  3672  	return out, req.Send()
  3673  }
  3674  
  3675  const opUpdateGatewayRoute = "UpdateGatewayRoute"
  3676  
  3677  // UpdateGatewayRouteRequest generates a "aws/request.Request" representing the
  3678  // client's request for the UpdateGatewayRoute operation. The "output" return
  3679  // value will be populated with the request's response once the request completes
  3680  // successfully.
  3681  //
  3682  // Use "Send" method on the returned Request to send the API call to the service.
  3683  // the "output" return value is not valid until after Send returns without error.
  3684  //
  3685  // See UpdateGatewayRoute for more information on using the UpdateGatewayRoute
  3686  // API call, and error handling.
  3687  //
  3688  // This method is useful when you want to inject custom logic or configuration
  3689  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3690  //
  3691  //
  3692  //    // Example sending a request using the UpdateGatewayRouteRequest method.
  3693  //    req, resp := client.UpdateGatewayRouteRequest(params)
  3694  //
  3695  //    err := req.Send()
  3696  //    if err == nil { // resp is now filled
  3697  //        fmt.Println(resp)
  3698  //    }
  3699  //
  3700  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateGatewayRoute
  3701  func (c *AppMesh) UpdateGatewayRouteRequest(input *UpdateGatewayRouteInput) (req *request.Request, output *UpdateGatewayRouteOutput) {
  3702  	op := &request.Operation{
  3703  		Name:       opUpdateGatewayRoute,
  3704  		HTTPMethod: "PUT",
  3705  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualGateway/{virtualGatewayName}/gatewayRoutes/{gatewayRouteName}",
  3706  	}
  3707  
  3708  	if input == nil {
  3709  		input = &UpdateGatewayRouteInput{}
  3710  	}
  3711  
  3712  	output = &UpdateGatewayRouteOutput{}
  3713  	req = c.newRequest(op, input, output)
  3714  	return
  3715  }
  3716  
  3717  // UpdateGatewayRoute API operation for AWS App Mesh.
  3718  //
  3719  // Updates an existing gateway route that is associated to a specified virtual
  3720  // gateway in a service mesh.
  3721  //
  3722  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3723  // with awserr.Error's Code and Message methods to get detailed information about
  3724  // the error.
  3725  //
  3726  // See the AWS API reference guide for AWS App Mesh's
  3727  // API operation UpdateGatewayRoute for usage and error information.
  3728  //
  3729  // Returned Error Types:
  3730  //   * NotFoundException
  3731  //   The specified resource doesn't exist. Check your request syntax and try again.
  3732  //
  3733  //   * BadRequestException
  3734  //   The request syntax was malformed. Check your request syntax and try again.
  3735  //
  3736  //   * ConflictException
  3737  //   The request contains a client token that was used for a previous update resource
  3738  //   call with different specifications. Try the request again with a new client
  3739  //   token.
  3740  //
  3741  //   * TooManyRequestsException
  3742  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  3743  //   for your account. For best results, use an increasing or variable sleep interval
  3744  //   between requests.
  3745  //
  3746  //   * ForbiddenException
  3747  //   You don't have permissions to perform this action.
  3748  //
  3749  //   * ServiceUnavailableException
  3750  //   The request has failed due to a temporary failure of the service.
  3751  //
  3752  //   * InternalServerErrorException
  3753  //   The request processing has failed because of an unknown error, exception,
  3754  //   or failure.
  3755  //
  3756  //   * LimitExceededException
  3757  //   You have exceeded a service limit for your account. For more information,
  3758  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
  3759  //   in the AWS App Mesh User Guide.
  3760  //
  3761  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateGatewayRoute
  3762  func (c *AppMesh) UpdateGatewayRoute(input *UpdateGatewayRouteInput) (*UpdateGatewayRouteOutput, error) {
  3763  	req, out := c.UpdateGatewayRouteRequest(input)
  3764  	return out, req.Send()
  3765  }
  3766  
  3767  // UpdateGatewayRouteWithContext is the same as UpdateGatewayRoute with the addition of
  3768  // the ability to pass a context and additional request options.
  3769  //
  3770  // See UpdateGatewayRoute for details on how to use this API operation.
  3771  //
  3772  // The context must be non-nil and will be used for request cancellation. If
  3773  // the context is nil a panic will occur. In the future the SDK may create
  3774  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3775  // for more information on using Contexts.
  3776  func (c *AppMesh) UpdateGatewayRouteWithContext(ctx aws.Context, input *UpdateGatewayRouteInput, opts ...request.Option) (*UpdateGatewayRouteOutput, error) {
  3777  	req, out := c.UpdateGatewayRouteRequest(input)
  3778  	req.SetContext(ctx)
  3779  	req.ApplyOptions(opts...)
  3780  	return out, req.Send()
  3781  }
  3782  
  3783  const opUpdateMesh = "UpdateMesh"
  3784  
  3785  // UpdateMeshRequest generates a "aws/request.Request" representing the
  3786  // client's request for the UpdateMesh operation. The "output" return
  3787  // value will be populated with the request's response once the request completes
  3788  // successfully.
  3789  //
  3790  // Use "Send" method on the returned Request to send the API call to the service.
  3791  // the "output" return value is not valid until after Send returns without error.
  3792  //
  3793  // See UpdateMesh for more information on using the UpdateMesh
  3794  // API call, and error handling.
  3795  //
  3796  // This method is useful when you want to inject custom logic or configuration
  3797  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3798  //
  3799  //
  3800  //    // Example sending a request using the UpdateMeshRequest method.
  3801  //    req, resp := client.UpdateMeshRequest(params)
  3802  //
  3803  //    err := req.Send()
  3804  //    if err == nil { // resp is now filled
  3805  //        fmt.Println(resp)
  3806  //    }
  3807  //
  3808  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateMesh
  3809  func (c *AppMesh) UpdateMeshRequest(input *UpdateMeshInput) (req *request.Request, output *UpdateMeshOutput) {
  3810  	op := &request.Operation{
  3811  		Name:       opUpdateMesh,
  3812  		HTTPMethod: "PUT",
  3813  		HTTPPath:   "/v20190125/meshes/{meshName}",
  3814  	}
  3815  
  3816  	if input == nil {
  3817  		input = &UpdateMeshInput{}
  3818  	}
  3819  
  3820  	output = &UpdateMeshOutput{}
  3821  	req = c.newRequest(op, input, output)
  3822  	return
  3823  }
  3824  
  3825  // UpdateMesh API operation for AWS App Mesh.
  3826  //
  3827  // Updates an existing service mesh.
  3828  //
  3829  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3830  // with awserr.Error's Code and Message methods to get detailed information about
  3831  // the error.
  3832  //
  3833  // See the AWS API reference guide for AWS App Mesh's
  3834  // API operation UpdateMesh for usage and error information.
  3835  //
  3836  // Returned Error Types:
  3837  //   * NotFoundException
  3838  //   The specified resource doesn't exist. Check your request syntax and try again.
  3839  //
  3840  //   * BadRequestException
  3841  //   The request syntax was malformed. Check your request syntax and try again.
  3842  //
  3843  //   * ConflictException
  3844  //   The request contains a client token that was used for a previous update resource
  3845  //   call with different specifications. Try the request again with a new client
  3846  //   token.
  3847  //
  3848  //   * TooManyRequestsException
  3849  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  3850  //   for your account. For best results, use an increasing or variable sleep interval
  3851  //   between requests.
  3852  //
  3853  //   * ForbiddenException
  3854  //   You don't have permissions to perform this action.
  3855  //
  3856  //   * ServiceUnavailableException
  3857  //   The request has failed due to a temporary failure of the service.
  3858  //
  3859  //   * InternalServerErrorException
  3860  //   The request processing has failed because of an unknown error, exception,
  3861  //   or failure.
  3862  //
  3863  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateMesh
  3864  func (c *AppMesh) UpdateMesh(input *UpdateMeshInput) (*UpdateMeshOutput, error) {
  3865  	req, out := c.UpdateMeshRequest(input)
  3866  	return out, req.Send()
  3867  }
  3868  
  3869  // UpdateMeshWithContext is the same as UpdateMesh with the addition of
  3870  // the ability to pass a context and additional request options.
  3871  //
  3872  // See UpdateMesh for details on how to use this API operation.
  3873  //
  3874  // The context must be non-nil and will be used for request cancellation. If
  3875  // the context is nil a panic will occur. In the future the SDK may create
  3876  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3877  // for more information on using Contexts.
  3878  func (c *AppMesh) UpdateMeshWithContext(ctx aws.Context, input *UpdateMeshInput, opts ...request.Option) (*UpdateMeshOutput, error) {
  3879  	req, out := c.UpdateMeshRequest(input)
  3880  	req.SetContext(ctx)
  3881  	req.ApplyOptions(opts...)
  3882  	return out, req.Send()
  3883  }
  3884  
  3885  const opUpdateRoute = "UpdateRoute"
  3886  
  3887  // UpdateRouteRequest generates a "aws/request.Request" representing the
  3888  // client's request for the UpdateRoute operation. The "output" return
  3889  // value will be populated with the request's response once the request completes
  3890  // successfully.
  3891  //
  3892  // Use "Send" method on the returned Request to send the API call to the service.
  3893  // the "output" return value is not valid until after Send returns without error.
  3894  //
  3895  // See UpdateRoute for more information on using the UpdateRoute
  3896  // API call, and error handling.
  3897  //
  3898  // This method is useful when you want to inject custom logic or configuration
  3899  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3900  //
  3901  //
  3902  //    // Example sending a request using the UpdateRouteRequest method.
  3903  //    req, resp := client.UpdateRouteRequest(params)
  3904  //
  3905  //    err := req.Send()
  3906  //    if err == nil { // resp is now filled
  3907  //        fmt.Println(resp)
  3908  //    }
  3909  //
  3910  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateRoute
  3911  func (c *AppMesh) UpdateRouteRequest(input *UpdateRouteInput) (req *request.Request, output *UpdateRouteOutput) {
  3912  	op := &request.Operation{
  3913  		Name:       opUpdateRoute,
  3914  		HTTPMethod: "PUT",
  3915  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouter/{virtualRouterName}/routes/{routeName}",
  3916  	}
  3917  
  3918  	if input == nil {
  3919  		input = &UpdateRouteInput{}
  3920  	}
  3921  
  3922  	output = &UpdateRouteOutput{}
  3923  	req = c.newRequest(op, input, output)
  3924  	return
  3925  }
  3926  
  3927  // UpdateRoute API operation for AWS App Mesh.
  3928  //
  3929  // Updates an existing route for a specified service mesh and virtual router.
  3930  //
  3931  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3932  // with awserr.Error's Code and Message methods to get detailed information about
  3933  // the error.
  3934  //
  3935  // See the AWS API reference guide for AWS App Mesh's
  3936  // API operation UpdateRoute for usage and error information.
  3937  //
  3938  // Returned Error Types:
  3939  //   * NotFoundException
  3940  //   The specified resource doesn't exist. Check your request syntax and try again.
  3941  //
  3942  //   * BadRequestException
  3943  //   The request syntax was malformed. Check your request syntax and try again.
  3944  //
  3945  //   * ConflictException
  3946  //   The request contains a client token that was used for a previous update resource
  3947  //   call with different specifications. Try the request again with a new client
  3948  //   token.
  3949  //
  3950  //   * TooManyRequestsException
  3951  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  3952  //   for your account. For best results, use an increasing or variable sleep interval
  3953  //   between requests.
  3954  //
  3955  //   * ForbiddenException
  3956  //   You don't have permissions to perform this action.
  3957  //
  3958  //   * ServiceUnavailableException
  3959  //   The request has failed due to a temporary failure of the service.
  3960  //
  3961  //   * InternalServerErrorException
  3962  //   The request processing has failed because of an unknown error, exception,
  3963  //   or failure.
  3964  //
  3965  //   * LimitExceededException
  3966  //   You have exceeded a service limit for your account. For more information,
  3967  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
  3968  //   in the AWS App Mesh User Guide.
  3969  //
  3970  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateRoute
  3971  func (c *AppMesh) UpdateRoute(input *UpdateRouteInput) (*UpdateRouteOutput, error) {
  3972  	req, out := c.UpdateRouteRequest(input)
  3973  	return out, req.Send()
  3974  }
  3975  
  3976  // UpdateRouteWithContext is the same as UpdateRoute with the addition of
  3977  // the ability to pass a context and additional request options.
  3978  //
  3979  // See UpdateRoute for details on how to use this API operation.
  3980  //
  3981  // The context must be non-nil and will be used for request cancellation. If
  3982  // the context is nil a panic will occur. In the future the SDK may create
  3983  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3984  // for more information on using Contexts.
  3985  func (c *AppMesh) UpdateRouteWithContext(ctx aws.Context, input *UpdateRouteInput, opts ...request.Option) (*UpdateRouteOutput, error) {
  3986  	req, out := c.UpdateRouteRequest(input)
  3987  	req.SetContext(ctx)
  3988  	req.ApplyOptions(opts...)
  3989  	return out, req.Send()
  3990  }
  3991  
  3992  const opUpdateVirtualGateway = "UpdateVirtualGateway"
  3993  
  3994  // UpdateVirtualGatewayRequest generates a "aws/request.Request" representing the
  3995  // client's request for the UpdateVirtualGateway operation. The "output" return
  3996  // value will be populated with the request's response once the request completes
  3997  // successfully.
  3998  //
  3999  // Use "Send" method on the returned Request to send the API call to the service.
  4000  // the "output" return value is not valid until after Send returns without error.
  4001  //
  4002  // See UpdateVirtualGateway for more information on using the UpdateVirtualGateway
  4003  // API call, and error handling.
  4004  //
  4005  // This method is useful when you want to inject custom logic or configuration
  4006  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4007  //
  4008  //
  4009  //    // Example sending a request using the UpdateVirtualGatewayRequest method.
  4010  //    req, resp := client.UpdateVirtualGatewayRequest(params)
  4011  //
  4012  //    err := req.Send()
  4013  //    if err == nil { // resp is now filled
  4014  //        fmt.Println(resp)
  4015  //    }
  4016  //
  4017  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualGateway
  4018  func (c *AppMesh) UpdateVirtualGatewayRequest(input *UpdateVirtualGatewayInput) (req *request.Request, output *UpdateVirtualGatewayOutput) {
  4019  	op := &request.Operation{
  4020  		Name:       opUpdateVirtualGateway,
  4021  		HTTPMethod: "PUT",
  4022  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualGateways/{virtualGatewayName}",
  4023  	}
  4024  
  4025  	if input == nil {
  4026  		input = &UpdateVirtualGatewayInput{}
  4027  	}
  4028  
  4029  	output = &UpdateVirtualGatewayOutput{}
  4030  	req = c.newRequest(op, input, output)
  4031  	return
  4032  }
  4033  
  4034  // UpdateVirtualGateway API operation for AWS App Mesh.
  4035  //
  4036  // Updates an existing virtual gateway in a specified service mesh.
  4037  //
  4038  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4039  // with awserr.Error's Code and Message methods to get detailed information about
  4040  // the error.
  4041  //
  4042  // See the AWS API reference guide for AWS App Mesh's
  4043  // API operation UpdateVirtualGateway for usage and error information.
  4044  //
  4045  // Returned Error Types:
  4046  //   * NotFoundException
  4047  //   The specified resource doesn't exist. Check your request syntax and try again.
  4048  //
  4049  //   * BadRequestException
  4050  //   The request syntax was malformed. Check your request syntax and try again.
  4051  //
  4052  //   * ConflictException
  4053  //   The request contains a client token that was used for a previous update resource
  4054  //   call with different specifications. Try the request again with a new client
  4055  //   token.
  4056  //
  4057  //   * TooManyRequestsException
  4058  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  4059  //   for your account. For best results, use an increasing or variable sleep interval
  4060  //   between requests.
  4061  //
  4062  //   * ForbiddenException
  4063  //   You don't have permissions to perform this action.
  4064  //
  4065  //   * ServiceUnavailableException
  4066  //   The request has failed due to a temporary failure of the service.
  4067  //
  4068  //   * InternalServerErrorException
  4069  //   The request processing has failed because of an unknown error, exception,
  4070  //   or failure.
  4071  //
  4072  //   * LimitExceededException
  4073  //   You have exceeded a service limit for your account. For more information,
  4074  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
  4075  //   in the AWS App Mesh User Guide.
  4076  //
  4077  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualGateway
  4078  func (c *AppMesh) UpdateVirtualGateway(input *UpdateVirtualGatewayInput) (*UpdateVirtualGatewayOutput, error) {
  4079  	req, out := c.UpdateVirtualGatewayRequest(input)
  4080  	return out, req.Send()
  4081  }
  4082  
  4083  // UpdateVirtualGatewayWithContext is the same as UpdateVirtualGateway with the addition of
  4084  // the ability to pass a context and additional request options.
  4085  //
  4086  // See UpdateVirtualGateway for details on how to use this API operation.
  4087  //
  4088  // The context must be non-nil and will be used for request cancellation. If
  4089  // the context is nil a panic will occur. In the future the SDK may create
  4090  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4091  // for more information on using Contexts.
  4092  func (c *AppMesh) UpdateVirtualGatewayWithContext(ctx aws.Context, input *UpdateVirtualGatewayInput, opts ...request.Option) (*UpdateVirtualGatewayOutput, error) {
  4093  	req, out := c.UpdateVirtualGatewayRequest(input)
  4094  	req.SetContext(ctx)
  4095  	req.ApplyOptions(opts...)
  4096  	return out, req.Send()
  4097  }
  4098  
  4099  const opUpdateVirtualNode = "UpdateVirtualNode"
  4100  
  4101  // UpdateVirtualNodeRequest generates a "aws/request.Request" representing the
  4102  // client's request for the UpdateVirtualNode operation. The "output" return
  4103  // value will be populated with the request's response once the request completes
  4104  // successfully.
  4105  //
  4106  // Use "Send" method on the returned Request to send the API call to the service.
  4107  // the "output" return value is not valid until after Send returns without error.
  4108  //
  4109  // See UpdateVirtualNode for more information on using the UpdateVirtualNode
  4110  // API call, and error handling.
  4111  //
  4112  // This method is useful when you want to inject custom logic or configuration
  4113  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4114  //
  4115  //
  4116  //    // Example sending a request using the UpdateVirtualNodeRequest method.
  4117  //    req, resp := client.UpdateVirtualNodeRequest(params)
  4118  //
  4119  //    err := req.Send()
  4120  //    if err == nil { // resp is now filled
  4121  //        fmt.Println(resp)
  4122  //    }
  4123  //
  4124  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualNode
  4125  func (c *AppMesh) UpdateVirtualNodeRequest(input *UpdateVirtualNodeInput) (req *request.Request, output *UpdateVirtualNodeOutput) {
  4126  	op := &request.Operation{
  4127  		Name:       opUpdateVirtualNode,
  4128  		HTTPMethod: "PUT",
  4129  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualNodes/{virtualNodeName}",
  4130  	}
  4131  
  4132  	if input == nil {
  4133  		input = &UpdateVirtualNodeInput{}
  4134  	}
  4135  
  4136  	output = &UpdateVirtualNodeOutput{}
  4137  	req = c.newRequest(op, input, output)
  4138  	return
  4139  }
  4140  
  4141  // UpdateVirtualNode API operation for AWS App Mesh.
  4142  //
  4143  // Updates an existing virtual node in a specified service mesh.
  4144  //
  4145  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4146  // with awserr.Error's Code and Message methods to get detailed information about
  4147  // the error.
  4148  //
  4149  // See the AWS API reference guide for AWS App Mesh's
  4150  // API operation UpdateVirtualNode for usage and error information.
  4151  //
  4152  // Returned Error Types:
  4153  //   * NotFoundException
  4154  //   The specified resource doesn't exist. Check your request syntax and try again.
  4155  //
  4156  //   * BadRequestException
  4157  //   The request syntax was malformed. Check your request syntax and try again.
  4158  //
  4159  //   * ConflictException
  4160  //   The request contains a client token that was used for a previous update resource
  4161  //   call with different specifications. Try the request again with a new client
  4162  //   token.
  4163  //
  4164  //   * TooManyRequestsException
  4165  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  4166  //   for your account. For best results, use an increasing or variable sleep interval
  4167  //   between requests.
  4168  //
  4169  //   * ForbiddenException
  4170  //   You don't have permissions to perform this action.
  4171  //
  4172  //   * ServiceUnavailableException
  4173  //   The request has failed due to a temporary failure of the service.
  4174  //
  4175  //   * InternalServerErrorException
  4176  //   The request processing has failed because of an unknown error, exception,
  4177  //   or failure.
  4178  //
  4179  //   * LimitExceededException
  4180  //   You have exceeded a service limit for your account. For more information,
  4181  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
  4182  //   in the AWS App Mesh User Guide.
  4183  //
  4184  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualNode
  4185  func (c *AppMesh) UpdateVirtualNode(input *UpdateVirtualNodeInput) (*UpdateVirtualNodeOutput, error) {
  4186  	req, out := c.UpdateVirtualNodeRequest(input)
  4187  	return out, req.Send()
  4188  }
  4189  
  4190  // UpdateVirtualNodeWithContext is the same as UpdateVirtualNode with the addition of
  4191  // the ability to pass a context and additional request options.
  4192  //
  4193  // See UpdateVirtualNode for details on how to use this API operation.
  4194  //
  4195  // The context must be non-nil and will be used for request cancellation. If
  4196  // the context is nil a panic will occur. In the future the SDK may create
  4197  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4198  // for more information on using Contexts.
  4199  func (c *AppMesh) UpdateVirtualNodeWithContext(ctx aws.Context, input *UpdateVirtualNodeInput, opts ...request.Option) (*UpdateVirtualNodeOutput, error) {
  4200  	req, out := c.UpdateVirtualNodeRequest(input)
  4201  	req.SetContext(ctx)
  4202  	req.ApplyOptions(opts...)
  4203  	return out, req.Send()
  4204  }
  4205  
  4206  const opUpdateVirtualRouter = "UpdateVirtualRouter"
  4207  
  4208  // UpdateVirtualRouterRequest generates a "aws/request.Request" representing the
  4209  // client's request for the UpdateVirtualRouter operation. The "output" return
  4210  // value will be populated with the request's response once the request completes
  4211  // successfully.
  4212  //
  4213  // Use "Send" method on the returned Request to send the API call to the service.
  4214  // the "output" return value is not valid until after Send returns without error.
  4215  //
  4216  // See UpdateVirtualRouter for more information on using the UpdateVirtualRouter
  4217  // API call, and error handling.
  4218  //
  4219  // This method is useful when you want to inject custom logic or configuration
  4220  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4221  //
  4222  //
  4223  //    // Example sending a request using the UpdateVirtualRouterRequest method.
  4224  //    req, resp := client.UpdateVirtualRouterRequest(params)
  4225  //
  4226  //    err := req.Send()
  4227  //    if err == nil { // resp is now filled
  4228  //        fmt.Println(resp)
  4229  //    }
  4230  //
  4231  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualRouter
  4232  func (c *AppMesh) UpdateVirtualRouterRequest(input *UpdateVirtualRouterInput) (req *request.Request, output *UpdateVirtualRouterOutput) {
  4233  	op := &request.Operation{
  4234  		Name:       opUpdateVirtualRouter,
  4235  		HTTPMethod: "PUT",
  4236  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualRouters/{virtualRouterName}",
  4237  	}
  4238  
  4239  	if input == nil {
  4240  		input = &UpdateVirtualRouterInput{}
  4241  	}
  4242  
  4243  	output = &UpdateVirtualRouterOutput{}
  4244  	req = c.newRequest(op, input, output)
  4245  	return
  4246  }
  4247  
  4248  // UpdateVirtualRouter API operation for AWS App Mesh.
  4249  //
  4250  // Updates an existing virtual router in a specified service mesh.
  4251  //
  4252  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4253  // with awserr.Error's Code and Message methods to get detailed information about
  4254  // the error.
  4255  //
  4256  // See the AWS API reference guide for AWS App Mesh's
  4257  // API operation UpdateVirtualRouter for usage and error information.
  4258  //
  4259  // Returned Error Types:
  4260  //   * NotFoundException
  4261  //   The specified resource doesn't exist. Check your request syntax and try again.
  4262  //
  4263  //   * BadRequestException
  4264  //   The request syntax was malformed. Check your request syntax and try again.
  4265  //
  4266  //   * ConflictException
  4267  //   The request contains a client token that was used for a previous update resource
  4268  //   call with different specifications. Try the request again with a new client
  4269  //   token.
  4270  //
  4271  //   * TooManyRequestsException
  4272  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  4273  //   for your account. For best results, use an increasing or variable sleep interval
  4274  //   between requests.
  4275  //
  4276  //   * ForbiddenException
  4277  //   You don't have permissions to perform this action.
  4278  //
  4279  //   * ServiceUnavailableException
  4280  //   The request has failed due to a temporary failure of the service.
  4281  //
  4282  //   * InternalServerErrorException
  4283  //   The request processing has failed because of an unknown error, exception,
  4284  //   or failure.
  4285  //
  4286  //   * LimitExceededException
  4287  //   You have exceeded a service limit for your account. For more information,
  4288  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
  4289  //   in the AWS App Mesh User Guide.
  4290  //
  4291  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualRouter
  4292  func (c *AppMesh) UpdateVirtualRouter(input *UpdateVirtualRouterInput) (*UpdateVirtualRouterOutput, error) {
  4293  	req, out := c.UpdateVirtualRouterRequest(input)
  4294  	return out, req.Send()
  4295  }
  4296  
  4297  // UpdateVirtualRouterWithContext is the same as UpdateVirtualRouter with the addition of
  4298  // the ability to pass a context and additional request options.
  4299  //
  4300  // See UpdateVirtualRouter for details on how to use this API operation.
  4301  //
  4302  // The context must be non-nil and will be used for request cancellation. If
  4303  // the context is nil a panic will occur. In the future the SDK may create
  4304  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4305  // for more information on using Contexts.
  4306  func (c *AppMesh) UpdateVirtualRouterWithContext(ctx aws.Context, input *UpdateVirtualRouterInput, opts ...request.Option) (*UpdateVirtualRouterOutput, error) {
  4307  	req, out := c.UpdateVirtualRouterRequest(input)
  4308  	req.SetContext(ctx)
  4309  	req.ApplyOptions(opts...)
  4310  	return out, req.Send()
  4311  }
  4312  
  4313  const opUpdateVirtualService = "UpdateVirtualService"
  4314  
  4315  // UpdateVirtualServiceRequest generates a "aws/request.Request" representing the
  4316  // client's request for the UpdateVirtualService operation. The "output" return
  4317  // value will be populated with the request's response once the request completes
  4318  // successfully.
  4319  //
  4320  // Use "Send" method on the returned Request to send the API call to the service.
  4321  // the "output" return value is not valid until after Send returns without error.
  4322  //
  4323  // See UpdateVirtualService for more information on using the UpdateVirtualService
  4324  // API call, and error handling.
  4325  //
  4326  // This method is useful when you want to inject custom logic or configuration
  4327  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4328  //
  4329  //
  4330  //    // Example sending a request using the UpdateVirtualServiceRequest method.
  4331  //    req, resp := client.UpdateVirtualServiceRequest(params)
  4332  //
  4333  //    err := req.Send()
  4334  //    if err == nil { // resp is now filled
  4335  //        fmt.Println(resp)
  4336  //    }
  4337  //
  4338  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualService
  4339  func (c *AppMesh) UpdateVirtualServiceRequest(input *UpdateVirtualServiceInput) (req *request.Request, output *UpdateVirtualServiceOutput) {
  4340  	op := &request.Operation{
  4341  		Name:       opUpdateVirtualService,
  4342  		HTTPMethod: "PUT",
  4343  		HTTPPath:   "/v20190125/meshes/{meshName}/virtualServices/{virtualServiceName}",
  4344  	}
  4345  
  4346  	if input == nil {
  4347  		input = &UpdateVirtualServiceInput{}
  4348  	}
  4349  
  4350  	output = &UpdateVirtualServiceOutput{}
  4351  	req = c.newRequest(op, input, output)
  4352  	return
  4353  }
  4354  
  4355  // UpdateVirtualService API operation for AWS App Mesh.
  4356  //
  4357  // Updates an existing virtual service in a specified service mesh.
  4358  //
  4359  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4360  // with awserr.Error's Code and Message methods to get detailed information about
  4361  // the error.
  4362  //
  4363  // See the AWS API reference guide for AWS App Mesh's
  4364  // API operation UpdateVirtualService for usage and error information.
  4365  //
  4366  // Returned Error Types:
  4367  //   * NotFoundException
  4368  //   The specified resource doesn't exist. Check your request syntax and try again.
  4369  //
  4370  //   * BadRequestException
  4371  //   The request syntax was malformed. Check your request syntax and try again.
  4372  //
  4373  //   * ConflictException
  4374  //   The request contains a client token that was used for a previous update resource
  4375  //   call with different specifications. Try the request again with a new client
  4376  //   token.
  4377  //
  4378  //   * TooManyRequestsException
  4379  //   The maximum request rate permitted by the App Mesh APIs has been exceeded
  4380  //   for your account. For best results, use an increasing or variable sleep interval
  4381  //   between requests.
  4382  //
  4383  //   * ForbiddenException
  4384  //   You don't have permissions to perform this action.
  4385  //
  4386  //   * ServiceUnavailableException
  4387  //   The request has failed due to a temporary failure of the service.
  4388  //
  4389  //   * InternalServerErrorException
  4390  //   The request processing has failed because of an unknown error, exception,
  4391  //   or failure.
  4392  //
  4393  //   * LimitExceededException
  4394  //   You have exceeded a service limit for your account. For more information,
  4395  //   see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
  4396  //   in the AWS App Mesh User Guide.
  4397  //
  4398  // See also, https://docs.aws.amazon.com/goto/WebAPI/appmesh-2019-01-25/UpdateVirtualService
  4399  func (c *AppMesh) UpdateVirtualService(input *UpdateVirtualServiceInput) (*UpdateVirtualServiceOutput, error) {
  4400  	req, out := c.UpdateVirtualServiceRequest(input)
  4401  	return out, req.Send()
  4402  }
  4403  
  4404  // UpdateVirtualServiceWithContext is the same as UpdateVirtualService with the addition of
  4405  // the ability to pass a context and additional request options.
  4406  //
  4407  // See UpdateVirtualService for details on how to use this API operation.
  4408  //
  4409  // The context must be non-nil and will be used for request cancellation. If
  4410  // the context is nil a panic will occur. In the future the SDK may create
  4411  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4412  // for more information on using Contexts.
  4413  func (c *AppMesh) UpdateVirtualServiceWithContext(ctx aws.Context, input *UpdateVirtualServiceInput, opts ...request.Option) (*UpdateVirtualServiceOutput, error) {
  4414  	req, out := c.UpdateVirtualServiceRequest(input)
  4415  	req.SetContext(ctx)
  4416  	req.ApplyOptions(opts...)
  4417  	return out, req.Send()
  4418  }
  4419  
  4420  // An object that represents the access logging information for a virtual node.
  4421  type AccessLog struct {
  4422  	_ struct{} `type:"structure"`
  4423  
  4424  	// The file object to send virtual node access logs to.
  4425  	File *FileAccessLog `locationName:"file" type:"structure"`
  4426  }
  4427  
  4428  // String returns the string representation.
  4429  //
  4430  // API parameter values that are decorated as "sensitive" in the API will not
  4431  // be included in the string output. The member name will be present, but the
  4432  // value will be replaced with "sensitive".
  4433  func (s AccessLog) String() string {
  4434  	return awsutil.Prettify(s)
  4435  }
  4436  
  4437  // GoString returns the string representation.
  4438  //
  4439  // API parameter values that are decorated as "sensitive" in the API will not
  4440  // be included in the string output. The member name will be present, but the
  4441  // value will be replaced with "sensitive".
  4442  func (s AccessLog) GoString() string {
  4443  	return s.String()
  4444  }
  4445  
  4446  // Validate inspects the fields of the type to determine if they are valid.
  4447  func (s *AccessLog) Validate() error {
  4448  	invalidParams := request.ErrInvalidParams{Context: "AccessLog"}
  4449  	if s.File != nil {
  4450  		if err := s.File.Validate(); err != nil {
  4451  			invalidParams.AddNested("File", err.(request.ErrInvalidParams))
  4452  		}
  4453  	}
  4454  
  4455  	if invalidParams.Len() > 0 {
  4456  		return invalidParams
  4457  	}
  4458  	return nil
  4459  }
  4460  
  4461  // SetFile sets the File field's value.
  4462  func (s *AccessLog) SetFile(v *FileAccessLog) *AccessLog {
  4463  	s.File = v
  4464  	return s
  4465  }
  4466  
  4467  // An object that represents the Cloud Map attribute information for your virtual
  4468  // node.
  4469  //
  4470  // AWS Cloud Map is not available in the eu-south-1 Region.
  4471  type AwsCloudMapInstanceAttribute struct {
  4472  	_ struct{} `type:"structure"`
  4473  
  4474  	// The name of an Cloud Map service instance attribute key. Any Cloud Map service
  4475  	// instance that contains the specified key and value is returned.
  4476  	//
  4477  	// Key is a required field
  4478  	Key *string `locationName:"key" min:"1" type:"string" required:"true"`
  4479  
  4480  	// The value of an Cloud Map service instance attribute key. Any Cloud Map service
  4481  	// instance that contains the specified key and value is returned.
  4482  	//
  4483  	// Value is a required field
  4484  	Value *string `locationName:"value" min:"1" type:"string" required:"true"`
  4485  }
  4486  
  4487  // String returns the string representation.
  4488  //
  4489  // API parameter values that are decorated as "sensitive" in the API will not
  4490  // be included in the string output. The member name will be present, but the
  4491  // value will be replaced with "sensitive".
  4492  func (s AwsCloudMapInstanceAttribute) String() string {
  4493  	return awsutil.Prettify(s)
  4494  }
  4495  
  4496  // GoString returns the string representation.
  4497  //
  4498  // API parameter values that are decorated as "sensitive" in the API will not
  4499  // be included in the string output. The member name will be present, but the
  4500  // value will be replaced with "sensitive".
  4501  func (s AwsCloudMapInstanceAttribute) GoString() string {
  4502  	return s.String()
  4503  }
  4504  
  4505  // Validate inspects the fields of the type to determine if they are valid.
  4506  func (s *AwsCloudMapInstanceAttribute) Validate() error {
  4507  	invalidParams := request.ErrInvalidParams{Context: "AwsCloudMapInstanceAttribute"}
  4508  	if s.Key == nil {
  4509  		invalidParams.Add(request.NewErrParamRequired("Key"))
  4510  	}
  4511  	if s.Key != nil && len(*s.Key) < 1 {
  4512  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
  4513  	}
  4514  	if s.Value == nil {
  4515  		invalidParams.Add(request.NewErrParamRequired("Value"))
  4516  	}
  4517  	if s.Value != nil && len(*s.Value) < 1 {
  4518  		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
  4519  	}
  4520  
  4521  	if invalidParams.Len() > 0 {
  4522  		return invalidParams
  4523  	}
  4524  	return nil
  4525  }
  4526  
  4527  // SetKey sets the Key field's value.
  4528  func (s *AwsCloudMapInstanceAttribute) SetKey(v string) *AwsCloudMapInstanceAttribute {
  4529  	s.Key = &v
  4530  	return s
  4531  }
  4532  
  4533  // SetValue sets the Value field's value.
  4534  func (s *AwsCloudMapInstanceAttribute) SetValue(v string) *AwsCloudMapInstanceAttribute {
  4535  	s.Value = &v
  4536  	return s
  4537  }
  4538  
  4539  // An object that represents the Cloud Map service discovery information for
  4540  // your virtual node.
  4541  //
  4542  // Cloud Map is not available in the eu-south-1 Region.
  4543  type AwsCloudMapServiceDiscovery struct {
  4544  	_ struct{} `type:"structure"`
  4545  
  4546  	// A string map that contains attributes with values that you can use to filter
  4547  	// instances by any custom attribute that you specified when you registered
  4548  	// the instance. Only instances that match all of the specified key/value pairs
  4549  	// will be returned.
  4550  	Attributes []*AwsCloudMapInstanceAttribute `locationName:"attributes" type:"list"`
  4551  
  4552  	// The name of the Cloud Map namespace to use.
  4553  	//
  4554  	// NamespaceName is a required field
  4555  	NamespaceName *string `locationName:"namespaceName" min:"1" type:"string" required:"true"`
  4556  
  4557  	// The name of the Cloud Map service to use.
  4558  	//
  4559  	// ServiceName is a required field
  4560  	ServiceName *string `locationName:"serviceName" min:"1" type:"string" required:"true"`
  4561  }
  4562  
  4563  // String returns the string representation.
  4564  //
  4565  // API parameter values that are decorated as "sensitive" in the API will not
  4566  // be included in the string output. The member name will be present, but the
  4567  // value will be replaced with "sensitive".
  4568  func (s AwsCloudMapServiceDiscovery) String() string {
  4569  	return awsutil.Prettify(s)
  4570  }
  4571  
  4572  // GoString returns the string representation.
  4573  //
  4574  // API parameter values that are decorated as "sensitive" in the API will not
  4575  // be included in the string output. The member name will be present, but the
  4576  // value will be replaced with "sensitive".
  4577  func (s AwsCloudMapServiceDiscovery) GoString() string {
  4578  	return s.String()
  4579  }
  4580  
  4581  // Validate inspects the fields of the type to determine if they are valid.
  4582  func (s *AwsCloudMapServiceDiscovery) Validate() error {
  4583  	invalidParams := request.ErrInvalidParams{Context: "AwsCloudMapServiceDiscovery"}
  4584  	if s.NamespaceName == nil {
  4585  		invalidParams.Add(request.NewErrParamRequired("NamespaceName"))
  4586  	}
  4587  	if s.NamespaceName != nil && len(*s.NamespaceName) < 1 {
  4588  		invalidParams.Add(request.NewErrParamMinLen("NamespaceName", 1))
  4589  	}
  4590  	if s.ServiceName == nil {
  4591  		invalidParams.Add(request.NewErrParamRequired("ServiceName"))
  4592  	}
  4593  	if s.ServiceName != nil && len(*s.ServiceName) < 1 {
  4594  		invalidParams.Add(request.NewErrParamMinLen("ServiceName", 1))
  4595  	}
  4596  	if s.Attributes != nil {
  4597  		for i, v := range s.Attributes {
  4598  			if v == nil {
  4599  				continue
  4600  			}
  4601  			if err := v.Validate(); err != nil {
  4602  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Attributes", i), err.(request.ErrInvalidParams))
  4603  			}
  4604  		}
  4605  	}
  4606  
  4607  	if invalidParams.Len() > 0 {
  4608  		return invalidParams
  4609  	}
  4610  	return nil
  4611  }
  4612  
  4613  // SetAttributes sets the Attributes field's value.
  4614  func (s *AwsCloudMapServiceDiscovery) SetAttributes(v []*AwsCloudMapInstanceAttribute) *AwsCloudMapServiceDiscovery {
  4615  	s.Attributes = v
  4616  	return s
  4617  }
  4618  
  4619  // SetNamespaceName sets the NamespaceName field's value.
  4620  func (s *AwsCloudMapServiceDiscovery) SetNamespaceName(v string) *AwsCloudMapServiceDiscovery {
  4621  	s.NamespaceName = &v
  4622  	return s
  4623  }
  4624  
  4625  // SetServiceName sets the ServiceName field's value.
  4626  func (s *AwsCloudMapServiceDiscovery) SetServiceName(v string) *AwsCloudMapServiceDiscovery {
  4627  	s.ServiceName = &v
  4628  	return s
  4629  }
  4630  
  4631  // An object that represents the backends that a virtual node is expected to
  4632  // send outbound traffic to.
  4633  type Backend struct {
  4634  	_ struct{} `type:"structure"`
  4635  
  4636  	// Specifies a virtual service to use as a backend.
  4637  	VirtualService *VirtualServiceBackend `locationName:"virtualService" type:"structure"`
  4638  }
  4639  
  4640  // String returns the string representation.
  4641  //
  4642  // API parameter values that are decorated as "sensitive" in the API will not
  4643  // be included in the string output. The member name will be present, but the
  4644  // value will be replaced with "sensitive".
  4645  func (s Backend) String() string {
  4646  	return awsutil.Prettify(s)
  4647  }
  4648  
  4649  // GoString returns the string representation.
  4650  //
  4651  // API parameter values that are decorated as "sensitive" in the API will not
  4652  // be included in the string output. The member name will be present, but the
  4653  // value will be replaced with "sensitive".
  4654  func (s Backend) GoString() string {
  4655  	return s.String()
  4656  }
  4657  
  4658  // Validate inspects the fields of the type to determine if they are valid.
  4659  func (s *Backend) Validate() error {
  4660  	invalidParams := request.ErrInvalidParams{Context: "Backend"}
  4661  	if s.VirtualService != nil {
  4662  		if err := s.VirtualService.Validate(); err != nil {
  4663  			invalidParams.AddNested("VirtualService", err.(request.ErrInvalidParams))
  4664  		}
  4665  	}
  4666  
  4667  	if invalidParams.Len() > 0 {
  4668  		return invalidParams
  4669  	}
  4670  	return nil
  4671  }
  4672  
  4673  // SetVirtualService sets the VirtualService field's value.
  4674  func (s *Backend) SetVirtualService(v *VirtualServiceBackend) *Backend {
  4675  	s.VirtualService = v
  4676  	return s
  4677  }
  4678  
  4679  // An object that represents the default properties for a backend.
  4680  type BackendDefaults struct {
  4681  	_ struct{} `type:"structure"`
  4682  
  4683  	// A reference to an object that represents a client policy.
  4684  	ClientPolicy *ClientPolicy `locationName:"clientPolicy" type:"structure"`
  4685  }
  4686  
  4687  // String returns the string representation.
  4688  //
  4689  // API parameter values that are decorated as "sensitive" in the API will not
  4690  // be included in the string output. The member name will be present, but the
  4691  // value will be replaced with "sensitive".
  4692  func (s BackendDefaults) String() string {
  4693  	return awsutil.Prettify(s)
  4694  }
  4695  
  4696  // GoString returns the string representation.
  4697  //
  4698  // API parameter values that are decorated as "sensitive" in the API will not
  4699  // be included in the string output. The member name will be present, but the
  4700  // value will be replaced with "sensitive".
  4701  func (s BackendDefaults) GoString() string {
  4702  	return s.String()
  4703  }
  4704  
  4705  // Validate inspects the fields of the type to determine if they are valid.
  4706  func (s *BackendDefaults) Validate() error {
  4707  	invalidParams := request.ErrInvalidParams{Context: "BackendDefaults"}
  4708  	if s.ClientPolicy != nil {
  4709  		if err := s.ClientPolicy.Validate(); err != nil {
  4710  			invalidParams.AddNested("ClientPolicy", err.(request.ErrInvalidParams))
  4711  		}
  4712  	}
  4713  
  4714  	if invalidParams.Len() > 0 {
  4715  		return invalidParams
  4716  	}
  4717  	return nil
  4718  }
  4719  
  4720  // SetClientPolicy sets the ClientPolicy field's value.
  4721  func (s *BackendDefaults) SetClientPolicy(v *ClientPolicy) *BackendDefaults {
  4722  	s.ClientPolicy = v
  4723  	return s
  4724  }
  4725  
  4726  // The request syntax was malformed. Check your request syntax and try again.
  4727  type BadRequestException struct {
  4728  	_            struct{}                  `type:"structure"`
  4729  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  4730  
  4731  	Message_ *string `locationName:"message" type:"string"`
  4732  }
  4733  
  4734  // String returns the string representation.
  4735  //
  4736  // API parameter values that are decorated as "sensitive" in the API will not
  4737  // be included in the string output. The member name will be present, but the
  4738  // value will be replaced with "sensitive".
  4739  func (s BadRequestException) String() string {
  4740  	return awsutil.Prettify(s)
  4741  }
  4742  
  4743  // GoString returns the string representation.
  4744  //
  4745  // API parameter values that are decorated as "sensitive" in the API will not
  4746  // be included in the string output. The member name will be present, but the
  4747  // value will be replaced with "sensitive".
  4748  func (s BadRequestException) GoString() string {
  4749  	return s.String()
  4750  }
  4751  
  4752  func newErrorBadRequestException(v protocol.ResponseMetadata) error {
  4753  	return &BadRequestException{
  4754  		RespMetadata: v,
  4755  	}
  4756  }
  4757  
  4758  // Code returns the exception type name.
  4759  func (s *BadRequestException) Code() string {
  4760  	return "BadRequestException"
  4761  }
  4762  
  4763  // Message returns the exception's message.
  4764  func (s *BadRequestException) Message() string {
  4765  	if s.Message_ != nil {
  4766  		return *s.Message_
  4767  	}
  4768  	return ""
  4769  }
  4770  
  4771  // OrigErr always returns nil, satisfies awserr.Error interface.
  4772  func (s *BadRequestException) OrigErr() error {
  4773  	return nil
  4774  }
  4775  
  4776  func (s *BadRequestException) Error() string {
  4777  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  4778  }
  4779  
  4780  // Status code returns the HTTP status code for the request's response error.
  4781  func (s *BadRequestException) StatusCode() int {
  4782  	return s.RespMetadata.StatusCode
  4783  }
  4784  
  4785  // RequestID returns the service's response RequestID for request.
  4786  func (s *BadRequestException) RequestID() string {
  4787  	return s.RespMetadata.RequestID
  4788  }
  4789  
  4790  // An object that represents a client policy.
  4791  type ClientPolicy struct {
  4792  	_ struct{} `type:"structure"`
  4793  
  4794  	// A reference to an object that represents a Transport Layer Security (TLS)
  4795  	// client policy.
  4796  	Tls *ClientPolicyTls `locationName:"tls" type:"structure"`
  4797  }
  4798  
  4799  // String returns the string representation.
  4800  //
  4801  // API parameter values that are decorated as "sensitive" in the API will not
  4802  // be included in the string output. The member name will be present, but the
  4803  // value will be replaced with "sensitive".
  4804  func (s ClientPolicy) String() string {
  4805  	return awsutil.Prettify(s)
  4806  }
  4807  
  4808  // GoString returns the string representation.
  4809  //
  4810  // API parameter values that are decorated as "sensitive" in the API will not
  4811  // be included in the string output. The member name will be present, but the
  4812  // value will be replaced with "sensitive".
  4813  func (s ClientPolicy) GoString() string {
  4814  	return s.String()
  4815  }
  4816  
  4817  // Validate inspects the fields of the type to determine if they are valid.
  4818  func (s *ClientPolicy) Validate() error {
  4819  	invalidParams := request.ErrInvalidParams{Context: "ClientPolicy"}
  4820  	if s.Tls != nil {
  4821  		if err := s.Tls.Validate(); err != nil {
  4822  			invalidParams.AddNested("Tls", err.(request.ErrInvalidParams))
  4823  		}
  4824  	}
  4825  
  4826  	if invalidParams.Len() > 0 {
  4827  		return invalidParams
  4828  	}
  4829  	return nil
  4830  }
  4831  
  4832  // SetTls sets the Tls field's value.
  4833  func (s *ClientPolicy) SetTls(v *ClientPolicyTls) *ClientPolicy {
  4834  	s.Tls = v
  4835  	return s
  4836  }
  4837  
  4838  // A reference to an object that represents a Transport Layer Security (TLS)
  4839  // client policy.
  4840  type ClientPolicyTls struct {
  4841  	_ struct{} `type:"structure"`
  4842  
  4843  	// A reference to an object that represents a client's TLS certificate.
  4844  	Certificate *ClientTlsCertificate `locationName:"certificate" type:"structure"`
  4845  
  4846  	// Whether the policy is enforced. The default is True, if a value isn't specified.
  4847  	Enforce *bool `locationName:"enforce" type:"boolean"`
  4848  
  4849  	// One or more ports that the policy is enforced for.
  4850  	Ports []*int64 `locationName:"ports" type:"list"`
  4851  
  4852  	// A reference to an object that represents a TLS validation context.
  4853  	//
  4854  	// Validation is a required field
  4855  	Validation *TlsValidationContext `locationName:"validation" type:"structure" required:"true"`
  4856  }
  4857  
  4858  // String returns the string representation.
  4859  //
  4860  // API parameter values that are decorated as "sensitive" in the API will not
  4861  // be included in the string output. The member name will be present, but the
  4862  // value will be replaced with "sensitive".
  4863  func (s ClientPolicyTls) String() string {
  4864  	return awsutil.Prettify(s)
  4865  }
  4866  
  4867  // GoString returns the string representation.
  4868  //
  4869  // API parameter values that are decorated as "sensitive" in the API will not
  4870  // be included in the string output. The member name will be present, but the
  4871  // value will be replaced with "sensitive".
  4872  func (s ClientPolicyTls) GoString() string {
  4873  	return s.String()
  4874  }
  4875  
  4876  // Validate inspects the fields of the type to determine if they are valid.
  4877  func (s *ClientPolicyTls) Validate() error {
  4878  	invalidParams := request.ErrInvalidParams{Context: "ClientPolicyTls"}
  4879  	if s.Validation == nil {
  4880  		invalidParams.Add(request.NewErrParamRequired("Validation"))
  4881  	}
  4882  	if s.Certificate != nil {
  4883  		if err := s.Certificate.Validate(); err != nil {
  4884  			invalidParams.AddNested("Certificate", err.(request.ErrInvalidParams))
  4885  		}
  4886  	}
  4887  	if s.Validation != nil {
  4888  		if err := s.Validation.Validate(); err != nil {
  4889  			invalidParams.AddNested("Validation", err.(request.ErrInvalidParams))
  4890  		}
  4891  	}
  4892  
  4893  	if invalidParams.Len() > 0 {
  4894  		return invalidParams
  4895  	}
  4896  	return nil
  4897  }
  4898  
  4899  // SetCertificate sets the Certificate field's value.
  4900  func (s *ClientPolicyTls) SetCertificate(v *ClientTlsCertificate) *ClientPolicyTls {
  4901  	s.Certificate = v
  4902  	return s
  4903  }
  4904  
  4905  // SetEnforce sets the Enforce field's value.
  4906  func (s *ClientPolicyTls) SetEnforce(v bool) *ClientPolicyTls {
  4907  	s.Enforce = &v
  4908  	return s
  4909  }
  4910  
  4911  // SetPorts sets the Ports field's value.
  4912  func (s *ClientPolicyTls) SetPorts(v []*int64) *ClientPolicyTls {
  4913  	s.Ports = v
  4914  	return s
  4915  }
  4916  
  4917  // SetValidation sets the Validation field's value.
  4918  func (s *ClientPolicyTls) SetValidation(v *TlsValidationContext) *ClientPolicyTls {
  4919  	s.Validation = v
  4920  	return s
  4921  }
  4922  
  4923  // An object that represents the client's certificate.
  4924  type ClientTlsCertificate struct {
  4925  	_ struct{} `type:"structure"`
  4926  
  4927  	// An object that represents a local file certificate. The certificate must
  4928  	// meet specific requirements and you must have proxy authorization enabled.
  4929  	// For more information, see Transport Layer Security (TLS) (https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html).
  4930  	File *ListenerTlsFileCertificate `locationName:"file" type:"structure"`
  4931  
  4932  	// A reference to an object that represents a client's TLS Secret Discovery
  4933  	// Service certificate.
  4934  	Sds *ListenerTlsSdsCertificate `locationName:"sds" type:"structure"`
  4935  }
  4936  
  4937  // String returns the string representation.
  4938  //
  4939  // API parameter values that are decorated as "sensitive" in the API will not
  4940  // be included in the string output. The member name will be present, but the
  4941  // value will be replaced with "sensitive".
  4942  func (s ClientTlsCertificate) String() string {
  4943  	return awsutil.Prettify(s)
  4944  }
  4945  
  4946  // GoString returns the string representation.
  4947  //
  4948  // API parameter values that are decorated as "sensitive" in the API will not
  4949  // be included in the string output. The member name will be present, but the
  4950  // value will be replaced with "sensitive".
  4951  func (s ClientTlsCertificate) GoString() string {
  4952  	return s.String()
  4953  }
  4954  
  4955  // Validate inspects the fields of the type to determine if they are valid.
  4956  func (s *ClientTlsCertificate) Validate() error {
  4957  	invalidParams := request.ErrInvalidParams{Context: "ClientTlsCertificate"}
  4958  	if s.File != nil {
  4959  		if err := s.File.Validate(); err != nil {
  4960  			invalidParams.AddNested("File", err.(request.ErrInvalidParams))
  4961  		}
  4962  	}
  4963  	if s.Sds != nil {
  4964  		if err := s.Sds.Validate(); err != nil {
  4965  			invalidParams.AddNested("Sds", err.(request.ErrInvalidParams))
  4966  		}
  4967  	}
  4968  
  4969  	if invalidParams.Len() > 0 {
  4970  		return invalidParams
  4971  	}
  4972  	return nil
  4973  }
  4974  
  4975  // SetFile sets the File field's value.
  4976  func (s *ClientTlsCertificate) SetFile(v *ListenerTlsFileCertificate) *ClientTlsCertificate {
  4977  	s.File = v
  4978  	return s
  4979  }
  4980  
  4981  // SetSds sets the Sds field's value.
  4982  func (s *ClientTlsCertificate) SetSds(v *ListenerTlsSdsCertificate) *ClientTlsCertificate {
  4983  	s.Sds = v
  4984  	return s
  4985  }
  4986  
  4987  // The request contains a client token that was used for a previous update resource
  4988  // call with different specifications. Try the request again with a new client
  4989  // token.
  4990  type ConflictException struct {
  4991  	_            struct{}                  `type:"structure"`
  4992  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  4993  
  4994  	Message_ *string `locationName:"message" type:"string"`
  4995  }
  4996  
  4997  // String returns the string representation.
  4998  //
  4999  // API parameter values that are decorated as "sensitive" in the API will not
  5000  // be included in the string output. The member name will be present, but the
  5001  // value will be replaced with "sensitive".
  5002  func (s ConflictException) String() string {
  5003  	return awsutil.Prettify(s)
  5004  }
  5005  
  5006  // GoString returns the string representation.
  5007  //
  5008  // API parameter values that are decorated as "sensitive" in the API will not
  5009  // be included in the string output. The member name will be present, but the
  5010  // value will be replaced with "sensitive".
  5011  func (s ConflictException) GoString() string {
  5012  	return s.String()
  5013  }
  5014  
  5015  func newErrorConflictException(v protocol.ResponseMetadata) error {
  5016  	return &ConflictException{
  5017  		RespMetadata: v,
  5018  	}
  5019  }
  5020  
  5021  // Code returns the exception type name.
  5022  func (s *ConflictException) Code() string {
  5023  	return "ConflictException"
  5024  }
  5025  
  5026  // Message returns the exception's message.
  5027  func (s *ConflictException) Message() string {
  5028  	if s.Message_ != nil {
  5029  		return *s.Message_
  5030  	}
  5031  	return ""
  5032  }
  5033  
  5034  // OrigErr always returns nil, satisfies awserr.Error interface.
  5035  func (s *ConflictException) OrigErr() error {
  5036  	return nil
  5037  }
  5038  
  5039  func (s *ConflictException) Error() string {
  5040  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  5041  }
  5042  
  5043  // Status code returns the HTTP status code for the request's response error.
  5044  func (s *ConflictException) StatusCode() int {
  5045  	return s.RespMetadata.StatusCode
  5046  }
  5047  
  5048  // RequestID returns the service's response RequestID for request.
  5049  func (s *ConflictException) RequestID() string {
  5050  	return s.RespMetadata.RequestID
  5051  }
  5052  
  5053  type CreateGatewayRouteInput struct {
  5054  	_ struct{} `type:"structure"`
  5055  
  5056  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
  5057  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
  5058  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
  5059  
  5060  	// The name to use for the gateway route.
  5061  	//
  5062  	// GatewayRouteName is a required field
  5063  	GatewayRouteName *string `locationName:"gatewayRouteName" min:"1" type:"string" required:"true"`
  5064  
  5065  	// The name of the service mesh to create the gateway route in.
  5066  	//
  5067  	// MeshName is a required field
  5068  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  5069  
  5070  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  5071  	// your own, then the account that you specify must share the mesh with your
  5072  	// account before you can create the resource in the service mesh. For more
  5073  	// information about mesh sharing, see Working with shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  5074  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  5075  
  5076  	// The gateway route specification to apply.
  5077  	//
  5078  	// Spec is a required field
  5079  	Spec *GatewayRouteSpec `locationName:"spec" type:"structure" required:"true"`
  5080  
  5081  	// Optional metadata that you can apply to the gateway route to assist with
  5082  	// categorization and organization. Each tag consists of a key and an optional
  5083  	// value, both of which you define. Tag keys can have a maximum character length
  5084  	// of 128 characters, and tag values can have a maximum length of 256 characters.
  5085  	Tags []*TagRef `locationName:"tags" type:"list"`
  5086  
  5087  	// The name of the virtual gateway to associate the gateway route with. If the
  5088  	// virtual gateway is in a shared mesh, then you must be the owner of the virtual
  5089  	// gateway resource.
  5090  	//
  5091  	// VirtualGatewayName is a required field
  5092  	VirtualGatewayName *string `location:"uri" locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
  5093  }
  5094  
  5095  // String returns the string representation.
  5096  //
  5097  // API parameter values that are decorated as "sensitive" in the API will not
  5098  // be included in the string output. The member name will be present, but the
  5099  // value will be replaced with "sensitive".
  5100  func (s CreateGatewayRouteInput) String() string {
  5101  	return awsutil.Prettify(s)
  5102  }
  5103  
  5104  // GoString returns the string representation.
  5105  //
  5106  // API parameter values that are decorated as "sensitive" in the API will not
  5107  // be included in the string output. The member name will be present, but the
  5108  // value will be replaced with "sensitive".
  5109  func (s CreateGatewayRouteInput) GoString() string {
  5110  	return s.String()
  5111  }
  5112  
  5113  // Validate inspects the fields of the type to determine if they are valid.
  5114  func (s *CreateGatewayRouteInput) Validate() error {
  5115  	invalidParams := request.ErrInvalidParams{Context: "CreateGatewayRouteInput"}
  5116  	if s.GatewayRouteName == nil {
  5117  		invalidParams.Add(request.NewErrParamRequired("GatewayRouteName"))
  5118  	}
  5119  	if s.GatewayRouteName != nil && len(*s.GatewayRouteName) < 1 {
  5120  		invalidParams.Add(request.NewErrParamMinLen("GatewayRouteName", 1))
  5121  	}
  5122  	if s.MeshName == nil {
  5123  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  5124  	}
  5125  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  5126  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  5127  	}
  5128  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  5129  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  5130  	}
  5131  	if s.Spec == nil {
  5132  		invalidParams.Add(request.NewErrParamRequired("Spec"))
  5133  	}
  5134  	if s.VirtualGatewayName == nil {
  5135  		invalidParams.Add(request.NewErrParamRequired("VirtualGatewayName"))
  5136  	}
  5137  	if s.VirtualGatewayName != nil && len(*s.VirtualGatewayName) < 1 {
  5138  		invalidParams.Add(request.NewErrParamMinLen("VirtualGatewayName", 1))
  5139  	}
  5140  	if s.Spec != nil {
  5141  		if err := s.Spec.Validate(); err != nil {
  5142  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
  5143  		}
  5144  	}
  5145  	if s.Tags != nil {
  5146  		for i, v := range s.Tags {
  5147  			if v == nil {
  5148  				continue
  5149  			}
  5150  			if err := v.Validate(); err != nil {
  5151  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  5152  			}
  5153  		}
  5154  	}
  5155  
  5156  	if invalidParams.Len() > 0 {
  5157  		return invalidParams
  5158  	}
  5159  	return nil
  5160  }
  5161  
  5162  // SetClientToken sets the ClientToken field's value.
  5163  func (s *CreateGatewayRouteInput) SetClientToken(v string) *CreateGatewayRouteInput {
  5164  	s.ClientToken = &v
  5165  	return s
  5166  }
  5167  
  5168  // SetGatewayRouteName sets the GatewayRouteName field's value.
  5169  func (s *CreateGatewayRouteInput) SetGatewayRouteName(v string) *CreateGatewayRouteInput {
  5170  	s.GatewayRouteName = &v
  5171  	return s
  5172  }
  5173  
  5174  // SetMeshName sets the MeshName field's value.
  5175  func (s *CreateGatewayRouteInput) SetMeshName(v string) *CreateGatewayRouteInput {
  5176  	s.MeshName = &v
  5177  	return s
  5178  }
  5179  
  5180  // SetMeshOwner sets the MeshOwner field's value.
  5181  func (s *CreateGatewayRouteInput) SetMeshOwner(v string) *CreateGatewayRouteInput {
  5182  	s.MeshOwner = &v
  5183  	return s
  5184  }
  5185  
  5186  // SetSpec sets the Spec field's value.
  5187  func (s *CreateGatewayRouteInput) SetSpec(v *GatewayRouteSpec) *CreateGatewayRouteInput {
  5188  	s.Spec = v
  5189  	return s
  5190  }
  5191  
  5192  // SetTags sets the Tags field's value.
  5193  func (s *CreateGatewayRouteInput) SetTags(v []*TagRef) *CreateGatewayRouteInput {
  5194  	s.Tags = v
  5195  	return s
  5196  }
  5197  
  5198  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
  5199  func (s *CreateGatewayRouteInput) SetVirtualGatewayName(v string) *CreateGatewayRouteInput {
  5200  	s.VirtualGatewayName = &v
  5201  	return s
  5202  }
  5203  
  5204  type CreateGatewayRouteOutput struct {
  5205  	_ struct{} `type:"structure" payload:"GatewayRoute"`
  5206  
  5207  	// The full description of your gateway route following the create call.
  5208  	//
  5209  	// GatewayRoute is a required field
  5210  	GatewayRoute *GatewayRouteData `locationName:"gatewayRoute" type:"structure" required:"true"`
  5211  }
  5212  
  5213  // String returns the string representation.
  5214  //
  5215  // API parameter values that are decorated as "sensitive" in the API will not
  5216  // be included in the string output. The member name will be present, but the
  5217  // value will be replaced with "sensitive".
  5218  func (s CreateGatewayRouteOutput) String() string {
  5219  	return awsutil.Prettify(s)
  5220  }
  5221  
  5222  // GoString returns the string representation.
  5223  //
  5224  // API parameter values that are decorated as "sensitive" in the API will not
  5225  // be included in the string output. The member name will be present, but the
  5226  // value will be replaced with "sensitive".
  5227  func (s CreateGatewayRouteOutput) GoString() string {
  5228  	return s.String()
  5229  }
  5230  
  5231  // SetGatewayRoute sets the GatewayRoute field's value.
  5232  func (s *CreateGatewayRouteOutput) SetGatewayRoute(v *GatewayRouteData) *CreateGatewayRouteOutput {
  5233  	s.GatewayRoute = v
  5234  	return s
  5235  }
  5236  
  5237  type CreateMeshInput struct {
  5238  	_ struct{} `type:"structure"`
  5239  
  5240  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
  5241  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
  5242  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
  5243  
  5244  	// The name to use for the service mesh.
  5245  	//
  5246  	// MeshName is a required field
  5247  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
  5248  
  5249  	// The service mesh specification to apply.
  5250  	Spec *MeshSpec `locationName:"spec" type:"structure"`
  5251  
  5252  	// Optional metadata that you can apply to the service mesh to assist with categorization
  5253  	// and organization. Each tag consists of a key and an optional value, both
  5254  	// of which you define. Tag keys can have a maximum character length of 128
  5255  	// characters, and tag values can have a maximum length of 256 characters.
  5256  	Tags []*TagRef `locationName:"tags" type:"list"`
  5257  }
  5258  
  5259  // String returns the string representation.
  5260  //
  5261  // API parameter values that are decorated as "sensitive" in the API will not
  5262  // be included in the string output. The member name will be present, but the
  5263  // value will be replaced with "sensitive".
  5264  func (s CreateMeshInput) String() string {
  5265  	return awsutil.Prettify(s)
  5266  }
  5267  
  5268  // GoString returns the string representation.
  5269  //
  5270  // API parameter values that are decorated as "sensitive" in the API will not
  5271  // be included in the string output. The member name will be present, but the
  5272  // value will be replaced with "sensitive".
  5273  func (s CreateMeshInput) GoString() string {
  5274  	return s.String()
  5275  }
  5276  
  5277  // Validate inspects the fields of the type to determine if they are valid.
  5278  func (s *CreateMeshInput) Validate() error {
  5279  	invalidParams := request.ErrInvalidParams{Context: "CreateMeshInput"}
  5280  	if s.MeshName == nil {
  5281  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  5282  	}
  5283  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  5284  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  5285  	}
  5286  	if s.Spec != nil {
  5287  		if err := s.Spec.Validate(); err != nil {
  5288  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
  5289  		}
  5290  	}
  5291  	if s.Tags != nil {
  5292  		for i, v := range s.Tags {
  5293  			if v == nil {
  5294  				continue
  5295  			}
  5296  			if err := v.Validate(); err != nil {
  5297  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  5298  			}
  5299  		}
  5300  	}
  5301  
  5302  	if invalidParams.Len() > 0 {
  5303  		return invalidParams
  5304  	}
  5305  	return nil
  5306  }
  5307  
  5308  // SetClientToken sets the ClientToken field's value.
  5309  func (s *CreateMeshInput) SetClientToken(v string) *CreateMeshInput {
  5310  	s.ClientToken = &v
  5311  	return s
  5312  }
  5313  
  5314  // SetMeshName sets the MeshName field's value.
  5315  func (s *CreateMeshInput) SetMeshName(v string) *CreateMeshInput {
  5316  	s.MeshName = &v
  5317  	return s
  5318  }
  5319  
  5320  // SetSpec sets the Spec field's value.
  5321  func (s *CreateMeshInput) SetSpec(v *MeshSpec) *CreateMeshInput {
  5322  	s.Spec = v
  5323  	return s
  5324  }
  5325  
  5326  // SetTags sets the Tags field's value.
  5327  func (s *CreateMeshInput) SetTags(v []*TagRef) *CreateMeshInput {
  5328  	s.Tags = v
  5329  	return s
  5330  }
  5331  
  5332  type CreateMeshOutput struct {
  5333  	_ struct{} `type:"structure" payload:"Mesh"`
  5334  
  5335  	// The full description of your service mesh following the create call.
  5336  	//
  5337  	// Mesh is a required field
  5338  	Mesh *MeshData `locationName:"mesh" type:"structure" required:"true"`
  5339  }
  5340  
  5341  // String returns the string representation.
  5342  //
  5343  // API parameter values that are decorated as "sensitive" in the API will not
  5344  // be included in the string output. The member name will be present, but the
  5345  // value will be replaced with "sensitive".
  5346  func (s CreateMeshOutput) String() string {
  5347  	return awsutil.Prettify(s)
  5348  }
  5349  
  5350  // GoString returns the string representation.
  5351  //
  5352  // API parameter values that are decorated as "sensitive" in the API will not
  5353  // be included in the string output. The member name will be present, but the
  5354  // value will be replaced with "sensitive".
  5355  func (s CreateMeshOutput) GoString() string {
  5356  	return s.String()
  5357  }
  5358  
  5359  // SetMesh sets the Mesh field's value.
  5360  func (s *CreateMeshOutput) SetMesh(v *MeshData) *CreateMeshOutput {
  5361  	s.Mesh = v
  5362  	return s
  5363  }
  5364  
  5365  type CreateRouteInput struct {
  5366  	_ struct{} `type:"structure"`
  5367  
  5368  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
  5369  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
  5370  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
  5371  
  5372  	// The name of the service mesh to create the route in.
  5373  	//
  5374  	// MeshName is a required field
  5375  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  5376  
  5377  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  5378  	// your own, then the account that you specify must share the mesh with your
  5379  	// account before you can create the resource in the service mesh. For more
  5380  	// information about mesh sharing, see Working with shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  5381  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  5382  
  5383  	// The name to use for the route.
  5384  	//
  5385  	// RouteName is a required field
  5386  	RouteName *string `locationName:"routeName" min:"1" type:"string" required:"true"`
  5387  
  5388  	// The route specification to apply.
  5389  	//
  5390  	// Spec is a required field
  5391  	Spec *RouteSpec `locationName:"spec" type:"structure" required:"true"`
  5392  
  5393  	// Optional metadata that you can apply to the route to assist with categorization
  5394  	// and organization. Each tag consists of a key and an optional value, both
  5395  	// of which you define. Tag keys can have a maximum character length of 128
  5396  	// characters, and tag values can have a maximum length of 256 characters.
  5397  	Tags []*TagRef `locationName:"tags" type:"list"`
  5398  
  5399  	// The name of the virtual router in which to create the route. If the virtual
  5400  	// router is in a shared mesh, then you must be the owner of the virtual router
  5401  	// resource.
  5402  	//
  5403  	// VirtualRouterName is a required field
  5404  	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
  5405  }
  5406  
  5407  // String returns the string representation.
  5408  //
  5409  // API parameter values that are decorated as "sensitive" in the API will not
  5410  // be included in the string output. The member name will be present, but the
  5411  // value will be replaced with "sensitive".
  5412  func (s CreateRouteInput) String() string {
  5413  	return awsutil.Prettify(s)
  5414  }
  5415  
  5416  // GoString returns the string representation.
  5417  //
  5418  // API parameter values that are decorated as "sensitive" in the API will not
  5419  // be included in the string output. The member name will be present, but the
  5420  // value will be replaced with "sensitive".
  5421  func (s CreateRouteInput) GoString() string {
  5422  	return s.String()
  5423  }
  5424  
  5425  // Validate inspects the fields of the type to determine if they are valid.
  5426  func (s *CreateRouteInput) Validate() error {
  5427  	invalidParams := request.ErrInvalidParams{Context: "CreateRouteInput"}
  5428  	if s.MeshName == nil {
  5429  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  5430  	}
  5431  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  5432  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  5433  	}
  5434  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  5435  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  5436  	}
  5437  	if s.RouteName == nil {
  5438  		invalidParams.Add(request.NewErrParamRequired("RouteName"))
  5439  	}
  5440  	if s.RouteName != nil && len(*s.RouteName) < 1 {
  5441  		invalidParams.Add(request.NewErrParamMinLen("RouteName", 1))
  5442  	}
  5443  	if s.Spec == nil {
  5444  		invalidParams.Add(request.NewErrParamRequired("Spec"))
  5445  	}
  5446  	if s.VirtualRouterName == nil {
  5447  		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
  5448  	}
  5449  	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
  5450  		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
  5451  	}
  5452  	if s.Spec != nil {
  5453  		if err := s.Spec.Validate(); err != nil {
  5454  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
  5455  		}
  5456  	}
  5457  	if s.Tags != nil {
  5458  		for i, v := range s.Tags {
  5459  			if v == nil {
  5460  				continue
  5461  			}
  5462  			if err := v.Validate(); err != nil {
  5463  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  5464  			}
  5465  		}
  5466  	}
  5467  
  5468  	if invalidParams.Len() > 0 {
  5469  		return invalidParams
  5470  	}
  5471  	return nil
  5472  }
  5473  
  5474  // SetClientToken sets the ClientToken field's value.
  5475  func (s *CreateRouteInput) SetClientToken(v string) *CreateRouteInput {
  5476  	s.ClientToken = &v
  5477  	return s
  5478  }
  5479  
  5480  // SetMeshName sets the MeshName field's value.
  5481  func (s *CreateRouteInput) SetMeshName(v string) *CreateRouteInput {
  5482  	s.MeshName = &v
  5483  	return s
  5484  }
  5485  
  5486  // SetMeshOwner sets the MeshOwner field's value.
  5487  func (s *CreateRouteInput) SetMeshOwner(v string) *CreateRouteInput {
  5488  	s.MeshOwner = &v
  5489  	return s
  5490  }
  5491  
  5492  // SetRouteName sets the RouteName field's value.
  5493  func (s *CreateRouteInput) SetRouteName(v string) *CreateRouteInput {
  5494  	s.RouteName = &v
  5495  	return s
  5496  }
  5497  
  5498  // SetSpec sets the Spec field's value.
  5499  func (s *CreateRouteInput) SetSpec(v *RouteSpec) *CreateRouteInput {
  5500  	s.Spec = v
  5501  	return s
  5502  }
  5503  
  5504  // SetTags sets the Tags field's value.
  5505  func (s *CreateRouteInput) SetTags(v []*TagRef) *CreateRouteInput {
  5506  	s.Tags = v
  5507  	return s
  5508  }
  5509  
  5510  // SetVirtualRouterName sets the VirtualRouterName field's value.
  5511  func (s *CreateRouteInput) SetVirtualRouterName(v string) *CreateRouteInput {
  5512  	s.VirtualRouterName = &v
  5513  	return s
  5514  }
  5515  
  5516  type CreateRouteOutput struct {
  5517  	_ struct{} `type:"structure" payload:"Route"`
  5518  
  5519  	// The full description of your mesh following the create call.
  5520  	//
  5521  	// Route is a required field
  5522  	Route *RouteData `locationName:"route" type:"structure" required:"true"`
  5523  }
  5524  
  5525  // String returns the string representation.
  5526  //
  5527  // API parameter values that are decorated as "sensitive" in the API will not
  5528  // be included in the string output. The member name will be present, but the
  5529  // value will be replaced with "sensitive".
  5530  func (s CreateRouteOutput) String() string {
  5531  	return awsutil.Prettify(s)
  5532  }
  5533  
  5534  // GoString returns the string representation.
  5535  //
  5536  // API parameter values that are decorated as "sensitive" in the API will not
  5537  // be included in the string output. The member name will be present, but the
  5538  // value will be replaced with "sensitive".
  5539  func (s CreateRouteOutput) GoString() string {
  5540  	return s.String()
  5541  }
  5542  
  5543  // SetRoute sets the Route field's value.
  5544  func (s *CreateRouteOutput) SetRoute(v *RouteData) *CreateRouteOutput {
  5545  	s.Route = v
  5546  	return s
  5547  }
  5548  
  5549  type CreateVirtualGatewayInput struct {
  5550  	_ struct{} `type:"structure"`
  5551  
  5552  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
  5553  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
  5554  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
  5555  
  5556  	// The name of the service mesh to create the virtual gateway in.
  5557  	//
  5558  	// MeshName is a required field
  5559  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  5560  
  5561  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  5562  	// your own, then the account that you specify must share the mesh with your
  5563  	// account before you can create the resource in the service mesh. For more
  5564  	// information about mesh sharing, see Working with shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  5565  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  5566  
  5567  	// The virtual gateway specification to apply.
  5568  	//
  5569  	// Spec is a required field
  5570  	Spec *VirtualGatewaySpec `locationName:"spec" type:"structure" required:"true"`
  5571  
  5572  	// Optional metadata that you can apply to the virtual gateway to assist with
  5573  	// categorization and organization. Each tag consists of a key and an optional
  5574  	// value, both of which you define. Tag keys can have a maximum character length
  5575  	// of 128 characters, and tag values can have a maximum length of 256 characters.
  5576  	Tags []*TagRef `locationName:"tags" type:"list"`
  5577  
  5578  	// The name to use for the virtual gateway.
  5579  	//
  5580  	// VirtualGatewayName is a required field
  5581  	VirtualGatewayName *string `locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
  5582  }
  5583  
  5584  // String returns the string representation.
  5585  //
  5586  // API parameter values that are decorated as "sensitive" in the API will not
  5587  // be included in the string output. The member name will be present, but the
  5588  // value will be replaced with "sensitive".
  5589  func (s CreateVirtualGatewayInput) String() string {
  5590  	return awsutil.Prettify(s)
  5591  }
  5592  
  5593  // GoString returns the string representation.
  5594  //
  5595  // API parameter values that are decorated as "sensitive" in the API will not
  5596  // be included in the string output. The member name will be present, but the
  5597  // value will be replaced with "sensitive".
  5598  func (s CreateVirtualGatewayInput) GoString() string {
  5599  	return s.String()
  5600  }
  5601  
  5602  // Validate inspects the fields of the type to determine if they are valid.
  5603  func (s *CreateVirtualGatewayInput) Validate() error {
  5604  	invalidParams := request.ErrInvalidParams{Context: "CreateVirtualGatewayInput"}
  5605  	if s.MeshName == nil {
  5606  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  5607  	}
  5608  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  5609  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  5610  	}
  5611  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  5612  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  5613  	}
  5614  	if s.Spec == nil {
  5615  		invalidParams.Add(request.NewErrParamRequired("Spec"))
  5616  	}
  5617  	if s.VirtualGatewayName == nil {
  5618  		invalidParams.Add(request.NewErrParamRequired("VirtualGatewayName"))
  5619  	}
  5620  	if s.VirtualGatewayName != nil && len(*s.VirtualGatewayName) < 1 {
  5621  		invalidParams.Add(request.NewErrParamMinLen("VirtualGatewayName", 1))
  5622  	}
  5623  	if s.Spec != nil {
  5624  		if err := s.Spec.Validate(); err != nil {
  5625  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
  5626  		}
  5627  	}
  5628  	if s.Tags != nil {
  5629  		for i, v := range s.Tags {
  5630  			if v == nil {
  5631  				continue
  5632  			}
  5633  			if err := v.Validate(); err != nil {
  5634  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  5635  			}
  5636  		}
  5637  	}
  5638  
  5639  	if invalidParams.Len() > 0 {
  5640  		return invalidParams
  5641  	}
  5642  	return nil
  5643  }
  5644  
  5645  // SetClientToken sets the ClientToken field's value.
  5646  func (s *CreateVirtualGatewayInput) SetClientToken(v string) *CreateVirtualGatewayInput {
  5647  	s.ClientToken = &v
  5648  	return s
  5649  }
  5650  
  5651  // SetMeshName sets the MeshName field's value.
  5652  func (s *CreateVirtualGatewayInput) SetMeshName(v string) *CreateVirtualGatewayInput {
  5653  	s.MeshName = &v
  5654  	return s
  5655  }
  5656  
  5657  // SetMeshOwner sets the MeshOwner field's value.
  5658  func (s *CreateVirtualGatewayInput) SetMeshOwner(v string) *CreateVirtualGatewayInput {
  5659  	s.MeshOwner = &v
  5660  	return s
  5661  }
  5662  
  5663  // SetSpec sets the Spec field's value.
  5664  func (s *CreateVirtualGatewayInput) SetSpec(v *VirtualGatewaySpec) *CreateVirtualGatewayInput {
  5665  	s.Spec = v
  5666  	return s
  5667  }
  5668  
  5669  // SetTags sets the Tags field's value.
  5670  func (s *CreateVirtualGatewayInput) SetTags(v []*TagRef) *CreateVirtualGatewayInput {
  5671  	s.Tags = v
  5672  	return s
  5673  }
  5674  
  5675  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
  5676  func (s *CreateVirtualGatewayInput) SetVirtualGatewayName(v string) *CreateVirtualGatewayInput {
  5677  	s.VirtualGatewayName = &v
  5678  	return s
  5679  }
  5680  
  5681  type CreateVirtualGatewayOutput struct {
  5682  	_ struct{} `type:"structure" payload:"VirtualGateway"`
  5683  
  5684  	// The full description of your virtual gateway following the create call.
  5685  	//
  5686  	// VirtualGateway is a required field
  5687  	VirtualGateway *VirtualGatewayData `locationName:"virtualGateway" type:"structure" required:"true"`
  5688  }
  5689  
  5690  // String returns the string representation.
  5691  //
  5692  // API parameter values that are decorated as "sensitive" in the API will not
  5693  // be included in the string output. The member name will be present, but the
  5694  // value will be replaced with "sensitive".
  5695  func (s CreateVirtualGatewayOutput) String() string {
  5696  	return awsutil.Prettify(s)
  5697  }
  5698  
  5699  // GoString returns the string representation.
  5700  //
  5701  // API parameter values that are decorated as "sensitive" in the API will not
  5702  // be included in the string output. The member name will be present, but the
  5703  // value will be replaced with "sensitive".
  5704  func (s CreateVirtualGatewayOutput) GoString() string {
  5705  	return s.String()
  5706  }
  5707  
  5708  // SetVirtualGateway sets the VirtualGateway field's value.
  5709  func (s *CreateVirtualGatewayOutput) SetVirtualGateway(v *VirtualGatewayData) *CreateVirtualGatewayOutput {
  5710  	s.VirtualGateway = v
  5711  	return s
  5712  }
  5713  
  5714  type CreateVirtualNodeInput struct {
  5715  	_ struct{} `type:"structure"`
  5716  
  5717  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
  5718  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
  5719  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
  5720  
  5721  	// The name of the service mesh to create the virtual node in.
  5722  	//
  5723  	// MeshName is a required field
  5724  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  5725  
  5726  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  5727  	// your own, then the account that you specify must share the mesh with your
  5728  	// account before you can create the resource in the service mesh. For more
  5729  	// information about mesh sharing, see Working with shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  5730  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  5731  
  5732  	// The virtual node specification to apply.
  5733  	//
  5734  	// Spec is a required field
  5735  	Spec *VirtualNodeSpec `locationName:"spec" type:"structure" required:"true"`
  5736  
  5737  	// Optional metadata that you can apply to the virtual node to assist with categorization
  5738  	// and organization. Each tag consists of a key and an optional value, both
  5739  	// of which you define. Tag keys can have a maximum character length of 128
  5740  	// characters, and tag values can have a maximum length of 256 characters.
  5741  	Tags []*TagRef `locationName:"tags" type:"list"`
  5742  
  5743  	// The name to use for the virtual node.
  5744  	//
  5745  	// VirtualNodeName is a required field
  5746  	VirtualNodeName *string `locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
  5747  }
  5748  
  5749  // String returns the string representation.
  5750  //
  5751  // API parameter values that are decorated as "sensitive" in the API will not
  5752  // be included in the string output. The member name will be present, but the
  5753  // value will be replaced with "sensitive".
  5754  func (s CreateVirtualNodeInput) String() string {
  5755  	return awsutil.Prettify(s)
  5756  }
  5757  
  5758  // GoString returns the string representation.
  5759  //
  5760  // API parameter values that are decorated as "sensitive" in the API will not
  5761  // be included in the string output. The member name will be present, but the
  5762  // value will be replaced with "sensitive".
  5763  func (s CreateVirtualNodeInput) GoString() string {
  5764  	return s.String()
  5765  }
  5766  
  5767  // Validate inspects the fields of the type to determine if they are valid.
  5768  func (s *CreateVirtualNodeInput) Validate() error {
  5769  	invalidParams := request.ErrInvalidParams{Context: "CreateVirtualNodeInput"}
  5770  	if s.MeshName == nil {
  5771  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  5772  	}
  5773  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  5774  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  5775  	}
  5776  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  5777  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  5778  	}
  5779  	if s.Spec == nil {
  5780  		invalidParams.Add(request.NewErrParamRequired("Spec"))
  5781  	}
  5782  	if s.VirtualNodeName == nil {
  5783  		invalidParams.Add(request.NewErrParamRequired("VirtualNodeName"))
  5784  	}
  5785  	if s.VirtualNodeName != nil && len(*s.VirtualNodeName) < 1 {
  5786  		invalidParams.Add(request.NewErrParamMinLen("VirtualNodeName", 1))
  5787  	}
  5788  	if s.Spec != nil {
  5789  		if err := s.Spec.Validate(); err != nil {
  5790  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
  5791  		}
  5792  	}
  5793  	if s.Tags != nil {
  5794  		for i, v := range s.Tags {
  5795  			if v == nil {
  5796  				continue
  5797  			}
  5798  			if err := v.Validate(); err != nil {
  5799  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  5800  			}
  5801  		}
  5802  	}
  5803  
  5804  	if invalidParams.Len() > 0 {
  5805  		return invalidParams
  5806  	}
  5807  	return nil
  5808  }
  5809  
  5810  // SetClientToken sets the ClientToken field's value.
  5811  func (s *CreateVirtualNodeInput) SetClientToken(v string) *CreateVirtualNodeInput {
  5812  	s.ClientToken = &v
  5813  	return s
  5814  }
  5815  
  5816  // SetMeshName sets the MeshName field's value.
  5817  func (s *CreateVirtualNodeInput) SetMeshName(v string) *CreateVirtualNodeInput {
  5818  	s.MeshName = &v
  5819  	return s
  5820  }
  5821  
  5822  // SetMeshOwner sets the MeshOwner field's value.
  5823  func (s *CreateVirtualNodeInput) SetMeshOwner(v string) *CreateVirtualNodeInput {
  5824  	s.MeshOwner = &v
  5825  	return s
  5826  }
  5827  
  5828  // SetSpec sets the Spec field's value.
  5829  func (s *CreateVirtualNodeInput) SetSpec(v *VirtualNodeSpec) *CreateVirtualNodeInput {
  5830  	s.Spec = v
  5831  	return s
  5832  }
  5833  
  5834  // SetTags sets the Tags field's value.
  5835  func (s *CreateVirtualNodeInput) SetTags(v []*TagRef) *CreateVirtualNodeInput {
  5836  	s.Tags = v
  5837  	return s
  5838  }
  5839  
  5840  // SetVirtualNodeName sets the VirtualNodeName field's value.
  5841  func (s *CreateVirtualNodeInput) SetVirtualNodeName(v string) *CreateVirtualNodeInput {
  5842  	s.VirtualNodeName = &v
  5843  	return s
  5844  }
  5845  
  5846  type CreateVirtualNodeOutput struct {
  5847  	_ struct{} `type:"structure" payload:"VirtualNode"`
  5848  
  5849  	// The full description of your virtual node following the create call.
  5850  	//
  5851  	// VirtualNode is a required field
  5852  	VirtualNode *VirtualNodeData `locationName:"virtualNode" type:"structure" required:"true"`
  5853  }
  5854  
  5855  // String returns the string representation.
  5856  //
  5857  // API parameter values that are decorated as "sensitive" in the API will not
  5858  // be included in the string output. The member name will be present, but the
  5859  // value will be replaced with "sensitive".
  5860  func (s CreateVirtualNodeOutput) String() string {
  5861  	return awsutil.Prettify(s)
  5862  }
  5863  
  5864  // GoString returns the string representation.
  5865  //
  5866  // API parameter values that are decorated as "sensitive" in the API will not
  5867  // be included in the string output. The member name will be present, but the
  5868  // value will be replaced with "sensitive".
  5869  func (s CreateVirtualNodeOutput) GoString() string {
  5870  	return s.String()
  5871  }
  5872  
  5873  // SetVirtualNode sets the VirtualNode field's value.
  5874  func (s *CreateVirtualNodeOutput) SetVirtualNode(v *VirtualNodeData) *CreateVirtualNodeOutput {
  5875  	s.VirtualNode = v
  5876  	return s
  5877  }
  5878  
  5879  type CreateVirtualRouterInput struct {
  5880  	_ struct{} `type:"structure"`
  5881  
  5882  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
  5883  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
  5884  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
  5885  
  5886  	// The name of the service mesh to create the virtual router in.
  5887  	//
  5888  	// MeshName is a required field
  5889  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  5890  
  5891  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  5892  	// your own, then the account that you specify must share the mesh with your
  5893  	// account before you can create the resource in the service mesh. For more
  5894  	// information about mesh sharing, see Working with shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  5895  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  5896  
  5897  	// The virtual router specification to apply.
  5898  	//
  5899  	// Spec is a required field
  5900  	Spec *VirtualRouterSpec `locationName:"spec" type:"structure" required:"true"`
  5901  
  5902  	// Optional metadata that you can apply to the virtual router to assist with
  5903  	// categorization and organization. Each tag consists of a key and an optional
  5904  	// value, both of which you define. Tag keys can have a maximum character length
  5905  	// of 128 characters, and tag values can have a maximum length of 256 characters.
  5906  	Tags []*TagRef `locationName:"tags" type:"list"`
  5907  
  5908  	// The name to use for the virtual router.
  5909  	//
  5910  	// VirtualRouterName is a required field
  5911  	VirtualRouterName *string `locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
  5912  }
  5913  
  5914  // String returns the string representation.
  5915  //
  5916  // API parameter values that are decorated as "sensitive" in the API will not
  5917  // be included in the string output. The member name will be present, but the
  5918  // value will be replaced with "sensitive".
  5919  func (s CreateVirtualRouterInput) String() string {
  5920  	return awsutil.Prettify(s)
  5921  }
  5922  
  5923  // GoString returns the string representation.
  5924  //
  5925  // API parameter values that are decorated as "sensitive" in the API will not
  5926  // be included in the string output. The member name will be present, but the
  5927  // value will be replaced with "sensitive".
  5928  func (s CreateVirtualRouterInput) GoString() string {
  5929  	return s.String()
  5930  }
  5931  
  5932  // Validate inspects the fields of the type to determine if they are valid.
  5933  func (s *CreateVirtualRouterInput) Validate() error {
  5934  	invalidParams := request.ErrInvalidParams{Context: "CreateVirtualRouterInput"}
  5935  	if s.MeshName == nil {
  5936  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  5937  	}
  5938  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  5939  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  5940  	}
  5941  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  5942  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  5943  	}
  5944  	if s.Spec == nil {
  5945  		invalidParams.Add(request.NewErrParamRequired("Spec"))
  5946  	}
  5947  	if s.VirtualRouterName == nil {
  5948  		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
  5949  	}
  5950  	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
  5951  		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
  5952  	}
  5953  	if s.Spec != nil {
  5954  		if err := s.Spec.Validate(); err != nil {
  5955  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
  5956  		}
  5957  	}
  5958  	if s.Tags != nil {
  5959  		for i, v := range s.Tags {
  5960  			if v == nil {
  5961  				continue
  5962  			}
  5963  			if err := v.Validate(); err != nil {
  5964  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  5965  			}
  5966  		}
  5967  	}
  5968  
  5969  	if invalidParams.Len() > 0 {
  5970  		return invalidParams
  5971  	}
  5972  	return nil
  5973  }
  5974  
  5975  // SetClientToken sets the ClientToken field's value.
  5976  func (s *CreateVirtualRouterInput) SetClientToken(v string) *CreateVirtualRouterInput {
  5977  	s.ClientToken = &v
  5978  	return s
  5979  }
  5980  
  5981  // SetMeshName sets the MeshName field's value.
  5982  func (s *CreateVirtualRouterInput) SetMeshName(v string) *CreateVirtualRouterInput {
  5983  	s.MeshName = &v
  5984  	return s
  5985  }
  5986  
  5987  // SetMeshOwner sets the MeshOwner field's value.
  5988  func (s *CreateVirtualRouterInput) SetMeshOwner(v string) *CreateVirtualRouterInput {
  5989  	s.MeshOwner = &v
  5990  	return s
  5991  }
  5992  
  5993  // SetSpec sets the Spec field's value.
  5994  func (s *CreateVirtualRouterInput) SetSpec(v *VirtualRouterSpec) *CreateVirtualRouterInput {
  5995  	s.Spec = v
  5996  	return s
  5997  }
  5998  
  5999  // SetTags sets the Tags field's value.
  6000  func (s *CreateVirtualRouterInput) SetTags(v []*TagRef) *CreateVirtualRouterInput {
  6001  	s.Tags = v
  6002  	return s
  6003  }
  6004  
  6005  // SetVirtualRouterName sets the VirtualRouterName field's value.
  6006  func (s *CreateVirtualRouterInput) SetVirtualRouterName(v string) *CreateVirtualRouterInput {
  6007  	s.VirtualRouterName = &v
  6008  	return s
  6009  }
  6010  
  6011  type CreateVirtualRouterOutput struct {
  6012  	_ struct{} `type:"structure" payload:"VirtualRouter"`
  6013  
  6014  	// The full description of your virtual router following the create call.
  6015  	//
  6016  	// VirtualRouter is a required field
  6017  	VirtualRouter *VirtualRouterData `locationName:"virtualRouter" type:"structure" required:"true"`
  6018  }
  6019  
  6020  // String returns the string representation.
  6021  //
  6022  // API parameter values that are decorated as "sensitive" in the API will not
  6023  // be included in the string output. The member name will be present, but the
  6024  // value will be replaced with "sensitive".
  6025  func (s CreateVirtualRouterOutput) String() string {
  6026  	return awsutil.Prettify(s)
  6027  }
  6028  
  6029  // GoString returns the string representation.
  6030  //
  6031  // API parameter values that are decorated as "sensitive" in the API will not
  6032  // be included in the string output. The member name will be present, but the
  6033  // value will be replaced with "sensitive".
  6034  func (s CreateVirtualRouterOutput) GoString() string {
  6035  	return s.String()
  6036  }
  6037  
  6038  // SetVirtualRouter sets the VirtualRouter field's value.
  6039  func (s *CreateVirtualRouterOutput) SetVirtualRouter(v *VirtualRouterData) *CreateVirtualRouterOutput {
  6040  	s.VirtualRouter = v
  6041  	return s
  6042  }
  6043  
  6044  type CreateVirtualServiceInput struct {
  6045  	_ struct{} `type:"structure"`
  6046  
  6047  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
  6048  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
  6049  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
  6050  
  6051  	// The name of the service mesh to create the virtual service in.
  6052  	//
  6053  	// MeshName is a required field
  6054  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  6055  
  6056  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  6057  	// your own, then the account that you specify must share the mesh with your
  6058  	// account before you can create the resource in the service mesh. For more
  6059  	// information about mesh sharing, see Working with shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  6060  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  6061  
  6062  	// The virtual service specification to apply.
  6063  	//
  6064  	// Spec is a required field
  6065  	Spec *VirtualServiceSpec `locationName:"spec" type:"structure" required:"true"`
  6066  
  6067  	// Optional metadata that you can apply to the virtual service to assist with
  6068  	// categorization and organization. Each tag consists of a key and an optional
  6069  	// value, both of which you define. Tag keys can have a maximum character length
  6070  	// of 128 characters, and tag values can have a maximum length of 256 characters.
  6071  	Tags []*TagRef `locationName:"tags" type:"list"`
  6072  
  6073  	// The name to use for the virtual service.
  6074  	//
  6075  	// VirtualServiceName is a required field
  6076  	VirtualServiceName *string `locationName:"virtualServiceName" type:"string" required:"true"`
  6077  }
  6078  
  6079  // String returns the string representation.
  6080  //
  6081  // API parameter values that are decorated as "sensitive" in the API will not
  6082  // be included in the string output. The member name will be present, but the
  6083  // value will be replaced with "sensitive".
  6084  func (s CreateVirtualServiceInput) String() string {
  6085  	return awsutil.Prettify(s)
  6086  }
  6087  
  6088  // GoString returns the string representation.
  6089  //
  6090  // API parameter values that are decorated as "sensitive" in the API will not
  6091  // be included in the string output. The member name will be present, but the
  6092  // value will be replaced with "sensitive".
  6093  func (s CreateVirtualServiceInput) GoString() string {
  6094  	return s.String()
  6095  }
  6096  
  6097  // Validate inspects the fields of the type to determine if they are valid.
  6098  func (s *CreateVirtualServiceInput) Validate() error {
  6099  	invalidParams := request.ErrInvalidParams{Context: "CreateVirtualServiceInput"}
  6100  	if s.MeshName == nil {
  6101  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  6102  	}
  6103  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  6104  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  6105  	}
  6106  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  6107  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  6108  	}
  6109  	if s.Spec == nil {
  6110  		invalidParams.Add(request.NewErrParamRequired("Spec"))
  6111  	}
  6112  	if s.VirtualServiceName == nil {
  6113  		invalidParams.Add(request.NewErrParamRequired("VirtualServiceName"))
  6114  	}
  6115  	if s.Spec != nil {
  6116  		if err := s.Spec.Validate(); err != nil {
  6117  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
  6118  		}
  6119  	}
  6120  	if s.Tags != nil {
  6121  		for i, v := range s.Tags {
  6122  			if v == nil {
  6123  				continue
  6124  			}
  6125  			if err := v.Validate(); err != nil {
  6126  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
  6127  			}
  6128  		}
  6129  	}
  6130  
  6131  	if invalidParams.Len() > 0 {
  6132  		return invalidParams
  6133  	}
  6134  	return nil
  6135  }
  6136  
  6137  // SetClientToken sets the ClientToken field's value.
  6138  func (s *CreateVirtualServiceInput) SetClientToken(v string) *CreateVirtualServiceInput {
  6139  	s.ClientToken = &v
  6140  	return s
  6141  }
  6142  
  6143  // SetMeshName sets the MeshName field's value.
  6144  func (s *CreateVirtualServiceInput) SetMeshName(v string) *CreateVirtualServiceInput {
  6145  	s.MeshName = &v
  6146  	return s
  6147  }
  6148  
  6149  // SetMeshOwner sets the MeshOwner field's value.
  6150  func (s *CreateVirtualServiceInput) SetMeshOwner(v string) *CreateVirtualServiceInput {
  6151  	s.MeshOwner = &v
  6152  	return s
  6153  }
  6154  
  6155  // SetSpec sets the Spec field's value.
  6156  func (s *CreateVirtualServiceInput) SetSpec(v *VirtualServiceSpec) *CreateVirtualServiceInput {
  6157  	s.Spec = v
  6158  	return s
  6159  }
  6160  
  6161  // SetTags sets the Tags field's value.
  6162  func (s *CreateVirtualServiceInput) SetTags(v []*TagRef) *CreateVirtualServiceInput {
  6163  	s.Tags = v
  6164  	return s
  6165  }
  6166  
  6167  // SetVirtualServiceName sets the VirtualServiceName field's value.
  6168  func (s *CreateVirtualServiceInput) SetVirtualServiceName(v string) *CreateVirtualServiceInput {
  6169  	s.VirtualServiceName = &v
  6170  	return s
  6171  }
  6172  
  6173  type CreateVirtualServiceOutput struct {
  6174  	_ struct{} `type:"structure" payload:"VirtualService"`
  6175  
  6176  	// The full description of your virtual service following the create call.
  6177  	//
  6178  	// VirtualService is a required field
  6179  	VirtualService *VirtualServiceData `locationName:"virtualService" type:"structure" required:"true"`
  6180  }
  6181  
  6182  // String returns the string representation.
  6183  //
  6184  // API parameter values that are decorated as "sensitive" in the API will not
  6185  // be included in the string output. The member name will be present, but the
  6186  // value will be replaced with "sensitive".
  6187  func (s CreateVirtualServiceOutput) String() string {
  6188  	return awsutil.Prettify(s)
  6189  }
  6190  
  6191  // GoString returns the string representation.
  6192  //
  6193  // API parameter values that are decorated as "sensitive" in the API will not
  6194  // be included in the string output. The member name will be present, but the
  6195  // value will be replaced with "sensitive".
  6196  func (s CreateVirtualServiceOutput) GoString() string {
  6197  	return s.String()
  6198  }
  6199  
  6200  // SetVirtualService sets the VirtualService field's value.
  6201  func (s *CreateVirtualServiceOutput) SetVirtualService(v *VirtualServiceData) *CreateVirtualServiceOutput {
  6202  	s.VirtualService = v
  6203  	return s
  6204  }
  6205  
  6206  type DeleteGatewayRouteInput struct {
  6207  	_ struct{} `type:"structure" nopayload:"true"`
  6208  
  6209  	// The name of the gateway route to delete.
  6210  	//
  6211  	// GatewayRouteName is a required field
  6212  	GatewayRouteName *string `location:"uri" locationName:"gatewayRouteName" min:"1" type:"string" required:"true"`
  6213  
  6214  	// The name of the service mesh to delete the gateway route from.
  6215  	//
  6216  	// MeshName is a required field
  6217  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  6218  
  6219  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  6220  	// your own, then it's the ID of the account that shared the mesh with your
  6221  	// account. For more information about mesh sharing, see Working with shared
  6222  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  6223  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  6224  
  6225  	// The name of the virtual gateway to delete the route from.
  6226  	//
  6227  	// VirtualGatewayName is a required field
  6228  	VirtualGatewayName *string `location:"uri" locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
  6229  }
  6230  
  6231  // String returns the string representation.
  6232  //
  6233  // API parameter values that are decorated as "sensitive" in the API will not
  6234  // be included in the string output. The member name will be present, but the
  6235  // value will be replaced with "sensitive".
  6236  func (s DeleteGatewayRouteInput) String() string {
  6237  	return awsutil.Prettify(s)
  6238  }
  6239  
  6240  // GoString returns the string representation.
  6241  //
  6242  // API parameter values that are decorated as "sensitive" in the API will not
  6243  // be included in the string output. The member name will be present, but the
  6244  // value will be replaced with "sensitive".
  6245  func (s DeleteGatewayRouteInput) GoString() string {
  6246  	return s.String()
  6247  }
  6248  
  6249  // Validate inspects the fields of the type to determine if they are valid.
  6250  func (s *DeleteGatewayRouteInput) Validate() error {
  6251  	invalidParams := request.ErrInvalidParams{Context: "DeleteGatewayRouteInput"}
  6252  	if s.GatewayRouteName == nil {
  6253  		invalidParams.Add(request.NewErrParamRequired("GatewayRouteName"))
  6254  	}
  6255  	if s.GatewayRouteName != nil && len(*s.GatewayRouteName) < 1 {
  6256  		invalidParams.Add(request.NewErrParamMinLen("GatewayRouteName", 1))
  6257  	}
  6258  	if s.MeshName == nil {
  6259  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  6260  	}
  6261  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  6262  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  6263  	}
  6264  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  6265  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  6266  	}
  6267  	if s.VirtualGatewayName == nil {
  6268  		invalidParams.Add(request.NewErrParamRequired("VirtualGatewayName"))
  6269  	}
  6270  	if s.VirtualGatewayName != nil && len(*s.VirtualGatewayName) < 1 {
  6271  		invalidParams.Add(request.NewErrParamMinLen("VirtualGatewayName", 1))
  6272  	}
  6273  
  6274  	if invalidParams.Len() > 0 {
  6275  		return invalidParams
  6276  	}
  6277  	return nil
  6278  }
  6279  
  6280  // SetGatewayRouteName sets the GatewayRouteName field's value.
  6281  func (s *DeleteGatewayRouteInput) SetGatewayRouteName(v string) *DeleteGatewayRouteInput {
  6282  	s.GatewayRouteName = &v
  6283  	return s
  6284  }
  6285  
  6286  // SetMeshName sets the MeshName field's value.
  6287  func (s *DeleteGatewayRouteInput) SetMeshName(v string) *DeleteGatewayRouteInput {
  6288  	s.MeshName = &v
  6289  	return s
  6290  }
  6291  
  6292  // SetMeshOwner sets the MeshOwner field's value.
  6293  func (s *DeleteGatewayRouteInput) SetMeshOwner(v string) *DeleteGatewayRouteInput {
  6294  	s.MeshOwner = &v
  6295  	return s
  6296  }
  6297  
  6298  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
  6299  func (s *DeleteGatewayRouteInput) SetVirtualGatewayName(v string) *DeleteGatewayRouteInput {
  6300  	s.VirtualGatewayName = &v
  6301  	return s
  6302  }
  6303  
  6304  type DeleteGatewayRouteOutput struct {
  6305  	_ struct{} `type:"structure" payload:"GatewayRoute"`
  6306  
  6307  	// The gateway route that was deleted.
  6308  	//
  6309  	// GatewayRoute is a required field
  6310  	GatewayRoute *GatewayRouteData `locationName:"gatewayRoute" type:"structure" required:"true"`
  6311  }
  6312  
  6313  // String returns the string representation.
  6314  //
  6315  // API parameter values that are decorated as "sensitive" in the API will not
  6316  // be included in the string output. The member name will be present, but the
  6317  // value will be replaced with "sensitive".
  6318  func (s DeleteGatewayRouteOutput) String() string {
  6319  	return awsutil.Prettify(s)
  6320  }
  6321  
  6322  // GoString returns the string representation.
  6323  //
  6324  // API parameter values that are decorated as "sensitive" in the API will not
  6325  // be included in the string output. The member name will be present, but the
  6326  // value will be replaced with "sensitive".
  6327  func (s DeleteGatewayRouteOutput) GoString() string {
  6328  	return s.String()
  6329  }
  6330  
  6331  // SetGatewayRoute sets the GatewayRoute field's value.
  6332  func (s *DeleteGatewayRouteOutput) SetGatewayRoute(v *GatewayRouteData) *DeleteGatewayRouteOutput {
  6333  	s.GatewayRoute = v
  6334  	return s
  6335  }
  6336  
  6337  type DeleteMeshInput struct {
  6338  	_ struct{} `type:"structure" nopayload:"true"`
  6339  
  6340  	// The name of the service mesh to delete.
  6341  	//
  6342  	// MeshName is a required field
  6343  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  6344  }
  6345  
  6346  // String returns the string representation.
  6347  //
  6348  // API parameter values that are decorated as "sensitive" in the API will not
  6349  // be included in the string output. The member name will be present, but the
  6350  // value will be replaced with "sensitive".
  6351  func (s DeleteMeshInput) String() string {
  6352  	return awsutil.Prettify(s)
  6353  }
  6354  
  6355  // GoString returns the string representation.
  6356  //
  6357  // API parameter values that are decorated as "sensitive" in the API will not
  6358  // be included in the string output. The member name will be present, but the
  6359  // value will be replaced with "sensitive".
  6360  func (s DeleteMeshInput) GoString() string {
  6361  	return s.String()
  6362  }
  6363  
  6364  // Validate inspects the fields of the type to determine if they are valid.
  6365  func (s *DeleteMeshInput) Validate() error {
  6366  	invalidParams := request.ErrInvalidParams{Context: "DeleteMeshInput"}
  6367  	if s.MeshName == nil {
  6368  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  6369  	}
  6370  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  6371  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  6372  	}
  6373  
  6374  	if invalidParams.Len() > 0 {
  6375  		return invalidParams
  6376  	}
  6377  	return nil
  6378  }
  6379  
  6380  // SetMeshName sets the MeshName field's value.
  6381  func (s *DeleteMeshInput) SetMeshName(v string) *DeleteMeshInput {
  6382  	s.MeshName = &v
  6383  	return s
  6384  }
  6385  
  6386  type DeleteMeshOutput struct {
  6387  	_ struct{} `type:"structure" payload:"Mesh"`
  6388  
  6389  	// The service mesh that was deleted.
  6390  	//
  6391  	// Mesh is a required field
  6392  	Mesh *MeshData `locationName:"mesh" type:"structure" required:"true"`
  6393  }
  6394  
  6395  // String returns the string representation.
  6396  //
  6397  // API parameter values that are decorated as "sensitive" in the API will not
  6398  // be included in the string output. The member name will be present, but the
  6399  // value will be replaced with "sensitive".
  6400  func (s DeleteMeshOutput) String() string {
  6401  	return awsutil.Prettify(s)
  6402  }
  6403  
  6404  // GoString returns the string representation.
  6405  //
  6406  // API parameter values that are decorated as "sensitive" in the API will not
  6407  // be included in the string output. The member name will be present, but the
  6408  // value will be replaced with "sensitive".
  6409  func (s DeleteMeshOutput) GoString() string {
  6410  	return s.String()
  6411  }
  6412  
  6413  // SetMesh sets the Mesh field's value.
  6414  func (s *DeleteMeshOutput) SetMesh(v *MeshData) *DeleteMeshOutput {
  6415  	s.Mesh = v
  6416  	return s
  6417  }
  6418  
  6419  type DeleteRouteInput struct {
  6420  	_ struct{} `type:"structure" nopayload:"true"`
  6421  
  6422  	// The name of the service mesh to delete the route in.
  6423  	//
  6424  	// MeshName is a required field
  6425  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  6426  
  6427  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  6428  	// your own, then it's the ID of the account that shared the mesh with your
  6429  	// account. For more information about mesh sharing, see Working with shared
  6430  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  6431  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  6432  
  6433  	// The name of the route to delete.
  6434  	//
  6435  	// RouteName is a required field
  6436  	RouteName *string `location:"uri" locationName:"routeName" min:"1" type:"string" required:"true"`
  6437  
  6438  	// The name of the virtual router to delete the route in.
  6439  	//
  6440  	// VirtualRouterName is a required field
  6441  	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
  6442  }
  6443  
  6444  // String returns the string representation.
  6445  //
  6446  // API parameter values that are decorated as "sensitive" in the API will not
  6447  // be included in the string output. The member name will be present, but the
  6448  // value will be replaced with "sensitive".
  6449  func (s DeleteRouteInput) String() string {
  6450  	return awsutil.Prettify(s)
  6451  }
  6452  
  6453  // GoString returns the string representation.
  6454  //
  6455  // API parameter values that are decorated as "sensitive" in the API will not
  6456  // be included in the string output. The member name will be present, but the
  6457  // value will be replaced with "sensitive".
  6458  func (s DeleteRouteInput) GoString() string {
  6459  	return s.String()
  6460  }
  6461  
  6462  // Validate inspects the fields of the type to determine if they are valid.
  6463  func (s *DeleteRouteInput) Validate() error {
  6464  	invalidParams := request.ErrInvalidParams{Context: "DeleteRouteInput"}
  6465  	if s.MeshName == nil {
  6466  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  6467  	}
  6468  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  6469  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  6470  	}
  6471  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  6472  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  6473  	}
  6474  	if s.RouteName == nil {
  6475  		invalidParams.Add(request.NewErrParamRequired("RouteName"))
  6476  	}
  6477  	if s.RouteName != nil && len(*s.RouteName) < 1 {
  6478  		invalidParams.Add(request.NewErrParamMinLen("RouteName", 1))
  6479  	}
  6480  	if s.VirtualRouterName == nil {
  6481  		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
  6482  	}
  6483  	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
  6484  		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
  6485  	}
  6486  
  6487  	if invalidParams.Len() > 0 {
  6488  		return invalidParams
  6489  	}
  6490  	return nil
  6491  }
  6492  
  6493  // SetMeshName sets the MeshName field's value.
  6494  func (s *DeleteRouteInput) SetMeshName(v string) *DeleteRouteInput {
  6495  	s.MeshName = &v
  6496  	return s
  6497  }
  6498  
  6499  // SetMeshOwner sets the MeshOwner field's value.
  6500  func (s *DeleteRouteInput) SetMeshOwner(v string) *DeleteRouteInput {
  6501  	s.MeshOwner = &v
  6502  	return s
  6503  }
  6504  
  6505  // SetRouteName sets the RouteName field's value.
  6506  func (s *DeleteRouteInput) SetRouteName(v string) *DeleteRouteInput {
  6507  	s.RouteName = &v
  6508  	return s
  6509  }
  6510  
  6511  // SetVirtualRouterName sets the VirtualRouterName field's value.
  6512  func (s *DeleteRouteInput) SetVirtualRouterName(v string) *DeleteRouteInput {
  6513  	s.VirtualRouterName = &v
  6514  	return s
  6515  }
  6516  
  6517  type DeleteRouteOutput struct {
  6518  	_ struct{} `type:"structure" payload:"Route"`
  6519  
  6520  	// The route that was deleted.
  6521  	//
  6522  	// Route is a required field
  6523  	Route *RouteData `locationName:"route" type:"structure" required:"true"`
  6524  }
  6525  
  6526  // String returns the string representation.
  6527  //
  6528  // API parameter values that are decorated as "sensitive" in the API will not
  6529  // be included in the string output. The member name will be present, but the
  6530  // value will be replaced with "sensitive".
  6531  func (s DeleteRouteOutput) String() string {
  6532  	return awsutil.Prettify(s)
  6533  }
  6534  
  6535  // GoString returns the string representation.
  6536  //
  6537  // API parameter values that are decorated as "sensitive" in the API will not
  6538  // be included in the string output. The member name will be present, but the
  6539  // value will be replaced with "sensitive".
  6540  func (s DeleteRouteOutput) GoString() string {
  6541  	return s.String()
  6542  }
  6543  
  6544  // SetRoute sets the Route field's value.
  6545  func (s *DeleteRouteOutput) SetRoute(v *RouteData) *DeleteRouteOutput {
  6546  	s.Route = v
  6547  	return s
  6548  }
  6549  
  6550  type DeleteVirtualGatewayInput struct {
  6551  	_ struct{} `type:"structure" nopayload:"true"`
  6552  
  6553  	// The name of the service mesh to delete the virtual gateway from.
  6554  	//
  6555  	// MeshName is a required field
  6556  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  6557  
  6558  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  6559  	// your own, then it's the ID of the account that shared the mesh with your
  6560  	// account. For more information about mesh sharing, see Working with shared
  6561  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  6562  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  6563  
  6564  	// The name of the virtual gateway to delete.
  6565  	//
  6566  	// VirtualGatewayName is a required field
  6567  	VirtualGatewayName *string `location:"uri" locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
  6568  }
  6569  
  6570  // String returns the string representation.
  6571  //
  6572  // API parameter values that are decorated as "sensitive" in the API will not
  6573  // be included in the string output. The member name will be present, but the
  6574  // value will be replaced with "sensitive".
  6575  func (s DeleteVirtualGatewayInput) String() string {
  6576  	return awsutil.Prettify(s)
  6577  }
  6578  
  6579  // GoString returns the string representation.
  6580  //
  6581  // API parameter values that are decorated as "sensitive" in the API will not
  6582  // be included in the string output. The member name will be present, but the
  6583  // value will be replaced with "sensitive".
  6584  func (s DeleteVirtualGatewayInput) GoString() string {
  6585  	return s.String()
  6586  }
  6587  
  6588  // Validate inspects the fields of the type to determine if they are valid.
  6589  func (s *DeleteVirtualGatewayInput) Validate() error {
  6590  	invalidParams := request.ErrInvalidParams{Context: "DeleteVirtualGatewayInput"}
  6591  	if s.MeshName == nil {
  6592  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  6593  	}
  6594  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  6595  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  6596  	}
  6597  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  6598  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  6599  	}
  6600  	if s.VirtualGatewayName == nil {
  6601  		invalidParams.Add(request.NewErrParamRequired("VirtualGatewayName"))
  6602  	}
  6603  	if s.VirtualGatewayName != nil && len(*s.VirtualGatewayName) < 1 {
  6604  		invalidParams.Add(request.NewErrParamMinLen("VirtualGatewayName", 1))
  6605  	}
  6606  
  6607  	if invalidParams.Len() > 0 {
  6608  		return invalidParams
  6609  	}
  6610  	return nil
  6611  }
  6612  
  6613  // SetMeshName sets the MeshName field's value.
  6614  func (s *DeleteVirtualGatewayInput) SetMeshName(v string) *DeleteVirtualGatewayInput {
  6615  	s.MeshName = &v
  6616  	return s
  6617  }
  6618  
  6619  // SetMeshOwner sets the MeshOwner field's value.
  6620  func (s *DeleteVirtualGatewayInput) SetMeshOwner(v string) *DeleteVirtualGatewayInput {
  6621  	s.MeshOwner = &v
  6622  	return s
  6623  }
  6624  
  6625  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
  6626  func (s *DeleteVirtualGatewayInput) SetVirtualGatewayName(v string) *DeleteVirtualGatewayInput {
  6627  	s.VirtualGatewayName = &v
  6628  	return s
  6629  }
  6630  
  6631  type DeleteVirtualGatewayOutput struct {
  6632  	_ struct{} `type:"structure" payload:"VirtualGateway"`
  6633  
  6634  	// The virtual gateway that was deleted.
  6635  	//
  6636  	// VirtualGateway is a required field
  6637  	VirtualGateway *VirtualGatewayData `locationName:"virtualGateway" type:"structure" required:"true"`
  6638  }
  6639  
  6640  // String returns the string representation.
  6641  //
  6642  // API parameter values that are decorated as "sensitive" in the API will not
  6643  // be included in the string output. The member name will be present, but the
  6644  // value will be replaced with "sensitive".
  6645  func (s DeleteVirtualGatewayOutput) String() string {
  6646  	return awsutil.Prettify(s)
  6647  }
  6648  
  6649  // GoString returns the string representation.
  6650  //
  6651  // API parameter values that are decorated as "sensitive" in the API will not
  6652  // be included in the string output. The member name will be present, but the
  6653  // value will be replaced with "sensitive".
  6654  func (s DeleteVirtualGatewayOutput) GoString() string {
  6655  	return s.String()
  6656  }
  6657  
  6658  // SetVirtualGateway sets the VirtualGateway field's value.
  6659  func (s *DeleteVirtualGatewayOutput) SetVirtualGateway(v *VirtualGatewayData) *DeleteVirtualGatewayOutput {
  6660  	s.VirtualGateway = v
  6661  	return s
  6662  }
  6663  
  6664  // Deletes a virtual node input.
  6665  type DeleteVirtualNodeInput struct {
  6666  	_ struct{} `type:"structure" nopayload:"true"`
  6667  
  6668  	// The name of the service mesh to delete the virtual node in.
  6669  	//
  6670  	// MeshName is a required field
  6671  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  6672  
  6673  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  6674  	// your own, then it's the ID of the account that shared the mesh with your
  6675  	// account. For more information about mesh sharing, see Working with shared
  6676  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  6677  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  6678  
  6679  	// The name of the virtual node to delete.
  6680  	//
  6681  	// VirtualNodeName is a required field
  6682  	VirtualNodeName *string `location:"uri" locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
  6683  }
  6684  
  6685  // String returns the string representation.
  6686  //
  6687  // API parameter values that are decorated as "sensitive" in the API will not
  6688  // be included in the string output. The member name will be present, but the
  6689  // value will be replaced with "sensitive".
  6690  func (s DeleteVirtualNodeInput) String() string {
  6691  	return awsutil.Prettify(s)
  6692  }
  6693  
  6694  // GoString returns the string representation.
  6695  //
  6696  // API parameter values that are decorated as "sensitive" in the API will not
  6697  // be included in the string output. The member name will be present, but the
  6698  // value will be replaced with "sensitive".
  6699  func (s DeleteVirtualNodeInput) GoString() string {
  6700  	return s.String()
  6701  }
  6702  
  6703  // Validate inspects the fields of the type to determine if they are valid.
  6704  func (s *DeleteVirtualNodeInput) Validate() error {
  6705  	invalidParams := request.ErrInvalidParams{Context: "DeleteVirtualNodeInput"}
  6706  	if s.MeshName == nil {
  6707  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  6708  	}
  6709  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  6710  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  6711  	}
  6712  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  6713  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  6714  	}
  6715  	if s.VirtualNodeName == nil {
  6716  		invalidParams.Add(request.NewErrParamRequired("VirtualNodeName"))
  6717  	}
  6718  	if s.VirtualNodeName != nil && len(*s.VirtualNodeName) < 1 {
  6719  		invalidParams.Add(request.NewErrParamMinLen("VirtualNodeName", 1))
  6720  	}
  6721  
  6722  	if invalidParams.Len() > 0 {
  6723  		return invalidParams
  6724  	}
  6725  	return nil
  6726  }
  6727  
  6728  // SetMeshName sets the MeshName field's value.
  6729  func (s *DeleteVirtualNodeInput) SetMeshName(v string) *DeleteVirtualNodeInput {
  6730  	s.MeshName = &v
  6731  	return s
  6732  }
  6733  
  6734  // SetMeshOwner sets the MeshOwner field's value.
  6735  func (s *DeleteVirtualNodeInput) SetMeshOwner(v string) *DeleteVirtualNodeInput {
  6736  	s.MeshOwner = &v
  6737  	return s
  6738  }
  6739  
  6740  // SetVirtualNodeName sets the VirtualNodeName field's value.
  6741  func (s *DeleteVirtualNodeInput) SetVirtualNodeName(v string) *DeleteVirtualNodeInput {
  6742  	s.VirtualNodeName = &v
  6743  	return s
  6744  }
  6745  
  6746  type DeleteVirtualNodeOutput struct {
  6747  	_ struct{} `type:"structure" payload:"VirtualNode"`
  6748  
  6749  	// The virtual node that was deleted.
  6750  	//
  6751  	// VirtualNode is a required field
  6752  	VirtualNode *VirtualNodeData `locationName:"virtualNode" type:"structure" required:"true"`
  6753  }
  6754  
  6755  // String returns the string representation.
  6756  //
  6757  // API parameter values that are decorated as "sensitive" in the API will not
  6758  // be included in the string output. The member name will be present, but the
  6759  // value will be replaced with "sensitive".
  6760  func (s DeleteVirtualNodeOutput) String() string {
  6761  	return awsutil.Prettify(s)
  6762  }
  6763  
  6764  // GoString returns the string representation.
  6765  //
  6766  // API parameter values that are decorated as "sensitive" in the API will not
  6767  // be included in the string output. The member name will be present, but the
  6768  // value will be replaced with "sensitive".
  6769  func (s DeleteVirtualNodeOutput) GoString() string {
  6770  	return s.String()
  6771  }
  6772  
  6773  // SetVirtualNode sets the VirtualNode field's value.
  6774  func (s *DeleteVirtualNodeOutput) SetVirtualNode(v *VirtualNodeData) *DeleteVirtualNodeOutput {
  6775  	s.VirtualNode = v
  6776  	return s
  6777  }
  6778  
  6779  type DeleteVirtualRouterInput struct {
  6780  	_ struct{} `type:"structure" nopayload:"true"`
  6781  
  6782  	// The name of the service mesh to delete the virtual router in.
  6783  	//
  6784  	// MeshName is a required field
  6785  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  6786  
  6787  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  6788  	// your own, then it's the ID of the account that shared the mesh with your
  6789  	// account. For more information about mesh sharing, see Working with shared
  6790  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  6791  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  6792  
  6793  	// The name of the virtual router to delete.
  6794  	//
  6795  	// VirtualRouterName is a required field
  6796  	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
  6797  }
  6798  
  6799  // String returns the string representation.
  6800  //
  6801  // API parameter values that are decorated as "sensitive" in the API will not
  6802  // be included in the string output. The member name will be present, but the
  6803  // value will be replaced with "sensitive".
  6804  func (s DeleteVirtualRouterInput) String() string {
  6805  	return awsutil.Prettify(s)
  6806  }
  6807  
  6808  // GoString returns the string representation.
  6809  //
  6810  // API parameter values that are decorated as "sensitive" in the API will not
  6811  // be included in the string output. The member name will be present, but the
  6812  // value will be replaced with "sensitive".
  6813  func (s DeleteVirtualRouterInput) GoString() string {
  6814  	return s.String()
  6815  }
  6816  
  6817  // Validate inspects the fields of the type to determine if they are valid.
  6818  func (s *DeleteVirtualRouterInput) Validate() error {
  6819  	invalidParams := request.ErrInvalidParams{Context: "DeleteVirtualRouterInput"}
  6820  	if s.MeshName == nil {
  6821  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  6822  	}
  6823  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  6824  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  6825  	}
  6826  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  6827  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  6828  	}
  6829  	if s.VirtualRouterName == nil {
  6830  		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
  6831  	}
  6832  	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
  6833  		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
  6834  	}
  6835  
  6836  	if invalidParams.Len() > 0 {
  6837  		return invalidParams
  6838  	}
  6839  	return nil
  6840  }
  6841  
  6842  // SetMeshName sets the MeshName field's value.
  6843  func (s *DeleteVirtualRouterInput) SetMeshName(v string) *DeleteVirtualRouterInput {
  6844  	s.MeshName = &v
  6845  	return s
  6846  }
  6847  
  6848  // SetMeshOwner sets the MeshOwner field's value.
  6849  func (s *DeleteVirtualRouterInput) SetMeshOwner(v string) *DeleteVirtualRouterInput {
  6850  	s.MeshOwner = &v
  6851  	return s
  6852  }
  6853  
  6854  // SetVirtualRouterName sets the VirtualRouterName field's value.
  6855  func (s *DeleteVirtualRouterInput) SetVirtualRouterName(v string) *DeleteVirtualRouterInput {
  6856  	s.VirtualRouterName = &v
  6857  	return s
  6858  }
  6859  
  6860  type DeleteVirtualRouterOutput struct {
  6861  	_ struct{} `type:"structure" payload:"VirtualRouter"`
  6862  
  6863  	// The virtual router that was deleted.
  6864  	//
  6865  	// VirtualRouter is a required field
  6866  	VirtualRouter *VirtualRouterData `locationName:"virtualRouter" type:"structure" required:"true"`
  6867  }
  6868  
  6869  // String returns the string representation.
  6870  //
  6871  // API parameter values that are decorated as "sensitive" in the API will not
  6872  // be included in the string output. The member name will be present, but the
  6873  // value will be replaced with "sensitive".
  6874  func (s DeleteVirtualRouterOutput) String() string {
  6875  	return awsutil.Prettify(s)
  6876  }
  6877  
  6878  // GoString returns the string representation.
  6879  //
  6880  // API parameter values that are decorated as "sensitive" in the API will not
  6881  // be included in the string output. The member name will be present, but the
  6882  // value will be replaced with "sensitive".
  6883  func (s DeleteVirtualRouterOutput) GoString() string {
  6884  	return s.String()
  6885  }
  6886  
  6887  // SetVirtualRouter sets the VirtualRouter field's value.
  6888  func (s *DeleteVirtualRouterOutput) SetVirtualRouter(v *VirtualRouterData) *DeleteVirtualRouterOutput {
  6889  	s.VirtualRouter = v
  6890  	return s
  6891  }
  6892  
  6893  type DeleteVirtualServiceInput struct {
  6894  	_ struct{} `type:"structure" nopayload:"true"`
  6895  
  6896  	// The name of the service mesh to delete the virtual service in.
  6897  	//
  6898  	// MeshName is a required field
  6899  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  6900  
  6901  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  6902  	// your own, then it's the ID of the account that shared the mesh with your
  6903  	// account. For more information about mesh sharing, see Working with shared
  6904  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  6905  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  6906  
  6907  	// The name of the virtual service to delete.
  6908  	//
  6909  	// VirtualServiceName is a required field
  6910  	VirtualServiceName *string `location:"uri" locationName:"virtualServiceName" type:"string" required:"true"`
  6911  }
  6912  
  6913  // String returns the string representation.
  6914  //
  6915  // API parameter values that are decorated as "sensitive" in the API will not
  6916  // be included in the string output. The member name will be present, but the
  6917  // value will be replaced with "sensitive".
  6918  func (s DeleteVirtualServiceInput) String() string {
  6919  	return awsutil.Prettify(s)
  6920  }
  6921  
  6922  // GoString returns the string representation.
  6923  //
  6924  // API parameter values that are decorated as "sensitive" in the API will not
  6925  // be included in the string output. The member name will be present, but the
  6926  // value will be replaced with "sensitive".
  6927  func (s DeleteVirtualServiceInput) GoString() string {
  6928  	return s.String()
  6929  }
  6930  
  6931  // Validate inspects the fields of the type to determine if they are valid.
  6932  func (s *DeleteVirtualServiceInput) Validate() error {
  6933  	invalidParams := request.ErrInvalidParams{Context: "DeleteVirtualServiceInput"}
  6934  	if s.MeshName == nil {
  6935  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  6936  	}
  6937  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  6938  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  6939  	}
  6940  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  6941  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  6942  	}
  6943  	if s.VirtualServiceName == nil {
  6944  		invalidParams.Add(request.NewErrParamRequired("VirtualServiceName"))
  6945  	}
  6946  	if s.VirtualServiceName != nil && len(*s.VirtualServiceName) < 1 {
  6947  		invalidParams.Add(request.NewErrParamMinLen("VirtualServiceName", 1))
  6948  	}
  6949  
  6950  	if invalidParams.Len() > 0 {
  6951  		return invalidParams
  6952  	}
  6953  	return nil
  6954  }
  6955  
  6956  // SetMeshName sets the MeshName field's value.
  6957  func (s *DeleteVirtualServiceInput) SetMeshName(v string) *DeleteVirtualServiceInput {
  6958  	s.MeshName = &v
  6959  	return s
  6960  }
  6961  
  6962  // SetMeshOwner sets the MeshOwner field's value.
  6963  func (s *DeleteVirtualServiceInput) SetMeshOwner(v string) *DeleteVirtualServiceInput {
  6964  	s.MeshOwner = &v
  6965  	return s
  6966  }
  6967  
  6968  // SetVirtualServiceName sets the VirtualServiceName field's value.
  6969  func (s *DeleteVirtualServiceInput) SetVirtualServiceName(v string) *DeleteVirtualServiceInput {
  6970  	s.VirtualServiceName = &v
  6971  	return s
  6972  }
  6973  
  6974  type DeleteVirtualServiceOutput struct {
  6975  	_ struct{} `type:"structure" payload:"VirtualService"`
  6976  
  6977  	// The virtual service that was deleted.
  6978  	//
  6979  	// VirtualService is a required field
  6980  	VirtualService *VirtualServiceData `locationName:"virtualService" type:"structure" required:"true"`
  6981  }
  6982  
  6983  // String returns the string representation.
  6984  //
  6985  // API parameter values that are decorated as "sensitive" in the API will not
  6986  // be included in the string output. The member name will be present, but the
  6987  // value will be replaced with "sensitive".
  6988  func (s DeleteVirtualServiceOutput) String() string {
  6989  	return awsutil.Prettify(s)
  6990  }
  6991  
  6992  // GoString returns the string representation.
  6993  //
  6994  // API parameter values that are decorated as "sensitive" in the API will not
  6995  // be included in the string output. The member name will be present, but the
  6996  // value will be replaced with "sensitive".
  6997  func (s DeleteVirtualServiceOutput) GoString() string {
  6998  	return s.String()
  6999  }
  7000  
  7001  // SetVirtualService sets the VirtualService field's value.
  7002  func (s *DeleteVirtualServiceOutput) SetVirtualService(v *VirtualServiceData) *DeleteVirtualServiceOutput {
  7003  	s.VirtualService = v
  7004  	return s
  7005  }
  7006  
  7007  type DescribeGatewayRouteInput struct {
  7008  	_ struct{} `type:"structure" nopayload:"true"`
  7009  
  7010  	// The name of the gateway route to describe.
  7011  	//
  7012  	// GatewayRouteName is a required field
  7013  	GatewayRouteName *string `location:"uri" locationName:"gatewayRouteName" min:"1" type:"string" required:"true"`
  7014  
  7015  	// The name of the service mesh that the gateway route resides in.
  7016  	//
  7017  	// MeshName is a required field
  7018  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  7019  
  7020  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  7021  	// your own, then it's the ID of the account that shared the mesh with your
  7022  	// account. For more information about mesh sharing, see Working with shared
  7023  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  7024  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  7025  
  7026  	// The name of the virtual gateway that the gateway route is associated with.
  7027  	//
  7028  	// VirtualGatewayName is a required field
  7029  	VirtualGatewayName *string `location:"uri" locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
  7030  }
  7031  
  7032  // String returns the string representation.
  7033  //
  7034  // API parameter values that are decorated as "sensitive" in the API will not
  7035  // be included in the string output. The member name will be present, but the
  7036  // value will be replaced with "sensitive".
  7037  func (s DescribeGatewayRouteInput) String() string {
  7038  	return awsutil.Prettify(s)
  7039  }
  7040  
  7041  // GoString returns the string representation.
  7042  //
  7043  // API parameter values that are decorated as "sensitive" in the API will not
  7044  // be included in the string output. The member name will be present, but the
  7045  // value will be replaced with "sensitive".
  7046  func (s DescribeGatewayRouteInput) GoString() string {
  7047  	return s.String()
  7048  }
  7049  
  7050  // Validate inspects the fields of the type to determine if they are valid.
  7051  func (s *DescribeGatewayRouteInput) Validate() error {
  7052  	invalidParams := request.ErrInvalidParams{Context: "DescribeGatewayRouteInput"}
  7053  	if s.GatewayRouteName == nil {
  7054  		invalidParams.Add(request.NewErrParamRequired("GatewayRouteName"))
  7055  	}
  7056  	if s.GatewayRouteName != nil && len(*s.GatewayRouteName) < 1 {
  7057  		invalidParams.Add(request.NewErrParamMinLen("GatewayRouteName", 1))
  7058  	}
  7059  	if s.MeshName == nil {
  7060  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  7061  	}
  7062  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  7063  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  7064  	}
  7065  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  7066  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  7067  	}
  7068  	if s.VirtualGatewayName == nil {
  7069  		invalidParams.Add(request.NewErrParamRequired("VirtualGatewayName"))
  7070  	}
  7071  	if s.VirtualGatewayName != nil && len(*s.VirtualGatewayName) < 1 {
  7072  		invalidParams.Add(request.NewErrParamMinLen("VirtualGatewayName", 1))
  7073  	}
  7074  
  7075  	if invalidParams.Len() > 0 {
  7076  		return invalidParams
  7077  	}
  7078  	return nil
  7079  }
  7080  
  7081  // SetGatewayRouteName sets the GatewayRouteName field's value.
  7082  func (s *DescribeGatewayRouteInput) SetGatewayRouteName(v string) *DescribeGatewayRouteInput {
  7083  	s.GatewayRouteName = &v
  7084  	return s
  7085  }
  7086  
  7087  // SetMeshName sets the MeshName field's value.
  7088  func (s *DescribeGatewayRouteInput) SetMeshName(v string) *DescribeGatewayRouteInput {
  7089  	s.MeshName = &v
  7090  	return s
  7091  }
  7092  
  7093  // SetMeshOwner sets the MeshOwner field's value.
  7094  func (s *DescribeGatewayRouteInput) SetMeshOwner(v string) *DescribeGatewayRouteInput {
  7095  	s.MeshOwner = &v
  7096  	return s
  7097  }
  7098  
  7099  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
  7100  func (s *DescribeGatewayRouteInput) SetVirtualGatewayName(v string) *DescribeGatewayRouteInput {
  7101  	s.VirtualGatewayName = &v
  7102  	return s
  7103  }
  7104  
  7105  type DescribeGatewayRouteOutput struct {
  7106  	_ struct{} `type:"structure" payload:"GatewayRoute"`
  7107  
  7108  	// The full description of your gateway route.
  7109  	//
  7110  	// GatewayRoute is a required field
  7111  	GatewayRoute *GatewayRouteData `locationName:"gatewayRoute" type:"structure" required:"true"`
  7112  }
  7113  
  7114  // String returns the string representation.
  7115  //
  7116  // API parameter values that are decorated as "sensitive" in the API will not
  7117  // be included in the string output. The member name will be present, but the
  7118  // value will be replaced with "sensitive".
  7119  func (s DescribeGatewayRouteOutput) String() string {
  7120  	return awsutil.Prettify(s)
  7121  }
  7122  
  7123  // GoString returns the string representation.
  7124  //
  7125  // API parameter values that are decorated as "sensitive" in the API will not
  7126  // be included in the string output. The member name will be present, but the
  7127  // value will be replaced with "sensitive".
  7128  func (s DescribeGatewayRouteOutput) GoString() string {
  7129  	return s.String()
  7130  }
  7131  
  7132  // SetGatewayRoute sets the GatewayRoute field's value.
  7133  func (s *DescribeGatewayRouteOutput) SetGatewayRoute(v *GatewayRouteData) *DescribeGatewayRouteOutput {
  7134  	s.GatewayRoute = v
  7135  	return s
  7136  }
  7137  
  7138  type DescribeMeshInput struct {
  7139  	_ struct{} `type:"structure" nopayload:"true"`
  7140  
  7141  	// The name of the service mesh to describe.
  7142  	//
  7143  	// MeshName is a required field
  7144  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  7145  
  7146  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  7147  	// your own, then it's the ID of the account that shared the mesh with your
  7148  	// account. For more information about mesh sharing, see Working with shared
  7149  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  7150  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  7151  }
  7152  
  7153  // String returns the string representation.
  7154  //
  7155  // API parameter values that are decorated as "sensitive" in the API will not
  7156  // be included in the string output. The member name will be present, but the
  7157  // value will be replaced with "sensitive".
  7158  func (s DescribeMeshInput) String() string {
  7159  	return awsutil.Prettify(s)
  7160  }
  7161  
  7162  // GoString returns the string representation.
  7163  //
  7164  // API parameter values that are decorated as "sensitive" in the API will not
  7165  // be included in the string output. The member name will be present, but the
  7166  // value will be replaced with "sensitive".
  7167  func (s DescribeMeshInput) GoString() string {
  7168  	return s.String()
  7169  }
  7170  
  7171  // Validate inspects the fields of the type to determine if they are valid.
  7172  func (s *DescribeMeshInput) Validate() error {
  7173  	invalidParams := request.ErrInvalidParams{Context: "DescribeMeshInput"}
  7174  	if s.MeshName == nil {
  7175  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  7176  	}
  7177  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  7178  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  7179  	}
  7180  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  7181  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  7182  	}
  7183  
  7184  	if invalidParams.Len() > 0 {
  7185  		return invalidParams
  7186  	}
  7187  	return nil
  7188  }
  7189  
  7190  // SetMeshName sets the MeshName field's value.
  7191  func (s *DescribeMeshInput) SetMeshName(v string) *DescribeMeshInput {
  7192  	s.MeshName = &v
  7193  	return s
  7194  }
  7195  
  7196  // SetMeshOwner sets the MeshOwner field's value.
  7197  func (s *DescribeMeshInput) SetMeshOwner(v string) *DescribeMeshInput {
  7198  	s.MeshOwner = &v
  7199  	return s
  7200  }
  7201  
  7202  type DescribeMeshOutput struct {
  7203  	_ struct{} `type:"structure" payload:"Mesh"`
  7204  
  7205  	// The full description of your service mesh.
  7206  	//
  7207  	// Mesh is a required field
  7208  	Mesh *MeshData `locationName:"mesh" type:"structure" required:"true"`
  7209  }
  7210  
  7211  // String returns the string representation.
  7212  //
  7213  // API parameter values that are decorated as "sensitive" in the API will not
  7214  // be included in the string output. The member name will be present, but the
  7215  // value will be replaced with "sensitive".
  7216  func (s DescribeMeshOutput) String() string {
  7217  	return awsutil.Prettify(s)
  7218  }
  7219  
  7220  // GoString returns the string representation.
  7221  //
  7222  // API parameter values that are decorated as "sensitive" in the API will not
  7223  // be included in the string output. The member name will be present, but the
  7224  // value will be replaced with "sensitive".
  7225  func (s DescribeMeshOutput) GoString() string {
  7226  	return s.String()
  7227  }
  7228  
  7229  // SetMesh sets the Mesh field's value.
  7230  func (s *DescribeMeshOutput) SetMesh(v *MeshData) *DescribeMeshOutput {
  7231  	s.Mesh = v
  7232  	return s
  7233  }
  7234  
  7235  type DescribeRouteInput struct {
  7236  	_ struct{} `type:"structure" nopayload:"true"`
  7237  
  7238  	// The name of the service mesh that the route resides in.
  7239  	//
  7240  	// MeshName is a required field
  7241  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  7242  
  7243  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  7244  	// your own, then it's the ID of the account that shared the mesh with your
  7245  	// account. For more information about mesh sharing, see Working with shared
  7246  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  7247  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  7248  
  7249  	// The name of the route to describe.
  7250  	//
  7251  	// RouteName is a required field
  7252  	RouteName *string `location:"uri" locationName:"routeName" min:"1" type:"string" required:"true"`
  7253  
  7254  	// The name of the virtual router that the route is associated with.
  7255  	//
  7256  	// VirtualRouterName is a required field
  7257  	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
  7258  }
  7259  
  7260  // String returns the string representation.
  7261  //
  7262  // API parameter values that are decorated as "sensitive" in the API will not
  7263  // be included in the string output. The member name will be present, but the
  7264  // value will be replaced with "sensitive".
  7265  func (s DescribeRouteInput) String() string {
  7266  	return awsutil.Prettify(s)
  7267  }
  7268  
  7269  // GoString returns the string representation.
  7270  //
  7271  // API parameter values that are decorated as "sensitive" in the API will not
  7272  // be included in the string output. The member name will be present, but the
  7273  // value will be replaced with "sensitive".
  7274  func (s DescribeRouteInput) GoString() string {
  7275  	return s.String()
  7276  }
  7277  
  7278  // Validate inspects the fields of the type to determine if they are valid.
  7279  func (s *DescribeRouteInput) Validate() error {
  7280  	invalidParams := request.ErrInvalidParams{Context: "DescribeRouteInput"}
  7281  	if s.MeshName == nil {
  7282  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  7283  	}
  7284  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  7285  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  7286  	}
  7287  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  7288  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  7289  	}
  7290  	if s.RouteName == nil {
  7291  		invalidParams.Add(request.NewErrParamRequired("RouteName"))
  7292  	}
  7293  	if s.RouteName != nil && len(*s.RouteName) < 1 {
  7294  		invalidParams.Add(request.NewErrParamMinLen("RouteName", 1))
  7295  	}
  7296  	if s.VirtualRouterName == nil {
  7297  		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
  7298  	}
  7299  	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
  7300  		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
  7301  	}
  7302  
  7303  	if invalidParams.Len() > 0 {
  7304  		return invalidParams
  7305  	}
  7306  	return nil
  7307  }
  7308  
  7309  // SetMeshName sets the MeshName field's value.
  7310  func (s *DescribeRouteInput) SetMeshName(v string) *DescribeRouteInput {
  7311  	s.MeshName = &v
  7312  	return s
  7313  }
  7314  
  7315  // SetMeshOwner sets the MeshOwner field's value.
  7316  func (s *DescribeRouteInput) SetMeshOwner(v string) *DescribeRouteInput {
  7317  	s.MeshOwner = &v
  7318  	return s
  7319  }
  7320  
  7321  // SetRouteName sets the RouteName field's value.
  7322  func (s *DescribeRouteInput) SetRouteName(v string) *DescribeRouteInput {
  7323  	s.RouteName = &v
  7324  	return s
  7325  }
  7326  
  7327  // SetVirtualRouterName sets the VirtualRouterName field's value.
  7328  func (s *DescribeRouteInput) SetVirtualRouterName(v string) *DescribeRouteInput {
  7329  	s.VirtualRouterName = &v
  7330  	return s
  7331  }
  7332  
  7333  type DescribeRouteOutput struct {
  7334  	_ struct{} `type:"structure" payload:"Route"`
  7335  
  7336  	// The full description of your route.
  7337  	//
  7338  	// Route is a required field
  7339  	Route *RouteData `locationName:"route" type:"structure" required:"true"`
  7340  }
  7341  
  7342  // String returns the string representation.
  7343  //
  7344  // API parameter values that are decorated as "sensitive" in the API will not
  7345  // be included in the string output. The member name will be present, but the
  7346  // value will be replaced with "sensitive".
  7347  func (s DescribeRouteOutput) String() string {
  7348  	return awsutil.Prettify(s)
  7349  }
  7350  
  7351  // GoString returns the string representation.
  7352  //
  7353  // API parameter values that are decorated as "sensitive" in the API will not
  7354  // be included in the string output. The member name will be present, but the
  7355  // value will be replaced with "sensitive".
  7356  func (s DescribeRouteOutput) GoString() string {
  7357  	return s.String()
  7358  }
  7359  
  7360  // SetRoute sets the Route field's value.
  7361  func (s *DescribeRouteOutput) SetRoute(v *RouteData) *DescribeRouteOutput {
  7362  	s.Route = v
  7363  	return s
  7364  }
  7365  
  7366  type DescribeVirtualGatewayInput struct {
  7367  	_ struct{} `type:"structure" nopayload:"true"`
  7368  
  7369  	// The name of the service mesh that the gateway route resides in.
  7370  	//
  7371  	// MeshName is a required field
  7372  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  7373  
  7374  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  7375  	// your own, then it's the ID of the account that shared the mesh with your
  7376  	// account. For more information about mesh sharing, see Working with shared
  7377  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  7378  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  7379  
  7380  	// The name of the virtual gateway to describe.
  7381  	//
  7382  	// VirtualGatewayName is a required field
  7383  	VirtualGatewayName *string `location:"uri" locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
  7384  }
  7385  
  7386  // String returns the string representation.
  7387  //
  7388  // API parameter values that are decorated as "sensitive" in the API will not
  7389  // be included in the string output. The member name will be present, but the
  7390  // value will be replaced with "sensitive".
  7391  func (s DescribeVirtualGatewayInput) String() string {
  7392  	return awsutil.Prettify(s)
  7393  }
  7394  
  7395  // GoString returns the string representation.
  7396  //
  7397  // API parameter values that are decorated as "sensitive" in the API will not
  7398  // be included in the string output. The member name will be present, but the
  7399  // value will be replaced with "sensitive".
  7400  func (s DescribeVirtualGatewayInput) GoString() string {
  7401  	return s.String()
  7402  }
  7403  
  7404  // Validate inspects the fields of the type to determine if they are valid.
  7405  func (s *DescribeVirtualGatewayInput) Validate() error {
  7406  	invalidParams := request.ErrInvalidParams{Context: "DescribeVirtualGatewayInput"}
  7407  	if s.MeshName == nil {
  7408  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  7409  	}
  7410  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  7411  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  7412  	}
  7413  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  7414  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  7415  	}
  7416  	if s.VirtualGatewayName == nil {
  7417  		invalidParams.Add(request.NewErrParamRequired("VirtualGatewayName"))
  7418  	}
  7419  	if s.VirtualGatewayName != nil && len(*s.VirtualGatewayName) < 1 {
  7420  		invalidParams.Add(request.NewErrParamMinLen("VirtualGatewayName", 1))
  7421  	}
  7422  
  7423  	if invalidParams.Len() > 0 {
  7424  		return invalidParams
  7425  	}
  7426  	return nil
  7427  }
  7428  
  7429  // SetMeshName sets the MeshName field's value.
  7430  func (s *DescribeVirtualGatewayInput) SetMeshName(v string) *DescribeVirtualGatewayInput {
  7431  	s.MeshName = &v
  7432  	return s
  7433  }
  7434  
  7435  // SetMeshOwner sets the MeshOwner field's value.
  7436  func (s *DescribeVirtualGatewayInput) SetMeshOwner(v string) *DescribeVirtualGatewayInput {
  7437  	s.MeshOwner = &v
  7438  	return s
  7439  }
  7440  
  7441  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
  7442  func (s *DescribeVirtualGatewayInput) SetVirtualGatewayName(v string) *DescribeVirtualGatewayInput {
  7443  	s.VirtualGatewayName = &v
  7444  	return s
  7445  }
  7446  
  7447  type DescribeVirtualGatewayOutput struct {
  7448  	_ struct{} `type:"structure" payload:"VirtualGateway"`
  7449  
  7450  	// The full description of your virtual gateway.
  7451  	//
  7452  	// VirtualGateway is a required field
  7453  	VirtualGateway *VirtualGatewayData `locationName:"virtualGateway" type:"structure" required:"true"`
  7454  }
  7455  
  7456  // String returns the string representation.
  7457  //
  7458  // API parameter values that are decorated as "sensitive" in the API will not
  7459  // be included in the string output. The member name will be present, but the
  7460  // value will be replaced with "sensitive".
  7461  func (s DescribeVirtualGatewayOutput) String() string {
  7462  	return awsutil.Prettify(s)
  7463  }
  7464  
  7465  // GoString returns the string representation.
  7466  //
  7467  // API parameter values that are decorated as "sensitive" in the API will not
  7468  // be included in the string output. The member name will be present, but the
  7469  // value will be replaced with "sensitive".
  7470  func (s DescribeVirtualGatewayOutput) GoString() string {
  7471  	return s.String()
  7472  }
  7473  
  7474  // SetVirtualGateway sets the VirtualGateway field's value.
  7475  func (s *DescribeVirtualGatewayOutput) SetVirtualGateway(v *VirtualGatewayData) *DescribeVirtualGatewayOutput {
  7476  	s.VirtualGateway = v
  7477  	return s
  7478  }
  7479  
  7480  type DescribeVirtualNodeInput struct {
  7481  	_ struct{} `type:"structure" nopayload:"true"`
  7482  
  7483  	// The name of the service mesh that the virtual node resides in.
  7484  	//
  7485  	// MeshName is a required field
  7486  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  7487  
  7488  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  7489  	// your own, then it's the ID of the account that shared the mesh with your
  7490  	// account. For more information about mesh sharing, see Working with shared
  7491  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  7492  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  7493  
  7494  	// The name of the virtual node to describe.
  7495  	//
  7496  	// VirtualNodeName is a required field
  7497  	VirtualNodeName *string `location:"uri" locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
  7498  }
  7499  
  7500  // String returns the string representation.
  7501  //
  7502  // API parameter values that are decorated as "sensitive" in the API will not
  7503  // be included in the string output. The member name will be present, but the
  7504  // value will be replaced with "sensitive".
  7505  func (s DescribeVirtualNodeInput) String() string {
  7506  	return awsutil.Prettify(s)
  7507  }
  7508  
  7509  // GoString returns the string representation.
  7510  //
  7511  // API parameter values that are decorated as "sensitive" in the API will not
  7512  // be included in the string output. The member name will be present, but the
  7513  // value will be replaced with "sensitive".
  7514  func (s DescribeVirtualNodeInput) GoString() string {
  7515  	return s.String()
  7516  }
  7517  
  7518  // Validate inspects the fields of the type to determine if they are valid.
  7519  func (s *DescribeVirtualNodeInput) Validate() error {
  7520  	invalidParams := request.ErrInvalidParams{Context: "DescribeVirtualNodeInput"}
  7521  	if s.MeshName == nil {
  7522  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  7523  	}
  7524  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  7525  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  7526  	}
  7527  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  7528  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  7529  	}
  7530  	if s.VirtualNodeName == nil {
  7531  		invalidParams.Add(request.NewErrParamRequired("VirtualNodeName"))
  7532  	}
  7533  	if s.VirtualNodeName != nil && len(*s.VirtualNodeName) < 1 {
  7534  		invalidParams.Add(request.NewErrParamMinLen("VirtualNodeName", 1))
  7535  	}
  7536  
  7537  	if invalidParams.Len() > 0 {
  7538  		return invalidParams
  7539  	}
  7540  	return nil
  7541  }
  7542  
  7543  // SetMeshName sets the MeshName field's value.
  7544  func (s *DescribeVirtualNodeInput) SetMeshName(v string) *DescribeVirtualNodeInput {
  7545  	s.MeshName = &v
  7546  	return s
  7547  }
  7548  
  7549  // SetMeshOwner sets the MeshOwner field's value.
  7550  func (s *DescribeVirtualNodeInput) SetMeshOwner(v string) *DescribeVirtualNodeInput {
  7551  	s.MeshOwner = &v
  7552  	return s
  7553  }
  7554  
  7555  // SetVirtualNodeName sets the VirtualNodeName field's value.
  7556  func (s *DescribeVirtualNodeInput) SetVirtualNodeName(v string) *DescribeVirtualNodeInput {
  7557  	s.VirtualNodeName = &v
  7558  	return s
  7559  }
  7560  
  7561  type DescribeVirtualNodeOutput struct {
  7562  	_ struct{} `type:"structure" payload:"VirtualNode"`
  7563  
  7564  	// The full description of your virtual node.
  7565  	//
  7566  	// VirtualNode is a required field
  7567  	VirtualNode *VirtualNodeData `locationName:"virtualNode" type:"structure" required:"true"`
  7568  }
  7569  
  7570  // String returns the string representation.
  7571  //
  7572  // API parameter values that are decorated as "sensitive" in the API will not
  7573  // be included in the string output. The member name will be present, but the
  7574  // value will be replaced with "sensitive".
  7575  func (s DescribeVirtualNodeOutput) String() string {
  7576  	return awsutil.Prettify(s)
  7577  }
  7578  
  7579  // GoString returns the string representation.
  7580  //
  7581  // API parameter values that are decorated as "sensitive" in the API will not
  7582  // be included in the string output. The member name will be present, but the
  7583  // value will be replaced with "sensitive".
  7584  func (s DescribeVirtualNodeOutput) GoString() string {
  7585  	return s.String()
  7586  }
  7587  
  7588  // SetVirtualNode sets the VirtualNode field's value.
  7589  func (s *DescribeVirtualNodeOutput) SetVirtualNode(v *VirtualNodeData) *DescribeVirtualNodeOutput {
  7590  	s.VirtualNode = v
  7591  	return s
  7592  }
  7593  
  7594  type DescribeVirtualRouterInput struct {
  7595  	_ struct{} `type:"structure" nopayload:"true"`
  7596  
  7597  	// The name of the service mesh that the virtual router resides in.
  7598  	//
  7599  	// MeshName is a required field
  7600  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  7601  
  7602  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  7603  	// your own, then it's the ID of the account that shared the mesh with your
  7604  	// account. For more information about mesh sharing, see Working with shared
  7605  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  7606  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  7607  
  7608  	// The name of the virtual router to describe.
  7609  	//
  7610  	// VirtualRouterName is a required field
  7611  	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
  7612  }
  7613  
  7614  // String returns the string representation.
  7615  //
  7616  // API parameter values that are decorated as "sensitive" in the API will not
  7617  // be included in the string output. The member name will be present, but the
  7618  // value will be replaced with "sensitive".
  7619  func (s DescribeVirtualRouterInput) String() string {
  7620  	return awsutil.Prettify(s)
  7621  }
  7622  
  7623  // GoString returns the string representation.
  7624  //
  7625  // API parameter values that are decorated as "sensitive" in the API will not
  7626  // be included in the string output. The member name will be present, but the
  7627  // value will be replaced with "sensitive".
  7628  func (s DescribeVirtualRouterInput) GoString() string {
  7629  	return s.String()
  7630  }
  7631  
  7632  // Validate inspects the fields of the type to determine if they are valid.
  7633  func (s *DescribeVirtualRouterInput) Validate() error {
  7634  	invalidParams := request.ErrInvalidParams{Context: "DescribeVirtualRouterInput"}
  7635  	if s.MeshName == nil {
  7636  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  7637  	}
  7638  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  7639  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  7640  	}
  7641  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  7642  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  7643  	}
  7644  	if s.VirtualRouterName == nil {
  7645  		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
  7646  	}
  7647  	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
  7648  		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
  7649  	}
  7650  
  7651  	if invalidParams.Len() > 0 {
  7652  		return invalidParams
  7653  	}
  7654  	return nil
  7655  }
  7656  
  7657  // SetMeshName sets the MeshName field's value.
  7658  func (s *DescribeVirtualRouterInput) SetMeshName(v string) *DescribeVirtualRouterInput {
  7659  	s.MeshName = &v
  7660  	return s
  7661  }
  7662  
  7663  // SetMeshOwner sets the MeshOwner field's value.
  7664  func (s *DescribeVirtualRouterInput) SetMeshOwner(v string) *DescribeVirtualRouterInput {
  7665  	s.MeshOwner = &v
  7666  	return s
  7667  }
  7668  
  7669  // SetVirtualRouterName sets the VirtualRouterName field's value.
  7670  func (s *DescribeVirtualRouterInput) SetVirtualRouterName(v string) *DescribeVirtualRouterInput {
  7671  	s.VirtualRouterName = &v
  7672  	return s
  7673  }
  7674  
  7675  type DescribeVirtualRouterOutput struct {
  7676  	_ struct{} `type:"structure" payload:"VirtualRouter"`
  7677  
  7678  	// The full description of your virtual router.
  7679  	//
  7680  	// VirtualRouter is a required field
  7681  	VirtualRouter *VirtualRouterData `locationName:"virtualRouter" type:"structure" required:"true"`
  7682  }
  7683  
  7684  // String returns the string representation.
  7685  //
  7686  // API parameter values that are decorated as "sensitive" in the API will not
  7687  // be included in the string output. The member name will be present, but the
  7688  // value will be replaced with "sensitive".
  7689  func (s DescribeVirtualRouterOutput) String() string {
  7690  	return awsutil.Prettify(s)
  7691  }
  7692  
  7693  // GoString returns the string representation.
  7694  //
  7695  // API parameter values that are decorated as "sensitive" in the API will not
  7696  // be included in the string output. The member name will be present, but the
  7697  // value will be replaced with "sensitive".
  7698  func (s DescribeVirtualRouterOutput) GoString() string {
  7699  	return s.String()
  7700  }
  7701  
  7702  // SetVirtualRouter sets the VirtualRouter field's value.
  7703  func (s *DescribeVirtualRouterOutput) SetVirtualRouter(v *VirtualRouterData) *DescribeVirtualRouterOutput {
  7704  	s.VirtualRouter = v
  7705  	return s
  7706  }
  7707  
  7708  type DescribeVirtualServiceInput struct {
  7709  	_ struct{} `type:"structure" nopayload:"true"`
  7710  
  7711  	// The name of the service mesh that the virtual service resides in.
  7712  	//
  7713  	// MeshName is a required field
  7714  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
  7715  
  7716  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  7717  	// your own, then it's the ID of the account that shared the mesh with your
  7718  	// account. For more information about mesh sharing, see Working with shared
  7719  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  7720  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
  7721  
  7722  	// The name of the virtual service to describe.
  7723  	//
  7724  	// VirtualServiceName is a required field
  7725  	VirtualServiceName *string `location:"uri" locationName:"virtualServiceName" type:"string" required:"true"`
  7726  }
  7727  
  7728  // String returns the string representation.
  7729  //
  7730  // API parameter values that are decorated as "sensitive" in the API will not
  7731  // be included in the string output. The member name will be present, but the
  7732  // value will be replaced with "sensitive".
  7733  func (s DescribeVirtualServiceInput) String() string {
  7734  	return awsutil.Prettify(s)
  7735  }
  7736  
  7737  // GoString returns the string representation.
  7738  //
  7739  // API parameter values that are decorated as "sensitive" in the API will not
  7740  // be included in the string output. The member name will be present, but the
  7741  // value will be replaced with "sensitive".
  7742  func (s DescribeVirtualServiceInput) GoString() string {
  7743  	return s.String()
  7744  }
  7745  
  7746  // Validate inspects the fields of the type to determine if they are valid.
  7747  func (s *DescribeVirtualServiceInput) Validate() error {
  7748  	invalidParams := request.ErrInvalidParams{Context: "DescribeVirtualServiceInput"}
  7749  	if s.MeshName == nil {
  7750  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
  7751  	}
  7752  	if s.MeshName != nil && len(*s.MeshName) < 1 {
  7753  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
  7754  	}
  7755  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
  7756  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
  7757  	}
  7758  	if s.VirtualServiceName == nil {
  7759  		invalidParams.Add(request.NewErrParamRequired("VirtualServiceName"))
  7760  	}
  7761  	if s.VirtualServiceName != nil && len(*s.VirtualServiceName) < 1 {
  7762  		invalidParams.Add(request.NewErrParamMinLen("VirtualServiceName", 1))
  7763  	}
  7764  
  7765  	if invalidParams.Len() > 0 {
  7766  		return invalidParams
  7767  	}
  7768  	return nil
  7769  }
  7770  
  7771  // SetMeshName sets the MeshName field's value.
  7772  func (s *DescribeVirtualServiceInput) SetMeshName(v string) *DescribeVirtualServiceInput {
  7773  	s.MeshName = &v
  7774  	return s
  7775  }
  7776  
  7777  // SetMeshOwner sets the MeshOwner field's value.
  7778  func (s *DescribeVirtualServiceInput) SetMeshOwner(v string) *DescribeVirtualServiceInput {
  7779  	s.MeshOwner = &v
  7780  	return s
  7781  }
  7782  
  7783  // SetVirtualServiceName sets the VirtualServiceName field's value.
  7784  func (s *DescribeVirtualServiceInput) SetVirtualServiceName(v string) *DescribeVirtualServiceInput {
  7785  	s.VirtualServiceName = &v
  7786  	return s
  7787  }
  7788  
  7789  type DescribeVirtualServiceOutput struct {
  7790  	_ struct{} `type:"structure" payload:"VirtualService"`
  7791  
  7792  	// The full description of your virtual service.
  7793  	//
  7794  	// VirtualService is a required field
  7795  	VirtualService *VirtualServiceData `locationName:"virtualService" type:"structure" required:"true"`
  7796  }
  7797  
  7798  // String returns the string representation.
  7799  //
  7800  // API parameter values that are decorated as "sensitive" in the API will not
  7801  // be included in the string output. The member name will be present, but the
  7802  // value will be replaced with "sensitive".
  7803  func (s DescribeVirtualServiceOutput) String() string {
  7804  	return awsutil.Prettify(s)
  7805  }
  7806  
  7807  // GoString returns the string representation.
  7808  //
  7809  // API parameter values that are decorated as "sensitive" in the API will not
  7810  // be included in the string output. The member name will be present, but the
  7811  // value will be replaced with "sensitive".
  7812  func (s DescribeVirtualServiceOutput) GoString() string {
  7813  	return s.String()
  7814  }
  7815  
  7816  // SetVirtualService sets the VirtualService field's value.
  7817  func (s *DescribeVirtualServiceOutput) SetVirtualService(v *VirtualServiceData) *DescribeVirtualServiceOutput {
  7818  	s.VirtualService = v
  7819  	return s
  7820  }
  7821  
  7822  // An object that represents the DNS service discovery information for your
  7823  // virtual node.
  7824  type DnsServiceDiscovery struct {
  7825  	_ struct{} `type:"structure"`
  7826  
  7827  	// Specifies the DNS service discovery hostname for the virtual node.
  7828  	//
  7829  	// Hostname is a required field
  7830  	Hostname *string `locationName:"hostname" type:"string" required:"true"`
  7831  
  7832  	// Specifies the DNS response type for the virtual node.
  7833  	ResponseType *string `locationName:"responseType" type:"string" enum:"DnsResponseType"`
  7834  }
  7835  
  7836  // String returns the string representation.
  7837  //
  7838  // API parameter values that are decorated as "sensitive" in the API will not
  7839  // be included in the string output. The member name will be present, but the
  7840  // value will be replaced with "sensitive".
  7841  func (s DnsServiceDiscovery) String() string {
  7842  	return awsutil.Prettify(s)
  7843  }
  7844  
  7845  // GoString returns the string representation.
  7846  //
  7847  // API parameter values that are decorated as "sensitive" in the API will not
  7848  // be included in the string output. The member name will be present, but the
  7849  // value will be replaced with "sensitive".
  7850  func (s DnsServiceDiscovery) GoString() string {
  7851  	return s.String()
  7852  }
  7853  
  7854  // Validate inspects the fields of the type to determine if they are valid.
  7855  func (s *DnsServiceDiscovery) Validate() error {
  7856  	invalidParams := request.ErrInvalidParams{Context: "DnsServiceDiscovery"}
  7857  	if s.Hostname == nil {
  7858  		invalidParams.Add(request.NewErrParamRequired("Hostname"))
  7859  	}
  7860  
  7861  	if invalidParams.Len() > 0 {
  7862  		return invalidParams
  7863  	}
  7864  	return nil
  7865  }
  7866  
  7867  // SetHostname sets the Hostname field's value.
  7868  func (s *DnsServiceDiscovery) SetHostname(v string) *DnsServiceDiscovery {
  7869  	s.Hostname = &v
  7870  	return s
  7871  }
  7872  
  7873  // SetResponseType sets the ResponseType field's value.
  7874  func (s *DnsServiceDiscovery) SetResponseType(v string) *DnsServiceDiscovery {
  7875  	s.ResponseType = &v
  7876  	return s
  7877  }
  7878  
  7879  // An object that represents a duration of time.
  7880  type Duration struct {
  7881  	_ struct{} `type:"structure"`
  7882  
  7883  	// A unit of time.
  7884  	Unit *string `locationName:"unit" type:"string" enum:"DurationUnit"`
  7885  
  7886  	// A number of time units.
  7887  	Value *int64 `locationName:"value" type:"long"`
  7888  }
  7889  
  7890  // String returns the string representation.
  7891  //
  7892  // API parameter values that are decorated as "sensitive" in the API will not
  7893  // be included in the string output. The member name will be present, but the
  7894  // value will be replaced with "sensitive".
  7895  func (s Duration) String() string {
  7896  	return awsutil.Prettify(s)
  7897  }
  7898  
  7899  // GoString returns the string representation.
  7900  //
  7901  // API parameter values that are decorated as "sensitive" in the API will not
  7902  // be included in the string output. The member name will be present, but the
  7903  // value will be replaced with "sensitive".
  7904  func (s Duration) GoString() string {
  7905  	return s.String()
  7906  }
  7907  
  7908  // SetUnit sets the Unit field's value.
  7909  func (s *Duration) SetUnit(v string) *Duration {
  7910  	s.Unit = &v
  7911  	return s
  7912  }
  7913  
  7914  // SetValue sets the Value field's value.
  7915  func (s *Duration) SetValue(v int64) *Duration {
  7916  	s.Value = &v
  7917  	return s
  7918  }
  7919  
  7920  // An object that represents the egress filter rules for a service mesh.
  7921  type EgressFilter struct {
  7922  	_ struct{} `type:"structure"`
  7923  
  7924  	// The egress filter type. By default, the type is DROP_ALL, which allows egress
  7925  	// only from virtual nodes to other defined resources in the service mesh (and
  7926  	// any traffic to *.amazonaws.com for Amazon Web Services API calls). You can
  7927  	// set the egress filter type to ALLOW_ALL to allow egress to any endpoint inside
  7928  	// or outside of the service mesh.
  7929  	//
  7930  	// Type is a required field
  7931  	Type *string `locationName:"type" type:"string" required:"true" enum:"EgressFilterType"`
  7932  }
  7933  
  7934  // String returns the string representation.
  7935  //
  7936  // API parameter values that are decorated as "sensitive" in the API will not
  7937  // be included in the string output. The member name will be present, but the
  7938  // value will be replaced with "sensitive".
  7939  func (s EgressFilter) String() string {
  7940  	return awsutil.Prettify(s)
  7941  }
  7942  
  7943  // GoString returns the string representation.
  7944  //
  7945  // API parameter values that are decorated as "sensitive" in the API will not
  7946  // be included in the string output. The member name will be present, but the
  7947  // value will be replaced with "sensitive".
  7948  func (s EgressFilter) GoString() string {
  7949  	return s.String()
  7950  }
  7951  
  7952  // Validate inspects the fields of the type to determine if they are valid.
  7953  func (s *EgressFilter) Validate() error {
  7954  	invalidParams := request.ErrInvalidParams{Context: "EgressFilter"}
  7955  	if s.Type == nil {
  7956  		invalidParams.Add(request.NewErrParamRequired("Type"))
  7957  	}
  7958  
  7959  	if invalidParams.Len() > 0 {
  7960  		return invalidParams
  7961  	}
  7962  	return nil
  7963  }
  7964  
  7965  // SetType sets the Type field's value.
  7966  func (s *EgressFilter) SetType(v string) *EgressFilter {
  7967  	s.Type = &v
  7968  	return s
  7969  }
  7970  
  7971  // An object that represents an access log file.
  7972  type FileAccessLog struct {
  7973  	_ struct{} `type:"structure"`
  7974  
  7975  	// The file path to write access logs to. You can use /dev/stdout to send access
  7976  	// logs to standard out and configure your Envoy container to use a log driver,
  7977  	// such as awslogs, to export the access logs to a log storage service such
  7978  	// as Amazon CloudWatch Logs. You can also specify a path in the Envoy container's
  7979  	// file system to write the files to disk.
  7980  	//
  7981  	// The Envoy process must have write permissions to the path that you specify
  7982  	// here. Otherwise, Envoy fails to bootstrap properly.
  7983  	//
  7984  	// Path is a required field
  7985  	Path *string `locationName:"path" min:"1" type:"string" required:"true"`
  7986  }
  7987  
  7988  // String returns the string representation.
  7989  //
  7990  // API parameter values that are decorated as "sensitive" in the API will not
  7991  // be included in the string output. The member name will be present, but the
  7992  // value will be replaced with "sensitive".
  7993  func (s FileAccessLog) String() string {
  7994  	return awsutil.Prettify(s)
  7995  }
  7996  
  7997  // GoString returns the string representation.
  7998  //
  7999  // API parameter values that are decorated as "sensitive" in the API will not
  8000  // be included in the string output. The member name will be present, but the
  8001  // value will be replaced with "sensitive".
  8002  func (s FileAccessLog) GoString() string {
  8003  	return s.String()
  8004  }
  8005  
  8006  // Validate inspects the fields of the type to determine if they are valid.
  8007  func (s *FileAccessLog) Validate() error {
  8008  	invalidParams := request.ErrInvalidParams{Context: "FileAccessLog"}
  8009  	if s.Path == nil {
  8010  		invalidParams.Add(request.NewErrParamRequired("Path"))
  8011  	}
  8012  	if s.Path != nil && len(*s.Path) < 1 {
  8013  		invalidParams.Add(request.NewErrParamMinLen("Path", 1))
  8014  	}
  8015  
  8016  	if invalidParams.Len() > 0 {
  8017  		return invalidParams
  8018  	}
  8019  	return nil
  8020  }
  8021  
  8022  // SetPath sets the Path field's value.
  8023  func (s *FileAccessLog) SetPath(v string) *FileAccessLog {
  8024  	s.Path = &v
  8025  	return s
  8026  }
  8027  
  8028  // You don't have permissions to perform this action.
  8029  type ForbiddenException struct {
  8030  	_            struct{}                  `type:"structure"`
  8031  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  8032  
  8033  	Message_ *string `locationName:"message" type:"string"`
  8034  }
  8035  
  8036  // String returns the string representation.
  8037  //
  8038  // API parameter values that are decorated as "sensitive" in the API will not
  8039  // be included in the string output. The member name will be present, but the
  8040  // value will be replaced with "sensitive".
  8041  func (s ForbiddenException) String() string {
  8042  	return awsutil.Prettify(s)
  8043  }
  8044  
  8045  // GoString returns the string representation.
  8046  //
  8047  // API parameter values that are decorated as "sensitive" in the API will not
  8048  // be included in the string output. The member name will be present, but the
  8049  // value will be replaced with "sensitive".
  8050  func (s ForbiddenException) GoString() string {
  8051  	return s.String()
  8052  }
  8053  
  8054  func newErrorForbiddenException(v protocol.ResponseMetadata) error {
  8055  	return &ForbiddenException{
  8056  		RespMetadata: v,
  8057  	}
  8058  }
  8059  
  8060  // Code returns the exception type name.
  8061  func (s *ForbiddenException) Code() string {
  8062  	return "ForbiddenException"
  8063  }
  8064  
  8065  // Message returns the exception's message.
  8066  func (s *ForbiddenException) Message() string {
  8067  	if s.Message_ != nil {
  8068  		return *s.Message_
  8069  	}
  8070  	return ""
  8071  }
  8072  
  8073  // OrigErr always returns nil, satisfies awserr.Error interface.
  8074  func (s *ForbiddenException) OrigErr() error {
  8075  	return nil
  8076  }
  8077  
  8078  func (s *ForbiddenException) Error() string {
  8079  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  8080  }
  8081  
  8082  // Status code returns the HTTP status code for the request's response error.
  8083  func (s *ForbiddenException) StatusCode() int {
  8084  	return s.RespMetadata.StatusCode
  8085  }
  8086  
  8087  // RequestID returns the service's response RequestID for request.
  8088  func (s *ForbiddenException) RequestID() string {
  8089  	return s.RespMetadata.RequestID
  8090  }
  8091  
  8092  // An object that represents a gateway route returned by a describe operation.
  8093  type GatewayRouteData struct {
  8094  	_ struct{} `type:"structure"`
  8095  
  8096  	// The name of the gateway route.
  8097  	//
  8098  	// GatewayRouteName is a required field
  8099  	GatewayRouteName *string `locationName:"gatewayRouteName" min:"1" type:"string" required:"true"`
  8100  
  8101  	// The name of the service mesh that the resource resides in.
  8102  	//
  8103  	// MeshName is a required field
  8104  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
  8105  
  8106  	// An object that represents metadata for a resource.
  8107  	//
  8108  	// Metadata is a required field
  8109  	Metadata *ResourceMetadata `locationName:"metadata" type:"structure" required:"true"`
  8110  
  8111  	// The specifications of the gateway route.
  8112  	//
  8113  	// Spec is a required field
  8114  	Spec *GatewayRouteSpec `locationName:"spec" type:"structure" required:"true"`
  8115  
  8116  	// The status of the gateway route.
  8117  	//
  8118  	// Status is a required field
  8119  	Status *GatewayRouteStatus `locationName:"status" type:"structure" required:"true"`
  8120  
  8121  	// The virtual gateway that the gateway route is associated with.
  8122  	//
  8123  	// VirtualGatewayName is a required field
  8124  	VirtualGatewayName *string `locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
  8125  }
  8126  
  8127  // String returns the string representation.
  8128  //
  8129  // API parameter values that are decorated as "sensitive" in the API will not
  8130  // be included in the string output. The member name will be present, but the
  8131  // value will be replaced with "sensitive".
  8132  func (s GatewayRouteData) String() string {
  8133  	return awsutil.Prettify(s)
  8134  }
  8135  
  8136  // GoString returns the string representation.
  8137  //
  8138  // API parameter values that are decorated as "sensitive" in the API will not
  8139  // be included in the string output. The member name will be present, but the
  8140  // value will be replaced with "sensitive".
  8141  func (s GatewayRouteData) GoString() string {
  8142  	return s.String()
  8143  }
  8144  
  8145  // SetGatewayRouteName sets the GatewayRouteName field's value.
  8146  func (s *GatewayRouteData) SetGatewayRouteName(v string) *GatewayRouteData {
  8147  	s.GatewayRouteName = &v
  8148  	return s
  8149  }
  8150  
  8151  // SetMeshName sets the MeshName field's value.
  8152  func (s *GatewayRouteData) SetMeshName(v string) *GatewayRouteData {
  8153  	s.MeshName = &v
  8154  	return s
  8155  }
  8156  
  8157  // SetMetadata sets the Metadata field's value.
  8158  func (s *GatewayRouteData) SetMetadata(v *ResourceMetadata) *GatewayRouteData {
  8159  	s.Metadata = v
  8160  	return s
  8161  }
  8162  
  8163  // SetSpec sets the Spec field's value.
  8164  func (s *GatewayRouteData) SetSpec(v *GatewayRouteSpec) *GatewayRouteData {
  8165  	s.Spec = v
  8166  	return s
  8167  }
  8168  
  8169  // SetStatus sets the Status field's value.
  8170  func (s *GatewayRouteData) SetStatus(v *GatewayRouteStatus) *GatewayRouteData {
  8171  	s.Status = v
  8172  	return s
  8173  }
  8174  
  8175  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
  8176  func (s *GatewayRouteData) SetVirtualGatewayName(v string) *GatewayRouteData {
  8177  	s.VirtualGatewayName = &v
  8178  	return s
  8179  }
  8180  
  8181  // An object representing the gateway route host name to match.
  8182  type GatewayRouteHostnameMatch struct {
  8183  	_ struct{} `type:"structure"`
  8184  
  8185  	// The exact host name to match on.
  8186  	Exact *string `locationName:"exact" min:"1" type:"string"`
  8187  
  8188  	// The specified ending characters of the host name to match on.
  8189  	Suffix *string `locationName:"suffix" min:"1" type:"string"`
  8190  }
  8191  
  8192  // String returns the string representation.
  8193  //
  8194  // API parameter values that are decorated as "sensitive" in the API will not
  8195  // be included in the string output. The member name will be present, but the
  8196  // value will be replaced with "sensitive".
  8197  func (s GatewayRouteHostnameMatch) String() string {
  8198  	return awsutil.Prettify(s)
  8199  }
  8200  
  8201  // GoString returns the string representation.
  8202  //
  8203  // API parameter values that are decorated as "sensitive" in the API will not
  8204  // be included in the string output. The member name will be present, but the
  8205  // value will be replaced with "sensitive".
  8206  func (s GatewayRouteHostnameMatch) GoString() string {
  8207  	return s.String()
  8208  }
  8209  
  8210  // Validate inspects the fields of the type to determine if they are valid.
  8211  func (s *GatewayRouteHostnameMatch) Validate() error {
  8212  	invalidParams := request.ErrInvalidParams{Context: "GatewayRouteHostnameMatch"}
  8213  	if s.Exact != nil && len(*s.Exact) < 1 {
  8214  		invalidParams.Add(request.NewErrParamMinLen("Exact", 1))
  8215  	}
  8216  	if s.Suffix != nil && len(*s.Suffix) < 1 {
  8217  		invalidParams.Add(request.NewErrParamMinLen("Suffix", 1))
  8218  	}
  8219  
  8220  	if invalidParams.Len() > 0 {
  8221  		return invalidParams
  8222  	}
  8223  	return nil
  8224  }
  8225  
  8226  // SetExact sets the Exact field's value.
  8227  func (s *GatewayRouteHostnameMatch) SetExact(v string) *GatewayRouteHostnameMatch {
  8228  	s.Exact = &v
  8229  	return s
  8230  }
  8231  
  8232  // SetSuffix sets the Suffix field's value.
  8233  func (s *GatewayRouteHostnameMatch) SetSuffix(v string) *GatewayRouteHostnameMatch {
  8234  	s.Suffix = &v
  8235  	return s
  8236  }
  8237  
  8238  // An object representing the gateway route host name to rewrite.
  8239  type GatewayRouteHostnameRewrite struct {
  8240  	_ struct{} `type:"structure"`
  8241  
  8242  	// The default target host name to write to.
  8243  	DefaultTargetHostname *string `locationName:"defaultTargetHostname" type:"string" enum:"DefaultGatewayRouteRewrite"`
  8244  }
  8245  
  8246  // String returns the string representation.
  8247  //
  8248  // API parameter values that are decorated as "sensitive" in the API will not
  8249  // be included in the string output. The member name will be present, but the
  8250  // value will be replaced with "sensitive".
  8251  func (s GatewayRouteHostnameRewrite) String() string {
  8252  	return awsutil.Prettify(s)
  8253  }
  8254  
  8255  // GoString returns the string representation.
  8256  //
  8257  // API parameter values that are decorated as "sensitive" in the API will not
  8258  // be included in the string output. The member name will be present, but the
  8259  // value will be replaced with "sensitive".
  8260  func (s GatewayRouteHostnameRewrite) GoString() string {
  8261  	return s.String()
  8262  }
  8263  
  8264  // SetDefaultTargetHostname sets the DefaultTargetHostname field's value.
  8265  func (s *GatewayRouteHostnameRewrite) SetDefaultTargetHostname(v string) *GatewayRouteHostnameRewrite {
  8266  	s.DefaultTargetHostname = &v
  8267  	return s
  8268  }
  8269  
  8270  // An object that represents a gateway route returned by a list operation.
  8271  type GatewayRouteRef struct {
  8272  	_ struct{} `type:"structure"`
  8273  
  8274  	// The full Amazon Resource Name (ARN) for the gateway route.
  8275  	//
  8276  	// Arn is a required field
  8277  	Arn *string `locationName:"arn" type:"string" required:"true"`
  8278  
  8279  	// The Unix epoch timestamp in seconds for when the resource was created.
  8280  	//
  8281  	// CreatedAt is a required field
  8282  	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`
  8283  
  8284  	// The name of the gateway route.
  8285  	//
  8286  	// GatewayRouteName is a required field
  8287  	GatewayRouteName *string `locationName:"gatewayRouteName" min:"1" type:"string" required:"true"`
  8288  
  8289  	// The Unix epoch timestamp in seconds for when the resource was last updated.
  8290  	//
  8291  	// LastUpdatedAt is a required field
  8292  	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" required:"true"`
  8293  
  8294  	// The name of the service mesh that the resource resides in.
  8295  	//
  8296  	// MeshName is a required field
  8297  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
  8298  
  8299  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
  8300  	// your own, then it's the ID of the account that shared the mesh with your
  8301  	// account. For more information about mesh sharing, see Working with shared
  8302  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  8303  	//
  8304  	// MeshOwner is a required field
  8305  	MeshOwner *string `locationName:"meshOwner" min:"12" type:"string" required:"true"`
  8306  
  8307  	// The AWS IAM account ID of the resource owner. If the account ID is not your
  8308  	// own, then it's the ID of the mesh owner or of another account that the mesh
  8309  	// is shared with. For more information about mesh sharing, see Working with
  8310  	// shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
  8311  	//
  8312  	// ResourceOwner is a required field
  8313  	ResourceOwner *string `locationName:"resourceOwner" min:"12" type:"string" required:"true"`
  8314  
  8315  	// The version of the resource. Resources are created at version 1, and this
  8316  	// version is incremented each time that they're updated.
  8317  	//
  8318  	// Version is a required field
  8319  	Version *int64 `locationName:"version" type:"long" required:"true"`
  8320  
  8321  	// The virtual gateway that the gateway route is associated with.
  8322  	//
  8323  	// VirtualGatewayName is a required field
  8324  	VirtualGatewayName *string `locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
  8325  }
  8326  
  8327  // String returns the string representation.
  8328  //
  8329  // API parameter values that are decorated as "sensitive" in the API will not
  8330  // be included in the string output. The member name will be present, but the
  8331  // value will be replaced with "sensitive".
  8332  func (s GatewayRouteRef) String() string {
  8333  	return awsutil.Prettify(s)
  8334  }
  8335  
  8336  // GoString returns the string representation.
  8337  //
  8338  // API parameter values that are decorated as "sensitive" in the API will not
  8339  // be included in the string output. The member name will be present, but the
  8340  // value will be replaced with "sensitive".
  8341  func (s GatewayRouteRef) GoString() string {
  8342  	return s.String()
  8343  }
  8344  
  8345  // SetArn sets the Arn field's value.
  8346  func (s *GatewayRouteRef) SetArn(v string) *GatewayRouteRef {
  8347  	s.Arn = &v
  8348  	return s
  8349  }
  8350  
  8351  // SetCreatedAt sets the CreatedAt field's value.
  8352  func (s *GatewayRouteRef) SetCreatedAt(v time.Time) *GatewayRouteRef {
  8353  	s.CreatedAt = &v
  8354  	return s
  8355  }
  8356  
  8357  // SetGatewayRouteName sets the GatewayRouteName field's value.
  8358  func (s *GatewayRouteRef) SetGatewayRouteName(v string) *GatewayRouteRef {
  8359  	s.GatewayRouteName = &v
  8360  	return s
  8361  }
  8362  
  8363  // SetLastUpdatedAt sets the LastUpdatedAt field's value.
  8364  func (s *GatewayRouteRef) SetLastUpdatedAt(v time.Time) *GatewayRouteRef {
  8365  	s.LastUpdatedAt = &v
  8366  	return s
  8367  }
  8368  
  8369  // SetMeshName sets the MeshName field's value.
  8370  func (s *GatewayRouteRef) SetMeshName(v string) *GatewayRouteRef {
  8371  	s.MeshName = &v
  8372  	return s
  8373  }
  8374  
  8375  // SetMeshOwner sets the MeshOwner field's value.
  8376  func (s *GatewayRouteRef) SetMeshOwner(v string) *GatewayRouteRef {
  8377  	s.MeshOwner = &v
  8378  	return s
  8379  }
  8380  
  8381  // SetResourceOwner sets the ResourceOwner field's value.
  8382  func (s *GatewayRouteRef) SetResourceOwner(v string) *GatewayRouteRef {
  8383  	s.ResourceOwner = &v
  8384  	return s
  8385  }
  8386  
  8387  // SetVersion sets the Version field's value.
  8388  func (s *GatewayRouteRef) SetVersion(v int64) *GatewayRouteRef {
  8389  	s.Version = &v
  8390  	return s
  8391  }
  8392  
  8393  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
  8394  func (s *GatewayRouteRef) SetVirtualGatewayName(v string) *GatewayRouteRef {
  8395  	s.VirtualGatewayName = &v
  8396  	return s
  8397  }
  8398  
  8399  // An object that represents a gateway route specification. Specify one gateway
  8400  // route type.
  8401  type GatewayRouteSpec struct {
  8402  	_ struct{} `type:"structure"`
  8403  
  8404  	// An object that represents the specification of a gRPC gateway route.
  8405  	GrpcRoute *GrpcGatewayRoute `locationName:"grpcRoute" type:"structure"`
  8406  
  8407  	// An object that represents the specification of an HTTP/2 gateway route.
  8408  	Http2Route *HttpGatewayRoute `locationName:"http2Route" type:"structure"`
  8409  
  8410  	// An object that represents the specification of an HTTP gateway route.
  8411  	HttpRoute *HttpGatewayRoute `locationName:"httpRoute" type:"structure"`
  8412  
  8413  	// The ordering of the gateway routes spec.
  8414  	Priority *int64 `locationName:"priority" type:"integer"`
  8415  }
  8416  
  8417  // String returns the string representation.
  8418  //
  8419  // API parameter values that are decorated as "sensitive" in the API will not
  8420  // be included in the string output. The member name will be present, but the
  8421  // value will be replaced with "sensitive".
  8422  func (s GatewayRouteSpec) String() string {
  8423  	return awsutil.Prettify(s)
  8424  }
  8425  
  8426  // GoString returns the string representation.
  8427  //
  8428  // API parameter values that are decorated as "sensitive" in the API will not
  8429  // be included in the string output. The member name will be present, but the
  8430  // value will be replaced with "sensitive".
  8431  func (s GatewayRouteSpec) GoString() string {
  8432  	return s.String()
  8433  }
  8434  
  8435  // Validate inspects the fields of the type to determine if they are valid.
  8436  func (s *GatewayRouteSpec) Validate() error {
  8437  	invalidParams := request.ErrInvalidParams{Context: "GatewayRouteSpec"}
  8438  	if s.GrpcRoute != nil {
  8439  		if err := s.GrpcRoute.Validate(); err != nil {
  8440  			invalidParams.AddNested("GrpcRoute", err.(request.ErrInvalidParams))
  8441  		}
  8442  	}
  8443  	if s.Http2Route != nil {
  8444  		if err := s.Http2Route.Validate(); err != nil {
  8445  			invalidParams.AddNested("Http2Route", err.(request.ErrInvalidParams))
  8446  		}
  8447  	}
  8448  	if s.HttpRoute != nil {
  8449  		if err := s.HttpRoute.Validate(); err != nil {
  8450  			invalidParams.AddNested("HttpRoute", err.(request.ErrInvalidParams))
  8451  		}
  8452  	}
  8453  
  8454  	if invalidParams.Len() > 0 {
  8455  		return invalidParams
  8456  	}
  8457  	return nil
  8458  }
  8459  
  8460  // SetGrpcRoute sets the GrpcRoute field's value.
  8461  func (s *GatewayRouteSpec) SetGrpcRoute(v *GrpcGatewayRoute) *GatewayRouteSpec {
  8462  	s.GrpcRoute = v
  8463  	return s
  8464  }
  8465  
  8466  // SetHttp2Route sets the Http2Route field's value.
  8467  func (s *GatewayRouteSpec) SetHttp2Route(v *HttpGatewayRoute) *GatewayRouteSpec {
  8468  	s.Http2Route = v
  8469  	return s
  8470  }
  8471  
  8472  // SetHttpRoute sets the HttpRoute field's value.
  8473  func (s *GatewayRouteSpec) SetHttpRoute(v *HttpGatewayRoute) *GatewayRouteSpec {
  8474  	s.HttpRoute = v
  8475  	return s
  8476  }
  8477  
  8478  // SetPriority sets the Priority field's value.
  8479  func (s *GatewayRouteSpec) SetPriority(v int64) *GatewayRouteSpec {
  8480  	s.Priority = &v
  8481  	return s
  8482  }
  8483  
  8484  // An object that represents the current status of a gateway route.
  8485  type GatewayRouteStatus struct {
  8486  	_ struct{} `type:"structure"`
  8487  
  8488  	// The current status for the gateway route.
  8489  	//
  8490  	// Status is a required field
  8491  	Status *string `locationName:"status" type:"string" required:"true" enum:"GatewayRouteStatusCode"`
  8492  }
  8493  
  8494  // String returns the string representation.
  8495  //
  8496  // API parameter values that are decorated as "sensitive" in the API will not
  8497  // be included in the string output. The member name will be present, but the
  8498  // value will be replaced with "sensitive".
  8499  func (s GatewayRouteStatus) String() string {
  8500  	return awsutil.Prettify(s)
  8501  }
  8502  
  8503  // GoString returns the string representation.
  8504  //
  8505  // API parameter values that are decorated as "sensitive" in the API will not
  8506  // be included in the string output. The member name will be present, but the
  8507  // value will be replaced with "sensitive".
  8508  func (s GatewayRouteStatus) GoString() string {
  8509  	return s.String()
  8510  }
  8511  
  8512  // SetStatus sets the Status field's value.
  8513  func (s *GatewayRouteStatus) SetStatus(v string) *GatewayRouteStatus {
  8514  	s.Status = &v
  8515  	return s
  8516  }
  8517  
  8518  // An object that represents a gateway route target.
  8519  type GatewayRouteTarget struct {
  8520  	_ struct{} `type:"structure"`
  8521  
  8522  	// An object that represents a virtual service gateway route target.
  8523  	//
  8524  	// VirtualService is a required field
  8525  	VirtualService *GatewayRouteVirtualService `locationName:"virtualService" type:"structure" required:"true"`
  8526  }
  8527  
  8528  // String returns the string representation.
  8529  //
  8530  // API parameter values that are decorated as "sensitive" in the API will not
  8531  // be included in the string output. The member name will be present, but the
  8532  // value will be replaced with "sensitive".
  8533  func (s GatewayRouteTarget) String() string {
  8534  	return awsutil.Prettify(s)
  8535  }
  8536  
  8537  // GoString returns the string representation.
  8538  //
  8539  // API parameter values that are decorated as "sensitive" in the API will not
  8540  // be included in the string output. The member name will be present, but the
  8541  // value will be replaced with "sensitive".
  8542  func (s GatewayRouteTarget) GoString() string {
  8543  	return s.String()
  8544  }
  8545  
  8546  // Validate inspects the fields of the type to determine if they are valid.
  8547  func (s *GatewayRouteTarget) Validate() error {
  8548  	invalidParams := request.ErrInvalidParams{Context: "GatewayRouteTarget"}
  8549  	if s.VirtualService == nil {
  8550  		invalidParams.Add(request.NewErrParamRequired("VirtualService"))
  8551  	}
  8552  	if s.VirtualService != nil {
  8553  		if err := s.VirtualService.Validate(); err != nil {
  8554  			invalidParams.AddNested("VirtualService", err.(request.ErrInvalidParams))
  8555  		}
  8556  	}
  8557  
  8558  	if invalidParams.Len() > 0 {
  8559  		return invalidParams
  8560  	}
  8561  	return nil
  8562  }
  8563  
  8564  // SetVirtualService sets the VirtualService field's value.
  8565  func (s *GatewayRouteTarget) SetVirtualService(v *GatewayRouteVirtualService) *GatewayRouteTarget {
  8566  	s.VirtualService = v
  8567  	return s
  8568  }
  8569  
  8570  // An object that represents the virtual service that traffic is routed to.
  8571  type GatewayRouteVirtualService struct {
  8572  	_ struct{} `type:"structure"`
  8573  
  8574  	// The name of the virtual service that traffic is routed to.
  8575  	//
  8576  	// VirtualServiceName is a required field
  8577  	VirtualServiceName *string `locationName:"virtualServiceName" min:"1" type:"string" required:"true"`
  8578  }
  8579  
  8580  // String returns the string representation.
  8581  //
  8582  // API parameter values that are decorated as "sensitive" in the API will not
  8583  // be included in the string output. The member name will be present, but the
  8584  // value will be replaced with "sensitive".
  8585  func (s GatewayRouteVirtualService) String() string {
  8586  	return awsutil.Prettify(s)
  8587  }
  8588  
  8589  // GoString returns the string representation.
  8590  //
  8591  // API parameter values that are decorated as "sensitive" in the API will not
  8592  // be included in the string output. The member name will be present, but the
  8593  // value will be replaced with "sensitive".
  8594  func (s GatewayRouteVirtualService) GoString() string {
  8595  	return s.String()
  8596  }
  8597  
  8598  // Validate inspects the fields of the type to determine if they are valid.
  8599  func (s *GatewayRouteVirtualService) Validate() error {
  8600  	invalidParams := request.ErrInvalidParams{Context: "GatewayRouteVirtualService"}
  8601  	if s.VirtualServiceName == nil {
  8602  		invalidParams.Add(request.NewErrParamRequired("VirtualServiceName"))
  8603  	}
  8604  	if s.VirtualServiceName != nil && len(*s.VirtualServiceName) < 1 {
  8605  		invalidParams.Add(request.NewErrParamMinLen("VirtualServiceName", 1))
  8606  	}
  8607  
  8608  	if invalidParams.Len() > 0 {
  8609  		return invalidParams
  8610  	}
  8611  	return nil
  8612  }
  8613  
  8614  // SetVirtualServiceName sets the VirtualServiceName field's value.
  8615  func (s *GatewayRouteVirtualService) SetVirtualServiceName(v string) *GatewayRouteVirtualService {
  8616  	s.VirtualServiceName = &v
  8617  	return s
  8618  }
  8619  
  8620  // An object that represents a gRPC gateway route.
  8621  type GrpcGatewayRoute struct {
  8622  	_ struct{} `type:"structure"`
  8623  
  8624  	// An object that represents the action to take if a match is determined.
  8625  	//
  8626  	// Action is a required field
  8627  	Action *GrpcGatewayRouteAction `locationName:"action" type:"structure" required:"true"`
  8628  
  8629  	// An object that represents the criteria for determining a request match.
  8630  	//
  8631  	// Match is a required field
  8632  	Match *GrpcGatewayRouteMatch `locationName:"match" type:"structure" required:"true"`
  8633  }
  8634  
  8635  // String returns the string representation.
  8636  //
  8637  // API parameter values that are decorated as "sensitive" in the API will not
  8638  // be included in the string output. The member name will be present, but the
  8639  // value will be replaced with "sensitive".
  8640  func (s GrpcGatewayRoute) String() string {
  8641  	return awsutil.Prettify(s)
  8642  }
  8643  
  8644  // GoString returns the string representation.
  8645  //
  8646  // API parameter values that are decorated as "sensitive" in the API will not
  8647  // be included in the string output. The member name will be present, but the
  8648  // value will be replaced with "sensitive".
  8649  func (s GrpcGatewayRoute) GoString() string {
  8650  	return s.String()
  8651  }
  8652  
  8653  // Validate inspects the fields of the type to determine if they are valid.
  8654  func (s *GrpcGatewayRoute) Validate() error {
  8655  	invalidParams := request.ErrInvalidParams{Context: "GrpcGatewayRoute"}
  8656  	if s.Action == nil {
  8657  		invalidParams.Add(request.NewErrParamRequired("Action"))
  8658  	}
  8659  	if s.Match == nil {
  8660  		invalidParams.Add(request.NewErrParamRequired("Match"))
  8661  	}
  8662  	if s.Action != nil {
  8663  		if err := s.Action.Validate(); err != nil {
  8664  			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
  8665  		}
  8666  	}
  8667  	if s.Match != nil {
  8668  		if err := s.Match.Validate(); err != nil {
  8669  			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
  8670  		}
  8671  	}
  8672  
  8673  	if invalidParams.Len() > 0 {
  8674  		return invalidParams
  8675  	}
  8676  	return nil
  8677  }
  8678  
  8679  // SetAction sets the Action field's value.
  8680  func (s *GrpcGatewayRoute) SetAction(v *GrpcGatewayRouteAction) *GrpcGatewayRoute {
  8681  	s.Action = v
  8682  	return s
  8683  }
  8684  
  8685  // SetMatch sets the Match field's value.
  8686  func (s *GrpcGatewayRoute) SetMatch(v *GrpcGatewayRouteMatch) *GrpcGatewayRoute {
  8687  	s.Match = v
  8688  	return s
  8689  }
  8690  
  8691  // An object that represents the action to take if a match is determined.
  8692  type GrpcGatewayRouteAction struct {
  8693  	_ struct{} `type:"structure"`
  8694  
  8695  	// The gateway route action to rewrite.
  8696  	Rewrite *GrpcGatewayRouteRewrite `locationName:"rewrite" type:"structure"`
  8697  
  8698  	// An object that represents the target that traffic is routed to when a request
  8699  	// matches the gateway route.
  8700  	//
  8701  	// Target is a required field
  8702  	Target *GatewayRouteTarget `locationName:"target" type:"structure" required:"true"`
  8703  }
  8704  
  8705  // String returns the string representation.
  8706  //
  8707  // API parameter values that are decorated as "sensitive" in the API will not
  8708  // be included in the string output. The member name will be present, but the
  8709  // value will be replaced with "sensitive".
  8710  func (s GrpcGatewayRouteAction) String() string {
  8711  	return awsutil.Prettify(s)
  8712  }
  8713  
  8714  // GoString returns the string representation.
  8715  //
  8716  // API parameter values that are decorated as "sensitive" in the API will not
  8717  // be included in the string output. The member name will be present, but the
  8718  // value will be replaced with "sensitive".
  8719  func (s GrpcGatewayRouteAction) GoString() string {
  8720  	return s.String()
  8721  }
  8722  
  8723  // Validate inspects the fields of the type to determine if they are valid.
  8724  func (s *GrpcGatewayRouteAction) Validate() error {
  8725  	invalidParams := request.ErrInvalidParams{Context: "GrpcGatewayRouteAction"}
  8726  	if s.Target == nil {
  8727  		invalidParams.Add(request.NewErrParamRequired("Target"))
  8728  	}
  8729  	if s.Target != nil {
  8730  		if err := s.Target.Validate(); err != nil {
  8731  			invalidParams.AddNested("Target", err.(request.ErrInvalidParams))
  8732  		}
  8733  	}
  8734  
  8735  	if invalidParams.Len() > 0 {
  8736  		return invalidParams
  8737  	}
  8738  	return nil
  8739  }
  8740  
  8741  // SetRewrite sets the Rewrite field's value.
  8742  func (s *GrpcGatewayRouteAction) SetRewrite(v *GrpcGatewayRouteRewrite) *GrpcGatewayRouteAction {
  8743  	s.Rewrite = v
  8744  	return s
  8745  }
  8746  
  8747  // SetTarget sets the Target field's value.
  8748  func (s *GrpcGatewayRouteAction) SetTarget(v *GatewayRouteTarget) *GrpcGatewayRouteAction {
  8749  	s.Target = v
  8750  	return s
  8751  }
  8752  
  8753  // An object that represents the criteria for determining a request match.
  8754  type GrpcGatewayRouteMatch struct {
  8755  	_ struct{} `type:"structure"`
  8756  
  8757  	// The gateway route host name to be matched on.
  8758  	Hostname *GatewayRouteHostnameMatch `locationName:"hostname" type:"structure"`
  8759  
  8760  	// The gateway route metadata to be matched on.
  8761  	Metadata []*GrpcGatewayRouteMetadata `locationName:"metadata" min:"1" type:"list"`
  8762  
  8763  	// The fully qualified domain name for the service to match from the request.
  8764  	ServiceName *string `locationName:"serviceName" type:"string"`
  8765  }
  8766  
  8767  // String returns the string representation.
  8768  //
  8769  // API parameter values that are decorated as "sensitive" in the API will not
  8770  // be included in the string output. The member name will be present, but the
  8771  // value will be replaced with "sensitive".
  8772  func (s GrpcGatewayRouteMatch) String() string {
  8773  	return awsutil.Prettify(s)
  8774  }
  8775  
  8776  // GoString returns the string representation.
  8777  //
  8778  // API parameter values that are decorated as "sensitive" in the API will not
  8779  // be included in the string output. The member name will be present, but the
  8780  // value will be replaced with "sensitive".
  8781  func (s GrpcGatewayRouteMatch) GoString() string {
  8782  	return s.String()
  8783  }
  8784  
  8785  // Validate inspects the fields of the type to determine if they are valid.
  8786  func (s *GrpcGatewayRouteMatch) Validate() error {
  8787  	invalidParams := request.ErrInvalidParams{Context: "GrpcGatewayRouteMatch"}
  8788  	if s.Metadata != nil && len(s.Metadata) < 1 {
  8789  		invalidParams.Add(request.NewErrParamMinLen("Metadata", 1))
  8790  	}
  8791  	if s.Hostname != nil {
  8792  		if err := s.Hostname.Validate(); err != nil {
  8793  			invalidParams.AddNested("Hostname", err.(request.ErrInvalidParams))
  8794  		}
  8795  	}
  8796  	if s.Metadata != nil {
  8797  		for i, v := range s.Metadata {
  8798  			if v == nil {
  8799  				continue
  8800  			}
  8801  			if err := v.Validate(); err != nil {
  8802  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Metadata", i), err.(request.ErrInvalidParams))
  8803  			}
  8804  		}
  8805  	}
  8806  
  8807  	if invalidParams.Len() > 0 {
  8808  		return invalidParams
  8809  	}
  8810  	return nil
  8811  }
  8812  
  8813  // SetHostname sets the Hostname field's value.
  8814  func (s *GrpcGatewayRouteMatch) SetHostname(v *GatewayRouteHostnameMatch) *GrpcGatewayRouteMatch {
  8815  	s.Hostname = v
  8816  	return s
  8817  }
  8818  
  8819  // SetMetadata sets the Metadata field's value.
  8820  func (s *GrpcGatewayRouteMatch) SetMetadata(v []*GrpcGatewayRouteMetadata) *GrpcGatewayRouteMatch {
  8821  	s.Metadata = v
  8822  	return s
  8823  }
  8824  
  8825  // SetServiceName sets the ServiceName field's value.
  8826  func (s *GrpcGatewayRouteMatch) SetServiceName(v string) *GrpcGatewayRouteMatch {
  8827  	s.ServiceName = &v
  8828  	return s
  8829  }
  8830  
  8831  // An object representing the metadata of the gateway route.
  8832  type GrpcGatewayRouteMetadata struct {
  8833  	_ struct{} `type:"structure"`
  8834  
  8835  	// Specify True to match anything except the match criteria. The default value
  8836  	// is False.
  8837  	Invert *bool `locationName:"invert" type:"boolean"`
  8838  
  8839  	// The criteria for determining a metadata match.
  8840  	Match *GrpcMetadataMatchMethod `locationName:"match" type:"structure"`
  8841  
  8842  	// A name for the gateway route metadata.
  8843  	//
  8844  	// Name is a required field
  8845  	Name *string `locationName:"name" min:"1" type:"string" required:"true"`
  8846  }
  8847  
  8848  // String returns the string representation.
  8849  //
  8850  // API parameter values that are decorated as "sensitive" in the API will not
  8851  // be included in the string output. The member name will be present, but the
  8852  // value will be replaced with "sensitive".
  8853  func (s GrpcGatewayRouteMetadata) String() string {
  8854  	return awsutil.Prettify(s)
  8855  }
  8856  
  8857  // GoString returns the string representation.
  8858  //
  8859  // API parameter values that are decorated as "sensitive" in the API will not
  8860  // be included in the string output. The member name will be present, but the
  8861  // value will be replaced with "sensitive".
  8862  func (s GrpcGatewayRouteMetadata) GoString() string {
  8863  	return s.String()
  8864  }
  8865  
  8866  // Validate inspects the fields of the type to determine if they are valid.
  8867  func (s *GrpcGatewayRouteMetadata) Validate() error {
  8868  	invalidParams := request.ErrInvalidParams{Context: "GrpcGatewayRouteMetadata"}
  8869  	if s.Name == nil {
  8870  		invalidParams.Add(request.NewErrParamRequired("Name"))
  8871  	}
  8872  	if s.Name != nil && len(*s.Name) < 1 {
  8873  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  8874  	}
  8875  	if s.Match != nil {
  8876  		if err := s.Match.Validate(); err != nil {
  8877  			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
  8878  		}
  8879  	}
  8880  
  8881  	if invalidParams.Len() > 0 {
  8882  		return invalidParams
  8883  	}
  8884  	return nil
  8885  }
  8886  
  8887  // SetInvert sets the Invert field's value.
  8888  func (s *GrpcGatewayRouteMetadata) SetInvert(v bool) *GrpcGatewayRouteMetadata {
  8889  	s.Invert = &v
  8890  	return s
  8891  }
  8892  
  8893  // SetMatch sets the Match field's value.
  8894  func (s *GrpcGatewayRouteMetadata) SetMatch(v *GrpcMetadataMatchMethod) *GrpcGatewayRouteMetadata {
  8895  	s.Match = v
  8896  	return s
  8897  }
  8898  
  8899  // SetName sets the Name field's value.
  8900  func (s *GrpcGatewayRouteMetadata) SetName(v string) *GrpcGatewayRouteMetadata {
  8901  	s.Name = &v
  8902  	return s
  8903  }
  8904  
  8905  // An object that represents the gateway route to rewrite.
  8906  type GrpcGatewayRouteRewrite struct {
  8907  	_ struct{} `type:"structure"`
  8908  
  8909  	// The host name of the gateway route to rewrite.
  8910  	Hostname *GatewayRouteHostnameRewrite `locationName:"hostname" type:"structure"`
  8911  }
  8912  
  8913  // String returns the string representation.
  8914  //
  8915  // API parameter values that are decorated as "sensitive" in the API will not
  8916  // be included in the string output. The member name will be present, but the
  8917  // value will be replaced with "sensitive".
  8918  func (s GrpcGatewayRouteRewrite) String() string {
  8919  	return awsutil.Prettify(s)
  8920  }
  8921  
  8922  // GoString returns the string representation.
  8923  //
  8924  // API parameter values that are decorated as "sensitive" in the API will not
  8925  // be included in the string output. The member name will be present, but the
  8926  // value will be replaced with "sensitive".
  8927  func (s GrpcGatewayRouteRewrite) GoString() string {
  8928  	return s.String()
  8929  }
  8930  
  8931  // SetHostname sets the Hostname field's value.
  8932  func (s *GrpcGatewayRouteRewrite) SetHostname(v *GatewayRouteHostnameRewrite) *GrpcGatewayRouteRewrite {
  8933  	s.Hostname = v
  8934  	return s
  8935  }
  8936  
  8937  // An object representing the method header to be matched.
  8938  type GrpcMetadataMatchMethod struct {
  8939  	_ struct{} `type:"structure"`
  8940  
  8941  	// The exact method header to be matched on.
  8942  	Exact *string `locationName:"exact" min:"1" type:"string"`
  8943  
  8944  	// The specified beginning characters of the method header to be matched on.
  8945  	Prefix *string `locationName:"prefix" min:"1" type:"string"`
  8946  
  8947  	// An object that represents the range of values to match on. The first character
  8948  	// of the range is included in the range, though the last character is not.
  8949  	// For example, if the range specified were 1-100, only values 1-99 would be
  8950  	// matched.
  8951  	Range *MatchRange `locationName:"range" type:"structure"`
  8952  
  8953  	// The regex used to match the method header.
  8954  	Regex *string `locationName:"regex" min:"1" type:"string"`
  8955  
  8956  	// The specified ending characters of the method header to match on.
  8957  	Suffix *string `locationName:"suffix" min:"1" type:"string"`
  8958  }
  8959  
  8960  // String returns the string representation.
  8961  //
  8962  // API parameter values that are decorated as "sensitive" in the API will not
  8963  // be included in the string output. The member name will be present, but the
  8964  // value will be replaced with "sensitive".
  8965  func (s GrpcMetadataMatchMethod) String() string {
  8966  	return awsutil.Prettify(s)
  8967  }
  8968  
  8969  // GoString returns the string representation.
  8970  //
  8971  // API parameter values that are decorated as "sensitive" in the API will not
  8972  // be included in the string output. The member name will be present, but the
  8973  // value will be replaced with "sensitive".
  8974  func (s GrpcMetadataMatchMethod) GoString() string {
  8975  	return s.String()
  8976  }
  8977  
  8978  // Validate inspects the fields of the type to determine if they are valid.
  8979  func (s *GrpcMetadataMatchMethod) Validate() error {
  8980  	invalidParams := request.ErrInvalidParams{Context: "GrpcMetadataMatchMethod"}
  8981  	if s.Exact != nil && len(*s.Exact) < 1 {
  8982  		invalidParams.Add(request.NewErrParamMinLen("Exact", 1))
  8983  	}
  8984  	if s.Prefix != nil && len(*s.Prefix) < 1 {
  8985  		invalidParams.Add(request.NewErrParamMinLen("Prefix", 1))
  8986  	}
  8987  	if s.Regex != nil && len(*s.Regex) < 1 {
  8988  		invalidParams.Add(request.NewErrParamMinLen("Regex", 1))
  8989  	}
  8990  	if s.Suffix != nil && len(*s.Suffix) < 1 {
  8991  		invalidParams.Add(request.NewErrParamMinLen("Suffix", 1))
  8992  	}
  8993  	if s.Range != nil {
  8994  		if err := s.Range.Validate(); err != nil {
  8995  			invalidParams.AddNested("Range", err.(request.ErrInvalidParams))
  8996  		}
  8997  	}
  8998  
  8999  	if invalidParams.Len() > 0 {
  9000  		return invalidParams
  9001  	}
  9002  	return nil
  9003  }
  9004  
  9005  // SetExact sets the Exact field's value.
  9006  func (s *GrpcMetadataMatchMethod) SetExact(v string) *GrpcMetadataMatchMethod {
  9007  	s.Exact = &v
  9008  	return s
  9009  }
  9010  
  9011  // SetPrefix sets the Prefix field's value.
  9012  func (s *GrpcMetadataMatchMethod) SetPrefix(v string) *GrpcMetadataMatchMethod {
  9013  	s.Prefix = &v
  9014  	return s
  9015  }
  9016  
  9017  // SetRange sets the Range field's value.
  9018  func (s *GrpcMetadataMatchMethod) SetRange(v *MatchRange) *GrpcMetadataMatchMethod {
  9019  	s.Range = v
  9020  	return s
  9021  }
  9022  
  9023  // SetRegex sets the Regex field's value.
  9024  func (s *GrpcMetadataMatchMethod) SetRegex(v string) *GrpcMetadataMatchMethod {
  9025  	s.Regex = &v
  9026  	return s
  9027  }
  9028  
  9029  // SetSuffix sets the Suffix field's value.
  9030  func (s *GrpcMetadataMatchMethod) SetSuffix(v string) *GrpcMetadataMatchMethod {
  9031  	s.Suffix = &v
  9032  	return s
  9033  }
  9034  
  9035  // An object that represents a retry policy. Specify at least one value for
  9036  // at least one of the types of RetryEvents, a value for maxRetries, and a value
  9037  // for perRetryTimeout. Both server-error and gateway-error under httpRetryEvents
  9038  // include the Envoy reset policy. For more information on the reset policy,
  9039  // see the Envoy documentation (https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on).
  9040  type GrpcRetryPolicy struct {
  9041  	_ struct{} `type:"structure"`
  9042  
  9043  	// Specify at least one of the valid values.
  9044  	GrpcRetryEvents []*string `locationName:"grpcRetryEvents" min:"1" type:"list"`
  9045  
  9046  	// Specify at least one of the following values.
  9047  	//
  9048  	//    * server-error – HTTP status codes 500, 501, 502, 503, 504, 505, 506,
  9049  	//    507, 508, 510, and 511
  9050  	//
  9051  	//    * gateway-error – HTTP status codes 502, 503, and 504
  9052  	//
  9053  	//    * client-error – HTTP status code 409
  9054  	//
  9055  	//    * stream-error – Retry on refused stream
  9056  	HttpRetryEvents []*string `locationName:"httpRetryEvents" min:"1" type:"list"`
  9057  
  9058  	// The maximum number of retry attempts.
  9059  	//
  9060  	// MaxRetries is a required field
  9061  	MaxRetries *int64 `locationName:"maxRetries" type:"long" required:"true"`
  9062  
  9063  	// The timeout for each retry attempt.
  9064  	//
  9065  	// PerRetryTimeout is a required field
  9066  	PerRetryTimeout *Duration `locationName:"perRetryTimeout" type:"structure" required:"true"`
  9067  
  9068  	// Specify a valid value. The event occurs before any processing of a request
  9069  	// has started and is encountered when the upstream is temporarily or permanently
  9070  	// unavailable.
  9071  	TcpRetryEvents []*string `locationName:"tcpRetryEvents" min:"1" type:"list"`
  9072  }
  9073  
  9074  // String returns the string representation.
  9075  //
  9076  // API parameter values that are decorated as "sensitive" in the API will not
  9077  // be included in the string output. The member name will be present, but the
  9078  // value will be replaced with "sensitive".
  9079  func (s GrpcRetryPolicy) String() string {
  9080  	return awsutil.Prettify(s)
  9081  }
  9082  
  9083  // GoString returns the string representation.
  9084  //
  9085  // API parameter values that are decorated as "sensitive" in the API will not
  9086  // be included in the string output. The member name will be present, but the
  9087  // value will be replaced with "sensitive".
  9088  func (s GrpcRetryPolicy) GoString() string {
  9089  	return s.String()
  9090  }
  9091  
  9092  // Validate inspects the fields of the type to determine if they are valid.
  9093  func (s *GrpcRetryPolicy) Validate() error {
  9094  	invalidParams := request.ErrInvalidParams{Context: "GrpcRetryPolicy"}
  9095  	if s.GrpcRetryEvents != nil && len(s.GrpcRetryEvents) < 1 {
  9096  		invalidParams.Add(request.NewErrParamMinLen("GrpcRetryEvents", 1))
  9097  	}
  9098  	if s.HttpRetryEvents != nil && len(s.HttpRetryEvents) < 1 {
  9099  		invalidParams.Add(request.NewErrParamMinLen("HttpRetryEvents", 1))
  9100  	}
  9101  	if s.MaxRetries == nil {
  9102  		invalidParams.Add(request.NewErrParamRequired("MaxRetries"))
  9103  	}
  9104  	if s.PerRetryTimeout == nil {
  9105  		invalidParams.Add(request.NewErrParamRequired("PerRetryTimeout"))
  9106  	}
  9107  	if s.TcpRetryEvents != nil && len(s.TcpRetryEvents) < 1 {
  9108  		invalidParams.Add(request.NewErrParamMinLen("TcpRetryEvents", 1))
  9109  	}
  9110  
  9111  	if invalidParams.Len() > 0 {
  9112  		return invalidParams
  9113  	}
  9114  	return nil
  9115  }
  9116  
  9117  // SetGrpcRetryEvents sets the GrpcRetryEvents field's value.
  9118  func (s *GrpcRetryPolicy) SetGrpcRetryEvents(v []*string) *GrpcRetryPolicy {
  9119  	s.GrpcRetryEvents = v
  9120  	return s
  9121  }
  9122  
  9123  // SetHttpRetryEvents sets the HttpRetryEvents field's value.
  9124  func (s *GrpcRetryPolicy) SetHttpRetryEvents(v []*string) *GrpcRetryPolicy {
  9125  	s.HttpRetryEvents = v
  9126  	return s
  9127  }
  9128  
  9129  // SetMaxRetries sets the MaxRetries field's value.
  9130  func (s *GrpcRetryPolicy) SetMaxRetries(v int64) *GrpcRetryPolicy {
  9131  	s.MaxRetries = &v
  9132  	return s
  9133  }
  9134  
  9135  // SetPerRetryTimeout sets the PerRetryTimeout field's value.
  9136  func (s *GrpcRetryPolicy) SetPerRetryTimeout(v *Duration) *GrpcRetryPolicy {
  9137  	s.PerRetryTimeout = v
  9138  	return s
  9139  }
  9140  
  9141  // SetTcpRetryEvents sets the TcpRetryEvents field's value.
  9142  func (s *GrpcRetryPolicy) SetTcpRetryEvents(v []*string) *GrpcRetryPolicy {
  9143  	s.TcpRetryEvents = v
  9144  	return s
  9145  }
  9146  
  9147  // An object that represents a gRPC route type.
  9148  type GrpcRoute struct {
  9149  	_ struct{} `type:"structure"`
  9150  
  9151  	// An object that represents the action to take if a match is determined.
  9152  	//
  9153  	// Action is a required field
  9154  	Action *GrpcRouteAction `locationName:"action" type:"structure" required:"true"`
  9155  
  9156  	// An object that represents the criteria for determining a request match.
  9157  	//
  9158  	// Match is a required field
  9159  	Match *GrpcRouteMatch `locationName:"match" type:"structure" required:"true"`
  9160  
  9161  	// An object that represents a retry policy.
  9162  	RetryPolicy *GrpcRetryPolicy `locationName:"retryPolicy" type:"structure"`
  9163  
  9164  	// An object that represents types of timeouts.
  9165  	Timeout *GrpcTimeout `locationName:"timeout" type:"structure"`
  9166  }
  9167  
  9168  // String returns the string representation.
  9169  //
  9170  // API parameter values that are decorated as "sensitive" in the API will not
  9171  // be included in the string output. The member name will be present, but the
  9172  // value will be replaced with "sensitive".
  9173  func (s GrpcRoute) String() string {
  9174  	return awsutil.Prettify(s)
  9175  }
  9176  
  9177  // GoString returns the string representation.
  9178  //
  9179  // API parameter values that are decorated as "sensitive" in the API will not
  9180  // be included in the string output. The member name will be present, but the
  9181  // value will be replaced with "sensitive".
  9182  func (s GrpcRoute) GoString() string {
  9183  	return s.String()
  9184  }
  9185  
  9186  // Validate inspects the fields of the type to determine if they are valid.
  9187  func (s *GrpcRoute) Validate() error {
  9188  	invalidParams := request.ErrInvalidParams{Context: "GrpcRoute"}
  9189  	if s.Action == nil {
  9190  		invalidParams.Add(request.NewErrParamRequired("Action"))
  9191  	}
  9192  	if s.Match == nil {
  9193  		invalidParams.Add(request.NewErrParamRequired("Match"))
  9194  	}
  9195  	if s.Action != nil {
  9196  		if err := s.Action.Validate(); err != nil {
  9197  			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
  9198  		}
  9199  	}
  9200  	if s.Match != nil {
  9201  		if err := s.Match.Validate(); err != nil {
  9202  			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
  9203  		}
  9204  	}
  9205  	if s.RetryPolicy != nil {
  9206  		if err := s.RetryPolicy.Validate(); err != nil {
  9207  			invalidParams.AddNested("RetryPolicy", err.(request.ErrInvalidParams))
  9208  		}
  9209  	}
  9210  
  9211  	if invalidParams.Len() > 0 {
  9212  		return invalidParams
  9213  	}
  9214  	return nil
  9215  }
  9216  
  9217  // SetAction sets the Action field's value.
  9218  func (s *GrpcRoute) SetAction(v *GrpcRouteAction) *GrpcRoute {
  9219  	s.Action = v
  9220  	return s
  9221  }
  9222  
  9223  // SetMatch sets the Match field's value.
  9224  func (s *GrpcRoute) SetMatch(v *GrpcRouteMatch) *GrpcRoute {
  9225  	s.Match = v
  9226  	return s
  9227  }
  9228  
  9229  // SetRetryPolicy sets the RetryPolicy field's value.
  9230  func (s *GrpcRoute) SetRetryPolicy(v *GrpcRetryPolicy) *GrpcRoute {
  9231  	s.RetryPolicy = v
  9232  	return s
  9233  }
  9234  
  9235  // SetTimeout sets the Timeout field's value.
  9236  func (s *GrpcRoute) SetTimeout(v *GrpcTimeout) *GrpcRoute {
  9237  	s.Timeout = v
  9238  	return s
  9239  }
  9240  
  9241  // An object that represents the action to take if a match is determined.
  9242  type GrpcRouteAction struct {
  9243  	_ struct{} `type:"structure"`
  9244  
  9245  	// An object that represents the targets that traffic is routed to when a request
  9246  	// matches the route.
  9247  	//
  9248  	// WeightedTargets is a required field
  9249  	WeightedTargets []*WeightedTarget `locationName:"weightedTargets" min:"1" type:"list" required:"true"`
  9250  }
  9251  
  9252  // String returns the string representation.
  9253  //
  9254  // API parameter values that are decorated as "sensitive" in the API will not
  9255  // be included in the string output. The member name will be present, but the
  9256  // value will be replaced with "sensitive".
  9257  func (s GrpcRouteAction) String() string {
  9258  	return awsutil.Prettify(s)
  9259  }
  9260  
  9261  // GoString returns the string representation.
  9262  //
  9263  // API parameter values that are decorated as "sensitive" in the API will not
  9264  // be included in the string output. The member name will be present, but the
  9265  // value will be replaced with "sensitive".
  9266  func (s GrpcRouteAction) GoString() string {
  9267  	return s.String()
  9268  }
  9269  
  9270  // Validate inspects the fields of the type to determine if they are valid.
  9271  func (s *GrpcRouteAction) Validate() error {
  9272  	invalidParams := request.ErrInvalidParams{Context: "GrpcRouteAction"}
  9273  	if s.WeightedTargets == nil {
  9274  		invalidParams.Add(request.NewErrParamRequired("WeightedTargets"))
  9275  	}
  9276  	if s.WeightedTargets != nil && len(s.WeightedTargets) < 1 {
  9277  		invalidParams.Add(request.NewErrParamMinLen("WeightedTargets", 1))
  9278  	}
  9279  	if s.WeightedTargets != nil {
  9280  		for i, v := range s.WeightedTargets {
  9281  			if v == nil {
  9282  				continue
  9283  			}
  9284  			if err := v.Validate(); err != nil {
  9285  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "WeightedTargets", i), err.(request.ErrInvalidParams))
  9286  			}
  9287  		}
  9288  	}
  9289  
  9290  	if invalidParams.Len() > 0 {
  9291  		return invalidParams
  9292  	}
  9293  	return nil
  9294  }
  9295  
  9296  // SetWeightedTargets sets the WeightedTargets field's value.
  9297  func (s *GrpcRouteAction) SetWeightedTargets(v []*WeightedTarget) *GrpcRouteAction {
  9298  	s.WeightedTargets = v
  9299  	return s
  9300  }
  9301  
  9302  // An object that represents the criteria for determining a request match.
  9303  type GrpcRouteMatch struct {
  9304  	_ struct{} `type:"structure"`
  9305  
  9306  	// An object that represents the data to match from the request.
  9307  	Metadata []*GrpcRouteMetadata `locationName:"metadata" min:"1" type:"list"`
  9308  
  9309  	// The method name to match from the request. If you specify a name, you must
  9310  	// also specify a serviceName.
  9311  	MethodName *string `locationName:"methodName" min:"1" type:"string"`
  9312  
  9313  	// The fully qualified domain name for the service to match from the request.
  9314  	ServiceName *string `locationName:"serviceName" type:"string"`
  9315  }
  9316  
  9317  // String returns the string representation.
  9318  //
  9319  // API parameter values that are decorated as "sensitive" in the API will not
  9320  // be included in the string output. The member name will be present, but the
  9321  // value will be replaced with "sensitive".
  9322  func (s GrpcRouteMatch) String() string {
  9323  	return awsutil.Prettify(s)
  9324  }
  9325  
  9326  // GoString returns the string representation.
  9327  //
  9328  // API parameter values that are decorated as "sensitive" in the API will not
  9329  // be included in the string output. The member name will be present, but the
  9330  // value will be replaced with "sensitive".
  9331  func (s GrpcRouteMatch) GoString() string {
  9332  	return s.String()
  9333  }
  9334  
  9335  // Validate inspects the fields of the type to determine if they are valid.
  9336  func (s *GrpcRouteMatch) Validate() error {
  9337  	invalidParams := request.ErrInvalidParams{Context: "GrpcRouteMatch"}
  9338  	if s.Metadata != nil && len(s.Metadata) < 1 {
  9339  		invalidParams.Add(request.NewErrParamMinLen("Metadata", 1))
  9340  	}
  9341  	if s.MethodName != nil && len(*s.MethodName) < 1 {
  9342  		invalidParams.Add(request.NewErrParamMinLen("MethodName", 1))
  9343  	}
  9344  	if s.Metadata != nil {
  9345  		for i, v := range s.Metadata {
  9346  			if v == nil {
  9347  				continue
  9348  			}
  9349  			if err := v.Validate(); err != nil {
  9350  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Metadata", i), err.(request.ErrInvalidParams))
  9351  			}
  9352  		}
  9353  	}
  9354  
  9355  	if invalidParams.Len() > 0 {
  9356  		return invalidParams
  9357  	}
  9358  	return nil
  9359  }
  9360  
  9361  // SetMetadata sets the Metadata field's value.
  9362  func (s *GrpcRouteMatch) SetMetadata(v []*GrpcRouteMetadata) *GrpcRouteMatch {
  9363  	s.Metadata = v
  9364  	return s
  9365  }
  9366  
  9367  // SetMethodName sets the MethodName field's value.
  9368  func (s *GrpcRouteMatch) SetMethodName(v string) *GrpcRouteMatch {
  9369  	s.MethodName = &v
  9370  	return s
  9371  }
  9372  
  9373  // SetServiceName sets the ServiceName field's value.
  9374  func (s *GrpcRouteMatch) SetServiceName(v string) *GrpcRouteMatch {
  9375  	s.ServiceName = &v
  9376  	return s
  9377  }
  9378  
  9379  // An object that represents the match metadata for the route.
  9380  type GrpcRouteMetadata struct {
  9381  	_ struct{} `type:"structure"`
  9382  
  9383  	// Specify True to match anything except the match criteria. The default value
  9384  	// is False.
  9385  	Invert *bool `locationName:"invert" type:"boolean"`
  9386  
  9387  	// An object that represents the data to match from the request.
  9388  	Match *GrpcRouteMetadataMatchMethod `locationName:"match" type:"structure"`
  9389  
  9390  	// The name of the route.
  9391  	//
  9392  	// Name is a required field
  9393  	Name *string `locationName:"name" min:"1" type:"string" required:"true"`
  9394  }
  9395  
  9396  // String returns the string representation.
  9397  //
  9398  // API parameter values that are decorated as "sensitive" in the API will not
  9399  // be included in the string output. The member name will be present, but the
  9400  // value will be replaced with "sensitive".
  9401  func (s GrpcRouteMetadata) String() string {
  9402  	return awsutil.Prettify(s)
  9403  }
  9404  
  9405  // GoString returns the string representation.
  9406  //
  9407  // API parameter values that are decorated as "sensitive" in the API will not
  9408  // be included in the string output. The member name will be present, but the
  9409  // value will be replaced with "sensitive".
  9410  func (s GrpcRouteMetadata) GoString() string {
  9411  	return s.String()
  9412  }
  9413  
  9414  // Validate inspects the fields of the type to determine if they are valid.
  9415  func (s *GrpcRouteMetadata) Validate() error {
  9416  	invalidParams := request.ErrInvalidParams{Context: "GrpcRouteMetadata"}
  9417  	if s.Name == nil {
  9418  		invalidParams.Add(request.NewErrParamRequired("Name"))
  9419  	}
  9420  	if s.Name != nil && len(*s.Name) < 1 {
  9421  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
  9422  	}
  9423  	if s.Match != nil {
  9424  		if err := s.Match.Validate(); err != nil {
  9425  			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
  9426  		}
  9427  	}
  9428  
  9429  	if invalidParams.Len() > 0 {
  9430  		return invalidParams
  9431  	}
  9432  	return nil
  9433  }
  9434  
  9435  // SetInvert sets the Invert field's value.
  9436  func (s *GrpcRouteMetadata) SetInvert(v bool) *GrpcRouteMetadata {
  9437  	s.Invert = &v
  9438  	return s
  9439  }
  9440  
  9441  // SetMatch sets the Match field's value.
  9442  func (s *GrpcRouteMetadata) SetMatch(v *GrpcRouteMetadataMatchMethod) *GrpcRouteMetadata {
  9443  	s.Match = v
  9444  	return s
  9445  }
  9446  
  9447  // SetName sets the Name field's value.
  9448  func (s *GrpcRouteMetadata) SetName(v string) *GrpcRouteMetadata {
  9449  	s.Name = &v
  9450  	return s
  9451  }
  9452  
  9453  // An object that represents the match method. Specify one of the match values.
  9454  type GrpcRouteMetadataMatchMethod struct {
  9455  	_ struct{} `type:"structure"`
  9456  
  9457  	// The value sent by the client must match the specified value exactly.
  9458  	Exact *string `locationName:"exact" min:"1" type:"string"`
  9459  
  9460  	// The value sent by the client must begin with the specified characters.
  9461  	Prefix *string `locationName:"prefix" min:"1" type:"string"`
  9462  
  9463  	// An object that represents the range of values to match on.
  9464  	Range *MatchRange `locationName:"range" type:"structure"`
  9465  
  9466  	// The value sent by the client must include the specified characters.
  9467  	Regex *string `locationName:"regex" min:"1" type:"string"`
  9468  
  9469  	// The value sent by the client must end with the specified characters.
  9470  	Suffix *string `locationName:"suffix" min:"1" type:"string"`
  9471  }
  9472  
  9473  // String returns the string representation.
  9474  //
  9475  // API parameter values that are decorated as "sensitive" in the API will not
  9476  // be included in the string output. The member name will be present, but the
  9477  // value will be replaced with "sensitive".
  9478  func (s GrpcRouteMetadataMatchMethod) String() string {
  9479  	return awsutil.Prettify(s)
  9480  }
  9481  
  9482  // GoString returns the string representation.
  9483  //
  9484  // API parameter values that are decorated as "sensitive" in the API will not
  9485  // be included in the string output. The member name will be present, but the
  9486  // value will be replaced with "sensitive".
  9487  func (s GrpcRouteMetadataMatchMethod) GoString() string {
  9488  	return s.String()
  9489  }
  9490  
  9491  // Validate inspects the fields of the type to determine if they are valid.
  9492  func (s *GrpcRouteMetadataMatchMethod) Validate() error {
  9493  	invalidParams := request.ErrInvalidParams{Context: "GrpcRouteMetadataMatchMethod"}
  9494  	if s.Exact != nil && len(*s.Exact) < 1 {
  9495  		invalidParams.Add(request.NewErrParamMinLen("Exact", 1))
  9496  	}
  9497  	if s.Prefix != nil && len(*s.Prefix) < 1 {
  9498  		invalidParams.Add(request.NewErrParamMinLen("Prefix", 1))
  9499  	}
  9500  	if s.Regex != nil && len(*s.Regex) < 1 {
  9501  		invalidParams.Add(request.NewErrParamMinLen("Regex", 1))
  9502  	}
  9503  	if s.Suffix != nil && len(*s.Suffix) < 1 {
  9504  		invalidParams.Add(request.NewErrParamMinLen("Suffix", 1))
  9505  	}
  9506  	if s.Range != nil {
  9507  		if err := s.Range.Validate(); err != nil {
  9508  			invalidParams.AddNested("Range", err.(request.ErrInvalidParams))
  9509  		}
  9510  	}
  9511  
  9512  	if invalidParams.Len() > 0 {
  9513  		return invalidParams
  9514  	}
  9515  	return nil
  9516  }
  9517  
  9518  // SetExact sets the Exact field's value.
  9519  func (s *GrpcRouteMetadataMatchMethod) SetExact(v string) *GrpcRouteMetadataMatchMethod {
  9520  	s.Exact = &v
  9521  	return s
  9522  }
  9523  
  9524  // SetPrefix sets the Prefix field's value.
  9525  func (s *GrpcRouteMetadataMatchMethod) SetPrefix(v string) *GrpcRouteMetadataMatchMethod {
  9526  	s.Prefix = &v
  9527  	return s
  9528  }
  9529  
  9530  // SetRange sets the Range field's value.
  9531  func (s *GrpcRouteMetadataMatchMethod) SetRange(v *MatchRange) *GrpcRouteMetadataMatchMethod {
  9532  	s.Range = v
  9533  	return s
  9534  }
  9535  
  9536  // SetRegex sets the Regex field's value.
  9537  func (s *GrpcRouteMetadataMatchMethod) SetRegex(v string) *GrpcRouteMetadataMatchMethod {
  9538  	s.Regex = &v
  9539  	return s
  9540  }
  9541  
  9542  // SetSuffix sets the Suffix field's value.
  9543  func (s *GrpcRouteMetadataMatchMethod) SetSuffix(v string) *GrpcRouteMetadataMatchMethod {
  9544  	s.Suffix = &v
  9545  	return s
  9546  }
  9547  
  9548  // An object that represents types of timeouts.
  9549  type GrpcTimeout struct {
  9550  	_ struct{} `type:"structure"`
  9551  
  9552  	// An object that represents an idle timeout. An idle timeout bounds the amount
  9553  	// of time that a connection may be idle. The default value is none.
  9554  	Idle *Duration `locationName:"idle" type:"structure"`
  9555  
  9556  	// An object that represents a per request timeout. The default value is 15
  9557  	// seconds. If you set a higher timeout, then make sure that the higher value
  9558  	// is set for each App Mesh resource in a conversation. For example, if a virtual
  9559  	// node backend uses a virtual router provider to route to another virtual node,
  9560  	// then the timeout should be greater than 15 seconds for the source and destination
  9561  	// virtual node and the route.
  9562  	PerRequest *Duration `locationName:"perRequest" type:"structure"`
  9563  }
  9564  
  9565  // String returns the string representation.
  9566  //
  9567  // API parameter values that are decorated as "sensitive" in the API will not
  9568  // be included in the string output. The member name will be present, but the
  9569  // value will be replaced with "sensitive".
  9570  func (s GrpcTimeout) String() string {
  9571  	return awsutil.Prettify(s)
  9572  }
  9573  
  9574  // GoString returns the string representation.
  9575  //
  9576  // API parameter values that are decorated as "sensitive" in the API will not
  9577  // be included in the string output. The member name will be present, but the
  9578  // value will be replaced with "sensitive".
  9579  func (s GrpcTimeout) GoString() string {
  9580  	return s.String()
  9581  }
  9582  
  9583  // SetIdle sets the Idle field's value.
  9584  func (s *GrpcTimeout) SetIdle(v *Duration) *GrpcTimeout {
  9585  	s.Idle = v
  9586  	return s
  9587  }
  9588  
  9589  // SetPerRequest sets the PerRequest field's value.
  9590  func (s *GrpcTimeout) SetPerRequest(v *Duration) *GrpcTimeout {
  9591  	s.PerRequest = v
  9592  	return s
  9593  }
  9594  
  9595  // An object that represents the method and value to match with the header value
  9596  // sent in a request. Specify one match method.
  9597  type HeaderMatchMethod struct {
  9598  	_ struct{} `type:"structure"`
  9599  
  9600  	// The value sent by the client must match the specified value exactly.
  9601  	Exact *string `locationName:"exact" min:"1" type:"string"`
  9602  
  9603  	// The value sent by the client must begin with the specified characters.
  9604  	Prefix *string `locationName:"prefix" min:"1" type:"string"`
  9605  
  9606  	// An object that represents the range of values to match on.
  9607  	Range *MatchRange `locationName:"range" type:"structure"`
  9608  
  9609  	// The value sent by the client must include the specified characters.
  9610  	Regex *string `locationName:"regex" min:"1" type:"string"`
  9611  
  9612  	// The value sent by the client must end with the specified characters.
  9613  	Suffix *string `locationName:"suffix" min:"1" type:"string"`
  9614  }
  9615  
  9616  // String returns the string representation.
  9617  //
  9618  // API parameter values that are decorated as "sensitive" in the API will not
  9619  // be included in the string output. The member name will be present, but the
  9620  // value will be replaced with "sensitive".
  9621  func (s HeaderMatchMethod) String() string {
  9622  	return awsutil.Prettify(s)
  9623  }
  9624  
  9625  // GoString returns the string representation.
  9626  //
  9627  // API parameter values that are decorated as "sensitive" in the API will not
  9628  // be included in the string output. The member name will be present, but the
  9629  // value will be replaced with "sensitive".
  9630  func (s HeaderMatchMethod) GoString() string {
  9631  	return s.String()
  9632  }
  9633  
  9634  // Validate inspects the fields of the type to determine if they are valid.
  9635  func (s *HeaderMatchMethod) Validate() error {
  9636  	invalidParams := request.ErrInvalidParams{Context: "HeaderMatchMethod"}
  9637  	if s.Exact != nil && len(*s.Exact) < 1 {
  9638  		invalidParams.Add(request.NewErrParamMinLen("Exact", 1))
  9639  	}
  9640  	if s.Prefix != nil && len(*s.Prefix) < 1 {
  9641  		invalidParams.Add(request.NewErrParamMinLen("Prefix", 1))
  9642  	}
  9643  	if s.Regex != nil && len(*s.Regex) < 1 {
  9644  		invalidParams.Add(request.NewErrParamMinLen("Regex", 1))
  9645  	}
  9646  	if s.Suffix != nil && len(*s.Suffix) < 1 {
  9647  		invalidParams.Add(request.NewErrParamMinLen("Suffix", 1))
  9648  	}
  9649  	if s.Range != nil {
  9650  		if err := s.Range.Validate(); err != nil {
  9651  			invalidParams.AddNested("Range", err.(request.ErrInvalidParams))
  9652  		}
  9653  	}
  9654  
  9655  	if invalidParams.Len() > 0 {
  9656  		return invalidParams
  9657  	}
  9658  	return nil
  9659  }
  9660  
  9661  // SetExact sets the Exact field's value.
  9662  func (s *HeaderMatchMethod) SetExact(v string) *HeaderMatchMethod {
  9663  	s.Exact = &v
  9664  	return s
  9665  }
  9666  
  9667  // SetPrefix sets the Prefix field's value.
  9668  func (s *HeaderMatchMethod) SetPrefix(v string) *HeaderMatchMethod {
  9669  	s.Prefix = &v
  9670  	return s
  9671  }
  9672  
  9673  // SetRange sets the Range field's value.
  9674  func (s *HeaderMatchMethod) SetRange(v *MatchRange) *HeaderMatchMethod {
  9675  	s.Range = v
  9676  	return s
  9677  }
  9678  
  9679  // SetRegex sets the Regex field's value.
  9680  func (s *HeaderMatchMethod) SetRegex(v string) *HeaderMatchMethod {
  9681  	s.Regex = &v
  9682  	return s
  9683  }
  9684  
  9685  // SetSuffix sets the Suffix field's value.
  9686  func (s *HeaderMatchMethod) SetSuffix(v string) *HeaderMatchMethod {
  9687  	s.Suffix = &v
  9688  	return s
  9689  }
  9690  
  9691  // An object that represents the health check policy for a virtual node's listener.
  9692  type HealthCheckPolicy struct {
  9693  	_ struct{} `type:"structure"`
  9694  
  9695  	// The number of consecutive successful health checks that must occur before
  9696  	// declaring listener healthy.
  9697  	//
  9698  	// HealthyThreshold is a required field
  9699  	HealthyThreshold *int64 `locationName:"healthyThreshold" min:"2" type:"integer" required:"true"`
  9700  
  9701  	// The time period in milliseconds between each health check execution.
  9702  	//
  9703  	// IntervalMillis is a required field
  9704  	IntervalMillis *int64 `locationName:"intervalMillis" min:"5000" type:"long" required:"true"`
  9705  
  9706  	// The destination path for the health check request. This value is only used
  9707  	// if the specified protocol is HTTP or HTTP/2. For any other protocol, this
  9708  	// value is ignored.
  9709  	Path *string `locationName:"path" type:"string"`
  9710  
  9711  	// The destination port for the health check request. This port must match the
  9712  	// port defined in the PortMapping for the listener.
  9713  	Port *int64 `locationName:"port" min:"1" type:"integer"`
  9714  
  9715  	// The protocol for the health check request. If you specify grpc, then your
  9716  	// service must conform to the GRPC Health Checking Protocol (https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
  9717  	//
  9718  	// Protocol is a required field
  9719  	Protocol *string `locationName:"protocol" type:"string" required:"true" enum:"PortProtocol"`
  9720  
  9721  	// The amount of time to wait when receiving a response from the health check,
  9722  	// in milliseconds.
  9723  	//
  9724  	// TimeoutMillis is a required field
  9725  	TimeoutMillis *int64 `locationName:"timeoutMillis" min:"2000" type:"long" required:"true"`
  9726  
  9727  	// The number of consecutive failed health checks that must occur before declaring
  9728  	// a virtual node unhealthy.
  9729  	//
  9730  	// UnhealthyThreshold is a required field
  9731  	UnhealthyThreshold *int64 `locationName:"unhealthyThreshold" min:"2" type:"integer" required:"true"`
  9732  }
  9733  
  9734  // String returns the string representation.
  9735  //
  9736  // API parameter values that are decorated as "sensitive" in the API will not
  9737  // be included in the string output. The member name will be present, but the
  9738  // value will be replaced with "sensitive".
  9739  func (s HealthCheckPolicy) String() string {
  9740  	return awsutil.Prettify(s)
  9741  }
  9742  
  9743  // GoString returns the string representation.
  9744  //
  9745  // API parameter values that are decorated as "sensitive" in the API will not
  9746  // be included in the string output. The member name will be present, but the
  9747  // value will be replaced with "sensitive".
  9748  func (s HealthCheckPolicy) GoString() string {
  9749  	return s.String()
  9750  }
  9751  
  9752  // Validate inspects the fields of the type to determine if they are valid.
  9753  func (s *HealthCheckPolicy) Validate() error {
  9754  	invalidParams := request.ErrInvalidParams{Context: "HealthCheckPolicy"}
  9755  	if s.HealthyThreshold == nil {
  9756  		invalidParams.Add(request.NewErrParamRequired("HealthyThreshold"))
  9757  	}
  9758  	if s.HealthyThreshold != nil && *s.HealthyThreshold < 2 {
  9759  		invalidParams.Add(request.NewErrParamMinValue("HealthyThreshold", 2))
  9760  	}
  9761  	if s.IntervalMillis == nil {
  9762  		invalidParams.Add(request.NewErrParamRequired("IntervalMillis"))
  9763  	}
  9764  	if s.IntervalMillis != nil && *s.IntervalMillis < 5000 {
  9765  		invalidParams.Add(request.NewErrParamMinValue("IntervalMillis", 5000))
  9766  	}
  9767  	if s.Port != nil && *s.Port < 1 {
  9768  		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
  9769  	}
  9770  	if s.Protocol == nil {
  9771  		invalidParams.Add(request.NewErrParamRequired("Protocol"))
  9772  	}
  9773  	if s.TimeoutMillis == nil {
  9774  		invalidParams.Add(request.NewErrParamRequired("TimeoutMillis"))
  9775  	}
  9776  	if s.TimeoutMillis != nil && *s.TimeoutMillis < 2000 {
  9777  		invalidParams.Add(request.NewErrParamMinValue("TimeoutMillis", 2000))
  9778  	}
  9779  	if s.UnhealthyThreshold == nil {
  9780  		invalidParams.Add(request.NewErrParamRequired("UnhealthyThreshold"))
  9781  	}
  9782  	if s.UnhealthyThreshold != nil && *s.UnhealthyThreshold < 2 {
  9783  		invalidParams.Add(request.NewErrParamMinValue("UnhealthyThreshold", 2))
  9784  	}
  9785  
  9786  	if invalidParams.Len() > 0 {
  9787  		return invalidParams
  9788  	}
  9789  	return nil
  9790  }
  9791  
  9792  // SetHealthyThreshold sets the HealthyThreshold field's value.
  9793  func (s *HealthCheckPolicy) SetHealthyThreshold(v int64) *HealthCheckPolicy {
  9794  	s.HealthyThreshold = &v
  9795  	return s
  9796  }
  9797  
  9798  // SetIntervalMillis sets the IntervalMillis field's value.
  9799  func (s *HealthCheckPolicy) SetIntervalMillis(v int64) *HealthCheckPolicy {
  9800  	s.IntervalMillis = &v
  9801  	return s
  9802  }
  9803  
  9804  // SetPath sets the Path field's value.
  9805  func (s *HealthCheckPolicy) SetPath(v string) *HealthCheckPolicy {
  9806  	s.Path = &v
  9807  	return s
  9808  }
  9809  
  9810  // SetPort sets the Port field's value.
  9811  func (s *HealthCheckPolicy) SetPort(v int64) *HealthCheckPolicy {
  9812  	s.Port = &v
  9813  	return s
  9814  }
  9815  
  9816  // SetProtocol sets the Protocol field's value.
  9817  func (s *HealthCheckPolicy) SetProtocol(v string) *HealthCheckPolicy {
  9818  	s.Protocol = &v
  9819  	return s
  9820  }
  9821  
  9822  // SetTimeoutMillis sets the TimeoutMillis field's value.
  9823  func (s *HealthCheckPolicy) SetTimeoutMillis(v int64) *HealthCheckPolicy {
  9824  	s.TimeoutMillis = &v
  9825  	return s
  9826  }
  9827  
  9828  // SetUnhealthyThreshold sets the UnhealthyThreshold field's value.
  9829  func (s *HealthCheckPolicy) SetUnhealthyThreshold(v int64) *HealthCheckPolicy {
  9830  	s.UnhealthyThreshold = &v
  9831  	return s
  9832  }
  9833  
  9834  // An object that represents an HTTP gateway route.
  9835  type HttpGatewayRoute struct {
  9836  	_ struct{} `type:"structure"`
  9837  
  9838  	// An object that represents the action to take if a match is determined.
  9839  	//
  9840  	// Action is a required field
  9841  	Action *HttpGatewayRouteAction `locationName:"action" type:"structure" required:"true"`
  9842  
  9843  	// An object that represents the criteria for determining a request match.
  9844  	//
  9845  	// Match is a required field
  9846  	Match *HttpGatewayRouteMatch `locationName:"match" type:"structure" required:"true"`
  9847  }
  9848  
  9849  // String returns the string representation.
  9850  //
  9851  // API parameter values that are decorated as "sensitive" in the API will not
  9852  // be included in the string output. The member name will be present, but the
  9853  // value will be replaced with "sensitive".
  9854  func (s HttpGatewayRoute) String() string {
  9855  	return awsutil.Prettify(s)
  9856  }
  9857  
  9858  // GoString returns the string representation.
  9859  //
  9860  // API parameter values that are decorated as "sensitive" in the API will not
  9861  // be included in the string output. The member name will be present, but the
  9862  // value will be replaced with "sensitive".
  9863  func (s HttpGatewayRoute) GoString() string {
  9864  	return s.String()
  9865  }
  9866  
  9867  // Validate inspects the fields of the type to determine if they are valid.
  9868  func (s *HttpGatewayRoute) Validate() error {
  9869  	invalidParams := request.ErrInvalidParams{Context: "HttpGatewayRoute"}
  9870  	if s.Action == nil {
  9871  		invalidParams.Add(request.NewErrParamRequired("Action"))
  9872  	}
  9873  	if s.Match == nil {
  9874  		invalidParams.Add(request.NewErrParamRequired("Match"))
  9875  	}
  9876  	if s.Action != nil {
  9877  		if err := s.Action.Validate(); err != nil {
  9878  			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
  9879  		}
  9880  	}
  9881  	if s.Match != nil {
  9882  		if err := s.Match.Validate(); err != nil {
  9883  			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
  9884  		}
  9885  	}
  9886  
  9887  	if invalidParams.Len() > 0 {
  9888  		return invalidParams
  9889  	}
  9890  	return nil
  9891  }
  9892  
  9893  // SetAction sets the Action field's value.
  9894  func (s *HttpGatewayRoute) SetAction(v *HttpGatewayRouteAction) *HttpGatewayRoute {
  9895  	s.Action = v
  9896  	return s
  9897  }
  9898  
  9899  // SetMatch sets the Match field's value.
  9900  func (s *HttpGatewayRoute) SetMatch(v *HttpGatewayRouteMatch) *HttpGatewayRoute {
  9901  	s.Match = v
  9902  	return s
  9903  }
  9904  
  9905  // An object that represents the action to take if a match is determined.
  9906  type HttpGatewayRouteAction struct {
  9907  	_ struct{} `type:"structure"`
  9908  
  9909  	// The gateway route action to rewrite.
  9910  	Rewrite *HttpGatewayRouteRewrite `locationName:"rewrite" type:"structure"`
  9911  
  9912  	// An object that represents the target that traffic is routed to when a request
  9913  	// matches the gateway route.
  9914  	//
  9915  	// Target is a required field
  9916  	Target *GatewayRouteTarget `locationName:"target" type:"structure" required:"true"`
  9917  }
  9918  
  9919  // String returns the string representation.
  9920  //
  9921  // API parameter values that are decorated as "sensitive" in the API will not
  9922  // be included in the string output. The member name will be present, but the
  9923  // value will be replaced with "sensitive".
  9924  func (s HttpGatewayRouteAction) String() string {
  9925  	return awsutil.Prettify(s)
  9926  }
  9927  
  9928  // GoString returns the string representation.
  9929  //
  9930  // API parameter values that are decorated as "sensitive" in the API will not
  9931  // be included in the string output. The member name will be present, but the
  9932  // value will be replaced with "sensitive".
  9933  func (s HttpGatewayRouteAction) GoString() string {
  9934  	return s.String()
  9935  }
  9936  
  9937  // Validate inspects the fields of the type to determine if they are valid.
  9938  func (s *HttpGatewayRouteAction) Validate() error {
  9939  	invalidParams := request.ErrInvalidParams{Context: "HttpGatewayRouteAction"}
  9940  	if s.Target == nil {
  9941  		invalidParams.Add(request.NewErrParamRequired("Target"))
  9942  	}
  9943  	if s.Rewrite != nil {
  9944  		if err := s.Rewrite.Validate(); err != nil {
  9945  			invalidParams.AddNested("Rewrite", err.(request.ErrInvalidParams))
  9946  		}
  9947  	}
  9948  	if s.Target != nil {
  9949  		if err := s.Target.Validate(); err != nil {
  9950  			invalidParams.AddNested("Target", err.(request.ErrInvalidParams))
  9951  		}
  9952  	}
  9953  
  9954  	if invalidParams.Len() > 0 {
  9955  		return invalidParams
  9956  	}
  9957  	return nil
  9958  }
  9959  
  9960  // SetRewrite sets the Rewrite field's value.
  9961  func (s *HttpGatewayRouteAction) SetRewrite(v *HttpGatewayRouteRewrite) *HttpGatewayRouteAction {
  9962  	s.Rewrite = v
  9963  	return s
  9964  }
  9965  
  9966  // SetTarget sets the Target field's value.
  9967  func (s *HttpGatewayRouteAction) SetTarget(v *GatewayRouteTarget) *HttpGatewayRouteAction {
  9968  	s.Target = v
  9969  	return s
  9970  }
  9971  
  9972  // An object that represents the HTTP header in the gateway route.
  9973  type HttpGatewayRouteHeader struct {
  9974  	_ struct{} `type:"structure"`
  9975  
  9976  	// Specify True to match anything except the match criteria. The default value
  9977  	// is False.
  9978  	Invert *bool `locationName:"invert" type:"boolean"`
  9979  
  9980  	// An object that represents the method and value to match with the header value
  9981  	// sent in a request. Specify one match method.
  9982  	Match *HeaderMatchMethod `locationName:"match" type:"structure"`
  9983  
  9984  	// A name for the HTTP header in the gateway route that will be matched on.
  9985  	//
  9986  	// Name is a required field
  9987  	Name *string `locationName:"name" min:"1" type:"string" required:"true"`
  9988  }
  9989  
  9990  // String returns the string representation.
  9991  //
  9992  // API parameter values that are decorated as "sensitive" in the API will not
  9993  // be included in the string output. The member name will be present, but the
  9994  // value will be replaced with "sensitive".
  9995  func (s HttpGatewayRouteHeader) String() string {
  9996  	return awsutil.Prettify(s)
  9997  }
  9998  
  9999  // GoString returns the string representation.
 10000  //
 10001  // API parameter values that are decorated as "sensitive" in the API will not
 10002  // be included in the string output. The member name will be present, but the
 10003  // value will be replaced with "sensitive".
 10004  func (s HttpGatewayRouteHeader) GoString() string {
 10005  	return s.String()
 10006  }
 10007  
 10008  // Validate inspects the fields of the type to determine if they are valid.
 10009  func (s *HttpGatewayRouteHeader) Validate() error {
 10010  	invalidParams := request.ErrInvalidParams{Context: "HttpGatewayRouteHeader"}
 10011  	if s.Name == nil {
 10012  		invalidParams.Add(request.NewErrParamRequired("Name"))
 10013  	}
 10014  	if s.Name != nil && len(*s.Name) < 1 {
 10015  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 10016  	}
 10017  	if s.Match != nil {
 10018  		if err := s.Match.Validate(); err != nil {
 10019  			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
 10020  		}
 10021  	}
 10022  
 10023  	if invalidParams.Len() > 0 {
 10024  		return invalidParams
 10025  	}
 10026  	return nil
 10027  }
 10028  
 10029  // SetInvert sets the Invert field's value.
 10030  func (s *HttpGatewayRouteHeader) SetInvert(v bool) *HttpGatewayRouteHeader {
 10031  	s.Invert = &v
 10032  	return s
 10033  }
 10034  
 10035  // SetMatch sets the Match field's value.
 10036  func (s *HttpGatewayRouteHeader) SetMatch(v *HeaderMatchMethod) *HttpGatewayRouteHeader {
 10037  	s.Match = v
 10038  	return s
 10039  }
 10040  
 10041  // SetName sets the Name field's value.
 10042  func (s *HttpGatewayRouteHeader) SetName(v string) *HttpGatewayRouteHeader {
 10043  	s.Name = &v
 10044  	return s
 10045  }
 10046  
 10047  // An object that represents the criteria for determining a request match.
 10048  type HttpGatewayRouteMatch struct {
 10049  	_ struct{} `type:"structure"`
 10050  
 10051  	// The client request headers to match on.
 10052  	Headers []*HttpGatewayRouteHeader `locationName:"headers" min:"1" type:"list"`
 10053  
 10054  	// The host name to match on.
 10055  	Hostname *GatewayRouteHostnameMatch `locationName:"hostname" type:"structure"`
 10056  
 10057  	// The method to match on.
 10058  	Method *string `locationName:"method" type:"string" enum:"HttpMethod"`
 10059  
 10060  	// The path to match on.
 10061  	Path *HttpPathMatch `locationName:"path" type:"structure"`
 10062  
 10063  	// Specifies the path to match requests with. This parameter must always start
 10064  	// with /, which by itself matches all requests to the virtual service name.
 10065  	// You can also match for path-based routing of requests. For example, if your
 10066  	// virtual service name is my-service.local and you want the route to match
 10067  	// requests to my-service.local/metrics, your prefix should be /metrics.
 10068  	Prefix *string `locationName:"prefix" type:"string"`
 10069  
 10070  	// The query parameter to match on.
 10071  	QueryParameters []*HttpQueryParameter `locationName:"queryParameters" min:"1" type:"list"`
 10072  }
 10073  
 10074  // String returns the string representation.
 10075  //
 10076  // API parameter values that are decorated as "sensitive" in the API will not
 10077  // be included in the string output. The member name will be present, but the
 10078  // value will be replaced with "sensitive".
 10079  func (s HttpGatewayRouteMatch) String() string {
 10080  	return awsutil.Prettify(s)
 10081  }
 10082  
 10083  // GoString returns the string representation.
 10084  //
 10085  // API parameter values that are decorated as "sensitive" in the API will not
 10086  // be included in the string output. The member name will be present, but the
 10087  // value will be replaced with "sensitive".
 10088  func (s HttpGatewayRouteMatch) GoString() string {
 10089  	return s.String()
 10090  }
 10091  
 10092  // Validate inspects the fields of the type to determine if they are valid.
 10093  func (s *HttpGatewayRouteMatch) Validate() error {
 10094  	invalidParams := request.ErrInvalidParams{Context: "HttpGatewayRouteMatch"}
 10095  	if s.Headers != nil && len(s.Headers) < 1 {
 10096  		invalidParams.Add(request.NewErrParamMinLen("Headers", 1))
 10097  	}
 10098  	if s.QueryParameters != nil && len(s.QueryParameters) < 1 {
 10099  		invalidParams.Add(request.NewErrParamMinLen("QueryParameters", 1))
 10100  	}
 10101  	if s.Headers != nil {
 10102  		for i, v := range s.Headers {
 10103  			if v == nil {
 10104  				continue
 10105  			}
 10106  			if err := v.Validate(); err != nil {
 10107  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Headers", i), err.(request.ErrInvalidParams))
 10108  			}
 10109  		}
 10110  	}
 10111  	if s.Hostname != nil {
 10112  		if err := s.Hostname.Validate(); err != nil {
 10113  			invalidParams.AddNested("Hostname", err.(request.ErrInvalidParams))
 10114  		}
 10115  	}
 10116  	if s.Path != nil {
 10117  		if err := s.Path.Validate(); err != nil {
 10118  			invalidParams.AddNested("Path", err.(request.ErrInvalidParams))
 10119  		}
 10120  	}
 10121  	if s.QueryParameters != nil {
 10122  		for i, v := range s.QueryParameters {
 10123  			if v == nil {
 10124  				continue
 10125  			}
 10126  			if err := v.Validate(); err != nil {
 10127  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueryParameters", i), err.(request.ErrInvalidParams))
 10128  			}
 10129  		}
 10130  	}
 10131  
 10132  	if invalidParams.Len() > 0 {
 10133  		return invalidParams
 10134  	}
 10135  	return nil
 10136  }
 10137  
 10138  // SetHeaders sets the Headers field's value.
 10139  func (s *HttpGatewayRouteMatch) SetHeaders(v []*HttpGatewayRouteHeader) *HttpGatewayRouteMatch {
 10140  	s.Headers = v
 10141  	return s
 10142  }
 10143  
 10144  // SetHostname sets the Hostname field's value.
 10145  func (s *HttpGatewayRouteMatch) SetHostname(v *GatewayRouteHostnameMatch) *HttpGatewayRouteMatch {
 10146  	s.Hostname = v
 10147  	return s
 10148  }
 10149  
 10150  // SetMethod sets the Method field's value.
 10151  func (s *HttpGatewayRouteMatch) SetMethod(v string) *HttpGatewayRouteMatch {
 10152  	s.Method = &v
 10153  	return s
 10154  }
 10155  
 10156  // SetPath sets the Path field's value.
 10157  func (s *HttpGatewayRouteMatch) SetPath(v *HttpPathMatch) *HttpGatewayRouteMatch {
 10158  	s.Path = v
 10159  	return s
 10160  }
 10161  
 10162  // SetPrefix sets the Prefix field's value.
 10163  func (s *HttpGatewayRouteMatch) SetPrefix(v string) *HttpGatewayRouteMatch {
 10164  	s.Prefix = &v
 10165  	return s
 10166  }
 10167  
 10168  // SetQueryParameters sets the QueryParameters field's value.
 10169  func (s *HttpGatewayRouteMatch) SetQueryParameters(v []*HttpQueryParameter) *HttpGatewayRouteMatch {
 10170  	s.QueryParameters = v
 10171  	return s
 10172  }
 10173  
 10174  // An object that represents the path to rewrite.
 10175  type HttpGatewayRoutePathRewrite struct {
 10176  	_ struct{} `type:"structure"`
 10177  
 10178  	// The exact path to rewrite.
 10179  	Exact *string `locationName:"exact" min:"1" type:"string"`
 10180  }
 10181  
 10182  // String returns the string representation.
 10183  //
 10184  // API parameter values that are decorated as "sensitive" in the API will not
 10185  // be included in the string output. The member name will be present, but the
 10186  // value will be replaced with "sensitive".
 10187  func (s HttpGatewayRoutePathRewrite) String() string {
 10188  	return awsutil.Prettify(s)
 10189  }
 10190  
 10191  // GoString returns the string representation.
 10192  //
 10193  // API parameter values that are decorated as "sensitive" in the API will not
 10194  // be included in the string output. The member name will be present, but the
 10195  // value will be replaced with "sensitive".
 10196  func (s HttpGatewayRoutePathRewrite) GoString() string {
 10197  	return s.String()
 10198  }
 10199  
 10200  // Validate inspects the fields of the type to determine if they are valid.
 10201  func (s *HttpGatewayRoutePathRewrite) Validate() error {
 10202  	invalidParams := request.ErrInvalidParams{Context: "HttpGatewayRoutePathRewrite"}
 10203  	if s.Exact != nil && len(*s.Exact) < 1 {
 10204  		invalidParams.Add(request.NewErrParamMinLen("Exact", 1))
 10205  	}
 10206  
 10207  	if invalidParams.Len() > 0 {
 10208  		return invalidParams
 10209  	}
 10210  	return nil
 10211  }
 10212  
 10213  // SetExact sets the Exact field's value.
 10214  func (s *HttpGatewayRoutePathRewrite) SetExact(v string) *HttpGatewayRoutePathRewrite {
 10215  	s.Exact = &v
 10216  	return s
 10217  }
 10218  
 10219  // An object representing the beginning characters of the route to rewrite.
 10220  type HttpGatewayRoutePrefixRewrite struct {
 10221  	_ struct{} `type:"structure"`
 10222  
 10223  	// The default prefix used to replace the incoming route prefix when rewritten.
 10224  	DefaultPrefix *string `locationName:"defaultPrefix" type:"string" enum:"DefaultGatewayRouteRewrite"`
 10225  
 10226  	// The value used to replace the incoming route prefix when rewritten.
 10227  	Value *string `locationName:"value" min:"1" type:"string"`
 10228  }
 10229  
 10230  // String returns the string representation.
 10231  //
 10232  // API parameter values that are decorated as "sensitive" in the API will not
 10233  // be included in the string output. The member name will be present, but the
 10234  // value will be replaced with "sensitive".
 10235  func (s HttpGatewayRoutePrefixRewrite) String() string {
 10236  	return awsutil.Prettify(s)
 10237  }
 10238  
 10239  // GoString returns the string representation.
 10240  //
 10241  // API parameter values that are decorated as "sensitive" in the API will not
 10242  // be included in the string output. The member name will be present, but the
 10243  // value will be replaced with "sensitive".
 10244  func (s HttpGatewayRoutePrefixRewrite) GoString() string {
 10245  	return s.String()
 10246  }
 10247  
 10248  // Validate inspects the fields of the type to determine if they are valid.
 10249  func (s *HttpGatewayRoutePrefixRewrite) Validate() error {
 10250  	invalidParams := request.ErrInvalidParams{Context: "HttpGatewayRoutePrefixRewrite"}
 10251  	if s.Value != nil && len(*s.Value) < 1 {
 10252  		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
 10253  	}
 10254  
 10255  	if invalidParams.Len() > 0 {
 10256  		return invalidParams
 10257  	}
 10258  	return nil
 10259  }
 10260  
 10261  // SetDefaultPrefix sets the DefaultPrefix field's value.
 10262  func (s *HttpGatewayRoutePrefixRewrite) SetDefaultPrefix(v string) *HttpGatewayRoutePrefixRewrite {
 10263  	s.DefaultPrefix = &v
 10264  	return s
 10265  }
 10266  
 10267  // SetValue sets the Value field's value.
 10268  func (s *HttpGatewayRoutePrefixRewrite) SetValue(v string) *HttpGatewayRoutePrefixRewrite {
 10269  	s.Value = &v
 10270  	return s
 10271  }
 10272  
 10273  // An object representing the gateway route to rewrite.
 10274  type HttpGatewayRouteRewrite struct {
 10275  	_ struct{} `type:"structure"`
 10276  
 10277  	// The host name to rewrite.
 10278  	Hostname *GatewayRouteHostnameRewrite `locationName:"hostname" type:"structure"`
 10279  
 10280  	// The path to rewrite.
 10281  	Path *HttpGatewayRoutePathRewrite `locationName:"path" type:"structure"`
 10282  
 10283  	// The specified beginning characters to rewrite.
 10284  	Prefix *HttpGatewayRoutePrefixRewrite `locationName:"prefix" type:"structure"`
 10285  }
 10286  
 10287  // String returns the string representation.
 10288  //
 10289  // API parameter values that are decorated as "sensitive" in the API will not
 10290  // be included in the string output. The member name will be present, but the
 10291  // value will be replaced with "sensitive".
 10292  func (s HttpGatewayRouteRewrite) String() string {
 10293  	return awsutil.Prettify(s)
 10294  }
 10295  
 10296  // GoString returns the string representation.
 10297  //
 10298  // API parameter values that are decorated as "sensitive" in the API will not
 10299  // be included in the string output. The member name will be present, but the
 10300  // value will be replaced with "sensitive".
 10301  func (s HttpGatewayRouteRewrite) GoString() string {
 10302  	return s.String()
 10303  }
 10304  
 10305  // Validate inspects the fields of the type to determine if they are valid.
 10306  func (s *HttpGatewayRouteRewrite) Validate() error {
 10307  	invalidParams := request.ErrInvalidParams{Context: "HttpGatewayRouteRewrite"}
 10308  	if s.Path != nil {
 10309  		if err := s.Path.Validate(); err != nil {
 10310  			invalidParams.AddNested("Path", err.(request.ErrInvalidParams))
 10311  		}
 10312  	}
 10313  	if s.Prefix != nil {
 10314  		if err := s.Prefix.Validate(); err != nil {
 10315  			invalidParams.AddNested("Prefix", err.(request.ErrInvalidParams))
 10316  		}
 10317  	}
 10318  
 10319  	if invalidParams.Len() > 0 {
 10320  		return invalidParams
 10321  	}
 10322  	return nil
 10323  }
 10324  
 10325  // SetHostname sets the Hostname field's value.
 10326  func (s *HttpGatewayRouteRewrite) SetHostname(v *GatewayRouteHostnameRewrite) *HttpGatewayRouteRewrite {
 10327  	s.Hostname = v
 10328  	return s
 10329  }
 10330  
 10331  // SetPath sets the Path field's value.
 10332  func (s *HttpGatewayRouteRewrite) SetPath(v *HttpGatewayRoutePathRewrite) *HttpGatewayRouteRewrite {
 10333  	s.Path = v
 10334  	return s
 10335  }
 10336  
 10337  // SetPrefix sets the Prefix field's value.
 10338  func (s *HttpGatewayRouteRewrite) SetPrefix(v *HttpGatewayRoutePrefixRewrite) *HttpGatewayRouteRewrite {
 10339  	s.Prefix = v
 10340  	return s
 10341  }
 10342  
 10343  // An object representing the path to match in the request.
 10344  type HttpPathMatch struct {
 10345  	_ struct{} `type:"structure"`
 10346  
 10347  	// The exact path to match on.
 10348  	Exact *string `locationName:"exact" min:"1" type:"string"`
 10349  
 10350  	// The regex used to match the path.
 10351  	Regex *string `locationName:"regex" min:"1" type:"string"`
 10352  }
 10353  
 10354  // String returns the string representation.
 10355  //
 10356  // API parameter values that are decorated as "sensitive" in the API will not
 10357  // be included in the string output. The member name will be present, but the
 10358  // value will be replaced with "sensitive".
 10359  func (s HttpPathMatch) String() string {
 10360  	return awsutil.Prettify(s)
 10361  }
 10362  
 10363  // GoString returns the string representation.
 10364  //
 10365  // API parameter values that are decorated as "sensitive" in the API will not
 10366  // be included in the string output. The member name will be present, but the
 10367  // value will be replaced with "sensitive".
 10368  func (s HttpPathMatch) GoString() string {
 10369  	return s.String()
 10370  }
 10371  
 10372  // Validate inspects the fields of the type to determine if they are valid.
 10373  func (s *HttpPathMatch) Validate() error {
 10374  	invalidParams := request.ErrInvalidParams{Context: "HttpPathMatch"}
 10375  	if s.Exact != nil && len(*s.Exact) < 1 {
 10376  		invalidParams.Add(request.NewErrParamMinLen("Exact", 1))
 10377  	}
 10378  	if s.Regex != nil && len(*s.Regex) < 1 {
 10379  		invalidParams.Add(request.NewErrParamMinLen("Regex", 1))
 10380  	}
 10381  
 10382  	if invalidParams.Len() > 0 {
 10383  		return invalidParams
 10384  	}
 10385  	return nil
 10386  }
 10387  
 10388  // SetExact sets the Exact field's value.
 10389  func (s *HttpPathMatch) SetExact(v string) *HttpPathMatch {
 10390  	s.Exact = &v
 10391  	return s
 10392  }
 10393  
 10394  // SetRegex sets the Regex field's value.
 10395  func (s *HttpPathMatch) SetRegex(v string) *HttpPathMatch {
 10396  	s.Regex = &v
 10397  	return s
 10398  }
 10399  
 10400  // An object that represents the query parameter in the request.
 10401  type HttpQueryParameter struct {
 10402  	_ struct{} `type:"structure"`
 10403  
 10404  	// The query parameter to match on.
 10405  	Match *QueryParameterMatch `locationName:"match" type:"structure"`
 10406  
 10407  	// A name for the query parameter that will be matched on.
 10408  	//
 10409  	// Name is a required field
 10410  	Name *string `locationName:"name" type:"string" required:"true"`
 10411  }
 10412  
 10413  // String returns the string representation.
 10414  //
 10415  // API parameter values that are decorated as "sensitive" in the API will not
 10416  // be included in the string output. The member name will be present, but the
 10417  // value will be replaced with "sensitive".
 10418  func (s HttpQueryParameter) String() string {
 10419  	return awsutil.Prettify(s)
 10420  }
 10421  
 10422  // GoString returns the string representation.
 10423  //
 10424  // API parameter values that are decorated as "sensitive" in the API will not
 10425  // be included in the string output. The member name will be present, but the
 10426  // value will be replaced with "sensitive".
 10427  func (s HttpQueryParameter) GoString() string {
 10428  	return s.String()
 10429  }
 10430  
 10431  // Validate inspects the fields of the type to determine if they are valid.
 10432  func (s *HttpQueryParameter) Validate() error {
 10433  	invalidParams := request.ErrInvalidParams{Context: "HttpQueryParameter"}
 10434  	if s.Name == nil {
 10435  		invalidParams.Add(request.NewErrParamRequired("Name"))
 10436  	}
 10437  
 10438  	if invalidParams.Len() > 0 {
 10439  		return invalidParams
 10440  	}
 10441  	return nil
 10442  }
 10443  
 10444  // SetMatch sets the Match field's value.
 10445  func (s *HttpQueryParameter) SetMatch(v *QueryParameterMatch) *HttpQueryParameter {
 10446  	s.Match = v
 10447  	return s
 10448  }
 10449  
 10450  // SetName sets the Name field's value.
 10451  func (s *HttpQueryParameter) SetName(v string) *HttpQueryParameter {
 10452  	s.Name = &v
 10453  	return s
 10454  }
 10455  
 10456  // An object that represents a retry policy. Specify at least one value for
 10457  // at least one of the types of RetryEvents, a value for maxRetries, and a value
 10458  // for perRetryTimeout. Both server-error and gateway-error under httpRetryEvents
 10459  // include the Envoy reset policy. For more information on the reset policy,
 10460  // see the Envoy documentation (https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on).
 10461  type HttpRetryPolicy struct {
 10462  	_ struct{} `type:"structure"`
 10463  
 10464  	// Specify at least one of the following values.
 10465  	//
 10466  	//    * server-error – HTTP status codes 500, 501, 502, 503, 504, 505, 506,
 10467  	//    507, 508, 510, and 511
 10468  	//
 10469  	//    * gateway-error – HTTP status codes 502, 503, and 504
 10470  	//
 10471  	//    * client-error – HTTP status code 409
 10472  	//
 10473  	//    * stream-error – Retry on refused stream
 10474  	HttpRetryEvents []*string `locationName:"httpRetryEvents" min:"1" type:"list"`
 10475  
 10476  	// The maximum number of retry attempts.
 10477  	//
 10478  	// MaxRetries is a required field
 10479  	MaxRetries *int64 `locationName:"maxRetries" type:"long" required:"true"`
 10480  
 10481  	// The timeout for each retry attempt.
 10482  	//
 10483  	// PerRetryTimeout is a required field
 10484  	PerRetryTimeout *Duration `locationName:"perRetryTimeout" type:"structure" required:"true"`
 10485  
 10486  	// Specify a valid value. The event occurs before any processing of a request
 10487  	// has started and is encountered when the upstream is temporarily or permanently
 10488  	// unavailable.
 10489  	TcpRetryEvents []*string `locationName:"tcpRetryEvents" min:"1" type:"list"`
 10490  }
 10491  
 10492  // String returns the string representation.
 10493  //
 10494  // API parameter values that are decorated as "sensitive" in the API will not
 10495  // be included in the string output. The member name will be present, but the
 10496  // value will be replaced with "sensitive".
 10497  func (s HttpRetryPolicy) String() string {
 10498  	return awsutil.Prettify(s)
 10499  }
 10500  
 10501  // GoString returns the string representation.
 10502  //
 10503  // API parameter values that are decorated as "sensitive" in the API will not
 10504  // be included in the string output. The member name will be present, but the
 10505  // value will be replaced with "sensitive".
 10506  func (s HttpRetryPolicy) GoString() string {
 10507  	return s.String()
 10508  }
 10509  
 10510  // Validate inspects the fields of the type to determine if they are valid.
 10511  func (s *HttpRetryPolicy) Validate() error {
 10512  	invalidParams := request.ErrInvalidParams{Context: "HttpRetryPolicy"}
 10513  	if s.HttpRetryEvents != nil && len(s.HttpRetryEvents) < 1 {
 10514  		invalidParams.Add(request.NewErrParamMinLen("HttpRetryEvents", 1))
 10515  	}
 10516  	if s.MaxRetries == nil {
 10517  		invalidParams.Add(request.NewErrParamRequired("MaxRetries"))
 10518  	}
 10519  	if s.PerRetryTimeout == nil {
 10520  		invalidParams.Add(request.NewErrParamRequired("PerRetryTimeout"))
 10521  	}
 10522  	if s.TcpRetryEvents != nil && len(s.TcpRetryEvents) < 1 {
 10523  		invalidParams.Add(request.NewErrParamMinLen("TcpRetryEvents", 1))
 10524  	}
 10525  
 10526  	if invalidParams.Len() > 0 {
 10527  		return invalidParams
 10528  	}
 10529  	return nil
 10530  }
 10531  
 10532  // SetHttpRetryEvents sets the HttpRetryEvents field's value.
 10533  func (s *HttpRetryPolicy) SetHttpRetryEvents(v []*string) *HttpRetryPolicy {
 10534  	s.HttpRetryEvents = v
 10535  	return s
 10536  }
 10537  
 10538  // SetMaxRetries sets the MaxRetries field's value.
 10539  func (s *HttpRetryPolicy) SetMaxRetries(v int64) *HttpRetryPolicy {
 10540  	s.MaxRetries = &v
 10541  	return s
 10542  }
 10543  
 10544  // SetPerRetryTimeout sets the PerRetryTimeout field's value.
 10545  func (s *HttpRetryPolicy) SetPerRetryTimeout(v *Duration) *HttpRetryPolicy {
 10546  	s.PerRetryTimeout = v
 10547  	return s
 10548  }
 10549  
 10550  // SetTcpRetryEvents sets the TcpRetryEvents field's value.
 10551  func (s *HttpRetryPolicy) SetTcpRetryEvents(v []*string) *HttpRetryPolicy {
 10552  	s.TcpRetryEvents = v
 10553  	return s
 10554  }
 10555  
 10556  // An object that represents an HTTP or HTTP/2 route type.
 10557  type HttpRoute struct {
 10558  	_ struct{} `type:"structure"`
 10559  
 10560  	// An object that represents the action to take if a match is determined.
 10561  	//
 10562  	// Action is a required field
 10563  	Action *HttpRouteAction `locationName:"action" type:"structure" required:"true"`
 10564  
 10565  	// An object that represents the criteria for determining a request match.
 10566  	//
 10567  	// Match is a required field
 10568  	Match *HttpRouteMatch `locationName:"match" type:"structure" required:"true"`
 10569  
 10570  	// An object that represents a retry policy.
 10571  	RetryPolicy *HttpRetryPolicy `locationName:"retryPolicy" type:"structure"`
 10572  
 10573  	// An object that represents types of timeouts.
 10574  	Timeout *HttpTimeout `locationName:"timeout" type:"structure"`
 10575  }
 10576  
 10577  // String returns the string representation.
 10578  //
 10579  // API parameter values that are decorated as "sensitive" in the API will not
 10580  // be included in the string output. The member name will be present, but the
 10581  // value will be replaced with "sensitive".
 10582  func (s HttpRoute) String() string {
 10583  	return awsutil.Prettify(s)
 10584  }
 10585  
 10586  // GoString returns the string representation.
 10587  //
 10588  // API parameter values that are decorated as "sensitive" in the API will not
 10589  // be included in the string output. The member name will be present, but the
 10590  // value will be replaced with "sensitive".
 10591  func (s HttpRoute) GoString() string {
 10592  	return s.String()
 10593  }
 10594  
 10595  // Validate inspects the fields of the type to determine if they are valid.
 10596  func (s *HttpRoute) Validate() error {
 10597  	invalidParams := request.ErrInvalidParams{Context: "HttpRoute"}
 10598  	if s.Action == nil {
 10599  		invalidParams.Add(request.NewErrParamRequired("Action"))
 10600  	}
 10601  	if s.Match == nil {
 10602  		invalidParams.Add(request.NewErrParamRequired("Match"))
 10603  	}
 10604  	if s.Action != nil {
 10605  		if err := s.Action.Validate(); err != nil {
 10606  			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
 10607  		}
 10608  	}
 10609  	if s.Match != nil {
 10610  		if err := s.Match.Validate(); err != nil {
 10611  			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
 10612  		}
 10613  	}
 10614  	if s.RetryPolicy != nil {
 10615  		if err := s.RetryPolicy.Validate(); err != nil {
 10616  			invalidParams.AddNested("RetryPolicy", err.(request.ErrInvalidParams))
 10617  		}
 10618  	}
 10619  
 10620  	if invalidParams.Len() > 0 {
 10621  		return invalidParams
 10622  	}
 10623  	return nil
 10624  }
 10625  
 10626  // SetAction sets the Action field's value.
 10627  func (s *HttpRoute) SetAction(v *HttpRouteAction) *HttpRoute {
 10628  	s.Action = v
 10629  	return s
 10630  }
 10631  
 10632  // SetMatch sets the Match field's value.
 10633  func (s *HttpRoute) SetMatch(v *HttpRouteMatch) *HttpRoute {
 10634  	s.Match = v
 10635  	return s
 10636  }
 10637  
 10638  // SetRetryPolicy sets the RetryPolicy field's value.
 10639  func (s *HttpRoute) SetRetryPolicy(v *HttpRetryPolicy) *HttpRoute {
 10640  	s.RetryPolicy = v
 10641  	return s
 10642  }
 10643  
 10644  // SetTimeout sets the Timeout field's value.
 10645  func (s *HttpRoute) SetTimeout(v *HttpTimeout) *HttpRoute {
 10646  	s.Timeout = v
 10647  	return s
 10648  }
 10649  
 10650  // An object that represents the action to take if a match is determined.
 10651  type HttpRouteAction struct {
 10652  	_ struct{} `type:"structure"`
 10653  
 10654  	// An object that represents the targets that traffic is routed to when a request
 10655  	// matches the route.
 10656  	//
 10657  	// WeightedTargets is a required field
 10658  	WeightedTargets []*WeightedTarget `locationName:"weightedTargets" min:"1" type:"list" required:"true"`
 10659  }
 10660  
 10661  // String returns the string representation.
 10662  //
 10663  // API parameter values that are decorated as "sensitive" in the API will not
 10664  // be included in the string output. The member name will be present, but the
 10665  // value will be replaced with "sensitive".
 10666  func (s HttpRouteAction) String() string {
 10667  	return awsutil.Prettify(s)
 10668  }
 10669  
 10670  // GoString returns the string representation.
 10671  //
 10672  // API parameter values that are decorated as "sensitive" in the API will not
 10673  // be included in the string output. The member name will be present, but the
 10674  // value will be replaced with "sensitive".
 10675  func (s HttpRouteAction) GoString() string {
 10676  	return s.String()
 10677  }
 10678  
 10679  // Validate inspects the fields of the type to determine if they are valid.
 10680  func (s *HttpRouteAction) Validate() error {
 10681  	invalidParams := request.ErrInvalidParams{Context: "HttpRouteAction"}
 10682  	if s.WeightedTargets == nil {
 10683  		invalidParams.Add(request.NewErrParamRequired("WeightedTargets"))
 10684  	}
 10685  	if s.WeightedTargets != nil && len(s.WeightedTargets) < 1 {
 10686  		invalidParams.Add(request.NewErrParamMinLen("WeightedTargets", 1))
 10687  	}
 10688  	if s.WeightedTargets != nil {
 10689  		for i, v := range s.WeightedTargets {
 10690  			if v == nil {
 10691  				continue
 10692  			}
 10693  			if err := v.Validate(); err != nil {
 10694  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "WeightedTargets", i), err.(request.ErrInvalidParams))
 10695  			}
 10696  		}
 10697  	}
 10698  
 10699  	if invalidParams.Len() > 0 {
 10700  		return invalidParams
 10701  	}
 10702  	return nil
 10703  }
 10704  
 10705  // SetWeightedTargets sets the WeightedTargets field's value.
 10706  func (s *HttpRouteAction) SetWeightedTargets(v []*WeightedTarget) *HttpRouteAction {
 10707  	s.WeightedTargets = v
 10708  	return s
 10709  }
 10710  
 10711  // An object that represents the HTTP header in the request.
 10712  type HttpRouteHeader struct {
 10713  	_ struct{} `type:"structure"`
 10714  
 10715  	// Specify True to match anything except the match criteria. The default value
 10716  	// is False.
 10717  	Invert *bool `locationName:"invert" type:"boolean"`
 10718  
 10719  	// The HeaderMatchMethod object.
 10720  	Match *HeaderMatchMethod `locationName:"match" type:"structure"`
 10721  
 10722  	// A name for the HTTP header in the client request that will be matched on.
 10723  	//
 10724  	// Name is a required field
 10725  	Name *string `locationName:"name" min:"1" type:"string" required:"true"`
 10726  }
 10727  
 10728  // String returns the string representation.
 10729  //
 10730  // API parameter values that are decorated as "sensitive" in the API will not
 10731  // be included in the string output. The member name will be present, but the
 10732  // value will be replaced with "sensitive".
 10733  func (s HttpRouteHeader) String() string {
 10734  	return awsutil.Prettify(s)
 10735  }
 10736  
 10737  // GoString returns the string representation.
 10738  //
 10739  // API parameter values that are decorated as "sensitive" in the API will not
 10740  // be included in the string output. The member name will be present, but the
 10741  // value will be replaced with "sensitive".
 10742  func (s HttpRouteHeader) GoString() string {
 10743  	return s.String()
 10744  }
 10745  
 10746  // Validate inspects the fields of the type to determine if they are valid.
 10747  func (s *HttpRouteHeader) Validate() error {
 10748  	invalidParams := request.ErrInvalidParams{Context: "HttpRouteHeader"}
 10749  	if s.Name == nil {
 10750  		invalidParams.Add(request.NewErrParamRequired("Name"))
 10751  	}
 10752  	if s.Name != nil && len(*s.Name) < 1 {
 10753  		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
 10754  	}
 10755  	if s.Match != nil {
 10756  		if err := s.Match.Validate(); err != nil {
 10757  			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
 10758  		}
 10759  	}
 10760  
 10761  	if invalidParams.Len() > 0 {
 10762  		return invalidParams
 10763  	}
 10764  	return nil
 10765  }
 10766  
 10767  // SetInvert sets the Invert field's value.
 10768  func (s *HttpRouteHeader) SetInvert(v bool) *HttpRouteHeader {
 10769  	s.Invert = &v
 10770  	return s
 10771  }
 10772  
 10773  // SetMatch sets the Match field's value.
 10774  func (s *HttpRouteHeader) SetMatch(v *HeaderMatchMethod) *HttpRouteHeader {
 10775  	s.Match = v
 10776  	return s
 10777  }
 10778  
 10779  // SetName sets the Name field's value.
 10780  func (s *HttpRouteHeader) SetName(v string) *HttpRouteHeader {
 10781  	s.Name = &v
 10782  	return s
 10783  }
 10784  
 10785  // An object that represents the requirements for a route to match HTTP requests
 10786  // for a virtual router.
 10787  type HttpRouteMatch struct {
 10788  	_ struct{} `type:"structure"`
 10789  
 10790  	// The client request headers to match on.
 10791  	Headers []*HttpRouteHeader `locationName:"headers" min:"1" type:"list"`
 10792  
 10793  	// The client request method to match on. Specify only one.
 10794  	Method *string `locationName:"method" type:"string" enum:"HttpMethod"`
 10795  
 10796  	// The client request path to match on.
 10797  	Path *HttpPathMatch `locationName:"path" type:"structure"`
 10798  
 10799  	// Specifies the path to match requests with. This parameter must always start
 10800  	// with /, which by itself matches all requests to the virtual service name.
 10801  	// You can also match for path-based routing of requests. For example, if your
 10802  	// virtual service name is my-service.local and you want the route to match
 10803  	// requests to my-service.local/metrics, your prefix should be /metrics.
 10804  	Prefix *string `locationName:"prefix" type:"string"`
 10805  
 10806  	// The client request query parameters to match on.
 10807  	QueryParameters []*HttpQueryParameter `locationName:"queryParameters" min:"1" type:"list"`
 10808  
 10809  	// The client request scheme to match on. Specify only one. Applicable only
 10810  	// for HTTP2 routes.
 10811  	Scheme *string `locationName:"scheme" type:"string" enum:"HttpScheme"`
 10812  }
 10813  
 10814  // String returns the string representation.
 10815  //
 10816  // API parameter values that are decorated as "sensitive" in the API will not
 10817  // be included in the string output. The member name will be present, but the
 10818  // value will be replaced with "sensitive".
 10819  func (s HttpRouteMatch) String() string {
 10820  	return awsutil.Prettify(s)
 10821  }
 10822  
 10823  // GoString returns the string representation.
 10824  //
 10825  // API parameter values that are decorated as "sensitive" in the API will not
 10826  // be included in the string output. The member name will be present, but the
 10827  // value will be replaced with "sensitive".
 10828  func (s HttpRouteMatch) GoString() string {
 10829  	return s.String()
 10830  }
 10831  
 10832  // Validate inspects the fields of the type to determine if they are valid.
 10833  func (s *HttpRouteMatch) Validate() error {
 10834  	invalidParams := request.ErrInvalidParams{Context: "HttpRouteMatch"}
 10835  	if s.Headers != nil && len(s.Headers) < 1 {
 10836  		invalidParams.Add(request.NewErrParamMinLen("Headers", 1))
 10837  	}
 10838  	if s.QueryParameters != nil && len(s.QueryParameters) < 1 {
 10839  		invalidParams.Add(request.NewErrParamMinLen("QueryParameters", 1))
 10840  	}
 10841  	if s.Headers != nil {
 10842  		for i, v := range s.Headers {
 10843  			if v == nil {
 10844  				continue
 10845  			}
 10846  			if err := v.Validate(); err != nil {
 10847  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Headers", i), err.(request.ErrInvalidParams))
 10848  			}
 10849  		}
 10850  	}
 10851  	if s.Path != nil {
 10852  		if err := s.Path.Validate(); err != nil {
 10853  			invalidParams.AddNested("Path", err.(request.ErrInvalidParams))
 10854  		}
 10855  	}
 10856  	if s.QueryParameters != nil {
 10857  		for i, v := range s.QueryParameters {
 10858  			if v == nil {
 10859  				continue
 10860  			}
 10861  			if err := v.Validate(); err != nil {
 10862  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueryParameters", i), err.(request.ErrInvalidParams))
 10863  			}
 10864  		}
 10865  	}
 10866  
 10867  	if invalidParams.Len() > 0 {
 10868  		return invalidParams
 10869  	}
 10870  	return nil
 10871  }
 10872  
 10873  // SetHeaders sets the Headers field's value.
 10874  func (s *HttpRouteMatch) SetHeaders(v []*HttpRouteHeader) *HttpRouteMatch {
 10875  	s.Headers = v
 10876  	return s
 10877  }
 10878  
 10879  // SetMethod sets the Method field's value.
 10880  func (s *HttpRouteMatch) SetMethod(v string) *HttpRouteMatch {
 10881  	s.Method = &v
 10882  	return s
 10883  }
 10884  
 10885  // SetPath sets the Path field's value.
 10886  func (s *HttpRouteMatch) SetPath(v *HttpPathMatch) *HttpRouteMatch {
 10887  	s.Path = v
 10888  	return s
 10889  }
 10890  
 10891  // SetPrefix sets the Prefix field's value.
 10892  func (s *HttpRouteMatch) SetPrefix(v string) *HttpRouteMatch {
 10893  	s.Prefix = &v
 10894  	return s
 10895  }
 10896  
 10897  // SetQueryParameters sets the QueryParameters field's value.
 10898  func (s *HttpRouteMatch) SetQueryParameters(v []*HttpQueryParameter) *HttpRouteMatch {
 10899  	s.QueryParameters = v
 10900  	return s
 10901  }
 10902  
 10903  // SetScheme sets the Scheme field's value.
 10904  func (s *HttpRouteMatch) SetScheme(v string) *HttpRouteMatch {
 10905  	s.Scheme = &v
 10906  	return s
 10907  }
 10908  
 10909  // An object that represents types of timeouts.
 10910  type HttpTimeout struct {
 10911  	_ struct{} `type:"structure"`
 10912  
 10913  	// An object that represents an idle timeout. An idle timeout bounds the amount
 10914  	// of time that a connection may be idle. The default value is none.
 10915  	Idle *Duration `locationName:"idle" type:"structure"`
 10916  
 10917  	// An object that represents a per request timeout. The default value is 15
 10918  	// seconds. If you set a higher timeout, then make sure that the higher value
 10919  	// is set for each App Mesh resource in a conversation. For example, if a virtual
 10920  	// node backend uses a virtual router provider to route to another virtual node,
 10921  	// then the timeout should be greater than 15 seconds for the source and destination
 10922  	// virtual node and the route.
 10923  	PerRequest *Duration `locationName:"perRequest" type:"structure"`
 10924  }
 10925  
 10926  // String returns the string representation.
 10927  //
 10928  // API parameter values that are decorated as "sensitive" in the API will not
 10929  // be included in the string output. The member name will be present, but the
 10930  // value will be replaced with "sensitive".
 10931  func (s HttpTimeout) String() string {
 10932  	return awsutil.Prettify(s)
 10933  }
 10934  
 10935  // GoString returns the string representation.
 10936  //
 10937  // API parameter values that are decorated as "sensitive" in the API will not
 10938  // be included in the string output. The member name will be present, but the
 10939  // value will be replaced with "sensitive".
 10940  func (s HttpTimeout) GoString() string {
 10941  	return s.String()
 10942  }
 10943  
 10944  // SetIdle sets the Idle field's value.
 10945  func (s *HttpTimeout) SetIdle(v *Duration) *HttpTimeout {
 10946  	s.Idle = v
 10947  	return s
 10948  }
 10949  
 10950  // SetPerRequest sets the PerRequest field's value.
 10951  func (s *HttpTimeout) SetPerRequest(v *Duration) *HttpTimeout {
 10952  	s.PerRequest = v
 10953  	return s
 10954  }
 10955  
 10956  // The request processing has failed because of an unknown error, exception,
 10957  // or failure.
 10958  type InternalServerErrorException struct {
 10959  	_            struct{}                  `type:"structure"`
 10960  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 10961  
 10962  	Message_ *string `locationName:"message" type:"string"`
 10963  }
 10964  
 10965  // String returns the string representation.
 10966  //
 10967  // API parameter values that are decorated as "sensitive" in the API will not
 10968  // be included in the string output. The member name will be present, but the
 10969  // value will be replaced with "sensitive".
 10970  func (s InternalServerErrorException) String() string {
 10971  	return awsutil.Prettify(s)
 10972  }
 10973  
 10974  // GoString returns the string representation.
 10975  //
 10976  // API parameter values that are decorated as "sensitive" in the API will not
 10977  // be included in the string output. The member name will be present, but the
 10978  // value will be replaced with "sensitive".
 10979  func (s InternalServerErrorException) GoString() string {
 10980  	return s.String()
 10981  }
 10982  
 10983  func newErrorInternalServerErrorException(v protocol.ResponseMetadata) error {
 10984  	return &InternalServerErrorException{
 10985  		RespMetadata: v,
 10986  	}
 10987  }
 10988  
 10989  // Code returns the exception type name.
 10990  func (s *InternalServerErrorException) Code() string {
 10991  	return "InternalServerErrorException"
 10992  }
 10993  
 10994  // Message returns the exception's message.
 10995  func (s *InternalServerErrorException) Message() string {
 10996  	if s.Message_ != nil {
 10997  		return *s.Message_
 10998  	}
 10999  	return ""
 11000  }
 11001  
 11002  // OrigErr always returns nil, satisfies awserr.Error interface.
 11003  func (s *InternalServerErrorException) OrigErr() error {
 11004  	return nil
 11005  }
 11006  
 11007  func (s *InternalServerErrorException) Error() string {
 11008  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 11009  }
 11010  
 11011  // Status code returns the HTTP status code for the request's response error.
 11012  func (s *InternalServerErrorException) StatusCode() int {
 11013  	return s.RespMetadata.StatusCode
 11014  }
 11015  
 11016  // RequestID returns the service's response RequestID for request.
 11017  func (s *InternalServerErrorException) RequestID() string {
 11018  	return s.RespMetadata.RequestID
 11019  }
 11020  
 11021  // You have exceeded a service limit for your account. For more information,
 11022  // see Service Limits (https://docs.aws.amazon.com/app-mesh/latest/userguide/service-quotas.html)
 11023  // in the AWS App Mesh User Guide.
 11024  type LimitExceededException struct {
 11025  	_            struct{}                  `type:"structure"`
 11026  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 11027  
 11028  	Message_ *string `locationName:"message" type:"string"`
 11029  }
 11030  
 11031  // String returns the string representation.
 11032  //
 11033  // API parameter values that are decorated as "sensitive" in the API will not
 11034  // be included in the string output. The member name will be present, but the
 11035  // value will be replaced with "sensitive".
 11036  func (s LimitExceededException) String() string {
 11037  	return awsutil.Prettify(s)
 11038  }
 11039  
 11040  // GoString returns the string representation.
 11041  //
 11042  // API parameter values that are decorated as "sensitive" in the API will not
 11043  // be included in the string output. The member name will be present, but the
 11044  // value will be replaced with "sensitive".
 11045  func (s LimitExceededException) GoString() string {
 11046  	return s.String()
 11047  }
 11048  
 11049  func newErrorLimitExceededException(v protocol.ResponseMetadata) error {
 11050  	return &LimitExceededException{
 11051  		RespMetadata: v,
 11052  	}
 11053  }
 11054  
 11055  // Code returns the exception type name.
 11056  func (s *LimitExceededException) Code() string {
 11057  	return "LimitExceededException"
 11058  }
 11059  
 11060  // Message returns the exception's message.
 11061  func (s *LimitExceededException) Message() string {
 11062  	if s.Message_ != nil {
 11063  		return *s.Message_
 11064  	}
 11065  	return ""
 11066  }
 11067  
 11068  // OrigErr always returns nil, satisfies awserr.Error interface.
 11069  func (s *LimitExceededException) OrigErr() error {
 11070  	return nil
 11071  }
 11072  
 11073  func (s *LimitExceededException) Error() string {
 11074  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 11075  }
 11076  
 11077  // Status code returns the HTTP status code for the request's response error.
 11078  func (s *LimitExceededException) StatusCode() int {
 11079  	return s.RespMetadata.StatusCode
 11080  }
 11081  
 11082  // RequestID returns the service's response RequestID for request.
 11083  func (s *LimitExceededException) RequestID() string {
 11084  	return s.RespMetadata.RequestID
 11085  }
 11086  
 11087  type ListGatewayRoutesInput struct {
 11088  	_ struct{} `type:"structure" nopayload:"true"`
 11089  
 11090  	// The maximum number of results returned by ListGatewayRoutes in paginated
 11091  	// output. When you use this parameter, ListGatewayRoutes returns only limit
 11092  	// results in a single page along with a nextToken response element. You can
 11093  	// see the remaining results of the initial request by sending another ListGatewayRoutes
 11094  	// request with the returned nextToken value. This value can be between 1 and
 11095  	// 100. If you don't use this parameter, ListGatewayRoutes returns up to 100
 11096  	// results and a nextToken value if applicable.
 11097  	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
 11098  
 11099  	// The name of the service mesh to list gateway routes in.
 11100  	//
 11101  	// MeshName is a required field
 11102  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 11103  
 11104  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 11105  	// your own, then it's the ID of the account that shared the mesh with your
 11106  	// account. For more information about mesh sharing, see Working with shared
 11107  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 11108  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
 11109  
 11110  	// The nextToken value returned from a previous paginated ListGatewayRoutes
 11111  	// request where limit was used and the results exceeded the value of that parameter.
 11112  	// Pagination continues from the end of the previous results that returned the
 11113  	// nextToken value.
 11114  	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 11115  
 11116  	// The name of the virtual gateway to list gateway routes in.
 11117  	//
 11118  	// VirtualGatewayName is a required field
 11119  	VirtualGatewayName *string `location:"uri" locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
 11120  }
 11121  
 11122  // String returns the string representation.
 11123  //
 11124  // API parameter values that are decorated as "sensitive" in the API will not
 11125  // be included in the string output. The member name will be present, but the
 11126  // value will be replaced with "sensitive".
 11127  func (s ListGatewayRoutesInput) String() string {
 11128  	return awsutil.Prettify(s)
 11129  }
 11130  
 11131  // GoString returns the string representation.
 11132  //
 11133  // API parameter values that are decorated as "sensitive" in the API will not
 11134  // be included in the string output. The member name will be present, but the
 11135  // value will be replaced with "sensitive".
 11136  func (s ListGatewayRoutesInput) GoString() string {
 11137  	return s.String()
 11138  }
 11139  
 11140  // Validate inspects the fields of the type to determine if they are valid.
 11141  func (s *ListGatewayRoutesInput) Validate() error {
 11142  	invalidParams := request.ErrInvalidParams{Context: "ListGatewayRoutesInput"}
 11143  	if s.Limit != nil && *s.Limit < 1 {
 11144  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11145  	}
 11146  	if s.MeshName == nil {
 11147  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 11148  	}
 11149  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 11150  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 11151  	}
 11152  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
 11153  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
 11154  	}
 11155  	if s.VirtualGatewayName == nil {
 11156  		invalidParams.Add(request.NewErrParamRequired("VirtualGatewayName"))
 11157  	}
 11158  	if s.VirtualGatewayName != nil && len(*s.VirtualGatewayName) < 1 {
 11159  		invalidParams.Add(request.NewErrParamMinLen("VirtualGatewayName", 1))
 11160  	}
 11161  
 11162  	if invalidParams.Len() > 0 {
 11163  		return invalidParams
 11164  	}
 11165  	return nil
 11166  }
 11167  
 11168  // SetLimit sets the Limit field's value.
 11169  func (s *ListGatewayRoutesInput) SetLimit(v int64) *ListGatewayRoutesInput {
 11170  	s.Limit = &v
 11171  	return s
 11172  }
 11173  
 11174  // SetMeshName sets the MeshName field's value.
 11175  func (s *ListGatewayRoutesInput) SetMeshName(v string) *ListGatewayRoutesInput {
 11176  	s.MeshName = &v
 11177  	return s
 11178  }
 11179  
 11180  // SetMeshOwner sets the MeshOwner field's value.
 11181  func (s *ListGatewayRoutesInput) SetMeshOwner(v string) *ListGatewayRoutesInput {
 11182  	s.MeshOwner = &v
 11183  	return s
 11184  }
 11185  
 11186  // SetNextToken sets the NextToken field's value.
 11187  func (s *ListGatewayRoutesInput) SetNextToken(v string) *ListGatewayRoutesInput {
 11188  	s.NextToken = &v
 11189  	return s
 11190  }
 11191  
 11192  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
 11193  func (s *ListGatewayRoutesInput) SetVirtualGatewayName(v string) *ListGatewayRoutesInput {
 11194  	s.VirtualGatewayName = &v
 11195  	return s
 11196  }
 11197  
 11198  type ListGatewayRoutesOutput struct {
 11199  	_ struct{} `type:"structure"`
 11200  
 11201  	// The list of existing gateway routes for the specified service mesh and virtual
 11202  	// gateway.
 11203  	//
 11204  	// GatewayRoutes is a required field
 11205  	GatewayRoutes []*GatewayRouteRef `locationName:"gatewayRoutes" type:"list" required:"true"`
 11206  
 11207  	// The nextToken value to include in a future ListGatewayRoutes request. When
 11208  	// the results of a ListGatewayRoutes request exceed limit, you can use this
 11209  	// value to retrieve the next page of results. This value is null when there
 11210  	// are no more results to return.
 11211  	NextToken *string `locationName:"nextToken" type:"string"`
 11212  }
 11213  
 11214  // String returns the string representation.
 11215  //
 11216  // API parameter values that are decorated as "sensitive" in the API will not
 11217  // be included in the string output. The member name will be present, but the
 11218  // value will be replaced with "sensitive".
 11219  func (s ListGatewayRoutesOutput) String() string {
 11220  	return awsutil.Prettify(s)
 11221  }
 11222  
 11223  // GoString returns the string representation.
 11224  //
 11225  // API parameter values that are decorated as "sensitive" in the API will not
 11226  // be included in the string output. The member name will be present, but the
 11227  // value will be replaced with "sensitive".
 11228  func (s ListGatewayRoutesOutput) GoString() string {
 11229  	return s.String()
 11230  }
 11231  
 11232  // SetGatewayRoutes sets the GatewayRoutes field's value.
 11233  func (s *ListGatewayRoutesOutput) SetGatewayRoutes(v []*GatewayRouteRef) *ListGatewayRoutesOutput {
 11234  	s.GatewayRoutes = v
 11235  	return s
 11236  }
 11237  
 11238  // SetNextToken sets the NextToken field's value.
 11239  func (s *ListGatewayRoutesOutput) SetNextToken(v string) *ListGatewayRoutesOutput {
 11240  	s.NextToken = &v
 11241  	return s
 11242  }
 11243  
 11244  type ListMeshesInput struct {
 11245  	_ struct{} `type:"structure" nopayload:"true"`
 11246  
 11247  	// The maximum number of results returned by ListMeshes in paginated output.
 11248  	// When you use this parameter, ListMeshes returns only limit results in a single
 11249  	// page along with a nextToken response element. You can see the remaining results
 11250  	// of the initial request by sending another ListMeshes request with the returned
 11251  	// nextToken value. This value can be between 1 and 100. If you don't use this
 11252  	// parameter, ListMeshes returns up to 100 results and a nextToken value if
 11253  	// applicable.
 11254  	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
 11255  
 11256  	// The nextToken value returned from a previous paginated ListMeshes request
 11257  	// where limit was used and the results exceeded the value of that parameter.
 11258  	// Pagination continues from the end of the previous results that returned the
 11259  	// nextToken value.
 11260  	//
 11261  	// This token should be treated as an opaque identifier that is used only to
 11262  	// retrieve the next items in a list and not for other programmatic purposes.
 11263  	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 11264  }
 11265  
 11266  // String returns the string representation.
 11267  //
 11268  // API parameter values that are decorated as "sensitive" in the API will not
 11269  // be included in the string output. The member name will be present, but the
 11270  // value will be replaced with "sensitive".
 11271  func (s ListMeshesInput) String() string {
 11272  	return awsutil.Prettify(s)
 11273  }
 11274  
 11275  // GoString returns the string representation.
 11276  //
 11277  // API parameter values that are decorated as "sensitive" in the API will not
 11278  // be included in the string output. The member name will be present, but the
 11279  // value will be replaced with "sensitive".
 11280  func (s ListMeshesInput) GoString() string {
 11281  	return s.String()
 11282  }
 11283  
 11284  // Validate inspects the fields of the type to determine if they are valid.
 11285  func (s *ListMeshesInput) Validate() error {
 11286  	invalidParams := request.ErrInvalidParams{Context: "ListMeshesInput"}
 11287  	if s.Limit != nil && *s.Limit < 1 {
 11288  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11289  	}
 11290  
 11291  	if invalidParams.Len() > 0 {
 11292  		return invalidParams
 11293  	}
 11294  	return nil
 11295  }
 11296  
 11297  // SetLimit sets the Limit field's value.
 11298  func (s *ListMeshesInput) SetLimit(v int64) *ListMeshesInput {
 11299  	s.Limit = &v
 11300  	return s
 11301  }
 11302  
 11303  // SetNextToken sets the NextToken field's value.
 11304  func (s *ListMeshesInput) SetNextToken(v string) *ListMeshesInput {
 11305  	s.NextToken = &v
 11306  	return s
 11307  }
 11308  
 11309  type ListMeshesOutput struct {
 11310  	_ struct{} `type:"structure"`
 11311  
 11312  	// The list of existing service meshes.
 11313  	//
 11314  	// Meshes is a required field
 11315  	Meshes []*MeshRef `locationName:"meshes" type:"list" required:"true"`
 11316  
 11317  	// The nextToken value to include in a future ListMeshes request. When the results
 11318  	// of a ListMeshes request exceed limit, you can use this value to retrieve
 11319  	// the next page of results. This value is null when there are no more results
 11320  	// to return.
 11321  	NextToken *string `locationName:"nextToken" type:"string"`
 11322  }
 11323  
 11324  // String returns the string representation.
 11325  //
 11326  // API parameter values that are decorated as "sensitive" in the API will not
 11327  // be included in the string output. The member name will be present, but the
 11328  // value will be replaced with "sensitive".
 11329  func (s ListMeshesOutput) String() string {
 11330  	return awsutil.Prettify(s)
 11331  }
 11332  
 11333  // GoString returns the string representation.
 11334  //
 11335  // API parameter values that are decorated as "sensitive" in the API will not
 11336  // be included in the string output. The member name will be present, but the
 11337  // value will be replaced with "sensitive".
 11338  func (s ListMeshesOutput) GoString() string {
 11339  	return s.String()
 11340  }
 11341  
 11342  // SetMeshes sets the Meshes field's value.
 11343  func (s *ListMeshesOutput) SetMeshes(v []*MeshRef) *ListMeshesOutput {
 11344  	s.Meshes = v
 11345  	return s
 11346  }
 11347  
 11348  // SetNextToken sets the NextToken field's value.
 11349  func (s *ListMeshesOutput) SetNextToken(v string) *ListMeshesOutput {
 11350  	s.NextToken = &v
 11351  	return s
 11352  }
 11353  
 11354  type ListRoutesInput struct {
 11355  	_ struct{} `type:"structure" nopayload:"true"`
 11356  
 11357  	// The maximum number of results returned by ListRoutes in paginated output.
 11358  	// When you use this parameter, ListRoutes returns only limit results in a single
 11359  	// page along with a nextToken response element. You can see the remaining results
 11360  	// of the initial request by sending another ListRoutes request with the returned
 11361  	// nextToken value. This value can be between 1 and 100. If you don't use this
 11362  	// parameter, ListRoutes returns up to 100 results and a nextToken value if
 11363  	// applicable.
 11364  	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
 11365  
 11366  	// The name of the service mesh to list routes in.
 11367  	//
 11368  	// MeshName is a required field
 11369  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 11370  
 11371  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 11372  	// your own, then it's the ID of the account that shared the mesh with your
 11373  	// account. For more information about mesh sharing, see Working with shared
 11374  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 11375  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
 11376  
 11377  	// The nextToken value returned from a previous paginated ListRoutes request
 11378  	// where limit was used and the results exceeded the value of that parameter.
 11379  	// Pagination continues from the end of the previous results that returned the
 11380  	// nextToken value.
 11381  	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 11382  
 11383  	// The name of the virtual router to list routes in.
 11384  	//
 11385  	// VirtualRouterName is a required field
 11386  	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
 11387  }
 11388  
 11389  // String returns the string representation.
 11390  //
 11391  // API parameter values that are decorated as "sensitive" in the API will not
 11392  // be included in the string output. The member name will be present, but the
 11393  // value will be replaced with "sensitive".
 11394  func (s ListRoutesInput) String() string {
 11395  	return awsutil.Prettify(s)
 11396  }
 11397  
 11398  // GoString returns the string representation.
 11399  //
 11400  // API parameter values that are decorated as "sensitive" in the API will not
 11401  // be included in the string output. The member name will be present, but the
 11402  // value will be replaced with "sensitive".
 11403  func (s ListRoutesInput) GoString() string {
 11404  	return s.String()
 11405  }
 11406  
 11407  // Validate inspects the fields of the type to determine if they are valid.
 11408  func (s *ListRoutesInput) Validate() error {
 11409  	invalidParams := request.ErrInvalidParams{Context: "ListRoutesInput"}
 11410  	if s.Limit != nil && *s.Limit < 1 {
 11411  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11412  	}
 11413  	if s.MeshName == nil {
 11414  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 11415  	}
 11416  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 11417  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 11418  	}
 11419  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
 11420  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
 11421  	}
 11422  	if s.VirtualRouterName == nil {
 11423  		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
 11424  	}
 11425  	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
 11426  		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
 11427  	}
 11428  
 11429  	if invalidParams.Len() > 0 {
 11430  		return invalidParams
 11431  	}
 11432  	return nil
 11433  }
 11434  
 11435  // SetLimit sets the Limit field's value.
 11436  func (s *ListRoutesInput) SetLimit(v int64) *ListRoutesInput {
 11437  	s.Limit = &v
 11438  	return s
 11439  }
 11440  
 11441  // SetMeshName sets the MeshName field's value.
 11442  func (s *ListRoutesInput) SetMeshName(v string) *ListRoutesInput {
 11443  	s.MeshName = &v
 11444  	return s
 11445  }
 11446  
 11447  // SetMeshOwner sets the MeshOwner field's value.
 11448  func (s *ListRoutesInput) SetMeshOwner(v string) *ListRoutesInput {
 11449  	s.MeshOwner = &v
 11450  	return s
 11451  }
 11452  
 11453  // SetNextToken sets the NextToken field's value.
 11454  func (s *ListRoutesInput) SetNextToken(v string) *ListRoutesInput {
 11455  	s.NextToken = &v
 11456  	return s
 11457  }
 11458  
 11459  // SetVirtualRouterName sets the VirtualRouterName field's value.
 11460  func (s *ListRoutesInput) SetVirtualRouterName(v string) *ListRoutesInput {
 11461  	s.VirtualRouterName = &v
 11462  	return s
 11463  }
 11464  
 11465  type ListRoutesOutput struct {
 11466  	_ struct{} `type:"structure"`
 11467  
 11468  	// The nextToken value to include in a future ListRoutes request. When the results
 11469  	// of a ListRoutes request exceed limit, you can use this value to retrieve
 11470  	// the next page of results. This value is null when there are no more results
 11471  	// to return.
 11472  	NextToken *string `locationName:"nextToken" type:"string"`
 11473  
 11474  	// The list of existing routes for the specified service mesh and virtual router.
 11475  	//
 11476  	// Routes is a required field
 11477  	Routes []*RouteRef `locationName:"routes" type:"list" required:"true"`
 11478  }
 11479  
 11480  // String returns the string representation.
 11481  //
 11482  // API parameter values that are decorated as "sensitive" in the API will not
 11483  // be included in the string output. The member name will be present, but the
 11484  // value will be replaced with "sensitive".
 11485  func (s ListRoutesOutput) String() string {
 11486  	return awsutil.Prettify(s)
 11487  }
 11488  
 11489  // GoString returns the string representation.
 11490  //
 11491  // API parameter values that are decorated as "sensitive" in the API will not
 11492  // be included in the string output. The member name will be present, but the
 11493  // value will be replaced with "sensitive".
 11494  func (s ListRoutesOutput) GoString() string {
 11495  	return s.String()
 11496  }
 11497  
 11498  // SetNextToken sets the NextToken field's value.
 11499  func (s *ListRoutesOutput) SetNextToken(v string) *ListRoutesOutput {
 11500  	s.NextToken = &v
 11501  	return s
 11502  }
 11503  
 11504  // SetRoutes sets the Routes field's value.
 11505  func (s *ListRoutesOutput) SetRoutes(v []*RouteRef) *ListRoutesOutput {
 11506  	s.Routes = v
 11507  	return s
 11508  }
 11509  
 11510  type ListTagsForResourceInput struct {
 11511  	_ struct{} `type:"structure" nopayload:"true"`
 11512  
 11513  	// The maximum number of tag results returned by ListTagsForResource in paginated
 11514  	// output. When this parameter is used, ListTagsForResource returns only limit
 11515  	// results in a single page along with a nextToken response element. You can
 11516  	// see the remaining results of the initial request by sending another ListTagsForResource
 11517  	// request with the returned nextToken value. This value can be between 1 and
 11518  	// 100. If you don't use this parameter, ListTagsForResource returns up to 100
 11519  	// results and a nextToken value if applicable.
 11520  	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
 11521  
 11522  	// The nextToken value returned from a previous paginated ListTagsForResource
 11523  	// request where limit was used and the results exceeded the value of that parameter.
 11524  	// Pagination continues from the end of the previous results that returned the
 11525  	// nextToken value.
 11526  	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 11527  
 11528  	// The Amazon Resource Name (ARN) that identifies the resource to list the tags
 11529  	// for.
 11530  	//
 11531  	// ResourceArn is a required field
 11532  	ResourceArn *string `location:"querystring" locationName:"resourceArn" type:"string" required:"true"`
 11533  }
 11534  
 11535  // String returns the string representation.
 11536  //
 11537  // API parameter values that are decorated as "sensitive" in the API will not
 11538  // be included in the string output. The member name will be present, but the
 11539  // value will be replaced with "sensitive".
 11540  func (s ListTagsForResourceInput) String() string {
 11541  	return awsutil.Prettify(s)
 11542  }
 11543  
 11544  // GoString returns the string representation.
 11545  //
 11546  // API parameter values that are decorated as "sensitive" in the API will not
 11547  // be included in the string output. The member name will be present, but the
 11548  // value will be replaced with "sensitive".
 11549  func (s ListTagsForResourceInput) GoString() string {
 11550  	return s.String()
 11551  }
 11552  
 11553  // Validate inspects the fields of the type to determine if they are valid.
 11554  func (s *ListTagsForResourceInput) Validate() error {
 11555  	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
 11556  	if s.Limit != nil && *s.Limit < 1 {
 11557  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11558  	}
 11559  	if s.ResourceArn == nil {
 11560  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
 11561  	}
 11562  
 11563  	if invalidParams.Len() > 0 {
 11564  		return invalidParams
 11565  	}
 11566  	return nil
 11567  }
 11568  
 11569  // SetLimit sets the Limit field's value.
 11570  func (s *ListTagsForResourceInput) SetLimit(v int64) *ListTagsForResourceInput {
 11571  	s.Limit = &v
 11572  	return s
 11573  }
 11574  
 11575  // SetNextToken sets the NextToken field's value.
 11576  func (s *ListTagsForResourceInput) SetNextToken(v string) *ListTagsForResourceInput {
 11577  	s.NextToken = &v
 11578  	return s
 11579  }
 11580  
 11581  // SetResourceArn sets the ResourceArn field's value.
 11582  func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
 11583  	s.ResourceArn = &v
 11584  	return s
 11585  }
 11586  
 11587  type ListTagsForResourceOutput struct {
 11588  	_ struct{} `type:"structure"`
 11589  
 11590  	// The nextToken value to include in a future ListTagsForResource request. When
 11591  	// the results of a ListTagsForResource request exceed limit, you can use this
 11592  	// value to retrieve the next page of results. This value is null when there
 11593  	// are no more results to return.
 11594  	NextToken *string `locationName:"nextToken" type:"string"`
 11595  
 11596  	// The tags for the resource.
 11597  	//
 11598  	// Tags is a required field
 11599  	Tags []*TagRef `locationName:"tags" type:"list" required:"true"`
 11600  }
 11601  
 11602  // String returns the string representation.
 11603  //
 11604  // API parameter values that are decorated as "sensitive" in the API will not
 11605  // be included in the string output. The member name will be present, but the
 11606  // value will be replaced with "sensitive".
 11607  func (s ListTagsForResourceOutput) String() string {
 11608  	return awsutil.Prettify(s)
 11609  }
 11610  
 11611  // GoString returns the string representation.
 11612  //
 11613  // API parameter values that are decorated as "sensitive" in the API will not
 11614  // be included in the string output. The member name will be present, but the
 11615  // value will be replaced with "sensitive".
 11616  func (s ListTagsForResourceOutput) GoString() string {
 11617  	return s.String()
 11618  }
 11619  
 11620  // SetNextToken sets the NextToken field's value.
 11621  func (s *ListTagsForResourceOutput) SetNextToken(v string) *ListTagsForResourceOutput {
 11622  	s.NextToken = &v
 11623  	return s
 11624  }
 11625  
 11626  // SetTags sets the Tags field's value.
 11627  func (s *ListTagsForResourceOutput) SetTags(v []*TagRef) *ListTagsForResourceOutput {
 11628  	s.Tags = v
 11629  	return s
 11630  }
 11631  
 11632  type ListVirtualGatewaysInput struct {
 11633  	_ struct{} `type:"structure" nopayload:"true"`
 11634  
 11635  	// The maximum number of results returned by ListVirtualGateways in paginated
 11636  	// output. When you use this parameter, ListVirtualGateways returns only limit
 11637  	// results in a single page along with a nextToken response element. You can
 11638  	// see the remaining results of the initial request by sending another ListVirtualGateways
 11639  	// request with the returned nextToken value. This value can be between 1 and
 11640  	// 100. If you don't use this parameter, ListVirtualGateways returns up to 100
 11641  	// results and a nextToken value if applicable.
 11642  	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
 11643  
 11644  	// The name of the service mesh to list virtual gateways in.
 11645  	//
 11646  	// MeshName is a required field
 11647  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 11648  
 11649  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 11650  	// your own, then it's the ID of the account that shared the mesh with your
 11651  	// account. For more information about mesh sharing, see Working with shared
 11652  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 11653  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
 11654  
 11655  	// The nextToken value returned from a previous paginated ListVirtualGateways
 11656  	// request where limit was used and the results exceeded the value of that parameter.
 11657  	// Pagination continues from the end of the previous results that returned the
 11658  	// nextToken value.
 11659  	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 11660  }
 11661  
 11662  // String returns the string representation.
 11663  //
 11664  // API parameter values that are decorated as "sensitive" in the API will not
 11665  // be included in the string output. The member name will be present, but the
 11666  // value will be replaced with "sensitive".
 11667  func (s ListVirtualGatewaysInput) String() string {
 11668  	return awsutil.Prettify(s)
 11669  }
 11670  
 11671  // GoString returns the string representation.
 11672  //
 11673  // API parameter values that are decorated as "sensitive" in the API will not
 11674  // be included in the string output. The member name will be present, but the
 11675  // value will be replaced with "sensitive".
 11676  func (s ListVirtualGatewaysInput) GoString() string {
 11677  	return s.String()
 11678  }
 11679  
 11680  // Validate inspects the fields of the type to determine if they are valid.
 11681  func (s *ListVirtualGatewaysInput) Validate() error {
 11682  	invalidParams := request.ErrInvalidParams{Context: "ListVirtualGatewaysInput"}
 11683  	if s.Limit != nil && *s.Limit < 1 {
 11684  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11685  	}
 11686  	if s.MeshName == nil {
 11687  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 11688  	}
 11689  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 11690  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 11691  	}
 11692  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
 11693  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
 11694  	}
 11695  
 11696  	if invalidParams.Len() > 0 {
 11697  		return invalidParams
 11698  	}
 11699  	return nil
 11700  }
 11701  
 11702  // SetLimit sets the Limit field's value.
 11703  func (s *ListVirtualGatewaysInput) SetLimit(v int64) *ListVirtualGatewaysInput {
 11704  	s.Limit = &v
 11705  	return s
 11706  }
 11707  
 11708  // SetMeshName sets the MeshName field's value.
 11709  func (s *ListVirtualGatewaysInput) SetMeshName(v string) *ListVirtualGatewaysInput {
 11710  	s.MeshName = &v
 11711  	return s
 11712  }
 11713  
 11714  // SetMeshOwner sets the MeshOwner field's value.
 11715  func (s *ListVirtualGatewaysInput) SetMeshOwner(v string) *ListVirtualGatewaysInput {
 11716  	s.MeshOwner = &v
 11717  	return s
 11718  }
 11719  
 11720  // SetNextToken sets the NextToken field's value.
 11721  func (s *ListVirtualGatewaysInput) SetNextToken(v string) *ListVirtualGatewaysInput {
 11722  	s.NextToken = &v
 11723  	return s
 11724  }
 11725  
 11726  type ListVirtualGatewaysOutput struct {
 11727  	_ struct{} `type:"structure"`
 11728  
 11729  	// The nextToken value to include in a future ListVirtualGateways request. When
 11730  	// the results of a ListVirtualGateways request exceed limit, you can use this
 11731  	// value to retrieve the next page of results. This value is null when there
 11732  	// are no more results to return.
 11733  	NextToken *string `locationName:"nextToken" type:"string"`
 11734  
 11735  	// The list of existing virtual gateways for the specified service mesh.
 11736  	//
 11737  	// VirtualGateways is a required field
 11738  	VirtualGateways []*VirtualGatewayRef `locationName:"virtualGateways" type:"list" required:"true"`
 11739  }
 11740  
 11741  // String returns the string representation.
 11742  //
 11743  // API parameter values that are decorated as "sensitive" in the API will not
 11744  // be included in the string output. The member name will be present, but the
 11745  // value will be replaced with "sensitive".
 11746  func (s ListVirtualGatewaysOutput) String() string {
 11747  	return awsutil.Prettify(s)
 11748  }
 11749  
 11750  // GoString returns the string representation.
 11751  //
 11752  // API parameter values that are decorated as "sensitive" in the API will not
 11753  // be included in the string output. The member name will be present, but the
 11754  // value will be replaced with "sensitive".
 11755  func (s ListVirtualGatewaysOutput) GoString() string {
 11756  	return s.String()
 11757  }
 11758  
 11759  // SetNextToken sets the NextToken field's value.
 11760  func (s *ListVirtualGatewaysOutput) SetNextToken(v string) *ListVirtualGatewaysOutput {
 11761  	s.NextToken = &v
 11762  	return s
 11763  }
 11764  
 11765  // SetVirtualGateways sets the VirtualGateways field's value.
 11766  func (s *ListVirtualGatewaysOutput) SetVirtualGateways(v []*VirtualGatewayRef) *ListVirtualGatewaysOutput {
 11767  	s.VirtualGateways = v
 11768  	return s
 11769  }
 11770  
 11771  type ListVirtualNodesInput struct {
 11772  	_ struct{} `type:"structure" nopayload:"true"`
 11773  
 11774  	// The maximum number of results returned by ListVirtualNodes in paginated output.
 11775  	// When you use this parameter, ListVirtualNodes returns only limit results
 11776  	// in a single page along with a nextToken response element. You can see the
 11777  	// remaining results of the initial request by sending another ListVirtualNodes
 11778  	// request with the returned nextToken value. This value can be between 1 and
 11779  	// 100. If you don't use this parameter, ListVirtualNodes returns up to 100
 11780  	// results and a nextToken value if applicable.
 11781  	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
 11782  
 11783  	// The name of the service mesh to list virtual nodes in.
 11784  	//
 11785  	// MeshName is a required field
 11786  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 11787  
 11788  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 11789  	// your own, then it's the ID of the account that shared the mesh with your
 11790  	// account. For more information about mesh sharing, see Working with shared
 11791  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 11792  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
 11793  
 11794  	// The nextToken value returned from a previous paginated ListVirtualNodes request
 11795  	// where limit was used and the results exceeded the value of that parameter.
 11796  	// Pagination continues from the end of the previous results that returned the
 11797  	// nextToken value.
 11798  	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 11799  }
 11800  
 11801  // String returns the string representation.
 11802  //
 11803  // API parameter values that are decorated as "sensitive" in the API will not
 11804  // be included in the string output. The member name will be present, but the
 11805  // value will be replaced with "sensitive".
 11806  func (s ListVirtualNodesInput) String() string {
 11807  	return awsutil.Prettify(s)
 11808  }
 11809  
 11810  // GoString returns the string representation.
 11811  //
 11812  // API parameter values that are decorated as "sensitive" in the API will not
 11813  // be included in the string output. The member name will be present, but the
 11814  // value will be replaced with "sensitive".
 11815  func (s ListVirtualNodesInput) GoString() string {
 11816  	return s.String()
 11817  }
 11818  
 11819  // Validate inspects the fields of the type to determine if they are valid.
 11820  func (s *ListVirtualNodesInput) Validate() error {
 11821  	invalidParams := request.ErrInvalidParams{Context: "ListVirtualNodesInput"}
 11822  	if s.Limit != nil && *s.Limit < 1 {
 11823  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11824  	}
 11825  	if s.MeshName == nil {
 11826  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 11827  	}
 11828  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 11829  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 11830  	}
 11831  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
 11832  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
 11833  	}
 11834  
 11835  	if invalidParams.Len() > 0 {
 11836  		return invalidParams
 11837  	}
 11838  	return nil
 11839  }
 11840  
 11841  // SetLimit sets the Limit field's value.
 11842  func (s *ListVirtualNodesInput) SetLimit(v int64) *ListVirtualNodesInput {
 11843  	s.Limit = &v
 11844  	return s
 11845  }
 11846  
 11847  // SetMeshName sets the MeshName field's value.
 11848  func (s *ListVirtualNodesInput) SetMeshName(v string) *ListVirtualNodesInput {
 11849  	s.MeshName = &v
 11850  	return s
 11851  }
 11852  
 11853  // SetMeshOwner sets the MeshOwner field's value.
 11854  func (s *ListVirtualNodesInput) SetMeshOwner(v string) *ListVirtualNodesInput {
 11855  	s.MeshOwner = &v
 11856  	return s
 11857  }
 11858  
 11859  // SetNextToken sets the NextToken field's value.
 11860  func (s *ListVirtualNodesInput) SetNextToken(v string) *ListVirtualNodesInput {
 11861  	s.NextToken = &v
 11862  	return s
 11863  }
 11864  
 11865  type ListVirtualNodesOutput struct {
 11866  	_ struct{} `type:"structure"`
 11867  
 11868  	// The nextToken value to include in a future ListVirtualNodes request. When
 11869  	// the results of a ListVirtualNodes request exceed limit, you can use this
 11870  	// value to retrieve the next page of results. This value is null when there
 11871  	// are no more results to return.
 11872  	NextToken *string `locationName:"nextToken" type:"string"`
 11873  
 11874  	// The list of existing virtual nodes for the specified service mesh.
 11875  	//
 11876  	// VirtualNodes is a required field
 11877  	VirtualNodes []*VirtualNodeRef `locationName:"virtualNodes" type:"list" required:"true"`
 11878  }
 11879  
 11880  // String returns the string representation.
 11881  //
 11882  // API parameter values that are decorated as "sensitive" in the API will not
 11883  // be included in the string output. The member name will be present, but the
 11884  // value will be replaced with "sensitive".
 11885  func (s ListVirtualNodesOutput) String() string {
 11886  	return awsutil.Prettify(s)
 11887  }
 11888  
 11889  // GoString returns the string representation.
 11890  //
 11891  // API parameter values that are decorated as "sensitive" in the API will not
 11892  // be included in the string output. The member name will be present, but the
 11893  // value will be replaced with "sensitive".
 11894  func (s ListVirtualNodesOutput) GoString() string {
 11895  	return s.String()
 11896  }
 11897  
 11898  // SetNextToken sets the NextToken field's value.
 11899  func (s *ListVirtualNodesOutput) SetNextToken(v string) *ListVirtualNodesOutput {
 11900  	s.NextToken = &v
 11901  	return s
 11902  }
 11903  
 11904  // SetVirtualNodes sets the VirtualNodes field's value.
 11905  func (s *ListVirtualNodesOutput) SetVirtualNodes(v []*VirtualNodeRef) *ListVirtualNodesOutput {
 11906  	s.VirtualNodes = v
 11907  	return s
 11908  }
 11909  
 11910  type ListVirtualRoutersInput struct {
 11911  	_ struct{} `type:"structure" nopayload:"true"`
 11912  
 11913  	// The maximum number of results returned by ListVirtualRouters in paginated
 11914  	// output. When you use this parameter, ListVirtualRouters returns only limit
 11915  	// results in a single page along with a nextToken response element. You can
 11916  	// see the remaining results of the initial request by sending another ListVirtualRouters
 11917  	// request with the returned nextToken value. This value can be between 1 and
 11918  	// 100. If you don't use this parameter, ListVirtualRouters returns up to 100
 11919  	// results and a nextToken value if applicable.
 11920  	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
 11921  
 11922  	// The name of the service mesh to list virtual routers in.
 11923  	//
 11924  	// MeshName is a required field
 11925  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 11926  
 11927  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 11928  	// your own, then it's the ID of the account that shared the mesh with your
 11929  	// account. For more information about mesh sharing, see Working with shared
 11930  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 11931  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
 11932  
 11933  	// The nextToken value returned from a previous paginated ListVirtualRouters
 11934  	// request where limit was used and the results exceeded the value of that parameter.
 11935  	// Pagination continues from the end of the previous results that returned the
 11936  	// nextToken value.
 11937  	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 11938  }
 11939  
 11940  // String returns the string representation.
 11941  //
 11942  // API parameter values that are decorated as "sensitive" in the API will not
 11943  // be included in the string output. The member name will be present, but the
 11944  // value will be replaced with "sensitive".
 11945  func (s ListVirtualRoutersInput) String() string {
 11946  	return awsutil.Prettify(s)
 11947  }
 11948  
 11949  // GoString returns the string representation.
 11950  //
 11951  // API parameter values that are decorated as "sensitive" in the API will not
 11952  // be included in the string output. The member name will be present, but the
 11953  // value will be replaced with "sensitive".
 11954  func (s ListVirtualRoutersInput) GoString() string {
 11955  	return s.String()
 11956  }
 11957  
 11958  // Validate inspects the fields of the type to determine if they are valid.
 11959  func (s *ListVirtualRoutersInput) Validate() error {
 11960  	invalidParams := request.ErrInvalidParams{Context: "ListVirtualRoutersInput"}
 11961  	if s.Limit != nil && *s.Limit < 1 {
 11962  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 11963  	}
 11964  	if s.MeshName == nil {
 11965  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 11966  	}
 11967  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 11968  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 11969  	}
 11970  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
 11971  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
 11972  	}
 11973  
 11974  	if invalidParams.Len() > 0 {
 11975  		return invalidParams
 11976  	}
 11977  	return nil
 11978  }
 11979  
 11980  // SetLimit sets the Limit field's value.
 11981  func (s *ListVirtualRoutersInput) SetLimit(v int64) *ListVirtualRoutersInput {
 11982  	s.Limit = &v
 11983  	return s
 11984  }
 11985  
 11986  // SetMeshName sets the MeshName field's value.
 11987  func (s *ListVirtualRoutersInput) SetMeshName(v string) *ListVirtualRoutersInput {
 11988  	s.MeshName = &v
 11989  	return s
 11990  }
 11991  
 11992  // SetMeshOwner sets the MeshOwner field's value.
 11993  func (s *ListVirtualRoutersInput) SetMeshOwner(v string) *ListVirtualRoutersInput {
 11994  	s.MeshOwner = &v
 11995  	return s
 11996  }
 11997  
 11998  // SetNextToken sets the NextToken field's value.
 11999  func (s *ListVirtualRoutersInput) SetNextToken(v string) *ListVirtualRoutersInput {
 12000  	s.NextToken = &v
 12001  	return s
 12002  }
 12003  
 12004  type ListVirtualRoutersOutput struct {
 12005  	_ struct{} `type:"structure"`
 12006  
 12007  	// The nextToken value to include in a future ListVirtualRouters request. When
 12008  	// the results of a ListVirtualRouters request exceed limit, you can use this
 12009  	// value to retrieve the next page of results. This value is null when there
 12010  	// are no more results to return.
 12011  	NextToken *string `locationName:"nextToken" type:"string"`
 12012  
 12013  	// The list of existing virtual routers for the specified service mesh.
 12014  	//
 12015  	// VirtualRouters is a required field
 12016  	VirtualRouters []*VirtualRouterRef `locationName:"virtualRouters" type:"list" required:"true"`
 12017  }
 12018  
 12019  // String returns the string representation.
 12020  //
 12021  // API parameter values that are decorated as "sensitive" in the API will not
 12022  // be included in the string output. The member name will be present, but the
 12023  // value will be replaced with "sensitive".
 12024  func (s ListVirtualRoutersOutput) String() string {
 12025  	return awsutil.Prettify(s)
 12026  }
 12027  
 12028  // GoString returns the string representation.
 12029  //
 12030  // API parameter values that are decorated as "sensitive" in the API will not
 12031  // be included in the string output. The member name will be present, but the
 12032  // value will be replaced with "sensitive".
 12033  func (s ListVirtualRoutersOutput) GoString() string {
 12034  	return s.String()
 12035  }
 12036  
 12037  // SetNextToken sets the NextToken field's value.
 12038  func (s *ListVirtualRoutersOutput) SetNextToken(v string) *ListVirtualRoutersOutput {
 12039  	s.NextToken = &v
 12040  	return s
 12041  }
 12042  
 12043  // SetVirtualRouters sets the VirtualRouters field's value.
 12044  func (s *ListVirtualRoutersOutput) SetVirtualRouters(v []*VirtualRouterRef) *ListVirtualRoutersOutput {
 12045  	s.VirtualRouters = v
 12046  	return s
 12047  }
 12048  
 12049  type ListVirtualServicesInput struct {
 12050  	_ struct{} `type:"structure" nopayload:"true"`
 12051  
 12052  	// The maximum number of results returned by ListVirtualServices in paginated
 12053  	// output. When you use this parameter, ListVirtualServices returns only limit
 12054  	// results in a single page along with a nextToken response element. You can
 12055  	// see the remaining results of the initial request by sending another ListVirtualServices
 12056  	// request with the returned nextToken value. This value can be between 1 and
 12057  	// 100. If you don't use this parameter, ListVirtualServices returns up to 100
 12058  	// results and a nextToken value if applicable.
 12059  	Limit *int64 `location:"querystring" locationName:"limit" min:"1" type:"integer"`
 12060  
 12061  	// The name of the service mesh to list virtual services in.
 12062  	//
 12063  	// MeshName is a required field
 12064  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 12065  
 12066  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 12067  	// your own, then it's the ID of the account that shared the mesh with your
 12068  	// account. For more information about mesh sharing, see Working with shared
 12069  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 12070  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
 12071  
 12072  	// The nextToken value returned from a previous paginated ListVirtualServices
 12073  	// request where limit was used and the results exceeded the value of that parameter.
 12074  	// Pagination continues from the end of the previous results that returned the
 12075  	// nextToken value.
 12076  	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
 12077  }
 12078  
 12079  // String returns the string representation.
 12080  //
 12081  // API parameter values that are decorated as "sensitive" in the API will not
 12082  // be included in the string output. The member name will be present, but the
 12083  // value will be replaced with "sensitive".
 12084  func (s ListVirtualServicesInput) String() string {
 12085  	return awsutil.Prettify(s)
 12086  }
 12087  
 12088  // GoString returns the string representation.
 12089  //
 12090  // API parameter values that are decorated as "sensitive" in the API will not
 12091  // be included in the string output. The member name will be present, but the
 12092  // value will be replaced with "sensitive".
 12093  func (s ListVirtualServicesInput) GoString() string {
 12094  	return s.String()
 12095  }
 12096  
 12097  // Validate inspects the fields of the type to determine if they are valid.
 12098  func (s *ListVirtualServicesInput) Validate() error {
 12099  	invalidParams := request.ErrInvalidParams{Context: "ListVirtualServicesInput"}
 12100  	if s.Limit != nil && *s.Limit < 1 {
 12101  		invalidParams.Add(request.NewErrParamMinValue("Limit", 1))
 12102  	}
 12103  	if s.MeshName == nil {
 12104  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 12105  	}
 12106  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 12107  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 12108  	}
 12109  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
 12110  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
 12111  	}
 12112  
 12113  	if invalidParams.Len() > 0 {
 12114  		return invalidParams
 12115  	}
 12116  	return nil
 12117  }
 12118  
 12119  // SetLimit sets the Limit field's value.
 12120  func (s *ListVirtualServicesInput) SetLimit(v int64) *ListVirtualServicesInput {
 12121  	s.Limit = &v
 12122  	return s
 12123  }
 12124  
 12125  // SetMeshName sets the MeshName field's value.
 12126  func (s *ListVirtualServicesInput) SetMeshName(v string) *ListVirtualServicesInput {
 12127  	s.MeshName = &v
 12128  	return s
 12129  }
 12130  
 12131  // SetMeshOwner sets the MeshOwner field's value.
 12132  func (s *ListVirtualServicesInput) SetMeshOwner(v string) *ListVirtualServicesInput {
 12133  	s.MeshOwner = &v
 12134  	return s
 12135  }
 12136  
 12137  // SetNextToken sets the NextToken field's value.
 12138  func (s *ListVirtualServicesInput) SetNextToken(v string) *ListVirtualServicesInput {
 12139  	s.NextToken = &v
 12140  	return s
 12141  }
 12142  
 12143  type ListVirtualServicesOutput struct {
 12144  	_ struct{} `type:"structure"`
 12145  
 12146  	// The nextToken value to include in a future ListVirtualServices request. When
 12147  	// the results of a ListVirtualServices request exceed limit, you can use this
 12148  	// value to retrieve the next page of results. This value is null when there
 12149  	// are no more results to return.
 12150  	NextToken *string `locationName:"nextToken" type:"string"`
 12151  
 12152  	// The list of existing virtual services for the specified service mesh.
 12153  	//
 12154  	// VirtualServices is a required field
 12155  	VirtualServices []*VirtualServiceRef `locationName:"virtualServices" type:"list" required:"true"`
 12156  }
 12157  
 12158  // String returns the string representation.
 12159  //
 12160  // API parameter values that are decorated as "sensitive" in the API will not
 12161  // be included in the string output. The member name will be present, but the
 12162  // value will be replaced with "sensitive".
 12163  func (s ListVirtualServicesOutput) String() string {
 12164  	return awsutil.Prettify(s)
 12165  }
 12166  
 12167  // GoString returns the string representation.
 12168  //
 12169  // API parameter values that are decorated as "sensitive" in the API will not
 12170  // be included in the string output. The member name will be present, but the
 12171  // value will be replaced with "sensitive".
 12172  func (s ListVirtualServicesOutput) GoString() string {
 12173  	return s.String()
 12174  }
 12175  
 12176  // SetNextToken sets the NextToken field's value.
 12177  func (s *ListVirtualServicesOutput) SetNextToken(v string) *ListVirtualServicesOutput {
 12178  	s.NextToken = &v
 12179  	return s
 12180  }
 12181  
 12182  // SetVirtualServices sets the VirtualServices field's value.
 12183  func (s *ListVirtualServicesOutput) SetVirtualServices(v []*VirtualServiceRef) *ListVirtualServicesOutput {
 12184  	s.VirtualServices = v
 12185  	return s
 12186  }
 12187  
 12188  // An object that represents a listener for a virtual node.
 12189  type Listener struct {
 12190  	_ struct{} `type:"structure"`
 12191  
 12192  	// The connection pool information for the listener.
 12193  	ConnectionPool *VirtualNodeConnectionPool `locationName:"connectionPool" type:"structure"`
 12194  
 12195  	// The health check information for the listener.
 12196  	HealthCheck *HealthCheckPolicy `locationName:"healthCheck" type:"structure"`
 12197  
 12198  	// The outlier detection information for the listener.
 12199  	OutlierDetection *OutlierDetection `locationName:"outlierDetection" type:"structure"`
 12200  
 12201  	// The port mapping information for the listener.
 12202  	//
 12203  	// PortMapping is a required field
 12204  	PortMapping *PortMapping `locationName:"portMapping" type:"structure" required:"true"`
 12205  
 12206  	// An object that represents timeouts for different protocols.
 12207  	Timeout *ListenerTimeout `locationName:"timeout" type:"structure"`
 12208  
 12209  	// A reference to an object that represents the Transport Layer Security (TLS)
 12210  	// properties for a listener.
 12211  	Tls *ListenerTls `locationName:"tls" type:"structure"`
 12212  }
 12213  
 12214  // String returns the string representation.
 12215  //
 12216  // API parameter values that are decorated as "sensitive" in the API will not
 12217  // be included in the string output. The member name will be present, but the
 12218  // value will be replaced with "sensitive".
 12219  func (s Listener) String() string {
 12220  	return awsutil.Prettify(s)
 12221  }
 12222  
 12223  // GoString returns the string representation.
 12224  //
 12225  // API parameter values that are decorated as "sensitive" in the API will not
 12226  // be included in the string output. The member name will be present, but the
 12227  // value will be replaced with "sensitive".
 12228  func (s Listener) GoString() string {
 12229  	return s.String()
 12230  }
 12231  
 12232  // Validate inspects the fields of the type to determine if they are valid.
 12233  func (s *Listener) Validate() error {
 12234  	invalidParams := request.ErrInvalidParams{Context: "Listener"}
 12235  	if s.PortMapping == nil {
 12236  		invalidParams.Add(request.NewErrParamRequired("PortMapping"))
 12237  	}
 12238  	if s.ConnectionPool != nil {
 12239  		if err := s.ConnectionPool.Validate(); err != nil {
 12240  			invalidParams.AddNested("ConnectionPool", err.(request.ErrInvalidParams))
 12241  		}
 12242  	}
 12243  	if s.HealthCheck != nil {
 12244  		if err := s.HealthCheck.Validate(); err != nil {
 12245  			invalidParams.AddNested("HealthCheck", err.(request.ErrInvalidParams))
 12246  		}
 12247  	}
 12248  	if s.OutlierDetection != nil {
 12249  		if err := s.OutlierDetection.Validate(); err != nil {
 12250  			invalidParams.AddNested("OutlierDetection", err.(request.ErrInvalidParams))
 12251  		}
 12252  	}
 12253  	if s.PortMapping != nil {
 12254  		if err := s.PortMapping.Validate(); err != nil {
 12255  			invalidParams.AddNested("PortMapping", err.(request.ErrInvalidParams))
 12256  		}
 12257  	}
 12258  	if s.Tls != nil {
 12259  		if err := s.Tls.Validate(); err != nil {
 12260  			invalidParams.AddNested("Tls", err.(request.ErrInvalidParams))
 12261  		}
 12262  	}
 12263  
 12264  	if invalidParams.Len() > 0 {
 12265  		return invalidParams
 12266  	}
 12267  	return nil
 12268  }
 12269  
 12270  // SetConnectionPool sets the ConnectionPool field's value.
 12271  func (s *Listener) SetConnectionPool(v *VirtualNodeConnectionPool) *Listener {
 12272  	s.ConnectionPool = v
 12273  	return s
 12274  }
 12275  
 12276  // SetHealthCheck sets the HealthCheck field's value.
 12277  func (s *Listener) SetHealthCheck(v *HealthCheckPolicy) *Listener {
 12278  	s.HealthCheck = v
 12279  	return s
 12280  }
 12281  
 12282  // SetOutlierDetection sets the OutlierDetection field's value.
 12283  func (s *Listener) SetOutlierDetection(v *OutlierDetection) *Listener {
 12284  	s.OutlierDetection = v
 12285  	return s
 12286  }
 12287  
 12288  // SetPortMapping sets the PortMapping field's value.
 12289  func (s *Listener) SetPortMapping(v *PortMapping) *Listener {
 12290  	s.PortMapping = v
 12291  	return s
 12292  }
 12293  
 12294  // SetTimeout sets the Timeout field's value.
 12295  func (s *Listener) SetTimeout(v *ListenerTimeout) *Listener {
 12296  	s.Timeout = v
 12297  	return s
 12298  }
 12299  
 12300  // SetTls sets the Tls field's value.
 12301  func (s *Listener) SetTls(v *ListenerTls) *Listener {
 12302  	s.Tls = v
 12303  	return s
 12304  }
 12305  
 12306  // An object that represents timeouts for different protocols.
 12307  type ListenerTimeout struct {
 12308  	_ struct{} `type:"structure"`
 12309  
 12310  	// An object that represents types of timeouts.
 12311  	Grpc *GrpcTimeout `locationName:"grpc" type:"structure"`
 12312  
 12313  	// An object that represents types of timeouts.
 12314  	Http *HttpTimeout `locationName:"http" type:"structure"`
 12315  
 12316  	// An object that represents types of timeouts.
 12317  	Http2 *HttpTimeout `locationName:"http2" type:"structure"`
 12318  
 12319  	// An object that represents types of timeouts.
 12320  	Tcp *TcpTimeout `locationName:"tcp" type:"structure"`
 12321  }
 12322  
 12323  // String returns the string representation.
 12324  //
 12325  // API parameter values that are decorated as "sensitive" in the API will not
 12326  // be included in the string output. The member name will be present, but the
 12327  // value will be replaced with "sensitive".
 12328  func (s ListenerTimeout) String() string {
 12329  	return awsutil.Prettify(s)
 12330  }
 12331  
 12332  // GoString returns the string representation.
 12333  //
 12334  // API parameter values that are decorated as "sensitive" in the API will not
 12335  // be included in the string output. The member name will be present, but the
 12336  // value will be replaced with "sensitive".
 12337  func (s ListenerTimeout) GoString() string {
 12338  	return s.String()
 12339  }
 12340  
 12341  // SetGrpc sets the Grpc field's value.
 12342  func (s *ListenerTimeout) SetGrpc(v *GrpcTimeout) *ListenerTimeout {
 12343  	s.Grpc = v
 12344  	return s
 12345  }
 12346  
 12347  // SetHttp sets the Http field's value.
 12348  func (s *ListenerTimeout) SetHttp(v *HttpTimeout) *ListenerTimeout {
 12349  	s.Http = v
 12350  	return s
 12351  }
 12352  
 12353  // SetHttp2 sets the Http2 field's value.
 12354  func (s *ListenerTimeout) SetHttp2(v *HttpTimeout) *ListenerTimeout {
 12355  	s.Http2 = v
 12356  	return s
 12357  }
 12358  
 12359  // SetTcp sets the Tcp field's value.
 12360  func (s *ListenerTimeout) SetTcp(v *TcpTimeout) *ListenerTimeout {
 12361  	s.Tcp = v
 12362  	return s
 12363  }
 12364  
 12365  // An object that represents the Transport Layer Security (TLS) properties for
 12366  // a listener.
 12367  type ListenerTls struct {
 12368  	_ struct{} `type:"structure"`
 12369  
 12370  	// A reference to an object that represents a listener's Transport Layer Security
 12371  	// (TLS) certificate.
 12372  	//
 12373  	// Certificate is a required field
 12374  	Certificate *ListenerTlsCertificate `locationName:"certificate" type:"structure" required:"true"`
 12375  
 12376  	// Specify one of the following modes.
 12377  	//
 12378  	//    * STRICT – Listener only accepts connections with TLS enabled.
 12379  	//
 12380  	//    * PERMISSIVE – Listener accepts connections with or without TLS enabled.
 12381  	//
 12382  	//    * DISABLED – Listener only accepts connections without TLS.
 12383  	//
 12384  	// Mode is a required field
 12385  	Mode *string `locationName:"mode" type:"string" required:"true" enum:"ListenerTlsMode"`
 12386  
 12387  	// A reference to an object that represents a listener's Transport Layer Security
 12388  	// (TLS) validation context.
 12389  	Validation *ListenerTlsValidationContext `locationName:"validation" type:"structure"`
 12390  }
 12391  
 12392  // String returns the string representation.
 12393  //
 12394  // API parameter values that are decorated as "sensitive" in the API will not
 12395  // be included in the string output. The member name will be present, but the
 12396  // value will be replaced with "sensitive".
 12397  func (s ListenerTls) String() string {
 12398  	return awsutil.Prettify(s)
 12399  }
 12400  
 12401  // GoString returns the string representation.
 12402  //
 12403  // API parameter values that are decorated as "sensitive" in the API will not
 12404  // be included in the string output. The member name will be present, but the
 12405  // value will be replaced with "sensitive".
 12406  func (s ListenerTls) GoString() string {
 12407  	return s.String()
 12408  }
 12409  
 12410  // Validate inspects the fields of the type to determine if they are valid.
 12411  func (s *ListenerTls) Validate() error {
 12412  	invalidParams := request.ErrInvalidParams{Context: "ListenerTls"}
 12413  	if s.Certificate == nil {
 12414  		invalidParams.Add(request.NewErrParamRequired("Certificate"))
 12415  	}
 12416  	if s.Mode == nil {
 12417  		invalidParams.Add(request.NewErrParamRequired("Mode"))
 12418  	}
 12419  	if s.Certificate != nil {
 12420  		if err := s.Certificate.Validate(); err != nil {
 12421  			invalidParams.AddNested("Certificate", err.(request.ErrInvalidParams))
 12422  		}
 12423  	}
 12424  	if s.Validation != nil {
 12425  		if err := s.Validation.Validate(); err != nil {
 12426  			invalidParams.AddNested("Validation", err.(request.ErrInvalidParams))
 12427  		}
 12428  	}
 12429  
 12430  	if invalidParams.Len() > 0 {
 12431  		return invalidParams
 12432  	}
 12433  	return nil
 12434  }
 12435  
 12436  // SetCertificate sets the Certificate field's value.
 12437  func (s *ListenerTls) SetCertificate(v *ListenerTlsCertificate) *ListenerTls {
 12438  	s.Certificate = v
 12439  	return s
 12440  }
 12441  
 12442  // SetMode sets the Mode field's value.
 12443  func (s *ListenerTls) SetMode(v string) *ListenerTls {
 12444  	s.Mode = &v
 12445  	return s
 12446  }
 12447  
 12448  // SetValidation sets the Validation field's value.
 12449  func (s *ListenerTls) SetValidation(v *ListenerTlsValidationContext) *ListenerTls {
 12450  	s.Validation = v
 12451  	return s
 12452  }
 12453  
 12454  // An object that represents an AWS Certicate Manager (ACM) certificate.
 12455  type ListenerTlsAcmCertificate struct {
 12456  	_ struct{} `type:"structure"`
 12457  
 12458  	// The Amazon Resource Name (ARN) for the certificate. The certificate must
 12459  	// meet specific requirements and you must have proxy authorization enabled.
 12460  	// For more information, see Transport Layer Security (TLS) (https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites).
 12461  	//
 12462  	// CertificateArn is a required field
 12463  	CertificateArn *string `locationName:"certificateArn" type:"string" required:"true"`
 12464  }
 12465  
 12466  // String returns the string representation.
 12467  //
 12468  // API parameter values that are decorated as "sensitive" in the API will not
 12469  // be included in the string output. The member name will be present, but the
 12470  // value will be replaced with "sensitive".
 12471  func (s ListenerTlsAcmCertificate) String() string {
 12472  	return awsutil.Prettify(s)
 12473  }
 12474  
 12475  // GoString returns the string representation.
 12476  //
 12477  // API parameter values that are decorated as "sensitive" in the API will not
 12478  // be included in the string output. The member name will be present, but the
 12479  // value will be replaced with "sensitive".
 12480  func (s ListenerTlsAcmCertificate) GoString() string {
 12481  	return s.String()
 12482  }
 12483  
 12484  // Validate inspects the fields of the type to determine if they are valid.
 12485  func (s *ListenerTlsAcmCertificate) Validate() error {
 12486  	invalidParams := request.ErrInvalidParams{Context: "ListenerTlsAcmCertificate"}
 12487  	if s.CertificateArn == nil {
 12488  		invalidParams.Add(request.NewErrParamRequired("CertificateArn"))
 12489  	}
 12490  
 12491  	if invalidParams.Len() > 0 {
 12492  		return invalidParams
 12493  	}
 12494  	return nil
 12495  }
 12496  
 12497  // SetCertificateArn sets the CertificateArn field's value.
 12498  func (s *ListenerTlsAcmCertificate) SetCertificateArn(v string) *ListenerTlsAcmCertificate {
 12499  	s.CertificateArn = &v
 12500  	return s
 12501  }
 12502  
 12503  // An object that represents a listener's Transport Layer Security (TLS) certificate.
 12504  type ListenerTlsCertificate struct {
 12505  	_ struct{} `type:"structure"`
 12506  
 12507  	// A reference to an object that represents an AWS Certicate Manager (ACM) certificate.
 12508  	Acm *ListenerTlsAcmCertificate `locationName:"acm" type:"structure"`
 12509  
 12510  	// A reference to an object that represents a local file certificate.
 12511  	File *ListenerTlsFileCertificate `locationName:"file" type:"structure"`
 12512  
 12513  	// A reference to an object that represents a listener's Secret Discovery Service
 12514  	// certificate.
 12515  	Sds *ListenerTlsSdsCertificate `locationName:"sds" type:"structure"`
 12516  }
 12517  
 12518  // String returns the string representation.
 12519  //
 12520  // API parameter values that are decorated as "sensitive" in the API will not
 12521  // be included in the string output. The member name will be present, but the
 12522  // value will be replaced with "sensitive".
 12523  func (s ListenerTlsCertificate) String() string {
 12524  	return awsutil.Prettify(s)
 12525  }
 12526  
 12527  // GoString returns the string representation.
 12528  //
 12529  // API parameter values that are decorated as "sensitive" in the API will not
 12530  // be included in the string output. The member name will be present, but the
 12531  // value will be replaced with "sensitive".
 12532  func (s ListenerTlsCertificate) GoString() string {
 12533  	return s.String()
 12534  }
 12535  
 12536  // Validate inspects the fields of the type to determine if they are valid.
 12537  func (s *ListenerTlsCertificate) Validate() error {
 12538  	invalidParams := request.ErrInvalidParams{Context: "ListenerTlsCertificate"}
 12539  	if s.Acm != nil {
 12540  		if err := s.Acm.Validate(); err != nil {
 12541  			invalidParams.AddNested("Acm", err.(request.ErrInvalidParams))
 12542  		}
 12543  	}
 12544  	if s.File != nil {
 12545  		if err := s.File.Validate(); err != nil {
 12546  			invalidParams.AddNested("File", err.(request.ErrInvalidParams))
 12547  		}
 12548  	}
 12549  	if s.Sds != nil {
 12550  		if err := s.Sds.Validate(); err != nil {
 12551  			invalidParams.AddNested("Sds", err.(request.ErrInvalidParams))
 12552  		}
 12553  	}
 12554  
 12555  	if invalidParams.Len() > 0 {
 12556  		return invalidParams
 12557  	}
 12558  	return nil
 12559  }
 12560  
 12561  // SetAcm sets the Acm field's value.
 12562  func (s *ListenerTlsCertificate) SetAcm(v *ListenerTlsAcmCertificate) *ListenerTlsCertificate {
 12563  	s.Acm = v
 12564  	return s
 12565  }
 12566  
 12567  // SetFile sets the File field's value.
 12568  func (s *ListenerTlsCertificate) SetFile(v *ListenerTlsFileCertificate) *ListenerTlsCertificate {
 12569  	s.File = v
 12570  	return s
 12571  }
 12572  
 12573  // SetSds sets the Sds field's value.
 12574  func (s *ListenerTlsCertificate) SetSds(v *ListenerTlsSdsCertificate) *ListenerTlsCertificate {
 12575  	s.Sds = v
 12576  	return s
 12577  }
 12578  
 12579  // An object that represents a local file certificate. The certificate must
 12580  // meet specific requirements and you must have proxy authorization enabled.
 12581  // For more information, see Transport Layer Security (TLS) (https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites).
 12582  type ListenerTlsFileCertificate struct {
 12583  	_ struct{} `type:"structure"`
 12584  
 12585  	// The certificate chain for the certificate.
 12586  	//
 12587  	// CertificateChain is a required field
 12588  	CertificateChain *string `locationName:"certificateChain" min:"1" type:"string" required:"true"`
 12589  
 12590  	// The private key for a certificate stored on the file system of the virtual
 12591  	// node that the proxy is running on.
 12592  	//
 12593  	// PrivateKey is a required field
 12594  	PrivateKey *string `locationName:"privateKey" min:"1" type:"string" required:"true"`
 12595  }
 12596  
 12597  // String returns the string representation.
 12598  //
 12599  // API parameter values that are decorated as "sensitive" in the API will not
 12600  // be included in the string output. The member name will be present, but the
 12601  // value will be replaced with "sensitive".
 12602  func (s ListenerTlsFileCertificate) String() string {
 12603  	return awsutil.Prettify(s)
 12604  }
 12605  
 12606  // GoString returns the string representation.
 12607  //
 12608  // API parameter values that are decorated as "sensitive" in the API will not
 12609  // be included in the string output. The member name will be present, but the
 12610  // value will be replaced with "sensitive".
 12611  func (s ListenerTlsFileCertificate) GoString() string {
 12612  	return s.String()
 12613  }
 12614  
 12615  // Validate inspects the fields of the type to determine if they are valid.
 12616  func (s *ListenerTlsFileCertificate) Validate() error {
 12617  	invalidParams := request.ErrInvalidParams{Context: "ListenerTlsFileCertificate"}
 12618  	if s.CertificateChain == nil {
 12619  		invalidParams.Add(request.NewErrParamRequired("CertificateChain"))
 12620  	}
 12621  	if s.CertificateChain != nil && len(*s.CertificateChain) < 1 {
 12622  		invalidParams.Add(request.NewErrParamMinLen("CertificateChain", 1))
 12623  	}
 12624  	if s.PrivateKey == nil {
 12625  		invalidParams.Add(request.NewErrParamRequired("PrivateKey"))
 12626  	}
 12627  	if s.PrivateKey != nil && len(*s.PrivateKey) < 1 {
 12628  		invalidParams.Add(request.NewErrParamMinLen("PrivateKey", 1))
 12629  	}
 12630  
 12631  	if invalidParams.Len() > 0 {
 12632  		return invalidParams
 12633  	}
 12634  	return nil
 12635  }
 12636  
 12637  // SetCertificateChain sets the CertificateChain field's value.
 12638  func (s *ListenerTlsFileCertificate) SetCertificateChain(v string) *ListenerTlsFileCertificate {
 12639  	s.CertificateChain = &v
 12640  	return s
 12641  }
 12642  
 12643  // SetPrivateKey sets the PrivateKey field's value.
 12644  func (s *ListenerTlsFileCertificate) SetPrivateKey(v string) *ListenerTlsFileCertificate {
 12645  	s.PrivateKey = &v
 12646  	return s
 12647  }
 12648  
 12649  // An object that represents the listener's Secret Discovery Service certificate.
 12650  // The proxy must be configured with a local SDS provider via a Unix Domain
 12651  // Socket. See App Mesh TLS documentation (https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html)
 12652  // for more info.
 12653  type ListenerTlsSdsCertificate struct {
 12654  	_ struct{} `type:"structure"`
 12655  
 12656  	// A reference to an object that represents the name of the secret requested
 12657  	// from the Secret Discovery Service provider representing Transport Layer Security
 12658  	// (TLS) materials like a certificate or certificate chain.
 12659  	//
 12660  	// SecretName is a required field
 12661  	SecretName *string `locationName:"secretName" type:"string" required:"true"`
 12662  }
 12663  
 12664  // String returns the string representation.
 12665  //
 12666  // API parameter values that are decorated as "sensitive" in the API will not
 12667  // be included in the string output. The member name will be present, but the
 12668  // value will be replaced with "sensitive".
 12669  func (s ListenerTlsSdsCertificate) String() string {
 12670  	return awsutil.Prettify(s)
 12671  }
 12672  
 12673  // GoString returns the string representation.
 12674  //
 12675  // API parameter values that are decorated as "sensitive" in the API will not
 12676  // be included in the string output. The member name will be present, but the
 12677  // value will be replaced with "sensitive".
 12678  func (s ListenerTlsSdsCertificate) GoString() string {
 12679  	return s.String()
 12680  }
 12681  
 12682  // Validate inspects the fields of the type to determine if they are valid.
 12683  func (s *ListenerTlsSdsCertificate) Validate() error {
 12684  	invalidParams := request.ErrInvalidParams{Context: "ListenerTlsSdsCertificate"}
 12685  	if s.SecretName == nil {
 12686  		invalidParams.Add(request.NewErrParamRequired("SecretName"))
 12687  	}
 12688  
 12689  	if invalidParams.Len() > 0 {
 12690  		return invalidParams
 12691  	}
 12692  	return nil
 12693  }
 12694  
 12695  // SetSecretName sets the SecretName field's value.
 12696  func (s *ListenerTlsSdsCertificate) SetSecretName(v string) *ListenerTlsSdsCertificate {
 12697  	s.SecretName = &v
 12698  	return s
 12699  }
 12700  
 12701  // An object that represents a listener's Transport Layer Security (TLS) validation
 12702  // context.
 12703  type ListenerTlsValidationContext struct {
 12704  	_ struct{} `type:"structure"`
 12705  
 12706  	// A reference to an object that represents the SANs for a listener's Transport
 12707  	// Layer Security (TLS) validation context.
 12708  	SubjectAlternativeNames *SubjectAlternativeNames `locationName:"subjectAlternativeNames" type:"structure"`
 12709  
 12710  	// A reference to where to retrieve the trust chain when validating a peer’s
 12711  	// Transport Layer Security (TLS) certificate.
 12712  	//
 12713  	// Trust is a required field
 12714  	Trust *ListenerTlsValidationContextTrust `locationName:"trust" type:"structure" required:"true"`
 12715  }
 12716  
 12717  // String returns the string representation.
 12718  //
 12719  // API parameter values that are decorated as "sensitive" in the API will not
 12720  // be included in the string output. The member name will be present, but the
 12721  // value will be replaced with "sensitive".
 12722  func (s ListenerTlsValidationContext) String() string {
 12723  	return awsutil.Prettify(s)
 12724  }
 12725  
 12726  // GoString returns the string representation.
 12727  //
 12728  // API parameter values that are decorated as "sensitive" in the API will not
 12729  // be included in the string output. The member name will be present, but the
 12730  // value will be replaced with "sensitive".
 12731  func (s ListenerTlsValidationContext) GoString() string {
 12732  	return s.String()
 12733  }
 12734  
 12735  // Validate inspects the fields of the type to determine if they are valid.
 12736  func (s *ListenerTlsValidationContext) Validate() error {
 12737  	invalidParams := request.ErrInvalidParams{Context: "ListenerTlsValidationContext"}
 12738  	if s.Trust == nil {
 12739  		invalidParams.Add(request.NewErrParamRequired("Trust"))
 12740  	}
 12741  	if s.SubjectAlternativeNames != nil {
 12742  		if err := s.SubjectAlternativeNames.Validate(); err != nil {
 12743  			invalidParams.AddNested("SubjectAlternativeNames", err.(request.ErrInvalidParams))
 12744  		}
 12745  	}
 12746  	if s.Trust != nil {
 12747  		if err := s.Trust.Validate(); err != nil {
 12748  			invalidParams.AddNested("Trust", err.(request.ErrInvalidParams))
 12749  		}
 12750  	}
 12751  
 12752  	if invalidParams.Len() > 0 {
 12753  		return invalidParams
 12754  	}
 12755  	return nil
 12756  }
 12757  
 12758  // SetSubjectAlternativeNames sets the SubjectAlternativeNames field's value.
 12759  func (s *ListenerTlsValidationContext) SetSubjectAlternativeNames(v *SubjectAlternativeNames) *ListenerTlsValidationContext {
 12760  	s.SubjectAlternativeNames = v
 12761  	return s
 12762  }
 12763  
 12764  // SetTrust sets the Trust field's value.
 12765  func (s *ListenerTlsValidationContext) SetTrust(v *ListenerTlsValidationContextTrust) *ListenerTlsValidationContext {
 12766  	s.Trust = v
 12767  	return s
 12768  }
 12769  
 12770  // An object that represents a listener's Transport Layer Security (TLS) validation
 12771  // context trust.
 12772  type ListenerTlsValidationContextTrust struct {
 12773  	_ struct{} `type:"structure"`
 12774  
 12775  	// An object that represents a Transport Layer Security (TLS) validation context
 12776  	// trust for a local file.
 12777  	File *TlsValidationContextFileTrust `locationName:"file" type:"structure"`
 12778  
 12779  	// A reference to an object that represents a listener's Transport Layer Security
 12780  	// (TLS) Secret Discovery Service validation context trust.
 12781  	Sds *TlsValidationContextSdsTrust `locationName:"sds" type:"structure"`
 12782  }
 12783  
 12784  // String returns the string representation.
 12785  //
 12786  // API parameter values that are decorated as "sensitive" in the API will not
 12787  // be included in the string output. The member name will be present, but the
 12788  // value will be replaced with "sensitive".
 12789  func (s ListenerTlsValidationContextTrust) String() string {
 12790  	return awsutil.Prettify(s)
 12791  }
 12792  
 12793  // GoString returns the string representation.
 12794  //
 12795  // API parameter values that are decorated as "sensitive" in the API will not
 12796  // be included in the string output. The member name will be present, but the
 12797  // value will be replaced with "sensitive".
 12798  func (s ListenerTlsValidationContextTrust) GoString() string {
 12799  	return s.String()
 12800  }
 12801  
 12802  // Validate inspects the fields of the type to determine if they are valid.
 12803  func (s *ListenerTlsValidationContextTrust) Validate() error {
 12804  	invalidParams := request.ErrInvalidParams{Context: "ListenerTlsValidationContextTrust"}
 12805  	if s.File != nil {
 12806  		if err := s.File.Validate(); err != nil {
 12807  			invalidParams.AddNested("File", err.(request.ErrInvalidParams))
 12808  		}
 12809  	}
 12810  	if s.Sds != nil {
 12811  		if err := s.Sds.Validate(); err != nil {
 12812  			invalidParams.AddNested("Sds", err.(request.ErrInvalidParams))
 12813  		}
 12814  	}
 12815  
 12816  	if invalidParams.Len() > 0 {
 12817  		return invalidParams
 12818  	}
 12819  	return nil
 12820  }
 12821  
 12822  // SetFile sets the File field's value.
 12823  func (s *ListenerTlsValidationContextTrust) SetFile(v *TlsValidationContextFileTrust) *ListenerTlsValidationContextTrust {
 12824  	s.File = v
 12825  	return s
 12826  }
 12827  
 12828  // SetSds sets the Sds field's value.
 12829  func (s *ListenerTlsValidationContextTrust) SetSds(v *TlsValidationContextSdsTrust) *ListenerTlsValidationContextTrust {
 12830  	s.Sds = v
 12831  	return s
 12832  }
 12833  
 12834  // An object that represents the logging information for a virtual node.
 12835  type Logging struct {
 12836  	_ struct{} `type:"structure"`
 12837  
 12838  	// The access log configuration for a virtual node.
 12839  	AccessLog *AccessLog `locationName:"accessLog" type:"structure"`
 12840  }
 12841  
 12842  // String returns the string representation.
 12843  //
 12844  // API parameter values that are decorated as "sensitive" in the API will not
 12845  // be included in the string output. The member name will be present, but the
 12846  // value will be replaced with "sensitive".
 12847  func (s Logging) String() string {
 12848  	return awsutil.Prettify(s)
 12849  }
 12850  
 12851  // GoString returns the string representation.
 12852  //
 12853  // API parameter values that are decorated as "sensitive" in the API will not
 12854  // be included in the string output. The member name will be present, but the
 12855  // value will be replaced with "sensitive".
 12856  func (s Logging) GoString() string {
 12857  	return s.String()
 12858  }
 12859  
 12860  // Validate inspects the fields of the type to determine if they are valid.
 12861  func (s *Logging) Validate() error {
 12862  	invalidParams := request.ErrInvalidParams{Context: "Logging"}
 12863  	if s.AccessLog != nil {
 12864  		if err := s.AccessLog.Validate(); err != nil {
 12865  			invalidParams.AddNested("AccessLog", err.(request.ErrInvalidParams))
 12866  		}
 12867  	}
 12868  
 12869  	if invalidParams.Len() > 0 {
 12870  		return invalidParams
 12871  	}
 12872  	return nil
 12873  }
 12874  
 12875  // SetAccessLog sets the AccessLog field's value.
 12876  func (s *Logging) SetAccessLog(v *AccessLog) *Logging {
 12877  	s.AccessLog = v
 12878  	return s
 12879  }
 12880  
 12881  // An object that represents the range of values to match on. The first character
 12882  // of the range is included in the range, though the last character is not.
 12883  // For example, if the range specified were 1-100, only values 1-99 would be
 12884  // matched.
 12885  type MatchRange struct {
 12886  	_ struct{} `type:"structure"`
 12887  
 12888  	// The end of the range.
 12889  	//
 12890  	// End is a required field
 12891  	End *int64 `locationName:"end" type:"long" required:"true"`
 12892  
 12893  	// The start of the range.
 12894  	//
 12895  	// Start is a required field
 12896  	Start *int64 `locationName:"start" type:"long" required:"true"`
 12897  }
 12898  
 12899  // String returns the string representation.
 12900  //
 12901  // API parameter values that are decorated as "sensitive" in the API will not
 12902  // be included in the string output. The member name will be present, but the
 12903  // value will be replaced with "sensitive".
 12904  func (s MatchRange) String() string {
 12905  	return awsutil.Prettify(s)
 12906  }
 12907  
 12908  // GoString returns the string representation.
 12909  //
 12910  // API parameter values that are decorated as "sensitive" in the API will not
 12911  // be included in the string output. The member name will be present, but the
 12912  // value will be replaced with "sensitive".
 12913  func (s MatchRange) GoString() string {
 12914  	return s.String()
 12915  }
 12916  
 12917  // Validate inspects the fields of the type to determine if they are valid.
 12918  func (s *MatchRange) Validate() error {
 12919  	invalidParams := request.ErrInvalidParams{Context: "MatchRange"}
 12920  	if s.End == nil {
 12921  		invalidParams.Add(request.NewErrParamRequired("End"))
 12922  	}
 12923  	if s.Start == nil {
 12924  		invalidParams.Add(request.NewErrParamRequired("Start"))
 12925  	}
 12926  
 12927  	if invalidParams.Len() > 0 {
 12928  		return invalidParams
 12929  	}
 12930  	return nil
 12931  }
 12932  
 12933  // SetEnd sets the End field's value.
 12934  func (s *MatchRange) SetEnd(v int64) *MatchRange {
 12935  	s.End = &v
 12936  	return s
 12937  }
 12938  
 12939  // SetStart sets the Start field's value.
 12940  func (s *MatchRange) SetStart(v int64) *MatchRange {
 12941  	s.Start = &v
 12942  	return s
 12943  }
 12944  
 12945  // An object that represents a service mesh returned by a describe operation.
 12946  type MeshData struct {
 12947  	_ struct{} `type:"structure"`
 12948  
 12949  	// The name of the service mesh.
 12950  	//
 12951  	// MeshName is a required field
 12952  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
 12953  
 12954  	// The associated metadata for the service mesh.
 12955  	//
 12956  	// Metadata is a required field
 12957  	Metadata *ResourceMetadata `locationName:"metadata" type:"structure" required:"true"`
 12958  
 12959  	// The associated specification for the service mesh.
 12960  	//
 12961  	// Spec is a required field
 12962  	Spec *MeshSpec `locationName:"spec" type:"structure" required:"true"`
 12963  
 12964  	// The status of the service mesh.
 12965  	//
 12966  	// Status is a required field
 12967  	Status *MeshStatus `locationName:"status" type:"structure" required:"true"`
 12968  }
 12969  
 12970  // String returns the string representation.
 12971  //
 12972  // API parameter values that are decorated as "sensitive" in the API will not
 12973  // be included in the string output. The member name will be present, but the
 12974  // value will be replaced with "sensitive".
 12975  func (s MeshData) String() string {
 12976  	return awsutil.Prettify(s)
 12977  }
 12978  
 12979  // GoString returns the string representation.
 12980  //
 12981  // API parameter values that are decorated as "sensitive" in the API will not
 12982  // be included in the string output. The member name will be present, but the
 12983  // value will be replaced with "sensitive".
 12984  func (s MeshData) GoString() string {
 12985  	return s.String()
 12986  }
 12987  
 12988  // SetMeshName sets the MeshName field's value.
 12989  func (s *MeshData) SetMeshName(v string) *MeshData {
 12990  	s.MeshName = &v
 12991  	return s
 12992  }
 12993  
 12994  // SetMetadata sets the Metadata field's value.
 12995  func (s *MeshData) SetMetadata(v *ResourceMetadata) *MeshData {
 12996  	s.Metadata = v
 12997  	return s
 12998  }
 12999  
 13000  // SetSpec sets the Spec field's value.
 13001  func (s *MeshData) SetSpec(v *MeshSpec) *MeshData {
 13002  	s.Spec = v
 13003  	return s
 13004  }
 13005  
 13006  // SetStatus sets the Status field's value.
 13007  func (s *MeshData) SetStatus(v *MeshStatus) *MeshData {
 13008  	s.Status = v
 13009  	return s
 13010  }
 13011  
 13012  // An object that represents a service mesh returned by a list operation.
 13013  type MeshRef struct {
 13014  	_ struct{} `type:"structure"`
 13015  
 13016  	// The full Amazon Resource Name (ARN) of the service mesh.
 13017  	//
 13018  	// Arn is a required field
 13019  	Arn *string `locationName:"arn" type:"string" required:"true"`
 13020  
 13021  	// The Unix epoch timestamp in seconds for when the resource was created.
 13022  	//
 13023  	// CreatedAt is a required field
 13024  	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`
 13025  
 13026  	// The Unix epoch timestamp in seconds for when the resource was last updated.
 13027  	//
 13028  	// LastUpdatedAt is a required field
 13029  	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" required:"true"`
 13030  
 13031  	// The name of the service mesh.
 13032  	//
 13033  	// MeshName is a required field
 13034  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
 13035  
 13036  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 13037  	// your own, then it's the ID of the account that shared the mesh with your
 13038  	// account. For more information about mesh sharing, see Working with shared
 13039  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 13040  	//
 13041  	// MeshOwner is a required field
 13042  	MeshOwner *string `locationName:"meshOwner" min:"12" type:"string" required:"true"`
 13043  
 13044  	// The AWS IAM account ID of the resource owner. If the account ID is not your
 13045  	// own, then it's the ID of the mesh owner or of another account that the mesh
 13046  	// is shared with. For more information about mesh sharing, see Working with
 13047  	// shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 13048  	//
 13049  	// ResourceOwner is a required field
 13050  	ResourceOwner *string `locationName:"resourceOwner" min:"12" type:"string" required:"true"`
 13051  
 13052  	// The version of the resource. Resources are created at version 1, and this
 13053  	// version is incremented each time that they're updated.
 13054  	//
 13055  	// Version is a required field
 13056  	Version *int64 `locationName:"version" type:"long" required:"true"`
 13057  }
 13058  
 13059  // String returns the string representation.
 13060  //
 13061  // API parameter values that are decorated as "sensitive" in the API will not
 13062  // be included in the string output. The member name will be present, but the
 13063  // value will be replaced with "sensitive".
 13064  func (s MeshRef) String() string {
 13065  	return awsutil.Prettify(s)
 13066  }
 13067  
 13068  // GoString returns the string representation.
 13069  //
 13070  // API parameter values that are decorated as "sensitive" in the API will not
 13071  // be included in the string output. The member name will be present, but the
 13072  // value will be replaced with "sensitive".
 13073  func (s MeshRef) GoString() string {
 13074  	return s.String()
 13075  }
 13076  
 13077  // SetArn sets the Arn field's value.
 13078  func (s *MeshRef) SetArn(v string) *MeshRef {
 13079  	s.Arn = &v
 13080  	return s
 13081  }
 13082  
 13083  // SetCreatedAt sets the CreatedAt field's value.
 13084  func (s *MeshRef) SetCreatedAt(v time.Time) *MeshRef {
 13085  	s.CreatedAt = &v
 13086  	return s
 13087  }
 13088  
 13089  // SetLastUpdatedAt sets the LastUpdatedAt field's value.
 13090  func (s *MeshRef) SetLastUpdatedAt(v time.Time) *MeshRef {
 13091  	s.LastUpdatedAt = &v
 13092  	return s
 13093  }
 13094  
 13095  // SetMeshName sets the MeshName field's value.
 13096  func (s *MeshRef) SetMeshName(v string) *MeshRef {
 13097  	s.MeshName = &v
 13098  	return s
 13099  }
 13100  
 13101  // SetMeshOwner sets the MeshOwner field's value.
 13102  func (s *MeshRef) SetMeshOwner(v string) *MeshRef {
 13103  	s.MeshOwner = &v
 13104  	return s
 13105  }
 13106  
 13107  // SetResourceOwner sets the ResourceOwner field's value.
 13108  func (s *MeshRef) SetResourceOwner(v string) *MeshRef {
 13109  	s.ResourceOwner = &v
 13110  	return s
 13111  }
 13112  
 13113  // SetVersion sets the Version field's value.
 13114  func (s *MeshRef) SetVersion(v int64) *MeshRef {
 13115  	s.Version = &v
 13116  	return s
 13117  }
 13118  
 13119  // An object that represents the specification of a service mesh.
 13120  type MeshSpec struct {
 13121  	_ struct{} `type:"structure"`
 13122  
 13123  	// The egress filter rules for the service mesh.
 13124  	EgressFilter *EgressFilter `locationName:"egressFilter" type:"structure"`
 13125  }
 13126  
 13127  // String returns the string representation.
 13128  //
 13129  // API parameter values that are decorated as "sensitive" in the API will not
 13130  // be included in the string output. The member name will be present, but the
 13131  // value will be replaced with "sensitive".
 13132  func (s MeshSpec) String() string {
 13133  	return awsutil.Prettify(s)
 13134  }
 13135  
 13136  // GoString returns the string representation.
 13137  //
 13138  // API parameter values that are decorated as "sensitive" in the API will not
 13139  // be included in the string output. The member name will be present, but the
 13140  // value will be replaced with "sensitive".
 13141  func (s MeshSpec) GoString() string {
 13142  	return s.String()
 13143  }
 13144  
 13145  // Validate inspects the fields of the type to determine if they are valid.
 13146  func (s *MeshSpec) Validate() error {
 13147  	invalidParams := request.ErrInvalidParams{Context: "MeshSpec"}
 13148  	if s.EgressFilter != nil {
 13149  		if err := s.EgressFilter.Validate(); err != nil {
 13150  			invalidParams.AddNested("EgressFilter", err.(request.ErrInvalidParams))
 13151  		}
 13152  	}
 13153  
 13154  	if invalidParams.Len() > 0 {
 13155  		return invalidParams
 13156  	}
 13157  	return nil
 13158  }
 13159  
 13160  // SetEgressFilter sets the EgressFilter field's value.
 13161  func (s *MeshSpec) SetEgressFilter(v *EgressFilter) *MeshSpec {
 13162  	s.EgressFilter = v
 13163  	return s
 13164  }
 13165  
 13166  // An object that represents the status of a service mesh.
 13167  type MeshStatus struct {
 13168  	_ struct{} `type:"structure"`
 13169  
 13170  	// The current mesh status.
 13171  	Status *string `locationName:"status" type:"string" enum:"MeshStatusCode"`
 13172  }
 13173  
 13174  // String returns the string representation.
 13175  //
 13176  // API parameter values that are decorated as "sensitive" in the API will not
 13177  // be included in the string output. The member name will be present, but the
 13178  // value will be replaced with "sensitive".
 13179  func (s MeshStatus) String() string {
 13180  	return awsutil.Prettify(s)
 13181  }
 13182  
 13183  // GoString returns the string representation.
 13184  //
 13185  // API parameter values that are decorated as "sensitive" in the API will not
 13186  // be included in the string output. The member name will be present, but the
 13187  // value will be replaced with "sensitive".
 13188  func (s MeshStatus) GoString() string {
 13189  	return s.String()
 13190  }
 13191  
 13192  // SetStatus sets the Status field's value.
 13193  func (s *MeshStatus) SetStatus(v string) *MeshStatus {
 13194  	s.Status = &v
 13195  	return s
 13196  }
 13197  
 13198  // The specified resource doesn't exist. Check your request syntax and try again.
 13199  type NotFoundException struct {
 13200  	_            struct{}                  `type:"structure"`
 13201  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 13202  
 13203  	Message_ *string `locationName:"message" type:"string"`
 13204  }
 13205  
 13206  // String returns the string representation.
 13207  //
 13208  // API parameter values that are decorated as "sensitive" in the API will not
 13209  // be included in the string output. The member name will be present, but the
 13210  // value will be replaced with "sensitive".
 13211  func (s NotFoundException) String() string {
 13212  	return awsutil.Prettify(s)
 13213  }
 13214  
 13215  // GoString returns the string representation.
 13216  //
 13217  // API parameter values that are decorated as "sensitive" in the API will not
 13218  // be included in the string output. The member name will be present, but the
 13219  // value will be replaced with "sensitive".
 13220  func (s NotFoundException) GoString() string {
 13221  	return s.String()
 13222  }
 13223  
 13224  func newErrorNotFoundException(v protocol.ResponseMetadata) error {
 13225  	return &NotFoundException{
 13226  		RespMetadata: v,
 13227  	}
 13228  }
 13229  
 13230  // Code returns the exception type name.
 13231  func (s *NotFoundException) Code() string {
 13232  	return "NotFoundException"
 13233  }
 13234  
 13235  // Message returns the exception's message.
 13236  func (s *NotFoundException) Message() string {
 13237  	if s.Message_ != nil {
 13238  		return *s.Message_
 13239  	}
 13240  	return ""
 13241  }
 13242  
 13243  // OrigErr always returns nil, satisfies awserr.Error interface.
 13244  func (s *NotFoundException) OrigErr() error {
 13245  	return nil
 13246  }
 13247  
 13248  func (s *NotFoundException) Error() string {
 13249  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 13250  }
 13251  
 13252  // Status code returns the HTTP status code for the request's response error.
 13253  func (s *NotFoundException) StatusCode() int {
 13254  	return s.RespMetadata.StatusCode
 13255  }
 13256  
 13257  // RequestID returns the service's response RequestID for request.
 13258  func (s *NotFoundException) RequestID() string {
 13259  	return s.RespMetadata.RequestID
 13260  }
 13261  
 13262  // An object that represents the outlier detection for a virtual node's listener.
 13263  type OutlierDetection struct {
 13264  	_ struct{} `type:"structure"`
 13265  
 13266  	// The base amount of time for which a host is ejected.
 13267  	//
 13268  	// BaseEjectionDuration is a required field
 13269  	BaseEjectionDuration *Duration `locationName:"baseEjectionDuration" type:"structure" required:"true"`
 13270  
 13271  	// The time interval between ejection sweep analysis.
 13272  	//
 13273  	// Interval is a required field
 13274  	Interval *Duration `locationName:"interval" type:"structure" required:"true"`
 13275  
 13276  	// Maximum percentage of hosts in load balancing pool for upstream service that
 13277  	// can be ejected. Will eject at least one host regardless of the value.
 13278  	//
 13279  	// MaxEjectionPercent is a required field
 13280  	MaxEjectionPercent *int64 `locationName:"maxEjectionPercent" type:"integer" required:"true"`
 13281  
 13282  	// Number of consecutive 5xx errors required for ejection.
 13283  	//
 13284  	// MaxServerErrors is a required field
 13285  	MaxServerErrors *int64 `locationName:"maxServerErrors" min:"1" type:"long" required:"true"`
 13286  }
 13287  
 13288  // String returns the string representation.
 13289  //
 13290  // API parameter values that are decorated as "sensitive" in the API will not
 13291  // be included in the string output. The member name will be present, but the
 13292  // value will be replaced with "sensitive".
 13293  func (s OutlierDetection) String() string {
 13294  	return awsutil.Prettify(s)
 13295  }
 13296  
 13297  // GoString returns the string representation.
 13298  //
 13299  // API parameter values that are decorated as "sensitive" in the API will not
 13300  // be included in the string output. The member name will be present, but the
 13301  // value will be replaced with "sensitive".
 13302  func (s OutlierDetection) GoString() string {
 13303  	return s.String()
 13304  }
 13305  
 13306  // Validate inspects the fields of the type to determine if they are valid.
 13307  func (s *OutlierDetection) Validate() error {
 13308  	invalidParams := request.ErrInvalidParams{Context: "OutlierDetection"}
 13309  	if s.BaseEjectionDuration == nil {
 13310  		invalidParams.Add(request.NewErrParamRequired("BaseEjectionDuration"))
 13311  	}
 13312  	if s.Interval == nil {
 13313  		invalidParams.Add(request.NewErrParamRequired("Interval"))
 13314  	}
 13315  	if s.MaxEjectionPercent == nil {
 13316  		invalidParams.Add(request.NewErrParamRequired("MaxEjectionPercent"))
 13317  	}
 13318  	if s.MaxServerErrors == nil {
 13319  		invalidParams.Add(request.NewErrParamRequired("MaxServerErrors"))
 13320  	}
 13321  	if s.MaxServerErrors != nil && *s.MaxServerErrors < 1 {
 13322  		invalidParams.Add(request.NewErrParamMinValue("MaxServerErrors", 1))
 13323  	}
 13324  
 13325  	if invalidParams.Len() > 0 {
 13326  		return invalidParams
 13327  	}
 13328  	return nil
 13329  }
 13330  
 13331  // SetBaseEjectionDuration sets the BaseEjectionDuration field's value.
 13332  func (s *OutlierDetection) SetBaseEjectionDuration(v *Duration) *OutlierDetection {
 13333  	s.BaseEjectionDuration = v
 13334  	return s
 13335  }
 13336  
 13337  // SetInterval sets the Interval field's value.
 13338  func (s *OutlierDetection) SetInterval(v *Duration) *OutlierDetection {
 13339  	s.Interval = v
 13340  	return s
 13341  }
 13342  
 13343  // SetMaxEjectionPercent sets the MaxEjectionPercent field's value.
 13344  func (s *OutlierDetection) SetMaxEjectionPercent(v int64) *OutlierDetection {
 13345  	s.MaxEjectionPercent = &v
 13346  	return s
 13347  }
 13348  
 13349  // SetMaxServerErrors sets the MaxServerErrors field's value.
 13350  func (s *OutlierDetection) SetMaxServerErrors(v int64) *OutlierDetection {
 13351  	s.MaxServerErrors = &v
 13352  	return s
 13353  }
 13354  
 13355  // An object that represents a port mapping.
 13356  type PortMapping struct {
 13357  	_ struct{} `type:"structure"`
 13358  
 13359  	// The port used for the port mapping.
 13360  	//
 13361  	// Port is a required field
 13362  	Port *int64 `locationName:"port" min:"1" type:"integer" required:"true"`
 13363  
 13364  	// The protocol used for the port mapping. Specify one protocol.
 13365  	//
 13366  	// Protocol is a required field
 13367  	Protocol *string `locationName:"protocol" type:"string" required:"true" enum:"PortProtocol"`
 13368  }
 13369  
 13370  // String returns the string representation.
 13371  //
 13372  // API parameter values that are decorated as "sensitive" in the API will not
 13373  // be included in the string output. The member name will be present, but the
 13374  // value will be replaced with "sensitive".
 13375  func (s PortMapping) String() string {
 13376  	return awsutil.Prettify(s)
 13377  }
 13378  
 13379  // GoString returns the string representation.
 13380  //
 13381  // API parameter values that are decorated as "sensitive" in the API will not
 13382  // be included in the string output. The member name will be present, but the
 13383  // value will be replaced with "sensitive".
 13384  func (s PortMapping) GoString() string {
 13385  	return s.String()
 13386  }
 13387  
 13388  // Validate inspects the fields of the type to determine if they are valid.
 13389  func (s *PortMapping) Validate() error {
 13390  	invalidParams := request.ErrInvalidParams{Context: "PortMapping"}
 13391  	if s.Port == nil {
 13392  		invalidParams.Add(request.NewErrParamRequired("Port"))
 13393  	}
 13394  	if s.Port != nil && *s.Port < 1 {
 13395  		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
 13396  	}
 13397  	if s.Protocol == nil {
 13398  		invalidParams.Add(request.NewErrParamRequired("Protocol"))
 13399  	}
 13400  
 13401  	if invalidParams.Len() > 0 {
 13402  		return invalidParams
 13403  	}
 13404  	return nil
 13405  }
 13406  
 13407  // SetPort sets the Port field's value.
 13408  func (s *PortMapping) SetPort(v int64) *PortMapping {
 13409  	s.Port = &v
 13410  	return s
 13411  }
 13412  
 13413  // SetProtocol sets the Protocol field's value.
 13414  func (s *PortMapping) SetProtocol(v string) *PortMapping {
 13415  	s.Protocol = &v
 13416  	return s
 13417  }
 13418  
 13419  // An object representing the query parameter to match.
 13420  type QueryParameterMatch struct {
 13421  	_ struct{} `type:"structure"`
 13422  
 13423  	// The exact query parameter to match on.
 13424  	Exact *string `locationName:"exact" type:"string"`
 13425  }
 13426  
 13427  // String returns the string representation.
 13428  //
 13429  // API parameter values that are decorated as "sensitive" in the API will not
 13430  // be included in the string output. The member name will be present, but the
 13431  // value will be replaced with "sensitive".
 13432  func (s QueryParameterMatch) String() string {
 13433  	return awsutil.Prettify(s)
 13434  }
 13435  
 13436  // GoString returns the string representation.
 13437  //
 13438  // API parameter values that are decorated as "sensitive" in the API will not
 13439  // be included in the string output. The member name will be present, but the
 13440  // value will be replaced with "sensitive".
 13441  func (s QueryParameterMatch) GoString() string {
 13442  	return s.String()
 13443  }
 13444  
 13445  // SetExact sets the Exact field's value.
 13446  func (s *QueryParameterMatch) SetExact(v string) *QueryParameterMatch {
 13447  	s.Exact = &v
 13448  	return s
 13449  }
 13450  
 13451  // You can't delete the specified resource because it's in use or required by
 13452  // another resource.
 13453  type ResourceInUseException struct {
 13454  	_            struct{}                  `type:"structure"`
 13455  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 13456  
 13457  	Message_ *string `locationName:"message" type:"string"`
 13458  }
 13459  
 13460  // String returns the string representation.
 13461  //
 13462  // API parameter values that are decorated as "sensitive" in the API will not
 13463  // be included in the string output. The member name will be present, but the
 13464  // value will be replaced with "sensitive".
 13465  func (s ResourceInUseException) String() string {
 13466  	return awsutil.Prettify(s)
 13467  }
 13468  
 13469  // GoString returns the string representation.
 13470  //
 13471  // API parameter values that are decorated as "sensitive" in the API will not
 13472  // be included in the string output. The member name will be present, but the
 13473  // value will be replaced with "sensitive".
 13474  func (s ResourceInUseException) GoString() string {
 13475  	return s.String()
 13476  }
 13477  
 13478  func newErrorResourceInUseException(v protocol.ResponseMetadata) error {
 13479  	return &ResourceInUseException{
 13480  		RespMetadata: v,
 13481  	}
 13482  }
 13483  
 13484  // Code returns the exception type name.
 13485  func (s *ResourceInUseException) Code() string {
 13486  	return "ResourceInUseException"
 13487  }
 13488  
 13489  // Message returns the exception's message.
 13490  func (s *ResourceInUseException) Message() string {
 13491  	if s.Message_ != nil {
 13492  		return *s.Message_
 13493  	}
 13494  	return ""
 13495  }
 13496  
 13497  // OrigErr always returns nil, satisfies awserr.Error interface.
 13498  func (s *ResourceInUseException) OrigErr() error {
 13499  	return nil
 13500  }
 13501  
 13502  func (s *ResourceInUseException) Error() string {
 13503  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 13504  }
 13505  
 13506  // Status code returns the HTTP status code for the request's response error.
 13507  func (s *ResourceInUseException) StatusCode() int {
 13508  	return s.RespMetadata.StatusCode
 13509  }
 13510  
 13511  // RequestID returns the service's response RequestID for request.
 13512  func (s *ResourceInUseException) RequestID() string {
 13513  	return s.RespMetadata.RequestID
 13514  }
 13515  
 13516  // An object that represents metadata for a resource.
 13517  type ResourceMetadata struct {
 13518  	_ struct{} `type:"structure"`
 13519  
 13520  	// The full Amazon Resource Name (ARN) for the resource.
 13521  	//
 13522  	// Arn is a required field
 13523  	Arn *string `locationName:"arn" type:"string" required:"true"`
 13524  
 13525  	// The Unix epoch timestamp in seconds for when the resource was created.
 13526  	//
 13527  	// CreatedAt is a required field
 13528  	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`
 13529  
 13530  	// The Unix epoch timestamp in seconds for when the resource was last updated.
 13531  	//
 13532  	// LastUpdatedAt is a required field
 13533  	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" required:"true"`
 13534  
 13535  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 13536  	// your own, then it's the ID of the account that shared the mesh with your
 13537  	// account. For more information about mesh sharing, see Working with shared
 13538  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 13539  	//
 13540  	// MeshOwner is a required field
 13541  	MeshOwner *string `locationName:"meshOwner" min:"12" type:"string" required:"true"`
 13542  
 13543  	// The AWS IAM account ID of the resource owner. If the account ID is not your
 13544  	// own, then it's the ID of the mesh owner or of another account that the mesh
 13545  	// is shared with. For more information about mesh sharing, see Working with
 13546  	// shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 13547  	//
 13548  	// ResourceOwner is a required field
 13549  	ResourceOwner *string `locationName:"resourceOwner" min:"12" type:"string" required:"true"`
 13550  
 13551  	// The unique identifier for the resource.
 13552  	//
 13553  	// Uid is a required field
 13554  	Uid *string `locationName:"uid" type:"string" required:"true"`
 13555  
 13556  	// The version of the resource. Resources are created at version 1, and this
 13557  	// version is incremented each time that they're updated.
 13558  	//
 13559  	// Version is a required field
 13560  	Version *int64 `locationName:"version" type:"long" required:"true"`
 13561  }
 13562  
 13563  // String returns the string representation.
 13564  //
 13565  // API parameter values that are decorated as "sensitive" in the API will not
 13566  // be included in the string output. The member name will be present, but the
 13567  // value will be replaced with "sensitive".
 13568  func (s ResourceMetadata) String() string {
 13569  	return awsutil.Prettify(s)
 13570  }
 13571  
 13572  // GoString returns the string representation.
 13573  //
 13574  // API parameter values that are decorated as "sensitive" in the API will not
 13575  // be included in the string output. The member name will be present, but the
 13576  // value will be replaced with "sensitive".
 13577  func (s ResourceMetadata) GoString() string {
 13578  	return s.String()
 13579  }
 13580  
 13581  // SetArn sets the Arn field's value.
 13582  func (s *ResourceMetadata) SetArn(v string) *ResourceMetadata {
 13583  	s.Arn = &v
 13584  	return s
 13585  }
 13586  
 13587  // SetCreatedAt sets the CreatedAt field's value.
 13588  func (s *ResourceMetadata) SetCreatedAt(v time.Time) *ResourceMetadata {
 13589  	s.CreatedAt = &v
 13590  	return s
 13591  }
 13592  
 13593  // SetLastUpdatedAt sets the LastUpdatedAt field's value.
 13594  func (s *ResourceMetadata) SetLastUpdatedAt(v time.Time) *ResourceMetadata {
 13595  	s.LastUpdatedAt = &v
 13596  	return s
 13597  }
 13598  
 13599  // SetMeshOwner sets the MeshOwner field's value.
 13600  func (s *ResourceMetadata) SetMeshOwner(v string) *ResourceMetadata {
 13601  	s.MeshOwner = &v
 13602  	return s
 13603  }
 13604  
 13605  // SetResourceOwner sets the ResourceOwner field's value.
 13606  func (s *ResourceMetadata) SetResourceOwner(v string) *ResourceMetadata {
 13607  	s.ResourceOwner = &v
 13608  	return s
 13609  }
 13610  
 13611  // SetUid sets the Uid field's value.
 13612  func (s *ResourceMetadata) SetUid(v string) *ResourceMetadata {
 13613  	s.Uid = &v
 13614  	return s
 13615  }
 13616  
 13617  // SetVersion sets the Version field's value.
 13618  func (s *ResourceMetadata) SetVersion(v int64) *ResourceMetadata {
 13619  	s.Version = &v
 13620  	return s
 13621  }
 13622  
 13623  // An object that represents a route returned by a describe operation.
 13624  type RouteData struct {
 13625  	_ struct{} `type:"structure"`
 13626  
 13627  	// The name of the service mesh that the route resides in.
 13628  	//
 13629  	// MeshName is a required field
 13630  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
 13631  
 13632  	// The associated metadata for the route.
 13633  	//
 13634  	// Metadata is a required field
 13635  	Metadata *ResourceMetadata `locationName:"metadata" type:"structure" required:"true"`
 13636  
 13637  	// The name of the route.
 13638  	//
 13639  	// RouteName is a required field
 13640  	RouteName *string `locationName:"routeName" min:"1" type:"string" required:"true"`
 13641  
 13642  	// The specifications of the route.
 13643  	//
 13644  	// Spec is a required field
 13645  	Spec *RouteSpec `locationName:"spec" type:"structure" required:"true"`
 13646  
 13647  	// The status of the route.
 13648  	//
 13649  	// Status is a required field
 13650  	Status *RouteStatus `locationName:"status" type:"structure" required:"true"`
 13651  
 13652  	// The virtual router that the route is associated with.
 13653  	//
 13654  	// VirtualRouterName is a required field
 13655  	VirtualRouterName *string `locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
 13656  }
 13657  
 13658  // String returns the string representation.
 13659  //
 13660  // API parameter values that are decorated as "sensitive" in the API will not
 13661  // be included in the string output. The member name will be present, but the
 13662  // value will be replaced with "sensitive".
 13663  func (s RouteData) String() string {
 13664  	return awsutil.Prettify(s)
 13665  }
 13666  
 13667  // GoString returns the string representation.
 13668  //
 13669  // API parameter values that are decorated as "sensitive" in the API will not
 13670  // be included in the string output. The member name will be present, but the
 13671  // value will be replaced with "sensitive".
 13672  func (s RouteData) GoString() string {
 13673  	return s.String()
 13674  }
 13675  
 13676  // SetMeshName sets the MeshName field's value.
 13677  func (s *RouteData) SetMeshName(v string) *RouteData {
 13678  	s.MeshName = &v
 13679  	return s
 13680  }
 13681  
 13682  // SetMetadata sets the Metadata field's value.
 13683  func (s *RouteData) SetMetadata(v *ResourceMetadata) *RouteData {
 13684  	s.Metadata = v
 13685  	return s
 13686  }
 13687  
 13688  // SetRouteName sets the RouteName field's value.
 13689  func (s *RouteData) SetRouteName(v string) *RouteData {
 13690  	s.RouteName = &v
 13691  	return s
 13692  }
 13693  
 13694  // SetSpec sets the Spec field's value.
 13695  func (s *RouteData) SetSpec(v *RouteSpec) *RouteData {
 13696  	s.Spec = v
 13697  	return s
 13698  }
 13699  
 13700  // SetStatus sets the Status field's value.
 13701  func (s *RouteData) SetStatus(v *RouteStatus) *RouteData {
 13702  	s.Status = v
 13703  	return s
 13704  }
 13705  
 13706  // SetVirtualRouterName sets the VirtualRouterName field's value.
 13707  func (s *RouteData) SetVirtualRouterName(v string) *RouteData {
 13708  	s.VirtualRouterName = &v
 13709  	return s
 13710  }
 13711  
 13712  // An object that represents a route returned by a list operation.
 13713  type RouteRef struct {
 13714  	_ struct{} `type:"structure"`
 13715  
 13716  	// The full Amazon Resource Name (ARN) for the route.
 13717  	//
 13718  	// Arn is a required field
 13719  	Arn *string `locationName:"arn" type:"string" required:"true"`
 13720  
 13721  	// The Unix epoch timestamp in seconds for when the resource was created.
 13722  	//
 13723  	// CreatedAt is a required field
 13724  	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`
 13725  
 13726  	// The Unix epoch timestamp in seconds for when the resource was last updated.
 13727  	//
 13728  	// LastUpdatedAt is a required field
 13729  	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" required:"true"`
 13730  
 13731  	// The name of the service mesh that the route resides in.
 13732  	//
 13733  	// MeshName is a required field
 13734  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
 13735  
 13736  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 13737  	// your own, then it's the ID of the account that shared the mesh with your
 13738  	// account. For more information about mesh sharing, see Working with shared
 13739  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 13740  	//
 13741  	// MeshOwner is a required field
 13742  	MeshOwner *string `locationName:"meshOwner" min:"12" type:"string" required:"true"`
 13743  
 13744  	// The AWS IAM account ID of the resource owner. If the account ID is not your
 13745  	// own, then it's the ID of the mesh owner or of another account that the mesh
 13746  	// is shared with. For more information about mesh sharing, see Working with
 13747  	// shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 13748  	//
 13749  	// ResourceOwner is a required field
 13750  	ResourceOwner *string `locationName:"resourceOwner" min:"12" type:"string" required:"true"`
 13751  
 13752  	// The name of the route.
 13753  	//
 13754  	// RouteName is a required field
 13755  	RouteName *string `locationName:"routeName" min:"1" type:"string" required:"true"`
 13756  
 13757  	// The version of the resource. Resources are created at version 1, and this
 13758  	// version is incremented each time that they're updated.
 13759  	//
 13760  	// Version is a required field
 13761  	Version *int64 `locationName:"version" type:"long" required:"true"`
 13762  
 13763  	// The virtual router that the route is associated with.
 13764  	//
 13765  	// VirtualRouterName is a required field
 13766  	VirtualRouterName *string `locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
 13767  }
 13768  
 13769  // String returns the string representation.
 13770  //
 13771  // API parameter values that are decorated as "sensitive" in the API will not
 13772  // be included in the string output. The member name will be present, but the
 13773  // value will be replaced with "sensitive".
 13774  func (s RouteRef) String() string {
 13775  	return awsutil.Prettify(s)
 13776  }
 13777  
 13778  // GoString returns the string representation.
 13779  //
 13780  // API parameter values that are decorated as "sensitive" in the API will not
 13781  // be included in the string output. The member name will be present, but the
 13782  // value will be replaced with "sensitive".
 13783  func (s RouteRef) GoString() string {
 13784  	return s.String()
 13785  }
 13786  
 13787  // SetArn sets the Arn field's value.
 13788  func (s *RouteRef) SetArn(v string) *RouteRef {
 13789  	s.Arn = &v
 13790  	return s
 13791  }
 13792  
 13793  // SetCreatedAt sets the CreatedAt field's value.
 13794  func (s *RouteRef) SetCreatedAt(v time.Time) *RouteRef {
 13795  	s.CreatedAt = &v
 13796  	return s
 13797  }
 13798  
 13799  // SetLastUpdatedAt sets the LastUpdatedAt field's value.
 13800  func (s *RouteRef) SetLastUpdatedAt(v time.Time) *RouteRef {
 13801  	s.LastUpdatedAt = &v
 13802  	return s
 13803  }
 13804  
 13805  // SetMeshName sets the MeshName field's value.
 13806  func (s *RouteRef) SetMeshName(v string) *RouteRef {
 13807  	s.MeshName = &v
 13808  	return s
 13809  }
 13810  
 13811  // SetMeshOwner sets the MeshOwner field's value.
 13812  func (s *RouteRef) SetMeshOwner(v string) *RouteRef {
 13813  	s.MeshOwner = &v
 13814  	return s
 13815  }
 13816  
 13817  // SetResourceOwner sets the ResourceOwner field's value.
 13818  func (s *RouteRef) SetResourceOwner(v string) *RouteRef {
 13819  	s.ResourceOwner = &v
 13820  	return s
 13821  }
 13822  
 13823  // SetRouteName sets the RouteName field's value.
 13824  func (s *RouteRef) SetRouteName(v string) *RouteRef {
 13825  	s.RouteName = &v
 13826  	return s
 13827  }
 13828  
 13829  // SetVersion sets the Version field's value.
 13830  func (s *RouteRef) SetVersion(v int64) *RouteRef {
 13831  	s.Version = &v
 13832  	return s
 13833  }
 13834  
 13835  // SetVirtualRouterName sets the VirtualRouterName field's value.
 13836  func (s *RouteRef) SetVirtualRouterName(v string) *RouteRef {
 13837  	s.VirtualRouterName = &v
 13838  	return s
 13839  }
 13840  
 13841  // An object that represents a route specification. Specify one route type.
 13842  type RouteSpec struct {
 13843  	_ struct{} `type:"structure"`
 13844  
 13845  	// An object that represents the specification of a gRPC route.
 13846  	GrpcRoute *GrpcRoute `locationName:"grpcRoute" type:"structure"`
 13847  
 13848  	// An object that represents the specification of an HTTP/2 route.
 13849  	Http2Route *HttpRoute `locationName:"http2Route" type:"structure"`
 13850  
 13851  	// An object that represents the specification of an HTTP route.
 13852  	HttpRoute *HttpRoute `locationName:"httpRoute" type:"structure"`
 13853  
 13854  	// The priority for the route. Routes are matched based on the specified value,
 13855  	// where 0 is the highest priority.
 13856  	Priority *int64 `locationName:"priority" type:"integer"`
 13857  
 13858  	// An object that represents the specification of a TCP route.
 13859  	TcpRoute *TcpRoute `locationName:"tcpRoute" type:"structure"`
 13860  }
 13861  
 13862  // String returns the string representation.
 13863  //
 13864  // API parameter values that are decorated as "sensitive" in the API will not
 13865  // be included in the string output. The member name will be present, but the
 13866  // value will be replaced with "sensitive".
 13867  func (s RouteSpec) String() string {
 13868  	return awsutil.Prettify(s)
 13869  }
 13870  
 13871  // GoString returns the string representation.
 13872  //
 13873  // API parameter values that are decorated as "sensitive" in the API will not
 13874  // be included in the string output. The member name will be present, but the
 13875  // value will be replaced with "sensitive".
 13876  func (s RouteSpec) GoString() string {
 13877  	return s.String()
 13878  }
 13879  
 13880  // Validate inspects the fields of the type to determine if they are valid.
 13881  func (s *RouteSpec) Validate() error {
 13882  	invalidParams := request.ErrInvalidParams{Context: "RouteSpec"}
 13883  	if s.GrpcRoute != nil {
 13884  		if err := s.GrpcRoute.Validate(); err != nil {
 13885  			invalidParams.AddNested("GrpcRoute", err.(request.ErrInvalidParams))
 13886  		}
 13887  	}
 13888  	if s.Http2Route != nil {
 13889  		if err := s.Http2Route.Validate(); err != nil {
 13890  			invalidParams.AddNested("Http2Route", err.(request.ErrInvalidParams))
 13891  		}
 13892  	}
 13893  	if s.HttpRoute != nil {
 13894  		if err := s.HttpRoute.Validate(); err != nil {
 13895  			invalidParams.AddNested("HttpRoute", err.(request.ErrInvalidParams))
 13896  		}
 13897  	}
 13898  	if s.TcpRoute != nil {
 13899  		if err := s.TcpRoute.Validate(); err != nil {
 13900  			invalidParams.AddNested("TcpRoute", err.(request.ErrInvalidParams))
 13901  		}
 13902  	}
 13903  
 13904  	if invalidParams.Len() > 0 {
 13905  		return invalidParams
 13906  	}
 13907  	return nil
 13908  }
 13909  
 13910  // SetGrpcRoute sets the GrpcRoute field's value.
 13911  func (s *RouteSpec) SetGrpcRoute(v *GrpcRoute) *RouteSpec {
 13912  	s.GrpcRoute = v
 13913  	return s
 13914  }
 13915  
 13916  // SetHttp2Route sets the Http2Route field's value.
 13917  func (s *RouteSpec) SetHttp2Route(v *HttpRoute) *RouteSpec {
 13918  	s.Http2Route = v
 13919  	return s
 13920  }
 13921  
 13922  // SetHttpRoute sets the HttpRoute field's value.
 13923  func (s *RouteSpec) SetHttpRoute(v *HttpRoute) *RouteSpec {
 13924  	s.HttpRoute = v
 13925  	return s
 13926  }
 13927  
 13928  // SetPriority sets the Priority field's value.
 13929  func (s *RouteSpec) SetPriority(v int64) *RouteSpec {
 13930  	s.Priority = &v
 13931  	return s
 13932  }
 13933  
 13934  // SetTcpRoute sets the TcpRoute field's value.
 13935  func (s *RouteSpec) SetTcpRoute(v *TcpRoute) *RouteSpec {
 13936  	s.TcpRoute = v
 13937  	return s
 13938  }
 13939  
 13940  // An object that represents the current status of a route.
 13941  type RouteStatus struct {
 13942  	_ struct{} `type:"structure"`
 13943  
 13944  	// The current status for the route.
 13945  	//
 13946  	// Status is a required field
 13947  	Status *string `locationName:"status" type:"string" required:"true" enum:"RouteStatusCode"`
 13948  }
 13949  
 13950  // String returns the string representation.
 13951  //
 13952  // API parameter values that are decorated as "sensitive" in the API will not
 13953  // be included in the string output. The member name will be present, but the
 13954  // value will be replaced with "sensitive".
 13955  func (s RouteStatus) String() string {
 13956  	return awsutil.Prettify(s)
 13957  }
 13958  
 13959  // GoString returns the string representation.
 13960  //
 13961  // API parameter values that are decorated as "sensitive" in the API will not
 13962  // be included in the string output. The member name will be present, but the
 13963  // value will be replaced with "sensitive".
 13964  func (s RouteStatus) GoString() string {
 13965  	return s.String()
 13966  }
 13967  
 13968  // SetStatus sets the Status field's value.
 13969  func (s *RouteStatus) SetStatus(v string) *RouteStatus {
 13970  	s.Status = &v
 13971  	return s
 13972  }
 13973  
 13974  // An object that represents the service discovery information for a virtual
 13975  // node.
 13976  type ServiceDiscovery struct {
 13977  	_ struct{} `type:"structure"`
 13978  
 13979  	// Specifies any Cloud Map information for the virtual node.
 13980  	AwsCloudMap *AwsCloudMapServiceDiscovery `locationName:"awsCloudMap" type:"structure"`
 13981  
 13982  	// Specifies the DNS information for the virtual node.
 13983  	Dns *DnsServiceDiscovery `locationName:"dns" type:"structure"`
 13984  }
 13985  
 13986  // String returns the string representation.
 13987  //
 13988  // API parameter values that are decorated as "sensitive" in the API will not
 13989  // be included in the string output. The member name will be present, but the
 13990  // value will be replaced with "sensitive".
 13991  func (s ServiceDiscovery) String() string {
 13992  	return awsutil.Prettify(s)
 13993  }
 13994  
 13995  // GoString returns the string representation.
 13996  //
 13997  // API parameter values that are decorated as "sensitive" in the API will not
 13998  // be included in the string output. The member name will be present, but the
 13999  // value will be replaced with "sensitive".
 14000  func (s ServiceDiscovery) GoString() string {
 14001  	return s.String()
 14002  }
 14003  
 14004  // Validate inspects the fields of the type to determine if they are valid.
 14005  func (s *ServiceDiscovery) Validate() error {
 14006  	invalidParams := request.ErrInvalidParams{Context: "ServiceDiscovery"}
 14007  	if s.AwsCloudMap != nil {
 14008  		if err := s.AwsCloudMap.Validate(); err != nil {
 14009  			invalidParams.AddNested("AwsCloudMap", err.(request.ErrInvalidParams))
 14010  		}
 14011  	}
 14012  	if s.Dns != nil {
 14013  		if err := s.Dns.Validate(); err != nil {
 14014  			invalidParams.AddNested("Dns", err.(request.ErrInvalidParams))
 14015  		}
 14016  	}
 14017  
 14018  	if invalidParams.Len() > 0 {
 14019  		return invalidParams
 14020  	}
 14021  	return nil
 14022  }
 14023  
 14024  // SetAwsCloudMap sets the AwsCloudMap field's value.
 14025  func (s *ServiceDiscovery) SetAwsCloudMap(v *AwsCloudMapServiceDiscovery) *ServiceDiscovery {
 14026  	s.AwsCloudMap = v
 14027  	return s
 14028  }
 14029  
 14030  // SetDns sets the Dns field's value.
 14031  func (s *ServiceDiscovery) SetDns(v *DnsServiceDiscovery) *ServiceDiscovery {
 14032  	s.Dns = v
 14033  	return s
 14034  }
 14035  
 14036  // The request has failed due to a temporary failure of the service.
 14037  type ServiceUnavailableException struct {
 14038  	_            struct{}                  `type:"structure"`
 14039  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 14040  
 14041  	Message_ *string `locationName:"message" type:"string"`
 14042  }
 14043  
 14044  // String returns the string representation.
 14045  //
 14046  // API parameter values that are decorated as "sensitive" in the API will not
 14047  // be included in the string output. The member name will be present, but the
 14048  // value will be replaced with "sensitive".
 14049  func (s ServiceUnavailableException) String() string {
 14050  	return awsutil.Prettify(s)
 14051  }
 14052  
 14053  // GoString returns the string representation.
 14054  //
 14055  // API parameter values that are decorated as "sensitive" in the API will not
 14056  // be included in the string output. The member name will be present, but the
 14057  // value will be replaced with "sensitive".
 14058  func (s ServiceUnavailableException) GoString() string {
 14059  	return s.String()
 14060  }
 14061  
 14062  func newErrorServiceUnavailableException(v protocol.ResponseMetadata) error {
 14063  	return &ServiceUnavailableException{
 14064  		RespMetadata: v,
 14065  	}
 14066  }
 14067  
 14068  // Code returns the exception type name.
 14069  func (s *ServiceUnavailableException) Code() string {
 14070  	return "ServiceUnavailableException"
 14071  }
 14072  
 14073  // Message returns the exception's message.
 14074  func (s *ServiceUnavailableException) Message() string {
 14075  	if s.Message_ != nil {
 14076  		return *s.Message_
 14077  	}
 14078  	return ""
 14079  }
 14080  
 14081  // OrigErr always returns nil, satisfies awserr.Error interface.
 14082  func (s *ServiceUnavailableException) OrigErr() error {
 14083  	return nil
 14084  }
 14085  
 14086  func (s *ServiceUnavailableException) Error() string {
 14087  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 14088  }
 14089  
 14090  // Status code returns the HTTP status code for the request's response error.
 14091  func (s *ServiceUnavailableException) StatusCode() int {
 14092  	return s.RespMetadata.StatusCode
 14093  }
 14094  
 14095  // RequestID returns the service's response RequestID for request.
 14096  func (s *ServiceUnavailableException) RequestID() string {
 14097  	return s.RespMetadata.RequestID
 14098  }
 14099  
 14100  // An object that represents the methods by which a subject alternative name
 14101  // on a peer Transport Layer Security (TLS) certificate can be matched.
 14102  type SubjectAlternativeNameMatchers struct {
 14103  	_ struct{} `type:"structure"`
 14104  
 14105  	// The values sent must match the specified values exactly.
 14106  	//
 14107  	// Exact is a required field
 14108  	Exact []*string `locationName:"exact" type:"list" required:"true"`
 14109  }
 14110  
 14111  // String returns the string representation.
 14112  //
 14113  // API parameter values that are decorated as "sensitive" in the API will not
 14114  // be included in the string output. The member name will be present, but the
 14115  // value will be replaced with "sensitive".
 14116  func (s SubjectAlternativeNameMatchers) String() string {
 14117  	return awsutil.Prettify(s)
 14118  }
 14119  
 14120  // GoString returns the string representation.
 14121  //
 14122  // API parameter values that are decorated as "sensitive" in the API will not
 14123  // be included in the string output. The member name will be present, but the
 14124  // value will be replaced with "sensitive".
 14125  func (s SubjectAlternativeNameMatchers) GoString() string {
 14126  	return s.String()
 14127  }
 14128  
 14129  // Validate inspects the fields of the type to determine if they are valid.
 14130  func (s *SubjectAlternativeNameMatchers) Validate() error {
 14131  	invalidParams := request.ErrInvalidParams{Context: "SubjectAlternativeNameMatchers"}
 14132  	if s.Exact == nil {
 14133  		invalidParams.Add(request.NewErrParamRequired("Exact"))
 14134  	}
 14135  
 14136  	if invalidParams.Len() > 0 {
 14137  		return invalidParams
 14138  	}
 14139  	return nil
 14140  }
 14141  
 14142  // SetExact sets the Exact field's value.
 14143  func (s *SubjectAlternativeNameMatchers) SetExact(v []*string) *SubjectAlternativeNameMatchers {
 14144  	s.Exact = v
 14145  	return s
 14146  }
 14147  
 14148  // An object that represents the subject alternative names secured by the certificate.
 14149  type SubjectAlternativeNames struct {
 14150  	_ struct{} `type:"structure"`
 14151  
 14152  	// An object that represents the criteria for determining a SANs match.
 14153  	//
 14154  	// Match is a required field
 14155  	Match *SubjectAlternativeNameMatchers `locationName:"match" type:"structure" required:"true"`
 14156  }
 14157  
 14158  // String returns the string representation.
 14159  //
 14160  // API parameter values that are decorated as "sensitive" in the API will not
 14161  // be included in the string output. The member name will be present, but the
 14162  // value will be replaced with "sensitive".
 14163  func (s SubjectAlternativeNames) String() string {
 14164  	return awsutil.Prettify(s)
 14165  }
 14166  
 14167  // GoString returns the string representation.
 14168  //
 14169  // API parameter values that are decorated as "sensitive" in the API will not
 14170  // be included in the string output. The member name will be present, but the
 14171  // value will be replaced with "sensitive".
 14172  func (s SubjectAlternativeNames) GoString() string {
 14173  	return s.String()
 14174  }
 14175  
 14176  // Validate inspects the fields of the type to determine if they are valid.
 14177  func (s *SubjectAlternativeNames) Validate() error {
 14178  	invalidParams := request.ErrInvalidParams{Context: "SubjectAlternativeNames"}
 14179  	if s.Match == nil {
 14180  		invalidParams.Add(request.NewErrParamRequired("Match"))
 14181  	}
 14182  	if s.Match != nil {
 14183  		if err := s.Match.Validate(); err != nil {
 14184  			invalidParams.AddNested("Match", err.(request.ErrInvalidParams))
 14185  		}
 14186  	}
 14187  
 14188  	if invalidParams.Len() > 0 {
 14189  		return invalidParams
 14190  	}
 14191  	return nil
 14192  }
 14193  
 14194  // SetMatch sets the Match field's value.
 14195  func (s *SubjectAlternativeNames) SetMatch(v *SubjectAlternativeNameMatchers) *SubjectAlternativeNames {
 14196  	s.Match = v
 14197  	return s
 14198  }
 14199  
 14200  // Optional metadata that you apply to a resource to assist with categorization
 14201  // and organization. Each tag consists of a key and an optional value, both
 14202  // of which you define. Tag keys can have a maximum character length of 128
 14203  // characters, and tag values can have a maximum length of 256 characters.
 14204  type TagRef struct {
 14205  	_ struct{} `type:"structure"`
 14206  
 14207  	// One part of a key-value pair that make up a tag. A key is a general label
 14208  	// that acts like a category for more specific tag values.
 14209  	//
 14210  	// Key is a required field
 14211  	Key *string `locationName:"key" min:"1" type:"string" required:"true"`
 14212  
 14213  	// The optional part of a key-value pair that make up a tag. A value acts as
 14214  	// a descriptor within a tag category (key).
 14215  	//
 14216  	// Value is a required field
 14217  	Value *string `locationName:"value" type:"string" required:"true"`
 14218  }
 14219  
 14220  // String returns the string representation.
 14221  //
 14222  // API parameter values that are decorated as "sensitive" in the API will not
 14223  // be included in the string output. The member name will be present, but the
 14224  // value will be replaced with "sensitive".
 14225  func (s TagRef) String() string {
 14226  	return awsutil.Prettify(s)
 14227  }
 14228  
 14229  // GoString returns the string representation.
 14230  //
 14231  // API parameter values that are decorated as "sensitive" in the API will not
 14232  // be included in the string output. The member name will be present, but the
 14233  // value will be replaced with "sensitive".
 14234  func (s TagRef) GoString() string {
 14235  	return s.String()
 14236  }
 14237  
 14238  // Validate inspects the fields of the type to determine if they are valid.
 14239  func (s *TagRef) Validate() error {
 14240  	invalidParams := request.ErrInvalidParams{Context: "TagRef"}
 14241  	if s.Key == nil {
 14242  		invalidParams.Add(request.NewErrParamRequired("Key"))
 14243  	}
 14244  	if s.Key != nil && len(*s.Key) < 1 {
 14245  		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
 14246  	}
 14247  	if s.Value == nil {
 14248  		invalidParams.Add(request.NewErrParamRequired("Value"))
 14249  	}
 14250  
 14251  	if invalidParams.Len() > 0 {
 14252  		return invalidParams
 14253  	}
 14254  	return nil
 14255  }
 14256  
 14257  // SetKey sets the Key field's value.
 14258  func (s *TagRef) SetKey(v string) *TagRef {
 14259  	s.Key = &v
 14260  	return s
 14261  }
 14262  
 14263  // SetValue sets the Value field's value.
 14264  func (s *TagRef) SetValue(v string) *TagRef {
 14265  	s.Value = &v
 14266  	return s
 14267  }
 14268  
 14269  type TagResourceInput struct {
 14270  	_ struct{} `type:"structure"`
 14271  
 14272  	// The Amazon Resource Name (ARN) of the resource to add tags to.
 14273  	//
 14274  	// ResourceArn is a required field
 14275  	ResourceArn *string `location:"querystring" locationName:"resourceArn" type:"string" required:"true"`
 14276  
 14277  	// The tags to add to the resource. A tag is an array of key-value pairs. Tag
 14278  	// keys can have a maximum character length of 128 characters, and tag values
 14279  	// can have a maximum length of 256 characters.
 14280  	//
 14281  	// Tags is a required field
 14282  	Tags []*TagRef `locationName:"tags" type:"list" required:"true"`
 14283  }
 14284  
 14285  // String returns the string representation.
 14286  //
 14287  // API parameter values that are decorated as "sensitive" in the API will not
 14288  // be included in the string output. The member name will be present, but the
 14289  // value will be replaced with "sensitive".
 14290  func (s TagResourceInput) String() string {
 14291  	return awsutil.Prettify(s)
 14292  }
 14293  
 14294  // GoString returns the string representation.
 14295  //
 14296  // API parameter values that are decorated as "sensitive" in the API will not
 14297  // be included in the string output. The member name will be present, but the
 14298  // value will be replaced with "sensitive".
 14299  func (s TagResourceInput) GoString() string {
 14300  	return s.String()
 14301  }
 14302  
 14303  // Validate inspects the fields of the type to determine if they are valid.
 14304  func (s *TagResourceInput) Validate() error {
 14305  	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
 14306  	if s.ResourceArn == nil {
 14307  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
 14308  	}
 14309  	if s.Tags == nil {
 14310  		invalidParams.Add(request.NewErrParamRequired("Tags"))
 14311  	}
 14312  	if s.Tags != nil {
 14313  		for i, v := range s.Tags {
 14314  			if v == nil {
 14315  				continue
 14316  			}
 14317  			if err := v.Validate(); err != nil {
 14318  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
 14319  			}
 14320  		}
 14321  	}
 14322  
 14323  	if invalidParams.Len() > 0 {
 14324  		return invalidParams
 14325  	}
 14326  	return nil
 14327  }
 14328  
 14329  // SetResourceArn sets the ResourceArn field's value.
 14330  func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
 14331  	s.ResourceArn = &v
 14332  	return s
 14333  }
 14334  
 14335  // SetTags sets the Tags field's value.
 14336  func (s *TagResourceInput) SetTags(v []*TagRef) *TagResourceInput {
 14337  	s.Tags = v
 14338  	return s
 14339  }
 14340  
 14341  type TagResourceOutput struct {
 14342  	_ struct{} `type:"structure" nopayload:"true"`
 14343  }
 14344  
 14345  // String returns the string representation.
 14346  //
 14347  // API parameter values that are decorated as "sensitive" in the API will not
 14348  // be included in the string output. The member name will be present, but the
 14349  // value will be replaced with "sensitive".
 14350  func (s TagResourceOutput) String() string {
 14351  	return awsutil.Prettify(s)
 14352  }
 14353  
 14354  // GoString returns the string representation.
 14355  //
 14356  // API parameter values that are decorated as "sensitive" in the API will not
 14357  // be included in the string output. The member name will be present, but the
 14358  // value will be replaced with "sensitive".
 14359  func (s TagResourceOutput) GoString() string {
 14360  	return s.String()
 14361  }
 14362  
 14363  // An object that represents a TCP route type.
 14364  type TcpRoute struct {
 14365  	_ struct{} `type:"structure"`
 14366  
 14367  	// The action to take if a match is determined.
 14368  	//
 14369  	// Action is a required field
 14370  	Action *TcpRouteAction `locationName:"action" type:"structure" required:"true"`
 14371  
 14372  	// An object that represents types of timeouts.
 14373  	Timeout *TcpTimeout `locationName:"timeout" type:"structure"`
 14374  }
 14375  
 14376  // String returns the string representation.
 14377  //
 14378  // API parameter values that are decorated as "sensitive" in the API will not
 14379  // be included in the string output. The member name will be present, but the
 14380  // value will be replaced with "sensitive".
 14381  func (s TcpRoute) String() string {
 14382  	return awsutil.Prettify(s)
 14383  }
 14384  
 14385  // GoString returns the string representation.
 14386  //
 14387  // API parameter values that are decorated as "sensitive" in the API will not
 14388  // be included in the string output. The member name will be present, but the
 14389  // value will be replaced with "sensitive".
 14390  func (s TcpRoute) GoString() string {
 14391  	return s.String()
 14392  }
 14393  
 14394  // Validate inspects the fields of the type to determine if they are valid.
 14395  func (s *TcpRoute) Validate() error {
 14396  	invalidParams := request.ErrInvalidParams{Context: "TcpRoute"}
 14397  	if s.Action == nil {
 14398  		invalidParams.Add(request.NewErrParamRequired("Action"))
 14399  	}
 14400  	if s.Action != nil {
 14401  		if err := s.Action.Validate(); err != nil {
 14402  			invalidParams.AddNested("Action", err.(request.ErrInvalidParams))
 14403  		}
 14404  	}
 14405  
 14406  	if invalidParams.Len() > 0 {
 14407  		return invalidParams
 14408  	}
 14409  	return nil
 14410  }
 14411  
 14412  // SetAction sets the Action field's value.
 14413  func (s *TcpRoute) SetAction(v *TcpRouteAction) *TcpRoute {
 14414  	s.Action = v
 14415  	return s
 14416  }
 14417  
 14418  // SetTimeout sets the Timeout field's value.
 14419  func (s *TcpRoute) SetTimeout(v *TcpTimeout) *TcpRoute {
 14420  	s.Timeout = v
 14421  	return s
 14422  }
 14423  
 14424  // An object that represents the action to take if a match is determined.
 14425  type TcpRouteAction struct {
 14426  	_ struct{} `type:"structure"`
 14427  
 14428  	// An object that represents the targets that traffic is routed to when a request
 14429  	// matches the route.
 14430  	//
 14431  	// WeightedTargets is a required field
 14432  	WeightedTargets []*WeightedTarget `locationName:"weightedTargets" min:"1" type:"list" required:"true"`
 14433  }
 14434  
 14435  // String returns the string representation.
 14436  //
 14437  // API parameter values that are decorated as "sensitive" in the API will not
 14438  // be included in the string output. The member name will be present, but the
 14439  // value will be replaced with "sensitive".
 14440  func (s TcpRouteAction) String() string {
 14441  	return awsutil.Prettify(s)
 14442  }
 14443  
 14444  // GoString returns the string representation.
 14445  //
 14446  // API parameter values that are decorated as "sensitive" in the API will not
 14447  // be included in the string output. The member name will be present, but the
 14448  // value will be replaced with "sensitive".
 14449  func (s TcpRouteAction) GoString() string {
 14450  	return s.String()
 14451  }
 14452  
 14453  // Validate inspects the fields of the type to determine if they are valid.
 14454  func (s *TcpRouteAction) Validate() error {
 14455  	invalidParams := request.ErrInvalidParams{Context: "TcpRouteAction"}
 14456  	if s.WeightedTargets == nil {
 14457  		invalidParams.Add(request.NewErrParamRequired("WeightedTargets"))
 14458  	}
 14459  	if s.WeightedTargets != nil && len(s.WeightedTargets) < 1 {
 14460  		invalidParams.Add(request.NewErrParamMinLen("WeightedTargets", 1))
 14461  	}
 14462  	if s.WeightedTargets != nil {
 14463  		for i, v := range s.WeightedTargets {
 14464  			if v == nil {
 14465  				continue
 14466  			}
 14467  			if err := v.Validate(); err != nil {
 14468  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "WeightedTargets", i), err.(request.ErrInvalidParams))
 14469  			}
 14470  		}
 14471  	}
 14472  
 14473  	if invalidParams.Len() > 0 {
 14474  		return invalidParams
 14475  	}
 14476  	return nil
 14477  }
 14478  
 14479  // SetWeightedTargets sets the WeightedTargets field's value.
 14480  func (s *TcpRouteAction) SetWeightedTargets(v []*WeightedTarget) *TcpRouteAction {
 14481  	s.WeightedTargets = v
 14482  	return s
 14483  }
 14484  
 14485  // An object that represents types of timeouts.
 14486  type TcpTimeout struct {
 14487  	_ struct{} `type:"structure"`
 14488  
 14489  	// An object that represents an idle timeout. An idle timeout bounds the amount
 14490  	// of time that a connection may be idle. The default value is none.
 14491  	Idle *Duration `locationName:"idle" type:"structure"`
 14492  }
 14493  
 14494  // String returns the string representation.
 14495  //
 14496  // API parameter values that are decorated as "sensitive" in the API will not
 14497  // be included in the string output. The member name will be present, but the
 14498  // value will be replaced with "sensitive".
 14499  func (s TcpTimeout) String() string {
 14500  	return awsutil.Prettify(s)
 14501  }
 14502  
 14503  // GoString returns the string representation.
 14504  //
 14505  // API parameter values that are decorated as "sensitive" in the API will not
 14506  // be included in the string output. The member name will be present, but the
 14507  // value will be replaced with "sensitive".
 14508  func (s TcpTimeout) GoString() string {
 14509  	return s.String()
 14510  }
 14511  
 14512  // SetIdle sets the Idle field's value.
 14513  func (s *TcpTimeout) SetIdle(v *Duration) *TcpTimeout {
 14514  	s.Idle = v
 14515  	return s
 14516  }
 14517  
 14518  // An object that represents how the proxy will validate its peer during Transport
 14519  // Layer Security (TLS) negotiation.
 14520  type TlsValidationContext struct {
 14521  	_ struct{} `type:"structure"`
 14522  
 14523  	// A reference to an object that represents the SANs for a Transport Layer Security
 14524  	// (TLS) validation context.
 14525  	SubjectAlternativeNames *SubjectAlternativeNames `locationName:"subjectAlternativeNames" type:"structure"`
 14526  
 14527  	// A reference to where to retrieve the trust chain when validating a peer’s
 14528  	// Transport Layer Security (TLS) certificate.
 14529  	//
 14530  	// Trust is a required field
 14531  	Trust *TlsValidationContextTrust `locationName:"trust" type:"structure" required:"true"`
 14532  }
 14533  
 14534  // String returns the string representation.
 14535  //
 14536  // API parameter values that are decorated as "sensitive" in the API will not
 14537  // be included in the string output. The member name will be present, but the
 14538  // value will be replaced with "sensitive".
 14539  func (s TlsValidationContext) String() string {
 14540  	return awsutil.Prettify(s)
 14541  }
 14542  
 14543  // GoString returns the string representation.
 14544  //
 14545  // API parameter values that are decorated as "sensitive" in the API will not
 14546  // be included in the string output. The member name will be present, but the
 14547  // value will be replaced with "sensitive".
 14548  func (s TlsValidationContext) GoString() string {
 14549  	return s.String()
 14550  }
 14551  
 14552  // Validate inspects the fields of the type to determine if they are valid.
 14553  func (s *TlsValidationContext) Validate() error {
 14554  	invalidParams := request.ErrInvalidParams{Context: "TlsValidationContext"}
 14555  	if s.Trust == nil {
 14556  		invalidParams.Add(request.NewErrParamRequired("Trust"))
 14557  	}
 14558  	if s.SubjectAlternativeNames != nil {
 14559  		if err := s.SubjectAlternativeNames.Validate(); err != nil {
 14560  			invalidParams.AddNested("SubjectAlternativeNames", err.(request.ErrInvalidParams))
 14561  		}
 14562  	}
 14563  	if s.Trust != nil {
 14564  		if err := s.Trust.Validate(); err != nil {
 14565  			invalidParams.AddNested("Trust", err.(request.ErrInvalidParams))
 14566  		}
 14567  	}
 14568  
 14569  	if invalidParams.Len() > 0 {
 14570  		return invalidParams
 14571  	}
 14572  	return nil
 14573  }
 14574  
 14575  // SetSubjectAlternativeNames sets the SubjectAlternativeNames field's value.
 14576  func (s *TlsValidationContext) SetSubjectAlternativeNames(v *SubjectAlternativeNames) *TlsValidationContext {
 14577  	s.SubjectAlternativeNames = v
 14578  	return s
 14579  }
 14580  
 14581  // SetTrust sets the Trust field's value.
 14582  func (s *TlsValidationContext) SetTrust(v *TlsValidationContextTrust) *TlsValidationContext {
 14583  	s.Trust = v
 14584  	return s
 14585  }
 14586  
 14587  // An object that represents a Transport Layer Security (TLS) validation context
 14588  // trust for an Certificate Manager certificate.
 14589  type TlsValidationContextAcmTrust struct {
 14590  	_ struct{} `type:"structure"`
 14591  
 14592  	// One or more ACM Amazon Resource Name (ARN)s.
 14593  	//
 14594  	// CertificateAuthorityArns is a required field
 14595  	CertificateAuthorityArns []*string `locationName:"certificateAuthorityArns" min:"1" type:"list" required:"true"`
 14596  }
 14597  
 14598  // String returns the string representation.
 14599  //
 14600  // API parameter values that are decorated as "sensitive" in the API will not
 14601  // be included in the string output. The member name will be present, but the
 14602  // value will be replaced with "sensitive".
 14603  func (s TlsValidationContextAcmTrust) String() string {
 14604  	return awsutil.Prettify(s)
 14605  }
 14606  
 14607  // GoString returns the string representation.
 14608  //
 14609  // API parameter values that are decorated as "sensitive" in the API will not
 14610  // be included in the string output. The member name will be present, but the
 14611  // value will be replaced with "sensitive".
 14612  func (s TlsValidationContextAcmTrust) GoString() string {
 14613  	return s.String()
 14614  }
 14615  
 14616  // Validate inspects the fields of the type to determine if they are valid.
 14617  func (s *TlsValidationContextAcmTrust) Validate() error {
 14618  	invalidParams := request.ErrInvalidParams{Context: "TlsValidationContextAcmTrust"}
 14619  	if s.CertificateAuthorityArns == nil {
 14620  		invalidParams.Add(request.NewErrParamRequired("CertificateAuthorityArns"))
 14621  	}
 14622  	if s.CertificateAuthorityArns != nil && len(s.CertificateAuthorityArns) < 1 {
 14623  		invalidParams.Add(request.NewErrParamMinLen("CertificateAuthorityArns", 1))
 14624  	}
 14625  
 14626  	if invalidParams.Len() > 0 {
 14627  		return invalidParams
 14628  	}
 14629  	return nil
 14630  }
 14631  
 14632  // SetCertificateAuthorityArns sets the CertificateAuthorityArns field's value.
 14633  func (s *TlsValidationContextAcmTrust) SetCertificateAuthorityArns(v []*string) *TlsValidationContextAcmTrust {
 14634  	s.CertificateAuthorityArns = v
 14635  	return s
 14636  }
 14637  
 14638  // An object that represents a Transport Layer Security (TLS) validation context
 14639  // trust for a local file.
 14640  type TlsValidationContextFileTrust struct {
 14641  	_ struct{} `type:"structure"`
 14642  
 14643  	// The certificate trust chain for a certificate stored on the file system of
 14644  	// the virtual node that the proxy is running on.
 14645  	//
 14646  	// CertificateChain is a required field
 14647  	CertificateChain *string `locationName:"certificateChain" min:"1" type:"string" required:"true"`
 14648  }
 14649  
 14650  // String returns the string representation.
 14651  //
 14652  // API parameter values that are decorated as "sensitive" in the API will not
 14653  // be included in the string output. The member name will be present, but the
 14654  // value will be replaced with "sensitive".
 14655  func (s TlsValidationContextFileTrust) String() string {
 14656  	return awsutil.Prettify(s)
 14657  }
 14658  
 14659  // GoString returns the string representation.
 14660  //
 14661  // API parameter values that are decorated as "sensitive" in the API will not
 14662  // be included in the string output. The member name will be present, but the
 14663  // value will be replaced with "sensitive".
 14664  func (s TlsValidationContextFileTrust) GoString() string {
 14665  	return s.String()
 14666  }
 14667  
 14668  // Validate inspects the fields of the type to determine if they are valid.
 14669  func (s *TlsValidationContextFileTrust) Validate() error {
 14670  	invalidParams := request.ErrInvalidParams{Context: "TlsValidationContextFileTrust"}
 14671  	if s.CertificateChain == nil {
 14672  		invalidParams.Add(request.NewErrParamRequired("CertificateChain"))
 14673  	}
 14674  	if s.CertificateChain != nil && len(*s.CertificateChain) < 1 {
 14675  		invalidParams.Add(request.NewErrParamMinLen("CertificateChain", 1))
 14676  	}
 14677  
 14678  	if invalidParams.Len() > 0 {
 14679  		return invalidParams
 14680  	}
 14681  	return nil
 14682  }
 14683  
 14684  // SetCertificateChain sets the CertificateChain field's value.
 14685  func (s *TlsValidationContextFileTrust) SetCertificateChain(v string) *TlsValidationContextFileTrust {
 14686  	s.CertificateChain = &v
 14687  	return s
 14688  }
 14689  
 14690  // An object that represents a Transport Layer Security (TLS) Secret Discovery
 14691  // Service validation context trust. The proxy must be configured with a local
 14692  // SDS provider via a Unix Domain Socket. See App Mesh TLS documentation (https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html)
 14693  // for more info.
 14694  type TlsValidationContextSdsTrust struct {
 14695  	_ struct{} `type:"structure"`
 14696  
 14697  	// A reference to an object that represents the name of the secret for a Transport
 14698  	// Layer Security (TLS) Secret Discovery Service validation context trust.
 14699  	//
 14700  	// SecretName is a required field
 14701  	SecretName *string `locationName:"secretName" type:"string" required:"true"`
 14702  }
 14703  
 14704  // String returns the string representation.
 14705  //
 14706  // API parameter values that are decorated as "sensitive" in the API will not
 14707  // be included in the string output. The member name will be present, but the
 14708  // value will be replaced with "sensitive".
 14709  func (s TlsValidationContextSdsTrust) String() string {
 14710  	return awsutil.Prettify(s)
 14711  }
 14712  
 14713  // GoString returns the string representation.
 14714  //
 14715  // API parameter values that are decorated as "sensitive" in the API will not
 14716  // be included in the string output. The member name will be present, but the
 14717  // value will be replaced with "sensitive".
 14718  func (s TlsValidationContextSdsTrust) GoString() string {
 14719  	return s.String()
 14720  }
 14721  
 14722  // Validate inspects the fields of the type to determine if they are valid.
 14723  func (s *TlsValidationContextSdsTrust) Validate() error {
 14724  	invalidParams := request.ErrInvalidParams{Context: "TlsValidationContextSdsTrust"}
 14725  	if s.SecretName == nil {
 14726  		invalidParams.Add(request.NewErrParamRequired("SecretName"))
 14727  	}
 14728  
 14729  	if invalidParams.Len() > 0 {
 14730  		return invalidParams
 14731  	}
 14732  	return nil
 14733  }
 14734  
 14735  // SetSecretName sets the SecretName field's value.
 14736  func (s *TlsValidationContextSdsTrust) SetSecretName(v string) *TlsValidationContextSdsTrust {
 14737  	s.SecretName = &v
 14738  	return s
 14739  }
 14740  
 14741  // An object that represents a Transport Layer Security (TLS) validation context
 14742  // trust.
 14743  type TlsValidationContextTrust struct {
 14744  	_ struct{} `type:"structure"`
 14745  
 14746  	// A reference to an object that represents a Transport Layer Security (TLS)
 14747  	// validation context trust for an Certificate Manager certificate.
 14748  	Acm *TlsValidationContextAcmTrust `locationName:"acm" type:"structure"`
 14749  
 14750  	// An object that represents a Transport Layer Security (TLS) validation context
 14751  	// trust for a local file.
 14752  	File *TlsValidationContextFileTrust `locationName:"file" type:"structure"`
 14753  
 14754  	// A reference to an object that represents a Transport Layer Security (TLS)
 14755  	// Secret Discovery Service validation context trust.
 14756  	Sds *TlsValidationContextSdsTrust `locationName:"sds" type:"structure"`
 14757  }
 14758  
 14759  // String returns the string representation.
 14760  //
 14761  // API parameter values that are decorated as "sensitive" in the API will not
 14762  // be included in the string output. The member name will be present, but the
 14763  // value will be replaced with "sensitive".
 14764  func (s TlsValidationContextTrust) String() string {
 14765  	return awsutil.Prettify(s)
 14766  }
 14767  
 14768  // GoString returns the string representation.
 14769  //
 14770  // API parameter values that are decorated as "sensitive" in the API will not
 14771  // be included in the string output. The member name will be present, but the
 14772  // value will be replaced with "sensitive".
 14773  func (s TlsValidationContextTrust) GoString() string {
 14774  	return s.String()
 14775  }
 14776  
 14777  // Validate inspects the fields of the type to determine if they are valid.
 14778  func (s *TlsValidationContextTrust) Validate() error {
 14779  	invalidParams := request.ErrInvalidParams{Context: "TlsValidationContextTrust"}
 14780  	if s.Acm != nil {
 14781  		if err := s.Acm.Validate(); err != nil {
 14782  			invalidParams.AddNested("Acm", err.(request.ErrInvalidParams))
 14783  		}
 14784  	}
 14785  	if s.File != nil {
 14786  		if err := s.File.Validate(); err != nil {
 14787  			invalidParams.AddNested("File", err.(request.ErrInvalidParams))
 14788  		}
 14789  	}
 14790  	if s.Sds != nil {
 14791  		if err := s.Sds.Validate(); err != nil {
 14792  			invalidParams.AddNested("Sds", err.(request.ErrInvalidParams))
 14793  		}
 14794  	}
 14795  
 14796  	if invalidParams.Len() > 0 {
 14797  		return invalidParams
 14798  	}
 14799  	return nil
 14800  }
 14801  
 14802  // SetAcm sets the Acm field's value.
 14803  func (s *TlsValidationContextTrust) SetAcm(v *TlsValidationContextAcmTrust) *TlsValidationContextTrust {
 14804  	s.Acm = v
 14805  	return s
 14806  }
 14807  
 14808  // SetFile sets the File field's value.
 14809  func (s *TlsValidationContextTrust) SetFile(v *TlsValidationContextFileTrust) *TlsValidationContextTrust {
 14810  	s.File = v
 14811  	return s
 14812  }
 14813  
 14814  // SetSds sets the Sds field's value.
 14815  func (s *TlsValidationContextTrust) SetSds(v *TlsValidationContextSdsTrust) *TlsValidationContextTrust {
 14816  	s.Sds = v
 14817  	return s
 14818  }
 14819  
 14820  // The maximum request rate permitted by the App Mesh APIs has been exceeded
 14821  // for your account. For best results, use an increasing or variable sleep interval
 14822  // between requests.
 14823  type TooManyRequestsException struct {
 14824  	_            struct{}                  `type:"structure"`
 14825  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 14826  
 14827  	Message_ *string `locationName:"message" type:"string"`
 14828  }
 14829  
 14830  // String returns the string representation.
 14831  //
 14832  // API parameter values that are decorated as "sensitive" in the API will not
 14833  // be included in the string output. The member name will be present, but the
 14834  // value will be replaced with "sensitive".
 14835  func (s TooManyRequestsException) String() string {
 14836  	return awsutil.Prettify(s)
 14837  }
 14838  
 14839  // GoString returns the string representation.
 14840  //
 14841  // API parameter values that are decorated as "sensitive" in the API will not
 14842  // be included in the string output. The member name will be present, but the
 14843  // value will be replaced with "sensitive".
 14844  func (s TooManyRequestsException) GoString() string {
 14845  	return s.String()
 14846  }
 14847  
 14848  func newErrorTooManyRequestsException(v protocol.ResponseMetadata) error {
 14849  	return &TooManyRequestsException{
 14850  		RespMetadata: v,
 14851  	}
 14852  }
 14853  
 14854  // Code returns the exception type name.
 14855  func (s *TooManyRequestsException) Code() string {
 14856  	return "TooManyRequestsException"
 14857  }
 14858  
 14859  // Message returns the exception's message.
 14860  func (s *TooManyRequestsException) Message() string {
 14861  	if s.Message_ != nil {
 14862  		return *s.Message_
 14863  	}
 14864  	return ""
 14865  }
 14866  
 14867  // OrigErr always returns nil, satisfies awserr.Error interface.
 14868  func (s *TooManyRequestsException) OrigErr() error {
 14869  	return nil
 14870  }
 14871  
 14872  func (s *TooManyRequestsException) Error() string {
 14873  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 14874  }
 14875  
 14876  // Status code returns the HTTP status code for the request's response error.
 14877  func (s *TooManyRequestsException) StatusCode() int {
 14878  	return s.RespMetadata.StatusCode
 14879  }
 14880  
 14881  // RequestID returns the service's response RequestID for request.
 14882  func (s *TooManyRequestsException) RequestID() string {
 14883  	return s.RespMetadata.RequestID
 14884  }
 14885  
 14886  // The request exceeds the maximum allowed number of tags allowed per resource.
 14887  // The current limit is 50 user tags per resource. You must reduce the number
 14888  // of tags in the request. None of the tags in this request were applied.
 14889  type TooManyTagsException struct {
 14890  	_            struct{}                  `type:"structure"`
 14891  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
 14892  
 14893  	Message_ *string `locationName:"message" type:"string"`
 14894  }
 14895  
 14896  // String returns the string representation.
 14897  //
 14898  // API parameter values that are decorated as "sensitive" in the API will not
 14899  // be included in the string output. The member name will be present, but the
 14900  // value will be replaced with "sensitive".
 14901  func (s TooManyTagsException) String() string {
 14902  	return awsutil.Prettify(s)
 14903  }
 14904  
 14905  // GoString returns the string representation.
 14906  //
 14907  // API parameter values that are decorated as "sensitive" in the API will not
 14908  // be included in the string output. The member name will be present, but the
 14909  // value will be replaced with "sensitive".
 14910  func (s TooManyTagsException) GoString() string {
 14911  	return s.String()
 14912  }
 14913  
 14914  func newErrorTooManyTagsException(v protocol.ResponseMetadata) error {
 14915  	return &TooManyTagsException{
 14916  		RespMetadata: v,
 14917  	}
 14918  }
 14919  
 14920  // Code returns the exception type name.
 14921  func (s *TooManyTagsException) Code() string {
 14922  	return "TooManyTagsException"
 14923  }
 14924  
 14925  // Message returns the exception's message.
 14926  func (s *TooManyTagsException) Message() string {
 14927  	if s.Message_ != nil {
 14928  		return *s.Message_
 14929  	}
 14930  	return ""
 14931  }
 14932  
 14933  // OrigErr always returns nil, satisfies awserr.Error interface.
 14934  func (s *TooManyTagsException) OrigErr() error {
 14935  	return nil
 14936  }
 14937  
 14938  func (s *TooManyTagsException) Error() string {
 14939  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
 14940  }
 14941  
 14942  // Status code returns the HTTP status code for the request's response error.
 14943  func (s *TooManyTagsException) StatusCode() int {
 14944  	return s.RespMetadata.StatusCode
 14945  }
 14946  
 14947  // RequestID returns the service's response RequestID for request.
 14948  func (s *TooManyTagsException) RequestID() string {
 14949  	return s.RespMetadata.RequestID
 14950  }
 14951  
 14952  type UntagResourceInput struct {
 14953  	_ struct{} `type:"structure"`
 14954  
 14955  	// The Amazon Resource Name (ARN) of the resource to delete tags from.
 14956  	//
 14957  	// ResourceArn is a required field
 14958  	ResourceArn *string `location:"querystring" locationName:"resourceArn" type:"string" required:"true"`
 14959  
 14960  	// The keys of the tags to be removed.
 14961  	//
 14962  	// TagKeys is a required field
 14963  	TagKeys []*string `locationName:"tagKeys" type:"list" required:"true"`
 14964  }
 14965  
 14966  // String returns the string representation.
 14967  //
 14968  // API parameter values that are decorated as "sensitive" in the API will not
 14969  // be included in the string output. The member name will be present, but the
 14970  // value will be replaced with "sensitive".
 14971  func (s UntagResourceInput) String() string {
 14972  	return awsutil.Prettify(s)
 14973  }
 14974  
 14975  // GoString returns the string representation.
 14976  //
 14977  // API parameter values that are decorated as "sensitive" in the API will not
 14978  // be included in the string output. The member name will be present, but the
 14979  // value will be replaced with "sensitive".
 14980  func (s UntagResourceInput) GoString() string {
 14981  	return s.String()
 14982  }
 14983  
 14984  // Validate inspects the fields of the type to determine if they are valid.
 14985  func (s *UntagResourceInput) Validate() error {
 14986  	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
 14987  	if s.ResourceArn == nil {
 14988  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
 14989  	}
 14990  	if s.TagKeys == nil {
 14991  		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
 14992  	}
 14993  
 14994  	if invalidParams.Len() > 0 {
 14995  		return invalidParams
 14996  	}
 14997  	return nil
 14998  }
 14999  
 15000  // SetResourceArn sets the ResourceArn field's value.
 15001  func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
 15002  	s.ResourceArn = &v
 15003  	return s
 15004  }
 15005  
 15006  // SetTagKeys sets the TagKeys field's value.
 15007  func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
 15008  	s.TagKeys = v
 15009  	return s
 15010  }
 15011  
 15012  type UntagResourceOutput struct {
 15013  	_ struct{} `type:"structure" nopayload:"true"`
 15014  }
 15015  
 15016  // String returns the string representation.
 15017  //
 15018  // API parameter values that are decorated as "sensitive" in the API will not
 15019  // be included in the string output. The member name will be present, but the
 15020  // value will be replaced with "sensitive".
 15021  func (s UntagResourceOutput) String() string {
 15022  	return awsutil.Prettify(s)
 15023  }
 15024  
 15025  // GoString returns the string representation.
 15026  //
 15027  // API parameter values that are decorated as "sensitive" in the API will not
 15028  // be included in the string output. The member name will be present, but the
 15029  // value will be replaced with "sensitive".
 15030  func (s UntagResourceOutput) GoString() string {
 15031  	return s.String()
 15032  }
 15033  
 15034  type UpdateGatewayRouteInput struct {
 15035  	_ struct{} `type:"structure"`
 15036  
 15037  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
 15038  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
 15039  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
 15040  
 15041  	// The name of the gateway route to update.
 15042  	//
 15043  	// GatewayRouteName is a required field
 15044  	GatewayRouteName *string `location:"uri" locationName:"gatewayRouteName" min:"1" type:"string" required:"true"`
 15045  
 15046  	// The name of the service mesh that the gateway route resides in.
 15047  	//
 15048  	// MeshName is a required field
 15049  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 15050  
 15051  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 15052  	// your own, then it's the ID of the account that shared the mesh with your
 15053  	// account. For more information about mesh sharing, see Working with shared
 15054  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 15055  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
 15056  
 15057  	// The new gateway route specification to apply. This overwrites the existing
 15058  	// data.
 15059  	//
 15060  	// Spec is a required field
 15061  	Spec *GatewayRouteSpec `locationName:"spec" type:"structure" required:"true"`
 15062  
 15063  	// The name of the virtual gateway that the gateway route is associated with.
 15064  	//
 15065  	// VirtualGatewayName is a required field
 15066  	VirtualGatewayName *string `location:"uri" locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
 15067  }
 15068  
 15069  // String returns the string representation.
 15070  //
 15071  // API parameter values that are decorated as "sensitive" in the API will not
 15072  // be included in the string output. The member name will be present, but the
 15073  // value will be replaced with "sensitive".
 15074  func (s UpdateGatewayRouteInput) String() string {
 15075  	return awsutil.Prettify(s)
 15076  }
 15077  
 15078  // GoString returns the string representation.
 15079  //
 15080  // API parameter values that are decorated as "sensitive" in the API will not
 15081  // be included in the string output. The member name will be present, but the
 15082  // value will be replaced with "sensitive".
 15083  func (s UpdateGatewayRouteInput) GoString() string {
 15084  	return s.String()
 15085  }
 15086  
 15087  // Validate inspects the fields of the type to determine if they are valid.
 15088  func (s *UpdateGatewayRouteInput) Validate() error {
 15089  	invalidParams := request.ErrInvalidParams{Context: "UpdateGatewayRouteInput"}
 15090  	if s.GatewayRouteName == nil {
 15091  		invalidParams.Add(request.NewErrParamRequired("GatewayRouteName"))
 15092  	}
 15093  	if s.GatewayRouteName != nil && len(*s.GatewayRouteName) < 1 {
 15094  		invalidParams.Add(request.NewErrParamMinLen("GatewayRouteName", 1))
 15095  	}
 15096  	if s.MeshName == nil {
 15097  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 15098  	}
 15099  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 15100  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 15101  	}
 15102  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
 15103  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
 15104  	}
 15105  	if s.Spec == nil {
 15106  		invalidParams.Add(request.NewErrParamRequired("Spec"))
 15107  	}
 15108  	if s.VirtualGatewayName == nil {
 15109  		invalidParams.Add(request.NewErrParamRequired("VirtualGatewayName"))
 15110  	}
 15111  	if s.VirtualGatewayName != nil && len(*s.VirtualGatewayName) < 1 {
 15112  		invalidParams.Add(request.NewErrParamMinLen("VirtualGatewayName", 1))
 15113  	}
 15114  	if s.Spec != nil {
 15115  		if err := s.Spec.Validate(); err != nil {
 15116  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
 15117  		}
 15118  	}
 15119  
 15120  	if invalidParams.Len() > 0 {
 15121  		return invalidParams
 15122  	}
 15123  	return nil
 15124  }
 15125  
 15126  // SetClientToken sets the ClientToken field's value.
 15127  func (s *UpdateGatewayRouteInput) SetClientToken(v string) *UpdateGatewayRouteInput {
 15128  	s.ClientToken = &v
 15129  	return s
 15130  }
 15131  
 15132  // SetGatewayRouteName sets the GatewayRouteName field's value.
 15133  func (s *UpdateGatewayRouteInput) SetGatewayRouteName(v string) *UpdateGatewayRouteInput {
 15134  	s.GatewayRouteName = &v
 15135  	return s
 15136  }
 15137  
 15138  // SetMeshName sets the MeshName field's value.
 15139  func (s *UpdateGatewayRouteInput) SetMeshName(v string) *UpdateGatewayRouteInput {
 15140  	s.MeshName = &v
 15141  	return s
 15142  }
 15143  
 15144  // SetMeshOwner sets the MeshOwner field's value.
 15145  func (s *UpdateGatewayRouteInput) SetMeshOwner(v string) *UpdateGatewayRouteInput {
 15146  	s.MeshOwner = &v
 15147  	return s
 15148  }
 15149  
 15150  // SetSpec sets the Spec field's value.
 15151  func (s *UpdateGatewayRouteInput) SetSpec(v *GatewayRouteSpec) *UpdateGatewayRouteInput {
 15152  	s.Spec = v
 15153  	return s
 15154  }
 15155  
 15156  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
 15157  func (s *UpdateGatewayRouteInput) SetVirtualGatewayName(v string) *UpdateGatewayRouteInput {
 15158  	s.VirtualGatewayName = &v
 15159  	return s
 15160  }
 15161  
 15162  type UpdateGatewayRouteOutput struct {
 15163  	_ struct{} `type:"structure" payload:"GatewayRoute"`
 15164  
 15165  	// A full description of the gateway route that was updated.
 15166  	//
 15167  	// GatewayRoute is a required field
 15168  	GatewayRoute *GatewayRouteData `locationName:"gatewayRoute" type:"structure" required:"true"`
 15169  }
 15170  
 15171  // String returns the string representation.
 15172  //
 15173  // API parameter values that are decorated as "sensitive" in the API will not
 15174  // be included in the string output. The member name will be present, but the
 15175  // value will be replaced with "sensitive".
 15176  func (s UpdateGatewayRouteOutput) String() string {
 15177  	return awsutil.Prettify(s)
 15178  }
 15179  
 15180  // GoString returns the string representation.
 15181  //
 15182  // API parameter values that are decorated as "sensitive" in the API will not
 15183  // be included in the string output. The member name will be present, but the
 15184  // value will be replaced with "sensitive".
 15185  func (s UpdateGatewayRouteOutput) GoString() string {
 15186  	return s.String()
 15187  }
 15188  
 15189  // SetGatewayRoute sets the GatewayRoute field's value.
 15190  func (s *UpdateGatewayRouteOutput) SetGatewayRoute(v *GatewayRouteData) *UpdateGatewayRouteOutput {
 15191  	s.GatewayRoute = v
 15192  	return s
 15193  }
 15194  
 15195  type UpdateMeshInput struct {
 15196  	_ struct{} `type:"structure"`
 15197  
 15198  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
 15199  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
 15200  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
 15201  
 15202  	// The name of the service mesh to update.
 15203  	//
 15204  	// MeshName is a required field
 15205  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 15206  
 15207  	// The service mesh specification to apply.
 15208  	Spec *MeshSpec `locationName:"spec" type:"structure"`
 15209  }
 15210  
 15211  // String returns the string representation.
 15212  //
 15213  // API parameter values that are decorated as "sensitive" in the API will not
 15214  // be included in the string output. The member name will be present, but the
 15215  // value will be replaced with "sensitive".
 15216  func (s UpdateMeshInput) String() string {
 15217  	return awsutil.Prettify(s)
 15218  }
 15219  
 15220  // GoString returns the string representation.
 15221  //
 15222  // API parameter values that are decorated as "sensitive" in the API will not
 15223  // be included in the string output. The member name will be present, but the
 15224  // value will be replaced with "sensitive".
 15225  func (s UpdateMeshInput) GoString() string {
 15226  	return s.String()
 15227  }
 15228  
 15229  // Validate inspects the fields of the type to determine if they are valid.
 15230  func (s *UpdateMeshInput) Validate() error {
 15231  	invalidParams := request.ErrInvalidParams{Context: "UpdateMeshInput"}
 15232  	if s.MeshName == nil {
 15233  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 15234  	}
 15235  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 15236  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 15237  	}
 15238  	if s.Spec != nil {
 15239  		if err := s.Spec.Validate(); err != nil {
 15240  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
 15241  		}
 15242  	}
 15243  
 15244  	if invalidParams.Len() > 0 {
 15245  		return invalidParams
 15246  	}
 15247  	return nil
 15248  }
 15249  
 15250  // SetClientToken sets the ClientToken field's value.
 15251  func (s *UpdateMeshInput) SetClientToken(v string) *UpdateMeshInput {
 15252  	s.ClientToken = &v
 15253  	return s
 15254  }
 15255  
 15256  // SetMeshName sets the MeshName field's value.
 15257  func (s *UpdateMeshInput) SetMeshName(v string) *UpdateMeshInput {
 15258  	s.MeshName = &v
 15259  	return s
 15260  }
 15261  
 15262  // SetSpec sets the Spec field's value.
 15263  func (s *UpdateMeshInput) SetSpec(v *MeshSpec) *UpdateMeshInput {
 15264  	s.Spec = v
 15265  	return s
 15266  }
 15267  
 15268  type UpdateMeshOutput struct {
 15269  	_ struct{} `type:"structure" payload:"Mesh"`
 15270  
 15271  	// An object that represents a service mesh returned by a describe operation.
 15272  	//
 15273  	// Mesh is a required field
 15274  	Mesh *MeshData `locationName:"mesh" type:"structure" required:"true"`
 15275  }
 15276  
 15277  // String returns the string representation.
 15278  //
 15279  // API parameter values that are decorated as "sensitive" in the API will not
 15280  // be included in the string output. The member name will be present, but the
 15281  // value will be replaced with "sensitive".
 15282  func (s UpdateMeshOutput) String() string {
 15283  	return awsutil.Prettify(s)
 15284  }
 15285  
 15286  // GoString returns the string representation.
 15287  //
 15288  // API parameter values that are decorated as "sensitive" in the API will not
 15289  // be included in the string output. The member name will be present, but the
 15290  // value will be replaced with "sensitive".
 15291  func (s UpdateMeshOutput) GoString() string {
 15292  	return s.String()
 15293  }
 15294  
 15295  // SetMesh sets the Mesh field's value.
 15296  func (s *UpdateMeshOutput) SetMesh(v *MeshData) *UpdateMeshOutput {
 15297  	s.Mesh = v
 15298  	return s
 15299  }
 15300  
 15301  type UpdateRouteInput struct {
 15302  	_ struct{} `type:"structure"`
 15303  
 15304  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
 15305  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
 15306  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
 15307  
 15308  	// The name of the service mesh that the route resides in.
 15309  	//
 15310  	// MeshName is a required field
 15311  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 15312  
 15313  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 15314  	// your own, then it's the ID of the account that shared the mesh with your
 15315  	// account. For more information about mesh sharing, see Working with shared
 15316  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 15317  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
 15318  
 15319  	// The name of the route to update.
 15320  	//
 15321  	// RouteName is a required field
 15322  	RouteName *string `location:"uri" locationName:"routeName" min:"1" type:"string" required:"true"`
 15323  
 15324  	// The new route specification to apply. This overwrites the existing data.
 15325  	//
 15326  	// Spec is a required field
 15327  	Spec *RouteSpec `locationName:"spec" type:"structure" required:"true"`
 15328  
 15329  	// The name of the virtual router that the route is associated with.
 15330  	//
 15331  	// VirtualRouterName is a required field
 15332  	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
 15333  }
 15334  
 15335  // String returns the string representation.
 15336  //
 15337  // API parameter values that are decorated as "sensitive" in the API will not
 15338  // be included in the string output. The member name will be present, but the
 15339  // value will be replaced with "sensitive".
 15340  func (s UpdateRouteInput) String() string {
 15341  	return awsutil.Prettify(s)
 15342  }
 15343  
 15344  // GoString returns the string representation.
 15345  //
 15346  // API parameter values that are decorated as "sensitive" in the API will not
 15347  // be included in the string output. The member name will be present, but the
 15348  // value will be replaced with "sensitive".
 15349  func (s UpdateRouteInput) GoString() string {
 15350  	return s.String()
 15351  }
 15352  
 15353  // Validate inspects the fields of the type to determine if they are valid.
 15354  func (s *UpdateRouteInput) Validate() error {
 15355  	invalidParams := request.ErrInvalidParams{Context: "UpdateRouteInput"}
 15356  	if s.MeshName == nil {
 15357  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 15358  	}
 15359  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 15360  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 15361  	}
 15362  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
 15363  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
 15364  	}
 15365  	if s.RouteName == nil {
 15366  		invalidParams.Add(request.NewErrParamRequired("RouteName"))
 15367  	}
 15368  	if s.RouteName != nil && len(*s.RouteName) < 1 {
 15369  		invalidParams.Add(request.NewErrParamMinLen("RouteName", 1))
 15370  	}
 15371  	if s.Spec == nil {
 15372  		invalidParams.Add(request.NewErrParamRequired("Spec"))
 15373  	}
 15374  	if s.VirtualRouterName == nil {
 15375  		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
 15376  	}
 15377  	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
 15378  		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
 15379  	}
 15380  	if s.Spec != nil {
 15381  		if err := s.Spec.Validate(); err != nil {
 15382  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
 15383  		}
 15384  	}
 15385  
 15386  	if invalidParams.Len() > 0 {
 15387  		return invalidParams
 15388  	}
 15389  	return nil
 15390  }
 15391  
 15392  // SetClientToken sets the ClientToken field's value.
 15393  func (s *UpdateRouteInput) SetClientToken(v string) *UpdateRouteInput {
 15394  	s.ClientToken = &v
 15395  	return s
 15396  }
 15397  
 15398  // SetMeshName sets the MeshName field's value.
 15399  func (s *UpdateRouteInput) SetMeshName(v string) *UpdateRouteInput {
 15400  	s.MeshName = &v
 15401  	return s
 15402  }
 15403  
 15404  // SetMeshOwner sets the MeshOwner field's value.
 15405  func (s *UpdateRouteInput) SetMeshOwner(v string) *UpdateRouteInput {
 15406  	s.MeshOwner = &v
 15407  	return s
 15408  }
 15409  
 15410  // SetRouteName sets the RouteName field's value.
 15411  func (s *UpdateRouteInput) SetRouteName(v string) *UpdateRouteInput {
 15412  	s.RouteName = &v
 15413  	return s
 15414  }
 15415  
 15416  // SetSpec sets the Spec field's value.
 15417  func (s *UpdateRouteInput) SetSpec(v *RouteSpec) *UpdateRouteInput {
 15418  	s.Spec = v
 15419  	return s
 15420  }
 15421  
 15422  // SetVirtualRouterName sets the VirtualRouterName field's value.
 15423  func (s *UpdateRouteInput) SetVirtualRouterName(v string) *UpdateRouteInput {
 15424  	s.VirtualRouterName = &v
 15425  	return s
 15426  }
 15427  
 15428  type UpdateRouteOutput struct {
 15429  	_ struct{} `type:"structure" payload:"Route"`
 15430  
 15431  	// A full description of the route that was updated.
 15432  	//
 15433  	// Route is a required field
 15434  	Route *RouteData `locationName:"route" type:"structure" required:"true"`
 15435  }
 15436  
 15437  // String returns the string representation.
 15438  //
 15439  // API parameter values that are decorated as "sensitive" in the API will not
 15440  // be included in the string output. The member name will be present, but the
 15441  // value will be replaced with "sensitive".
 15442  func (s UpdateRouteOutput) String() string {
 15443  	return awsutil.Prettify(s)
 15444  }
 15445  
 15446  // GoString returns the string representation.
 15447  //
 15448  // API parameter values that are decorated as "sensitive" in the API will not
 15449  // be included in the string output. The member name will be present, but the
 15450  // value will be replaced with "sensitive".
 15451  func (s UpdateRouteOutput) GoString() string {
 15452  	return s.String()
 15453  }
 15454  
 15455  // SetRoute sets the Route field's value.
 15456  func (s *UpdateRouteOutput) SetRoute(v *RouteData) *UpdateRouteOutput {
 15457  	s.Route = v
 15458  	return s
 15459  }
 15460  
 15461  type UpdateVirtualGatewayInput struct {
 15462  	_ struct{} `type:"structure"`
 15463  
 15464  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
 15465  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
 15466  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
 15467  
 15468  	// The name of the service mesh that the virtual gateway resides in.
 15469  	//
 15470  	// MeshName is a required field
 15471  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 15472  
 15473  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 15474  	// your own, then it's the ID of the account that shared the mesh with your
 15475  	// account. For more information about mesh sharing, see Working with shared
 15476  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 15477  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
 15478  
 15479  	// The new virtual gateway specification to apply. This overwrites the existing
 15480  	// data.
 15481  	//
 15482  	// Spec is a required field
 15483  	Spec *VirtualGatewaySpec `locationName:"spec" type:"structure" required:"true"`
 15484  
 15485  	// The name of the virtual gateway to update.
 15486  	//
 15487  	// VirtualGatewayName is a required field
 15488  	VirtualGatewayName *string `location:"uri" locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
 15489  }
 15490  
 15491  // String returns the string representation.
 15492  //
 15493  // API parameter values that are decorated as "sensitive" in the API will not
 15494  // be included in the string output. The member name will be present, but the
 15495  // value will be replaced with "sensitive".
 15496  func (s UpdateVirtualGatewayInput) String() string {
 15497  	return awsutil.Prettify(s)
 15498  }
 15499  
 15500  // GoString returns the string representation.
 15501  //
 15502  // API parameter values that are decorated as "sensitive" in the API will not
 15503  // be included in the string output. The member name will be present, but the
 15504  // value will be replaced with "sensitive".
 15505  func (s UpdateVirtualGatewayInput) GoString() string {
 15506  	return s.String()
 15507  }
 15508  
 15509  // Validate inspects the fields of the type to determine if they are valid.
 15510  func (s *UpdateVirtualGatewayInput) Validate() error {
 15511  	invalidParams := request.ErrInvalidParams{Context: "UpdateVirtualGatewayInput"}
 15512  	if s.MeshName == nil {
 15513  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 15514  	}
 15515  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 15516  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 15517  	}
 15518  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
 15519  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
 15520  	}
 15521  	if s.Spec == nil {
 15522  		invalidParams.Add(request.NewErrParamRequired("Spec"))
 15523  	}
 15524  	if s.VirtualGatewayName == nil {
 15525  		invalidParams.Add(request.NewErrParamRequired("VirtualGatewayName"))
 15526  	}
 15527  	if s.VirtualGatewayName != nil && len(*s.VirtualGatewayName) < 1 {
 15528  		invalidParams.Add(request.NewErrParamMinLen("VirtualGatewayName", 1))
 15529  	}
 15530  	if s.Spec != nil {
 15531  		if err := s.Spec.Validate(); err != nil {
 15532  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
 15533  		}
 15534  	}
 15535  
 15536  	if invalidParams.Len() > 0 {
 15537  		return invalidParams
 15538  	}
 15539  	return nil
 15540  }
 15541  
 15542  // SetClientToken sets the ClientToken field's value.
 15543  func (s *UpdateVirtualGatewayInput) SetClientToken(v string) *UpdateVirtualGatewayInput {
 15544  	s.ClientToken = &v
 15545  	return s
 15546  }
 15547  
 15548  // SetMeshName sets the MeshName field's value.
 15549  func (s *UpdateVirtualGatewayInput) SetMeshName(v string) *UpdateVirtualGatewayInput {
 15550  	s.MeshName = &v
 15551  	return s
 15552  }
 15553  
 15554  // SetMeshOwner sets the MeshOwner field's value.
 15555  func (s *UpdateVirtualGatewayInput) SetMeshOwner(v string) *UpdateVirtualGatewayInput {
 15556  	s.MeshOwner = &v
 15557  	return s
 15558  }
 15559  
 15560  // SetSpec sets the Spec field's value.
 15561  func (s *UpdateVirtualGatewayInput) SetSpec(v *VirtualGatewaySpec) *UpdateVirtualGatewayInput {
 15562  	s.Spec = v
 15563  	return s
 15564  }
 15565  
 15566  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
 15567  func (s *UpdateVirtualGatewayInput) SetVirtualGatewayName(v string) *UpdateVirtualGatewayInput {
 15568  	s.VirtualGatewayName = &v
 15569  	return s
 15570  }
 15571  
 15572  type UpdateVirtualGatewayOutput struct {
 15573  	_ struct{} `type:"structure" payload:"VirtualGateway"`
 15574  
 15575  	// A full description of the virtual gateway that was updated.
 15576  	//
 15577  	// VirtualGateway is a required field
 15578  	VirtualGateway *VirtualGatewayData `locationName:"virtualGateway" type:"structure" required:"true"`
 15579  }
 15580  
 15581  // String returns the string representation.
 15582  //
 15583  // API parameter values that are decorated as "sensitive" in the API will not
 15584  // be included in the string output. The member name will be present, but the
 15585  // value will be replaced with "sensitive".
 15586  func (s UpdateVirtualGatewayOutput) String() string {
 15587  	return awsutil.Prettify(s)
 15588  }
 15589  
 15590  // GoString returns the string representation.
 15591  //
 15592  // API parameter values that are decorated as "sensitive" in the API will not
 15593  // be included in the string output. The member name will be present, but the
 15594  // value will be replaced with "sensitive".
 15595  func (s UpdateVirtualGatewayOutput) GoString() string {
 15596  	return s.String()
 15597  }
 15598  
 15599  // SetVirtualGateway sets the VirtualGateway field's value.
 15600  func (s *UpdateVirtualGatewayOutput) SetVirtualGateway(v *VirtualGatewayData) *UpdateVirtualGatewayOutput {
 15601  	s.VirtualGateway = v
 15602  	return s
 15603  }
 15604  
 15605  type UpdateVirtualNodeInput struct {
 15606  	_ struct{} `type:"structure"`
 15607  
 15608  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
 15609  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
 15610  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
 15611  
 15612  	// The name of the service mesh that the virtual node resides in.
 15613  	//
 15614  	// MeshName is a required field
 15615  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 15616  
 15617  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 15618  	// your own, then it's the ID of the account that shared the mesh with your
 15619  	// account. For more information about mesh sharing, see Working with shared
 15620  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 15621  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
 15622  
 15623  	// The new virtual node specification to apply. This overwrites the existing
 15624  	// data.
 15625  	//
 15626  	// Spec is a required field
 15627  	Spec *VirtualNodeSpec `locationName:"spec" type:"structure" required:"true"`
 15628  
 15629  	// The name of the virtual node to update.
 15630  	//
 15631  	// VirtualNodeName is a required field
 15632  	VirtualNodeName *string `location:"uri" locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
 15633  }
 15634  
 15635  // String returns the string representation.
 15636  //
 15637  // API parameter values that are decorated as "sensitive" in the API will not
 15638  // be included in the string output. The member name will be present, but the
 15639  // value will be replaced with "sensitive".
 15640  func (s UpdateVirtualNodeInput) String() string {
 15641  	return awsutil.Prettify(s)
 15642  }
 15643  
 15644  // GoString returns the string representation.
 15645  //
 15646  // API parameter values that are decorated as "sensitive" in the API will not
 15647  // be included in the string output. The member name will be present, but the
 15648  // value will be replaced with "sensitive".
 15649  func (s UpdateVirtualNodeInput) GoString() string {
 15650  	return s.String()
 15651  }
 15652  
 15653  // Validate inspects the fields of the type to determine if they are valid.
 15654  func (s *UpdateVirtualNodeInput) Validate() error {
 15655  	invalidParams := request.ErrInvalidParams{Context: "UpdateVirtualNodeInput"}
 15656  	if s.MeshName == nil {
 15657  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 15658  	}
 15659  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 15660  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 15661  	}
 15662  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
 15663  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
 15664  	}
 15665  	if s.Spec == nil {
 15666  		invalidParams.Add(request.NewErrParamRequired("Spec"))
 15667  	}
 15668  	if s.VirtualNodeName == nil {
 15669  		invalidParams.Add(request.NewErrParamRequired("VirtualNodeName"))
 15670  	}
 15671  	if s.VirtualNodeName != nil && len(*s.VirtualNodeName) < 1 {
 15672  		invalidParams.Add(request.NewErrParamMinLen("VirtualNodeName", 1))
 15673  	}
 15674  	if s.Spec != nil {
 15675  		if err := s.Spec.Validate(); err != nil {
 15676  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
 15677  		}
 15678  	}
 15679  
 15680  	if invalidParams.Len() > 0 {
 15681  		return invalidParams
 15682  	}
 15683  	return nil
 15684  }
 15685  
 15686  // SetClientToken sets the ClientToken field's value.
 15687  func (s *UpdateVirtualNodeInput) SetClientToken(v string) *UpdateVirtualNodeInput {
 15688  	s.ClientToken = &v
 15689  	return s
 15690  }
 15691  
 15692  // SetMeshName sets the MeshName field's value.
 15693  func (s *UpdateVirtualNodeInput) SetMeshName(v string) *UpdateVirtualNodeInput {
 15694  	s.MeshName = &v
 15695  	return s
 15696  }
 15697  
 15698  // SetMeshOwner sets the MeshOwner field's value.
 15699  func (s *UpdateVirtualNodeInput) SetMeshOwner(v string) *UpdateVirtualNodeInput {
 15700  	s.MeshOwner = &v
 15701  	return s
 15702  }
 15703  
 15704  // SetSpec sets the Spec field's value.
 15705  func (s *UpdateVirtualNodeInput) SetSpec(v *VirtualNodeSpec) *UpdateVirtualNodeInput {
 15706  	s.Spec = v
 15707  	return s
 15708  }
 15709  
 15710  // SetVirtualNodeName sets the VirtualNodeName field's value.
 15711  func (s *UpdateVirtualNodeInput) SetVirtualNodeName(v string) *UpdateVirtualNodeInput {
 15712  	s.VirtualNodeName = &v
 15713  	return s
 15714  }
 15715  
 15716  type UpdateVirtualNodeOutput struct {
 15717  	_ struct{} `type:"structure" payload:"VirtualNode"`
 15718  
 15719  	// A full description of the virtual node that was updated.
 15720  	//
 15721  	// VirtualNode is a required field
 15722  	VirtualNode *VirtualNodeData `locationName:"virtualNode" type:"structure" required:"true"`
 15723  }
 15724  
 15725  // String returns the string representation.
 15726  //
 15727  // API parameter values that are decorated as "sensitive" in the API will not
 15728  // be included in the string output. The member name will be present, but the
 15729  // value will be replaced with "sensitive".
 15730  func (s UpdateVirtualNodeOutput) String() string {
 15731  	return awsutil.Prettify(s)
 15732  }
 15733  
 15734  // GoString returns the string representation.
 15735  //
 15736  // API parameter values that are decorated as "sensitive" in the API will not
 15737  // be included in the string output. The member name will be present, but the
 15738  // value will be replaced with "sensitive".
 15739  func (s UpdateVirtualNodeOutput) GoString() string {
 15740  	return s.String()
 15741  }
 15742  
 15743  // SetVirtualNode sets the VirtualNode field's value.
 15744  func (s *UpdateVirtualNodeOutput) SetVirtualNode(v *VirtualNodeData) *UpdateVirtualNodeOutput {
 15745  	s.VirtualNode = v
 15746  	return s
 15747  }
 15748  
 15749  type UpdateVirtualRouterInput struct {
 15750  	_ struct{} `type:"structure"`
 15751  
 15752  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
 15753  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
 15754  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
 15755  
 15756  	// The name of the service mesh that the virtual router resides in.
 15757  	//
 15758  	// MeshName is a required field
 15759  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 15760  
 15761  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 15762  	// your own, then it's the ID of the account that shared the mesh with your
 15763  	// account. For more information about mesh sharing, see Working with shared
 15764  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 15765  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
 15766  
 15767  	// The new virtual router specification to apply. This overwrites the existing
 15768  	// data.
 15769  	//
 15770  	// Spec is a required field
 15771  	Spec *VirtualRouterSpec `locationName:"spec" type:"structure" required:"true"`
 15772  
 15773  	// The name of the virtual router to update.
 15774  	//
 15775  	// VirtualRouterName is a required field
 15776  	VirtualRouterName *string `location:"uri" locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
 15777  }
 15778  
 15779  // String returns the string representation.
 15780  //
 15781  // API parameter values that are decorated as "sensitive" in the API will not
 15782  // be included in the string output. The member name will be present, but the
 15783  // value will be replaced with "sensitive".
 15784  func (s UpdateVirtualRouterInput) String() string {
 15785  	return awsutil.Prettify(s)
 15786  }
 15787  
 15788  // GoString returns the string representation.
 15789  //
 15790  // API parameter values that are decorated as "sensitive" in the API will not
 15791  // be included in the string output. The member name will be present, but the
 15792  // value will be replaced with "sensitive".
 15793  func (s UpdateVirtualRouterInput) GoString() string {
 15794  	return s.String()
 15795  }
 15796  
 15797  // Validate inspects the fields of the type to determine if they are valid.
 15798  func (s *UpdateVirtualRouterInput) Validate() error {
 15799  	invalidParams := request.ErrInvalidParams{Context: "UpdateVirtualRouterInput"}
 15800  	if s.MeshName == nil {
 15801  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 15802  	}
 15803  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 15804  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 15805  	}
 15806  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
 15807  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
 15808  	}
 15809  	if s.Spec == nil {
 15810  		invalidParams.Add(request.NewErrParamRequired("Spec"))
 15811  	}
 15812  	if s.VirtualRouterName == nil {
 15813  		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
 15814  	}
 15815  	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
 15816  		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
 15817  	}
 15818  	if s.Spec != nil {
 15819  		if err := s.Spec.Validate(); err != nil {
 15820  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
 15821  		}
 15822  	}
 15823  
 15824  	if invalidParams.Len() > 0 {
 15825  		return invalidParams
 15826  	}
 15827  	return nil
 15828  }
 15829  
 15830  // SetClientToken sets the ClientToken field's value.
 15831  func (s *UpdateVirtualRouterInput) SetClientToken(v string) *UpdateVirtualRouterInput {
 15832  	s.ClientToken = &v
 15833  	return s
 15834  }
 15835  
 15836  // SetMeshName sets the MeshName field's value.
 15837  func (s *UpdateVirtualRouterInput) SetMeshName(v string) *UpdateVirtualRouterInput {
 15838  	s.MeshName = &v
 15839  	return s
 15840  }
 15841  
 15842  // SetMeshOwner sets the MeshOwner field's value.
 15843  func (s *UpdateVirtualRouterInput) SetMeshOwner(v string) *UpdateVirtualRouterInput {
 15844  	s.MeshOwner = &v
 15845  	return s
 15846  }
 15847  
 15848  // SetSpec sets the Spec field's value.
 15849  func (s *UpdateVirtualRouterInput) SetSpec(v *VirtualRouterSpec) *UpdateVirtualRouterInput {
 15850  	s.Spec = v
 15851  	return s
 15852  }
 15853  
 15854  // SetVirtualRouterName sets the VirtualRouterName field's value.
 15855  func (s *UpdateVirtualRouterInput) SetVirtualRouterName(v string) *UpdateVirtualRouterInput {
 15856  	s.VirtualRouterName = &v
 15857  	return s
 15858  }
 15859  
 15860  type UpdateVirtualRouterOutput struct {
 15861  	_ struct{} `type:"structure" payload:"VirtualRouter"`
 15862  
 15863  	// A full description of the virtual router that was updated.
 15864  	//
 15865  	// VirtualRouter is a required field
 15866  	VirtualRouter *VirtualRouterData `locationName:"virtualRouter" type:"structure" required:"true"`
 15867  }
 15868  
 15869  // String returns the string representation.
 15870  //
 15871  // API parameter values that are decorated as "sensitive" in the API will not
 15872  // be included in the string output. The member name will be present, but the
 15873  // value will be replaced with "sensitive".
 15874  func (s UpdateVirtualRouterOutput) String() string {
 15875  	return awsutil.Prettify(s)
 15876  }
 15877  
 15878  // GoString returns the string representation.
 15879  //
 15880  // API parameter values that are decorated as "sensitive" in the API will not
 15881  // be included in the string output. The member name will be present, but the
 15882  // value will be replaced with "sensitive".
 15883  func (s UpdateVirtualRouterOutput) GoString() string {
 15884  	return s.String()
 15885  }
 15886  
 15887  // SetVirtualRouter sets the VirtualRouter field's value.
 15888  func (s *UpdateVirtualRouterOutput) SetVirtualRouter(v *VirtualRouterData) *UpdateVirtualRouterOutput {
 15889  	s.VirtualRouter = v
 15890  	return s
 15891  }
 15892  
 15893  type UpdateVirtualServiceInput struct {
 15894  	_ struct{} `type:"structure"`
 15895  
 15896  	// Unique, case-sensitive identifier that you provide to ensure the idempotency
 15897  	// of the request. Up to 36 letters, numbers, hyphens, and underscores are allowed.
 15898  	ClientToken *string `locationName:"clientToken" type:"string" idempotencyToken:"true"`
 15899  
 15900  	// The name of the service mesh that the virtual service resides in.
 15901  	//
 15902  	// MeshName is a required field
 15903  	MeshName *string `location:"uri" locationName:"meshName" min:"1" type:"string" required:"true"`
 15904  
 15905  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 15906  	// your own, then it's the ID of the account that shared the mesh with your
 15907  	// account. For more information about mesh sharing, see Working with shared
 15908  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 15909  	MeshOwner *string `location:"querystring" locationName:"meshOwner" min:"12" type:"string"`
 15910  
 15911  	// The new virtual service specification to apply. This overwrites the existing
 15912  	// data.
 15913  	//
 15914  	// Spec is a required field
 15915  	Spec *VirtualServiceSpec `locationName:"spec" type:"structure" required:"true"`
 15916  
 15917  	// The name of the virtual service to update.
 15918  	//
 15919  	// VirtualServiceName is a required field
 15920  	VirtualServiceName *string `location:"uri" locationName:"virtualServiceName" type:"string" required:"true"`
 15921  }
 15922  
 15923  // String returns the string representation.
 15924  //
 15925  // API parameter values that are decorated as "sensitive" in the API will not
 15926  // be included in the string output. The member name will be present, but the
 15927  // value will be replaced with "sensitive".
 15928  func (s UpdateVirtualServiceInput) String() string {
 15929  	return awsutil.Prettify(s)
 15930  }
 15931  
 15932  // GoString returns the string representation.
 15933  //
 15934  // API parameter values that are decorated as "sensitive" in the API will not
 15935  // be included in the string output. The member name will be present, but the
 15936  // value will be replaced with "sensitive".
 15937  func (s UpdateVirtualServiceInput) GoString() string {
 15938  	return s.String()
 15939  }
 15940  
 15941  // Validate inspects the fields of the type to determine if they are valid.
 15942  func (s *UpdateVirtualServiceInput) Validate() error {
 15943  	invalidParams := request.ErrInvalidParams{Context: "UpdateVirtualServiceInput"}
 15944  	if s.MeshName == nil {
 15945  		invalidParams.Add(request.NewErrParamRequired("MeshName"))
 15946  	}
 15947  	if s.MeshName != nil && len(*s.MeshName) < 1 {
 15948  		invalidParams.Add(request.NewErrParamMinLen("MeshName", 1))
 15949  	}
 15950  	if s.MeshOwner != nil && len(*s.MeshOwner) < 12 {
 15951  		invalidParams.Add(request.NewErrParamMinLen("MeshOwner", 12))
 15952  	}
 15953  	if s.Spec == nil {
 15954  		invalidParams.Add(request.NewErrParamRequired("Spec"))
 15955  	}
 15956  	if s.VirtualServiceName == nil {
 15957  		invalidParams.Add(request.NewErrParamRequired("VirtualServiceName"))
 15958  	}
 15959  	if s.VirtualServiceName != nil && len(*s.VirtualServiceName) < 1 {
 15960  		invalidParams.Add(request.NewErrParamMinLen("VirtualServiceName", 1))
 15961  	}
 15962  	if s.Spec != nil {
 15963  		if err := s.Spec.Validate(); err != nil {
 15964  			invalidParams.AddNested("Spec", err.(request.ErrInvalidParams))
 15965  		}
 15966  	}
 15967  
 15968  	if invalidParams.Len() > 0 {
 15969  		return invalidParams
 15970  	}
 15971  	return nil
 15972  }
 15973  
 15974  // SetClientToken sets the ClientToken field's value.
 15975  func (s *UpdateVirtualServiceInput) SetClientToken(v string) *UpdateVirtualServiceInput {
 15976  	s.ClientToken = &v
 15977  	return s
 15978  }
 15979  
 15980  // SetMeshName sets the MeshName field's value.
 15981  func (s *UpdateVirtualServiceInput) SetMeshName(v string) *UpdateVirtualServiceInput {
 15982  	s.MeshName = &v
 15983  	return s
 15984  }
 15985  
 15986  // SetMeshOwner sets the MeshOwner field's value.
 15987  func (s *UpdateVirtualServiceInput) SetMeshOwner(v string) *UpdateVirtualServiceInput {
 15988  	s.MeshOwner = &v
 15989  	return s
 15990  }
 15991  
 15992  // SetSpec sets the Spec field's value.
 15993  func (s *UpdateVirtualServiceInput) SetSpec(v *VirtualServiceSpec) *UpdateVirtualServiceInput {
 15994  	s.Spec = v
 15995  	return s
 15996  }
 15997  
 15998  // SetVirtualServiceName sets the VirtualServiceName field's value.
 15999  func (s *UpdateVirtualServiceInput) SetVirtualServiceName(v string) *UpdateVirtualServiceInput {
 16000  	s.VirtualServiceName = &v
 16001  	return s
 16002  }
 16003  
 16004  type UpdateVirtualServiceOutput struct {
 16005  	_ struct{} `type:"structure" payload:"VirtualService"`
 16006  
 16007  	// A full description of the virtual service that was updated.
 16008  	//
 16009  	// VirtualService is a required field
 16010  	VirtualService *VirtualServiceData `locationName:"virtualService" type:"structure" required:"true"`
 16011  }
 16012  
 16013  // String returns the string representation.
 16014  //
 16015  // API parameter values that are decorated as "sensitive" in the API will not
 16016  // be included in the string output. The member name will be present, but the
 16017  // value will be replaced with "sensitive".
 16018  func (s UpdateVirtualServiceOutput) String() string {
 16019  	return awsutil.Prettify(s)
 16020  }
 16021  
 16022  // GoString returns the string representation.
 16023  //
 16024  // API parameter values that are decorated as "sensitive" in the API will not
 16025  // be included in the string output. The member name will be present, but the
 16026  // value will be replaced with "sensitive".
 16027  func (s UpdateVirtualServiceOutput) GoString() string {
 16028  	return s.String()
 16029  }
 16030  
 16031  // SetVirtualService sets the VirtualService field's value.
 16032  func (s *UpdateVirtualServiceOutput) SetVirtualService(v *VirtualServiceData) *UpdateVirtualServiceOutput {
 16033  	s.VirtualService = v
 16034  	return s
 16035  }
 16036  
 16037  // The access log configuration for a virtual gateway.
 16038  type VirtualGatewayAccessLog struct {
 16039  	_ struct{} `type:"structure"`
 16040  
 16041  	// The file object to send virtual gateway access logs to.
 16042  	File *VirtualGatewayFileAccessLog `locationName:"file" type:"structure"`
 16043  }
 16044  
 16045  // String returns the string representation.
 16046  //
 16047  // API parameter values that are decorated as "sensitive" in the API will not
 16048  // be included in the string output. The member name will be present, but the
 16049  // value will be replaced with "sensitive".
 16050  func (s VirtualGatewayAccessLog) String() string {
 16051  	return awsutil.Prettify(s)
 16052  }
 16053  
 16054  // GoString returns the string representation.
 16055  //
 16056  // API parameter values that are decorated as "sensitive" in the API will not
 16057  // be included in the string output. The member name will be present, but the
 16058  // value will be replaced with "sensitive".
 16059  func (s VirtualGatewayAccessLog) GoString() string {
 16060  	return s.String()
 16061  }
 16062  
 16063  // Validate inspects the fields of the type to determine if they are valid.
 16064  func (s *VirtualGatewayAccessLog) Validate() error {
 16065  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayAccessLog"}
 16066  	if s.File != nil {
 16067  		if err := s.File.Validate(); err != nil {
 16068  			invalidParams.AddNested("File", err.(request.ErrInvalidParams))
 16069  		}
 16070  	}
 16071  
 16072  	if invalidParams.Len() > 0 {
 16073  		return invalidParams
 16074  	}
 16075  	return nil
 16076  }
 16077  
 16078  // SetFile sets the File field's value.
 16079  func (s *VirtualGatewayAccessLog) SetFile(v *VirtualGatewayFileAccessLog) *VirtualGatewayAccessLog {
 16080  	s.File = v
 16081  	return s
 16082  }
 16083  
 16084  // An object that represents the default properties for a backend.
 16085  type VirtualGatewayBackendDefaults struct {
 16086  	_ struct{} `type:"structure"`
 16087  
 16088  	// A reference to an object that represents a client policy.
 16089  	ClientPolicy *VirtualGatewayClientPolicy `locationName:"clientPolicy" type:"structure"`
 16090  }
 16091  
 16092  // String returns the string representation.
 16093  //
 16094  // API parameter values that are decorated as "sensitive" in the API will not
 16095  // be included in the string output. The member name will be present, but the
 16096  // value will be replaced with "sensitive".
 16097  func (s VirtualGatewayBackendDefaults) String() string {
 16098  	return awsutil.Prettify(s)
 16099  }
 16100  
 16101  // GoString returns the string representation.
 16102  //
 16103  // API parameter values that are decorated as "sensitive" in the API will not
 16104  // be included in the string output. The member name will be present, but the
 16105  // value will be replaced with "sensitive".
 16106  func (s VirtualGatewayBackendDefaults) GoString() string {
 16107  	return s.String()
 16108  }
 16109  
 16110  // Validate inspects the fields of the type to determine if they are valid.
 16111  func (s *VirtualGatewayBackendDefaults) Validate() error {
 16112  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayBackendDefaults"}
 16113  	if s.ClientPolicy != nil {
 16114  		if err := s.ClientPolicy.Validate(); err != nil {
 16115  			invalidParams.AddNested("ClientPolicy", err.(request.ErrInvalidParams))
 16116  		}
 16117  	}
 16118  
 16119  	if invalidParams.Len() > 0 {
 16120  		return invalidParams
 16121  	}
 16122  	return nil
 16123  }
 16124  
 16125  // SetClientPolicy sets the ClientPolicy field's value.
 16126  func (s *VirtualGatewayBackendDefaults) SetClientPolicy(v *VirtualGatewayClientPolicy) *VirtualGatewayBackendDefaults {
 16127  	s.ClientPolicy = v
 16128  	return s
 16129  }
 16130  
 16131  // An object that represents a client policy.
 16132  type VirtualGatewayClientPolicy struct {
 16133  	_ struct{} `type:"structure"`
 16134  
 16135  	// A reference to an object that represents a Transport Layer Security (TLS)
 16136  	// client policy.
 16137  	Tls *VirtualGatewayClientPolicyTls `locationName:"tls" type:"structure"`
 16138  }
 16139  
 16140  // String returns the string representation.
 16141  //
 16142  // API parameter values that are decorated as "sensitive" in the API will not
 16143  // be included in the string output. The member name will be present, but the
 16144  // value will be replaced with "sensitive".
 16145  func (s VirtualGatewayClientPolicy) String() string {
 16146  	return awsutil.Prettify(s)
 16147  }
 16148  
 16149  // GoString returns the string representation.
 16150  //
 16151  // API parameter values that are decorated as "sensitive" in the API will not
 16152  // be included in the string output. The member name will be present, but the
 16153  // value will be replaced with "sensitive".
 16154  func (s VirtualGatewayClientPolicy) GoString() string {
 16155  	return s.String()
 16156  }
 16157  
 16158  // Validate inspects the fields of the type to determine if they are valid.
 16159  func (s *VirtualGatewayClientPolicy) Validate() error {
 16160  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayClientPolicy"}
 16161  	if s.Tls != nil {
 16162  		if err := s.Tls.Validate(); err != nil {
 16163  			invalidParams.AddNested("Tls", err.(request.ErrInvalidParams))
 16164  		}
 16165  	}
 16166  
 16167  	if invalidParams.Len() > 0 {
 16168  		return invalidParams
 16169  	}
 16170  	return nil
 16171  }
 16172  
 16173  // SetTls sets the Tls field's value.
 16174  func (s *VirtualGatewayClientPolicy) SetTls(v *VirtualGatewayClientPolicyTls) *VirtualGatewayClientPolicy {
 16175  	s.Tls = v
 16176  	return s
 16177  }
 16178  
 16179  // An object that represents a Transport Layer Security (TLS) client policy.
 16180  type VirtualGatewayClientPolicyTls struct {
 16181  	_ struct{} `type:"structure"`
 16182  
 16183  	// A reference to an object that represents a virtual gateway's client's Transport
 16184  	// Layer Security (TLS) certificate.
 16185  	Certificate *VirtualGatewayClientTlsCertificate `locationName:"certificate" type:"structure"`
 16186  
 16187  	// Whether the policy is enforced. The default is True, if a value isn't specified.
 16188  	Enforce *bool `locationName:"enforce" type:"boolean"`
 16189  
 16190  	// One or more ports that the policy is enforced for.
 16191  	Ports []*int64 `locationName:"ports" type:"list"`
 16192  
 16193  	// A reference to an object that represents a Transport Layer Security (TLS)
 16194  	// validation context.
 16195  	//
 16196  	// Validation is a required field
 16197  	Validation *VirtualGatewayTlsValidationContext `locationName:"validation" type:"structure" required:"true"`
 16198  }
 16199  
 16200  // String returns the string representation.
 16201  //
 16202  // API parameter values that are decorated as "sensitive" in the API will not
 16203  // be included in the string output. The member name will be present, but the
 16204  // value will be replaced with "sensitive".
 16205  func (s VirtualGatewayClientPolicyTls) String() string {
 16206  	return awsutil.Prettify(s)
 16207  }
 16208  
 16209  // GoString returns the string representation.
 16210  //
 16211  // API parameter values that are decorated as "sensitive" in the API will not
 16212  // be included in the string output. The member name will be present, but the
 16213  // value will be replaced with "sensitive".
 16214  func (s VirtualGatewayClientPolicyTls) GoString() string {
 16215  	return s.String()
 16216  }
 16217  
 16218  // Validate inspects the fields of the type to determine if they are valid.
 16219  func (s *VirtualGatewayClientPolicyTls) Validate() error {
 16220  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayClientPolicyTls"}
 16221  	if s.Validation == nil {
 16222  		invalidParams.Add(request.NewErrParamRequired("Validation"))
 16223  	}
 16224  	if s.Certificate != nil {
 16225  		if err := s.Certificate.Validate(); err != nil {
 16226  			invalidParams.AddNested("Certificate", err.(request.ErrInvalidParams))
 16227  		}
 16228  	}
 16229  	if s.Validation != nil {
 16230  		if err := s.Validation.Validate(); err != nil {
 16231  			invalidParams.AddNested("Validation", err.(request.ErrInvalidParams))
 16232  		}
 16233  	}
 16234  
 16235  	if invalidParams.Len() > 0 {
 16236  		return invalidParams
 16237  	}
 16238  	return nil
 16239  }
 16240  
 16241  // SetCertificate sets the Certificate field's value.
 16242  func (s *VirtualGatewayClientPolicyTls) SetCertificate(v *VirtualGatewayClientTlsCertificate) *VirtualGatewayClientPolicyTls {
 16243  	s.Certificate = v
 16244  	return s
 16245  }
 16246  
 16247  // SetEnforce sets the Enforce field's value.
 16248  func (s *VirtualGatewayClientPolicyTls) SetEnforce(v bool) *VirtualGatewayClientPolicyTls {
 16249  	s.Enforce = &v
 16250  	return s
 16251  }
 16252  
 16253  // SetPorts sets the Ports field's value.
 16254  func (s *VirtualGatewayClientPolicyTls) SetPorts(v []*int64) *VirtualGatewayClientPolicyTls {
 16255  	s.Ports = v
 16256  	return s
 16257  }
 16258  
 16259  // SetValidation sets the Validation field's value.
 16260  func (s *VirtualGatewayClientPolicyTls) SetValidation(v *VirtualGatewayTlsValidationContext) *VirtualGatewayClientPolicyTls {
 16261  	s.Validation = v
 16262  	return s
 16263  }
 16264  
 16265  // An object that represents the virtual gateway's client's Transport Layer
 16266  // Security (TLS) certificate.
 16267  type VirtualGatewayClientTlsCertificate struct {
 16268  	_ struct{} `type:"structure"`
 16269  
 16270  	// An object that represents a local file certificate. The certificate must
 16271  	// meet specific requirements and you must have proxy authorization enabled.
 16272  	// For more information, see Transport Layer Security (TLS) (https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html).
 16273  	File *VirtualGatewayListenerTlsFileCertificate `locationName:"file" type:"structure"`
 16274  
 16275  	// A reference to an object that represents a virtual gateway's client's Secret
 16276  	// Discovery Service certificate.
 16277  	Sds *VirtualGatewayListenerTlsSdsCertificate `locationName:"sds" type:"structure"`
 16278  }
 16279  
 16280  // String returns the string representation.
 16281  //
 16282  // API parameter values that are decorated as "sensitive" in the API will not
 16283  // be included in the string output. The member name will be present, but the
 16284  // value will be replaced with "sensitive".
 16285  func (s VirtualGatewayClientTlsCertificate) String() string {
 16286  	return awsutil.Prettify(s)
 16287  }
 16288  
 16289  // GoString returns the string representation.
 16290  //
 16291  // API parameter values that are decorated as "sensitive" in the API will not
 16292  // be included in the string output. The member name will be present, but the
 16293  // value will be replaced with "sensitive".
 16294  func (s VirtualGatewayClientTlsCertificate) GoString() string {
 16295  	return s.String()
 16296  }
 16297  
 16298  // Validate inspects the fields of the type to determine if they are valid.
 16299  func (s *VirtualGatewayClientTlsCertificate) Validate() error {
 16300  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayClientTlsCertificate"}
 16301  	if s.File != nil {
 16302  		if err := s.File.Validate(); err != nil {
 16303  			invalidParams.AddNested("File", err.(request.ErrInvalidParams))
 16304  		}
 16305  	}
 16306  	if s.Sds != nil {
 16307  		if err := s.Sds.Validate(); err != nil {
 16308  			invalidParams.AddNested("Sds", err.(request.ErrInvalidParams))
 16309  		}
 16310  	}
 16311  
 16312  	if invalidParams.Len() > 0 {
 16313  		return invalidParams
 16314  	}
 16315  	return nil
 16316  }
 16317  
 16318  // SetFile sets the File field's value.
 16319  func (s *VirtualGatewayClientTlsCertificate) SetFile(v *VirtualGatewayListenerTlsFileCertificate) *VirtualGatewayClientTlsCertificate {
 16320  	s.File = v
 16321  	return s
 16322  }
 16323  
 16324  // SetSds sets the Sds field's value.
 16325  func (s *VirtualGatewayClientTlsCertificate) SetSds(v *VirtualGatewayListenerTlsSdsCertificate) *VirtualGatewayClientTlsCertificate {
 16326  	s.Sds = v
 16327  	return s
 16328  }
 16329  
 16330  // An object that represents the type of virtual gateway connection pool.
 16331  //
 16332  // Only one protocol is used at a time and should be the same protocol as the
 16333  // one chosen under port mapping.
 16334  //
 16335  // If not present the default value for maxPendingRequests is 2147483647.
 16336  type VirtualGatewayConnectionPool struct {
 16337  	_ struct{} `type:"structure"`
 16338  
 16339  	// An object that represents a type of connection pool.
 16340  	Grpc *VirtualGatewayGrpcConnectionPool `locationName:"grpc" type:"structure"`
 16341  
 16342  	// An object that represents a type of connection pool.
 16343  	Http *VirtualGatewayHttpConnectionPool `locationName:"http" type:"structure"`
 16344  
 16345  	// An object that represents a type of connection pool.
 16346  	Http2 *VirtualGatewayHttp2ConnectionPool `locationName:"http2" type:"structure"`
 16347  }
 16348  
 16349  // String returns the string representation.
 16350  //
 16351  // API parameter values that are decorated as "sensitive" in the API will not
 16352  // be included in the string output. The member name will be present, but the
 16353  // value will be replaced with "sensitive".
 16354  func (s VirtualGatewayConnectionPool) String() string {
 16355  	return awsutil.Prettify(s)
 16356  }
 16357  
 16358  // GoString returns the string representation.
 16359  //
 16360  // API parameter values that are decorated as "sensitive" in the API will not
 16361  // be included in the string output. The member name will be present, but the
 16362  // value will be replaced with "sensitive".
 16363  func (s VirtualGatewayConnectionPool) GoString() string {
 16364  	return s.String()
 16365  }
 16366  
 16367  // Validate inspects the fields of the type to determine if they are valid.
 16368  func (s *VirtualGatewayConnectionPool) Validate() error {
 16369  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayConnectionPool"}
 16370  	if s.Grpc != nil {
 16371  		if err := s.Grpc.Validate(); err != nil {
 16372  			invalidParams.AddNested("Grpc", err.(request.ErrInvalidParams))
 16373  		}
 16374  	}
 16375  	if s.Http != nil {
 16376  		if err := s.Http.Validate(); err != nil {
 16377  			invalidParams.AddNested("Http", err.(request.ErrInvalidParams))
 16378  		}
 16379  	}
 16380  	if s.Http2 != nil {
 16381  		if err := s.Http2.Validate(); err != nil {
 16382  			invalidParams.AddNested("Http2", err.(request.ErrInvalidParams))
 16383  		}
 16384  	}
 16385  
 16386  	if invalidParams.Len() > 0 {
 16387  		return invalidParams
 16388  	}
 16389  	return nil
 16390  }
 16391  
 16392  // SetGrpc sets the Grpc field's value.
 16393  func (s *VirtualGatewayConnectionPool) SetGrpc(v *VirtualGatewayGrpcConnectionPool) *VirtualGatewayConnectionPool {
 16394  	s.Grpc = v
 16395  	return s
 16396  }
 16397  
 16398  // SetHttp sets the Http field's value.
 16399  func (s *VirtualGatewayConnectionPool) SetHttp(v *VirtualGatewayHttpConnectionPool) *VirtualGatewayConnectionPool {
 16400  	s.Http = v
 16401  	return s
 16402  }
 16403  
 16404  // SetHttp2 sets the Http2 field's value.
 16405  func (s *VirtualGatewayConnectionPool) SetHttp2(v *VirtualGatewayHttp2ConnectionPool) *VirtualGatewayConnectionPool {
 16406  	s.Http2 = v
 16407  	return s
 16408  }
 16409  
 16410  // An object that represents a virtual gateway returned by a describe operation.
 16411  type VirtualGatewayData struct {
 16412  	_ struct{} `type:"structure"`
 16413  
 16414  	// The name of the service mesh that the virtual gateway resides in.
 16415  	//
 16416  	// MeshName is a required field
 16417  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
 16418  
 16419  	// An object that represents metadata for a resource.
 16420  	//
 16421  	// Metadata is a required field
 16422  	Metadata *ResourceMetadata `locationName:"metadata" type:"structure" required:"true"`
 16423  
 16424  	// The specifications of the virtual gateway.
 16425  	//
 16426  	// Spec is a required field
 16427  	Spec *VirtualGatewaySpec `locationName:"spec" type:"structure" required:"true"`
 16428  
 16429  	// The current status of the virtual gateway.
 16430  	//
 16431  	// Status is a required field
 16432  	Status *VirtualGatewayStatus `locationName:"status" type:"structure" required:"true"`
 16433  
 16434  	// The name of the virtual gateway.
 16435  	//
 16436  	// VirtualGatewayName is a required field
 16437  	VirtualGatewayName *string `locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
 16438  }
 16439  
 16440  // String returns the string representation.
 16441  //
 16442  // API parameter values that are decorated as "sensitive" in the API will not
 16443  // be included in the string output. The member name will be present, but the
 16444  // value will be replaced with "sensitive".
 16445  func (s VirtualGatewayData) String() string {
 16446  	return awsutil.Prettify(s)
 16447  }
 16448  
 16449  // GoString returns the string representation.
 16450  //
 16451  // API parameter values that are decorated as "sensitive" in the API will not
 16452  // be included in the string output. The member name will be present, but the
 16453  // value will be replaced with "sensitive".
 16454  func (s VirtualGatewayData) GoString() string {
 16455  	return s.String()
 16456  }
 16457  
 16458  // SetMeshName sets the MeshName field's value.
 16459  func (s *VirtualGatewayData) SetMeshName(v string) *VirtualGatewayData {
 16460  	s.MeshName = &v
 16461  	return s
 16462  }
 16463  
 16464  // SetMetadata sets the Metadata field's value.
 16465  func (s *VirtualGatewayData) SetMetadata(v *ResourceMetadata) *VirtualGatewayData {
 16466  	s.Metadata = v
 16467  	return s
 16468  }
 16469  
 16470  // SetSpec sets the Spec field's value.
 16471  func (s *VirtualGatewayData) SetSpec(v *VirtualGatewaySpec) *VirtualGatewayData {
 16472  	s.Spec = v
 16473  	return s
 16474  }
 16475  
 16476  // SetStatus sets the Status field's value.
 16477  func (s *VirtualGatewayData) SetStatus(v *VirtualGatewayStatus) *VirtualGatewayData {
 16478  	s.Status = v
 16479  	return s
 16480  }
 16481  
 16482  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
 16483  func (s *VirtualGatewayData) SetVirtualGatewayName(v string) *VirtualGatewayData {
 16484  	s.VirtualGatewayName = &v
 16485  	return s
 16486  }
 16487  
 16488  // An object that represents an access log file.
 16489  type VirtualGatewayFileAccessLog struct {
 16490  	_ struct{} `type:"structure"`
 16491  
 16492  	// The file path to write access logs to. You can use /dev/stdout to send access
 16493  	// logs to standard out and configure your Envoy container to use a log driver,
 16494  	// such as awslogs, to export the access logs to a log storage service such
 16495  	// as Amazon CloudWatch Logs. You can also specify a path in the Envoy container's
 16496  	// file system to write the files to disk.
 16497  	//
 16498  	// Path is a required field
 16499  	Path *string `locationName:"path" min:"1" type:"string" required:"true"`
 16500  }
 16501  
 16502  // String returns the string representation.
 16503  //
 16504  // API parameter values that are decorated as "sensitive" in the API will not
 16505  // be included in the string output. The member name will be present, but the
 16506  // value will be replaced with "sensitive".
 16507  func (s VirtualGatewayFileAccessLog) String() string {
 16508  	return awsutil.Prettify(s)
 16509  }
 16510  
 16511  // GoString returns the string representation.
 16512  //
 16513  // API parameter values that are decorated as "sensitive" in the API will not
 16514  // be included in the string output. The member name will be present, but the
 16515  // value will be replaced with "sensitive".
 16516  func (s VirtualGatewayFileAccessLog) GoString() string {
 16517  	return s.String()
 16518  }
 16519  
 16520  // Validate inspects the fields of the type to determine if they are valid.
 16521  func (s *VirtualGatewayFileAccessLog) Validate() error {
 16522  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayFileAccessLog"}
 16523  	if s.Path == nil {
 16524  		invalidParams.Add(request.NewErrParamRequired("Path"))
 16525  	}
 16526  	if s.Path != nil && len(*s.Path) < 1 {
 16527  		invalidParams.Add(request.NewErrParamMinLen("Path", 1))
 16528  	}
 16529  
 16530  	if invalidParams.Len() > 0 {
 16531  		return invalidParams
 16532  	}
 16533  	return nil
 16534  }
 16535  
 16536  // SetPath sets the Path field's value.
 16537  func (s *VirtualGatewayFileAccessLog) SetPath(v string) *VirtualGatewayFileAccessLog {
 16538  	s.Path = &v
 16539  	return s
 16540  }
 16541  
 16542  // An object that represents a type of connection pool.
 16543  type VirtualGatewayGrpcConnectionPool struct {
 16544  	_ struct{} `type:"structure"`
 16545  
 16546  	// Maximum number of inflight requests Envoy can concurrently support across
 16547  	// hosts in upstream cluster.
 16548  	//
 16549  	// MaxRequests is a required field
 16550  	MaxRequests *int64 `locationName:"maxRequests" min:"1" type:"integer" required:"true"`
 16551  }
 16552  
 16553  // String returns the string representation.
 16554  //
 16555  // API parameter values that are decorated as "sensitive" in the API will not
 16556  // be included in the string output. The member name will be present, but the
 16557  // value will be replaced with "sensitive".
 16558  func (s VirtualGatewayGrpcConnectionPool) String() string {
 16559  	return awsutil.Prettify(s)
 16560  }
 16561  
 16562  // GoString returns the string representation.
 16563  //
 16564  // API parameter values that are decorated as "sensitive" in the API will not
 16565  // be included in the string output. The member name will be present, but the
 16566  // value will be replaced with "sensitive".
 16567  func (s VirtualGatewayGrpcConnectionPool) GoString() string {
 16568  	return s.String()
 16569  }
 16570  
 16571  // Validate inspects the fields of the type to determine if they are valid.
 16572  func (s *VirtualGatewayGrpcConnectionPool) Validate() error {
 16573  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayGrpcConnectionPool"}
 16574  	if s.MaxRequests == nil {
 16575  		invalidParams.Add(request.NewErrParamRequired("MaxRequests"))
 16576  	}
 16577  	if s.MaxRequests != nil && *s.MaxRequests < 1 {
 16578  		invalidParams.Add(request.NewErrParamMinValue("MaxRequests", 1))
 16579  	}
 16580  
 16581  	if invalidParams.Len() > 0 {
 16582  		return invalidParams
 16583  	}
 16584  	return nil
 16585  }
 16586  
 16587  // SetMaxRequests sets the MaxRequests field's value.
 16588  func (s *VirtualGatewayGrpcConnectionPool) SetMaxRequests(v int64) *VirtualGatewayGrpcConnectionPool {
 16589  	s.MaxRequests = &v
 16590  	return s
 16591  }
 16592  
 16593  // An object that represents the health check policy for a virtual gateway's
 16594  // listener.
 16595  type VirtualGatewayHealthCheckPolicy struct {
 16596  	_ struct{} `type:"structure"`
 16597  
 16598  	// The number of consecutive successful health checks that must occur before
 16599  	// declaring the listener healthy.
 16600  	//
 16601  	// HealthyThreshold is a required field
 16602  	HealthyThreshold *int64 `locationName:"healthyThreshold" min:"2" type:"integer" required:"true"`
 16603  
 16604  	// The time period in milliseconds between each health check execution.
 16605  	//
 16606  	// IntervalMillis is a required field
 16607  	IntervalMillis *int64 `locationName:"intervalMillis" min:"5000" type:"long" required:"true"`
 16608  
 16609  	// The destination path for the health check request. This value is only used
 16610  	// if the specified protocol is HTTP or HTTP/2. For any other protocol, this
 16611  	// value is ignored.
 16612  	Path *string `locationName:"path" type:"string"`
 16613  
 16614  	// The destination port for the health check request. This port must match the
 16615  	// port defined in the PortMapping for the listener.
 16616  	Port *int64 `locationName:"port" min:"1" type:"integer"`
 16617  
 16618  	// The protocol for the health check request. If you specify grpc, then your
 16619  	// service must conform to the GRPC Health Checking Protocol (https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
 16620  	//
 16621  	// Protocol is a required field
 16622  	Protocol *string `locationName:"protocol" type:"string" required:"true" enum:"VirtualGatewayPortProtocol"`
 16623  
 16624  	// The amount of time to wait when receiving a response from the health check,
 16625  	// in milliseconds.
 16626  	//
 16627  	// TimeoutMillis is a required field
 16628  	TimeoutMillis *int64 `locationName:"timeoutMillis" min:"2000" type:"long" required:"true"`
 16629  
 16630  	// The number of consecutive failed health checks that must occur before declaring
 16631  	// a virtual gateway unhealthy.
 16632  	//
 16633  	// UnhealthyThreshold is a required field
 16634  	UnhealthyThreshold *int64 `locationName:"unhealthyThreshold" min:"2" type:"integer" required:"true"`
 16635  }
 16636  
 16637  // String returns the string representation.
 16638  //
 16639  // API parameter values that are decorated as "sensitive" in the API will not
 16640  // be included in the string output. The member name will be present, but the
 16641  // value will be replaced with "sensitive".
 16642  func (s VirtualGatewayHealthCheckPolicy) String() string {
 16643  	return awsutil.Prettify(s)
 16644  }
 16645  
 16646  // GoString returns the string representation.
 16647  //
 16648  // API parameter values that are decorated as "sensitive" in the API will not
 16649  // be included in the string output. The member name will be present, but the
 16650  // value will be replaced with "sensitive".
 16651  func (s VirtualGatewayHealthCheckPolicy) GoString() string {
 16652  	return s.String()
 16653  }
 16654  
 16655  // Validate inspects the fields of the type to determine if they are valid.
 16656  func (s *VirtualGatewayHealthCheckPolicy) Validate() error {
 16657  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayHealthCheckPolicy"}
 16658  	if s.HealthyThreshold == nil {
 16659  		invalidParams.Add(request.NewErrParamRequired("HealthyThreshold"))
 16660  	}
 16661  	if s.HealthyThreshold != nil && *s.HealthyThreshold < 2 {
 16662  		invalidParams.Add(request.NewErrParamMinValue("HealthyThreshold", 2))
 16663  	}
 16664  	if s.IntervalMillis == nil {
 16665  		invalidParams.Add(request.NewErrParamRequired("IntervalMillis"))
 16666  	}
 16667  	if s.IntervalMillis != nil && *s.IntervalMillis < 5000 {
 16668  		invalidParams.Add(request.NewErrParamMinValue("IntervalMillis", 5000))
 16669  	}
 16670  	if s.Port != nil && *s.Port < 1 {
 16671  		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
 16672  	}
 16673  	if s.Protocol == nil {
 16674  		invalidParams.Add(request.NewErrParamRequired("Protocol"))
 16675  	}
 16676  	if s.TimeoutMillis == nil {
 16677  		invalidParams.Add(request.NewErrParamRequired("TimeoutMillis"))
 16678  	}
 16679  	if s.TimeoutMillis != nil && *s.TimeoutMillis < 2000 {
 16680  		invalidParams.Add(request.NewErrParamMinValue("TimeoutMillis", 2000))
 16681  	}
 16682  	if s.UnhealthyThreshold == nil {
 16683  		invalidParams.Add(request.NewErrParamRequired("UnhealthyThreshold"))
 16684  	}
 16685  	if s.UnhealthyThreshold != nil && *s.UnhealthyThreshold < 2 {
 16686  		invalidParams.Add(request.NewErrParamMinValue("UnhealthyThreshold", 2))
 16687  	}
 16688  
 16689  	if invalidParams.Len() > 0 {
 16690  		return invalidParams
 16691  	}
 16692  	return nil
 16693  }
 16694  
 16695  // SetHealthyThreshold sets the HealthyThreshold field's value.
 16696  func (s *VirtualGatewayHealthCheckPolicy) SetHealthyThreshold(v int64) *VirtualGatewayHealthCheckPolicy {
 16697  	s.HealthyThreshold = &v
 16698  	return s
 16699  }
 16700  
 16701  // SetIntervalMillis sets the IntervalMillis field's value.
 16702  func (s *VirtualGatewayHealthCheckPolicy) SetIntervalMillis(v int64) *VirtualGatewayHealthCheckPolicy {
 16703  	s.IntervalMillis = &v
 16704  	return s
 16705  }
 16706  
 16707  // SetPath sets the Path field's value.
 16708  func (s *VirtualGatewayHealthCheckPolicy) SetPath(v string) *VirtualGatewayHealthCheckPolicy {
 16709  	s.Path = &v
 16710  	return s
 16711  }
 16712  
 16713  // SetPort sets the Port field's value.
 16714  func (s *VirtualGatewayHealthCheckPolicy) SetPort(v int64) *VirtualGatewayHealthCheckPolicy {
 16715  	s.Port = &v
 16716  	return s
 16717  }
 16718  
 16719  // SetProtocol sets the Protocol field's value.
 16720  func (s *VirtualGatewayHealthCheckPolicy) SetProtocol(v string) *VirtualGatewayHealthCheckPolicy {
 16721  	s.Protocol = &v
 16722  	return s
 16723  }
 16724  
 16725  // SetTimeoutMillis sets the TimeoutMillis field's value.
 16726  func (s *VirtualGatewayHealthCheckPolicy) SetTimeoutMillis(v int64) *VirtualGatewayHealthCheckPolicy {
 16727  	s.TimeoutMillis = &v
 16728  	return s
 16729  }
 16730  
 16731  // SetUnhealthyThreshold sets the UnhealthyThreshold field's value.
 16732  func (s *VirtualGatewayHealthCheckPolicy) SetUnhealthyThreshold(v int64) *VirtualGatewayHealthCheckPolicy {
 16733  	s.UnhealthyThreshold = &v
 16734  	return s
 16735  }
 16736  
 16737  // An object that represents a type of connection pool.
 16738  type VirtualGatewayHttp2ConnectionPool struct {
 16739  	_ struct{} `type:"structure"`
 16740  
 16741  	// Maximum number of inflight requests Envoy can concurrently support across
 16742  	// hosts in upstream cluster.
 16743  	//
 16744  	// MaxRequests is a required field
 16745  	MaxRequests *int64 `locationName:"maxRequests" min:"1" type:"integer" required:"true"`
 16746  }
 16747  
 16748  // String returns the string representation.
 16749  //
 16750  // API parameter values that are decorated as "sensitive" in the API will not
 16751  // be included in the string output. The member name will be present, but the
 16752  // value will be replaced with "sensitive".
 16753  func (s VirtualGatewayHttp2ConnectionPool) String() string {
 16754  	return awsutil.Prettify(s)
 16755  }
 16756  
 16757  // GoString returns the string representation.
 16758  //
 16759  // API parameter values that are decorated as "sensitive" in the API will not
 16760  // be included in the string output. The member name will be present, but the
 16761  // value will be replaced with "sensitive".
 16762  func (s VirtualGatewayHttp2ConnectionPool) GoString() string {
 16763  	return s.String()
 16764  }
 16765  
 16766  // Validate inspects the fields of the type to determine if they are valid.
 16767  func (s *VirtualGatewayHttp2ConnectionPool) Validate() error {
 16768  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayHttp2ConnectionPool"}
 16769  	if s.MaxRequests == nil {
 16770  		invalidParams.Add(request.NewErrParamRequired("MaxRequests"))
 16771  	}
 16772  	if s.MaxRequests != nil && *s.MaxRequests < 1 {
 16773  		invalidParams.Add(request.NewErrParamMinValue("MaxRequests", 1))
 16774  	}
 16775  
 16776  	if invalidParams.Len() > 0 {
 16777  		return invalidParams
 16778  	}
 16779  	return nil
 16780  }
 16781  
 16782  // SetMaxRequests sets the MaxRequests field's value.
 16783  func (s *VirtualGatewayHttp2ConnectionPool) SetMaxRequests(v int64) *VirtualGatewayHttp2ConnectionPool {
 16784  	s.MaxRequests = &v
 16785  	return s
 16786  }
 16787  
 16788  // An object that represents a type of connection pool.
 16789  type VirtualGatewayHttpConnectionPool struct {
 16790  	_ struct{} `type:"structure"`
 16791  
 16792  	// Maximum number of outbound TCP connections Envoy can establish concurrently
 16793  	// with all hosts in upstream cluster.
 16794  	//
 16795  	// MaxConnections is a required field
 16796  	MaxConnections *int64 `locationName:"maxConnections" min:"1" type:"integer" required:"true"`
 16797  
 16798  	// Number of overflowing requests after max_connections Envoy will queue to
 16799  	// upstream cluster.
 16800  	MaxPendingRequests *int64 `locationName:"maxPendingRequests" min:"1" type:"integer"`
 16801  }
 16802  
 16803  // String returns the string representation.
 16804  //
 16805  // API parameter values that are decorated as "sensitive" in the API will not
 16806  // be included in the string output. The member name will be present, but the
 16807  // value will be replaced with "sensitive".
 16808  func (s VirtualGatewayHttpConnectionPool) String() string {
 16809  	return awsutil.Prettify(s)
 16810  }
 16811  
 16812  // GoString returns the string representation.
 16813  //
 16814  // API parameter values that are decorated as "sensitive" in the API will not
 16815  // be included in the string output. The member name will be present, but the
 16816  // value will be replaced with "sensitive".
 16817  func (s VirtualGatewayHttpConnectionPool) GoString() string {
 16818  	return s.String()
 16819  }
 16820  
 16821  // Validate inspects the fields of the type to determine if they are valid.
 16822  func (s *VirtualGatewayHttpConnectionPool) Validate() error {
 16823  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayHttpConnectionPool"}
 16824  	if s.MaxConnections == nil {
 16825  		invalidParams.Add(request.NewErrParamRequired("MaxConnections"))
 16826  	}
 16827  	if s.MaxConnections != nil && *s.MaxConnections < 1 {
 16828  		invalidParams.Add(request.NewErrParamMinValue("MaxConnections", 1))
 16829  	}
 16830  	if s.MaxPendingRequests != nil && *s.MaxPendingRequests < 1 {
 16831  		invalidParams.Add(request.NewErrParamMinValue("MaxPendingRequests", 1))
 16832  	}
 16833  
 16834  	if invalidParams.Len() > 0 {
 16835  		return invalidParams
 16836  	}
 16837  	return nil
 16838  }
 16839  
 16840  // SetMaxConnections sets the MaxConnections field's value.
 16841  func (s *VirtualGatewayHttpConnectionPool) SetMaxConnections(v int64) *VirtualGatewayHttpConnectionPool {
 16842  	s.MaxConnections = &v
 16843  	return s
 16844  }
 16845  
 16846  // SetMaxPendingRequests sets the MaxPendingRequests field's value.
 16847  func (s *VirtualGatewayHttpConnectionPool) SetMaxPendingRequests(v int64) *VirtualGatewayHttpConnectionPool {
 16848  	s.MaxPendingRequests = &v
 16849  	return s
 16850  }
 16851  
 16852  // An object that represents a listener for a virtual gateway.
 16853  type VirtualGatewayListener struct {
 16854  	_ struct{} `type:"structure"`
 16855  
 16856  	// The connection pool information for the virtual gateway listener.
 16857  	ConnectionPool *VirtualGatewayConnectionPool `locationName:"connectionPool" type:"structure"`
 16858  
 16859  	// The health check information for the listener.
 16860  	HealthCheck *VirtualGatewayHealthCheckPolicy `locationName:"healthCheck" type:"structure"`
 16861  
 16862  	// The port mapping information for the listener.
 16863  	//
 16864  	// PortMapping is a required field
 16865  	PortMapping *VirtualGatewayPortMapping `locationName:"portMapping" type:"structure" required:"true"`
 16866  
 16867  	// A reference to an object that represents the Transport Layer Security (TLS)
 16868  	// properties for the listener.
 16869  	Tls *VirtualGatewayListenerTls `locationName:"tls" type:"structure"`
 16870  }
 16871  
 16872  // String returns the string representation.
 16873  //
 16874  // API parameter values that are decorated as "sensitive" in the API will not
 16875  // be included in the string output. The member name will be present, but the
 16876  // value will be replaced with "sensitive".
 16877  func (s VirtualGatewayListener) String() string {
 16878  	return awsutil.Prettify(s)
 16879  }
 16880  
 16881  // GoString returns the string representation.
 16882  //
 16883  // API parameter values that are decorated as "sensitive" in the API will not
 16884  // be included in the string output. The member name will be present, but the
 16885  // value will be replaced with "sensitive".
 16886  func (s VirtualGatewayListener) GoString() string {
 16887  	return s.String()
 16888  }
 16889  
 16890  // Validate inspects the fields of the type to determine if they are valid.
 16891  func (s *VirtualGatewayListener) Validate() error {
 16892  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayListener"}
 16893  	if s.PortMapping == nil {
 16894  		invalidParams.Add(request.NewErrParamRequired("PortMapping"))
 16895  	}
 16896  	if s.ConnectionPool != nil {
 16897  		if err := s.ConnectionPool.Validate(); err != nil {
 16898  			invalidParams.AddNested("ConnectionPool", err.(request.ErrInvalidParams))
 16899  		}
 16900  	}
 16901  	if s.HealthCheck != nil {
 16902  		if err := s.HealthCheck.Validate(); err != nil {
 16903  			invalidParams.AddNested("HealthCheck", err.(request.ErrInvalidParams))
 16904  		}
 16905  	}
 16906  	if s.PortMapping != nil {
 16907  		if err := s.PortMapping.Validate(); err != nil {
 16908  			invalidParams.AddNested("PortMapping", err.(request.ErrInvalidParams))
 16909  		}
 16910  	}
 16911  	if s.Tls != nil {
 16912  		if err := s.Tls.Validate(); err != nil {
 16913  			invalidParams.AddNested("Tls", err.(request.ErrInvalidParams))
 16914  		}
 16915  	}
 16916  
 16917  	if invalidParams.Len() > 0 {
 16918  		return invalidParams
 16919  	}
 16920  	return nil
 16921  }
 16922  
 16923  // SetConnectionPool sets the ConnectionPool field's value.
 16924  func (s *VirtualGatewayListener) SetConnectionPool(v *VirtualGatewayConnectionPool) *VirtualGatewayListener {
 16925  	s.ConnectionPool = v
 16926  	return s
 16927  }
 16928  
 16929  // SetHealthCheck sets the HealthCheck field's value.
 16930  func (s *VirtualGatewayListener) SetHealthCheck(v *VirtualGatewayHealthCheckPolicy) *VirtualGatewayListener {
 16931  	s.HealthCheck = v
 16932  	return s
 16933  }
 16934  
 16935  // SetPortMapping sets the PortMapping field's value.
 16936  func (s *VirtualGatewayListener) SetPortMapping(v *VirtualGatewayPortMapping) *VirtualGatewayListener {
 16937  	s.PortMapping = v
 16938  	return s
 16939  }
 16940  
 16941  // SetTls sets the Tls field's value.
 16942  func (s *VirtualGatewayListener) SetTls(v *VirtualGatewayListenerTls) *VirtualGatewayListener {
 16943  	s.Tls = v
 16944  	return s
 16945  }
 16946  
 16947  // An object that represents the Transport Layer Security (TLS) properties for
 16948  // a listener.
 16949  type VirtualGatewayListenerTls struct {
 16950  	_ struct{} `type:"structure"`
 16951  
 16952  	// An object that represents a Transport Layer Security (TLS) certificate.
 16953  	//
 16954  	// Certificate is a required field
 16955  	Certificate *VirtualGatewayListenerTlsCertificate `locationName:"certificate" type:"structure" required:"true"`
 16956  
 16957  	// Specify one of the following modes.
 16958  	//
 16959  	//    * STRICT – Listener only accepts connections with TLS enabled.
 16960  	//
 16961  	//    * PERMISSIVE – Listener accepts connections with or without TLS enabled.
 16962  	//
 16963  	//    * DISABLED – Listener only accepts connections without TLS.
 16964  	//
 16965  	// Mode is a required field
 16966  	Mode *string `locationName:"mode" type:"string" required:"true" enum:"VirtualGatewayListenerTlsMode"`
 16967  
 16968  	// A reference to an object that represents a virtual gateway's listener's Transport
 16969  	// Layer Security (TLS) validation context.
 16970  	Validation *VirtualGatewayListenerTlsValidationContext `locationName:"validation" type:"structure"`
 16971  }
 16972  
 16973  // String returns the string representation.
 16974  //
 16975  // API parameter values that are decorated as "sensitive" in the API will not
 16976  // be included in the string output. The member name will be present, but the
 16977  // value will be replaced with "sensitive".
 16978  func (s VirtualGatewayListenerTls) String() string {
 16979  	return awsutil.Prettify(s)
 16980  }
 16981  
 16982  // GoString returns the string representation.
 16983  //
 16984  // API parameter values that are decorated as "sensitive" in the API will not
 16985  // be included in the string output. The member name will be present, but the
 16986  // value will be replaced with "sensitive".
 16987  func (s VirtualGatewayListenerTls) GoString() string {
 16988  	return s.String()
 16989  }
 16990  
 16991  // Validate inspects the fields of the type to determine if they are valid.
 16992  func (s *VirtualGatewayListenerTls) Validate() error {
 16993  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayListenerTls"}
 16994  	if s.Certificate == nil {
 16995  		invalidParams.Add(request.NewErrParamRequired("Certificate"))
 16996  	}
 16997  	if s.Mode == nil {
 16998  		invalidParams.Add(request.NewErrParamRequired("Mode"))
 16999  	}
 17000  	if s.Certificate != nil {
 17001  		if err := s.Certificate.Validate(); err != nil {
 17002  			invalidParams.AddNested("Certificate", err.(request.ErrInvalidParams))
 17003  		}
 17004  	}
 17005  	if s.Validation != nil {
 17006  		if err := s.Validation.Validate(); err != nil {
 17007  			invalidParams.AddNested("Validation", err.(request.ErrInvalidParams))
 17008  		}
 17009  	}
 17010  
 17011  	if invalidParams.Len() > 0 {
 17012  		return invalidParams
 17013  	}
 17014  	return nil
 17015  }
 17016  
 17017  // SetCertificate sets the Certificate field's value.
 17018  func (s *VirtualGatewayListenerTls) SetCertificate(v *VirtualGatewayListenerTlsCertificate) *VirtualGatewayListenerTls {
 17019  	s.Certificate = v
 17020  	return s
 17021  }
 17022  
 17023  // SetMode sets the Mode field's value.
 17024  func (s *VirtualGatewayListenerTls) SetMode(v string) *VirtualGatewayListenerTls {
 17025  	s.Mode = &v
 17026  	return s
 17027  }
 17028  
 17029  // SetValidation sets the Validation field's value.
 17030  func (s *VirtualGatewayListenerTls) SetValidation(v *VirtualGatewayListenerTlsValidationContext) *VirtualGatewayListenerTls {
 17031  	s.Validation = v
 17032  	return s
 17033  }
 17034  
 17035  // An object that represents an Certificate Manager certificate.
 17036  type VirtualGatewayListenerTlsAcmCertificate struct {
 17037  	_ struct{} `type:"structure"`
 17038  
 17039  	// The Amazon Resource Name (ARN) for the certificate. The certificate must
 17040  	// meet specific requirements and you must have proxy authorization enabled.
 17041  	// For more information, see Transport Layer Security (TLS) (https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites).
 17042  	//
 17043  	// CertificateArn is a required field
 17044  	CertificateArn *string `locationName:"certificateArn" type:"string" required:"true"`
 17045  }
 17046  
 17047  // String returns the string representation.
 17048  //
 17049  // API parameter values that are decorated as "sensitive" in the API will not
 17050  // be included in the string output. The member name will be present, but the
 17051  // value will be replaced with "sensitive".
 17052  func (s VirtualGatewayListenerTlsAcmCertificate) String() string {
 17053  	return awsutil.Prettify(s)
 17054  }
 17055  
 17056  // GoString returns the string representation.
 17057  //
 17058  // API parameter values that are decorated as "sensitive" in the API will not
 17059  // be included in the string output. The member name will be present, but the
 17060  // value will be replaced with "sensitive".
 17061  func (s VirtualGatewayListenerTlsAcmCertificate) GoString() string {
 17062  	return s.String()
 17063  }
 17064  
 17065  // Validate inspects the fields of the type to determine if they are valid.
 17066  func (s *VirtualGatewayListenerTlsAcmCertificate) Validate() error {
 17067  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayListenerTlsAcmCertificate"}
 17068  	if s.CertificateArn == nil {
 17069  		invalidParams.Add(request.NewErrParamRequired("CertificateArn"))
 17070  	}
 17071  
 17072  	if invalidParams.Len() > 0 {
 17073  		return invalidParams
 17074  	}
 17075  	return nil
 17076  }
 17077  
 17078  // SetCertificateArn sets the CertificateArn field's value.
 17079  func (s *VirtualGatewayListenerTlsAcmCertificate) SetCertificateArn(v string) *VirtualGatewayListenerTlsAcmCertificate {
 17080  	s.CertificateArn = &v
 17081  	return s
 17082  }
 17083  
 17084  // An object that represents a listener's Transport Layer Security (TLS) certificate.
 17085  type VirtualGatewayListenerTlsCertificate struct {
 17086  	_ struct{} `type:"structure"`
 17087  
 17088  	// A reference to an object that represents an Certificate Manager certificate.
 17089  	Acm *VirtualGatewayListenerTlsAcmCertificate `locationName:"acm" type:"structure"`
 17090  
 17091  	// A reference to an object that represents a local file certificate.
 17092  	File *VirtualGatewayListenerTlsFileCertificate `locationName:"file" type:"structure"`
 17093  
 17094  	// A reference to an object that represents a virtual gateway's listener's Secret
 17095  	// Discovery Service certificate.
 17096  	Sds *VirtualGatewayListenerTlsSdsCertificate `locationName:"sds" type:"structure"`
 17097  }
 17098  
 17099  // String returns the string representation.
 17100  //
 17101  // API parameter values that are decorated as "sensitive" in the API will not
 17102  // be included in the string output. The member name will be present, but the
 17103  // value will be replaced with "sensitive".
 17104  func (s VirtualGatewayListenerTlsCertificate) String() string {
 17105  	return awsutil.Prettify(s)
 17106  }
 17107  
 17108  // GoString returns the string representation.
 17109  //
 17110  // API parameter values that are decorated as "sensitive" in the API will not
 17111  // be included in the string output. The member name will be present, but the
 17112  // value will be replaced with "sensitive".
 17113  func (s VirtualGatewayListenerTlsCertificate) GoString() string {
 17114  	return s.String()
 17115  }
 17116  
 17117  // Validate inspects the fields of the type to determine if they are valid.
 17118  func (s *VirtualGatewayListenerTlsCertificate) Validate() error {
 17119  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayListenerTlsCertificate"}
 17120  	if s.Acm != nil {
 17121  		if err := s.Acm.Validate(); err != nil {
 17122  			invalidParams.AddNested("Acm", err.(request.ErrInvalidParams))
 17123  		}
 17124  	}
 17125  	if s.File != nil {
 17126  		if err := s.File.Validate(); err != nil {
 17127  			invalidParams.AddNested("File", err.(request.ErrInvalidParams))
 17128  		}
 17129  	}
 17130  	if s.Sds != nil {
 17131  		if err := s.Sds.Validate(); err != nil {
 17132  			invalidParams.AddNested("Sds", err.(request.ErrInvalidParams))
 17133  		}
 17134  	}
 17135  
 17136  	if invalidParams.Len() > 0 {
 17137  		return invalidParams
 17138  	}
 17139  	return nil
 17140  }
 17141  
 17142  // SetAcm sets the Acm field's value.
 17143  func (s *VirtualGatewayListenerTlsCertificate) SetAcm(v *VirtualGatewayListenerTlsAcmCertificate) *VirtualGatewayListenerTlsCertificate {
 17144  	s.Acm = v
 17145  	return s
 17146  }
 17147  
 17148  // SetFile sets the File field's value.
 17149  func (s *VirtualGatewayListenerTlsCertificate) SetFile(v *VirtualGatewayListenerTlsFileCertificate) *VirtualGatewayListenerTlsCertificate {
 17150  	s.File = v
 17151  	return s
 17152  }
 17153  
 17154  // SetSds sets the Sds field's value.
 17155  func (s *VirtualGatewayListenerTlsCertificate) SetSds(v *VirtualGatewayListenerTlsSdsCertificate) *VirtualGatewayListenerTlsCertificate {
 17156  	s.Sds = v
 17157  	return s
 17158  }
 17159  
 17160  // An object that represents a local file certificate. The certificate must
 17161  // meet specific requirements and you must have proxy authorization enabled.
 17162  // For more information, see Transport Layer Security (TLS) (https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html#virtual-node-tls-prerequisites).
 17163  type VirtualGatewayListenerTlsFileCertificate struct {
 17164  	_ struct{} `type:"structure"`
 17165  
 17166  	// The certificate chain for the certificate.
 17167  	//
 17168  	// CertificateChain is a required field
 17169  	CertificateChain *string `locationName:"certificateChain" min:"1" type:"string" required:"true"`
 17170  
 17171  	// The private key for a certificate stored on the file system of the mesh endpoint
 17172  	// that the proxy is running on.
 17173  	//
 17174  	// PrivateKey is a required field
 17175  	PrivateKey *string `locationName:"privateKey" min:"1" type:"string" required:"true"`
 17176  }
 17177  
 17178  // String returns the string representation.
 17179  //
 17180  // API parameter values that are decorated as "sensitive" in the API will not
 17181  // be included in the string output. The member name will be present, but the
 17182  // value will be replaced with "sensitive".
 17183  func (s VirtualGatewayListenerTlsFileCertificate) String() string {
 17184  	return awsutil.Prettify(s)
 17185  }
 17186  
 17187  // GoString returns the string representation.
 17188  //
 17189  // API parameter values that are decorated as "sensitive" in the API will not
 17190  // be included in the string output. The member name will be present, but the
 17191  // value will be replaced with "sensitive".
 17192  func (s VirtualGatewayListenerTlsFileCertificate) GoString() string {
 17193  	return s.String()
 17194  }
 17195  
 17196  // Validate inspects the fields of the type to determine if they are valid.
 17197  func (s *VirtualGatewayListenerTlsFileCertificate) Validate() error {
 17198  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayListenerTlsFileCertificate"}
 17199  	if s.CertificateChain == nil {
 17200  		invalidParams.Add(request.NewErrParamRequired("CertificateChain"))
 17201  	}
 17202  	if s.CertificateChain != nil && len(*s.CertificateChain) < 1 {
 17203  		invalidParams.Add(request.NewErrParamMinLen("CertificateChain", 1))
 17204  	}
 17205  	if s.PrivateKey == nil {
 17206  		invalidParams.Add(request.NewErrParamRequired("PrivateKey"))
 17207  	}
 17208  	if s.PrivateKey != nil && len(*s.PrivateKey) < 1 {
 17209  		invalidParams.Add(request.NewErrParamMinLen("PrivateKey", 1))
 17210  	}
 17211  
 17212  	if invalidParams.Len() > 0 {
 17213  		return invalidParams
 17214  	}
 17215  	return nil
 17216  }
 17217  
 17218  // SetCertificateChain sets the CertificateChain field's value.
 17219  func (s *VirtualGatewayListenerTlsFileCertificate) SetCertificateChain(v string) *VirtualGatewayListenerTlsFileCertificate {
 17220  	s.CertificateChain = &v
 17221  	return s
 17222  }
 17223  
 17224  // SetPrivateKey sets the PrivateKey field's value.
 17225  func (s *VirtualGatewayListenerTlsFileCertificate) SetPrivateKey(v string) *VirtualGatewayListenerTlsFileCertificate {
 17226  	s.PrivateKey = &v
 17227  	return s
 17228  }
 17229  
 17230  // An object that represents the virtual gateway's listener's Secret Discovery
 17231  // Service certificate.The proxy must be configured with a local SDS provider
 17232  // via a Unix Domain Socket. See App MeshTLS documentation (https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html)
 17233  // for more info.
 17234  type VirtualGatewayListenerTlsSdsCertificate struct {
 17235  	_ struct{} `type:"structure"`
 17236  
 17237  	// A reference to an object that represents the name of the secret secret requested
 17238  	// from the Secret Discovery Service provider representing Transport Layer Security
 17239  	// (TLS) materials like a certificate or certificate chain.
 17240  	//
 17241  	// SecretName is a required field
 17242  	SecretName *string `locationName:"secretName" type:"string" required:"true"`
 17243  }
 17244  
 17245  // String returns the string representation.
 17246  //
 17247  // API parameter values that are decorated as "sensitive" in the API will not
 17248  // be included in the string output. The member name will be present, but the
 17249  // value will be replaced with "sensitive".
 17250  func (s VirtualGatewayListenerTlsSdsCertificate) String() string {
 17251  	return awsutil.Prettify(s)
 17252  }
 17253  
 17254  // GoString returns the string representation.
 17255  //
 17256  // API parameter values that are decorated as "sensitive" in the API will not
 17257  // be included in the string output. The member name will be present, but the
 17258  // value will be replaced with "sensitive".
 17259  func (s VirtualGatewayListenerTlsSdsCertificate) GoString() string {
 17260  	return s.String()
 17261  }
 17262  
 17263  // Validate inspects the fields of the type to determine if they are valid.
 17264  func (s *VirtualGatewayListenerTlsSdsCertificate) Validate() error {
 17265  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayListenerTlsSdsCertificate"}
 17266  	if s.SecretName == nil {
 17267  		invalidParams.Add(request.NewErrParamRequired("SecretName"))
 17268  	}
 17269  
 17270  	if invalidParams.Len() > 0 {
 17271  		return invalidParams
 17272  	}
 17273  	return nil
 17274  }
 17275  
 17276  // SetSecretName sets the SecretName field's value.
 17277  func (s *VirtualGatewayListenerTlsSdsCertificate) SetSecretName(v string) *VirtualGatewayListenerTlsSdsCertificate {
 17278  	s.SecretName = &v
 17279  	return s
 17280  }
 17281  
 17282  // An object that represents a virtual gateway's listener's Transport Layer
 17283  // Security (TLS) validation context.
 17284  type VirtualGatewayListenerTlsValidationContext struct {
 17285  	_ struct{} `type:"structure"`
 17286  
 17287  	// A reference to an object that represents the SANs for a virtual gateway listener's
 17288  	// Transport Layer Security (TLS) validation context.
 17289  	SubjectAlternativeNames *SubjectAlternativeNames `locationName:"subjectAlternativeNames" type:"structure"`
 17290  
 17291  	// A reference to where to retrieve the trust chain when validating a peer’s
 17292  	// Transport Layer Security (TLS) certificate.
 17293  	//
 17294  	// Trust is a required field
 17295  	Trust *VirtualGatewayListenerTlsValidationContextTrust `locationName:"trust" type:"structure" required:"true"`
 17296  }
 17297  
 17298  // String returns the string representation.
 17299  //
 17300  // API parameter values that are decorated as "sensitive" in the API will not
 17301  // be included in the string output. The member name will be present, but the
 17302  // value will be replaced with "sensitive".
 17303  func (s VirtualGatewayListenerTlsValidationContext) String() string {
 17304  	return awsutil.Prettify(s)
 17305  }
 17306  
 17307  // GoString returns the string representation.
 17308  //
 17309  // API parameter values that are decorated as "sensitive" in the API will not
 17310  // be included in the string output. The member name will be present, but the
 17311  // value will be replaced with "sensitive".
 17312  func (s VirtualGatewayListenerTlsValidationContext) GoString() string {
 17313  	return s.String()
 17314  }
 17315  
 17316  // Validate inspects the fields of the type to determine if they are valid.
 17317  func (s *VirtualGatewayListenerTlsValidationContext) Validate() error {
 17318  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayListenerTlsValidationContext"}
 17319  	if s.Trust == nil {
 17320  		invalidParams.Add(request.NewErrParamRequired("Trust"))
 17321  	}
 17322  	if s.SubjectAlternativeNames != nil {
 17323  		if err := s.SubjectAlternativeNames.Validate(); err != nil {
 17324  			invalidParams.AddNested("SubjectAlternativeNames", err.(request.ErrInvalidParams))
 17325  		}
 17326  	}
 17327  	if s.Trust != nil {
 17328  		if err := s.Trust.Validate(); err != nil {
 17329  			invalidParams.AddNested("Trust", err.(request.ErrInvalidParams))
 17330  		}
 17331  	}
 17332  
 17333  	if invalidParams.Len() > 0 {
 17334  		return invalidParams
 17335  	}
 17336  	return nil
 17337  }
 17338  
 17339  // SetSubjectAlternativeNames sets the SubjectAlternativeNames field's value.
 17340  func (s *VirtualGatewayListenerTlsValidationContext) SetSubjectAlternativeNames(v *SubjectAlternativeNames) *VirtualGatewayListenerTlsValidationContext {
 17341  	s.SubjectAlternativeNames = v
 17342  	return s
 17343  }
 17344  
 17345  // SetTrust sets the Trust field's value.
 17346  func (s *VirtualGatewayListenerTlsValidationContext) SetTrust(v *VirtualGatewayListenerTlsValidationContextTrust) *VirtualGatewayListenerTlsValidationContext {
 17347  	s.Trust = v
 17348  	return s
 17349  }
 17350  
 17351  // An object that represents a virtual gateway's listener's Transport Layer
 17352  // Security (TLS) validation context trust.
 17353  type VirtualGatewayListenerTlsValidationContextTrust struct {
 17354  	_ struct{} `type:"structure"`
 17355  
 17356  	// An object that represents a Transport Layer Security (TLS) validation context
 17357  	// trust for a local file.
 17358  	File *VirtualGatewayTlsValidationContextFileTrust `locationName:"file" type:"structure"`
 17359  
 17360  	// A reference to an object that represents a virtual gateway's listener's Transport
 17361  	// Layer Security (TLS) Secret Discovery Service validation context trust.
 17362  	Sds *VirtualGatewayTlsValidationContextSdsTrust `locationName:"sds" type:"structure"`
 17363  }
 17364  
 17365  // String returns the string representation.
 17366  //
 17367  // API parameter values that are decorated as "sensitive" in the API will not
 17368  // be included in the string output. The member name will be present, but the
 17369  // value will be replaced with "sensitive".
 17370  func (s VirtualGatewayListenerTlsValidationContextTrust) String() string {
 17371  	return awsutil.Prettify(s)
 17372  }
 17373  
 17374  // GoString returns the string representation.
 17375  //
 17376  // API parameter values that are decorated as "sensitive" in the API will not
 17377  // be included in the string output. The member name will be present, but the
 17378  // value will be replaced with "sensitive".
 17379  func (s VirtualGatewayListenerTlsValidationContextTrust) GoString() string {
 17380  	return s.String()
 17381  }
 17382  
 17383  // Validate inspects the fields of the type to determine if they are valid.
 17384  func (s *VirtualGatewayListenerTlsValidationContextTrust) Validate() error {
 17385  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayListenerTlsValidationContextTrust"}
 17386  	if s.File != nil {
 17387  		if err := s.File.Validate(); err != nil {
 17388  			invalidParams.AddNested("File", err.(request.ErrInvalidParams))
 17389  		}
 17390  	}
 17391  	if s.Sds != nil {
 17392  		if err := s.Sds.Validate(); err != nil {
 17393  			invalidParams.AddNested("Sds", err.(request.ErrInvalidParams))
 17394  		}
 17395  	}
 17396  
 17397  	if invalidParams.Len() > 0 {
 17398  		return invalidParams
 17399  	}
 17400  	return nil
 17401  }
 17402  
 17403  // SetFile sets the File field's value.
 17404  func (s *VirtualGatewayListenerTlsValidationContextTrust) SetFile(v *VirtualGatewayTlsValidationContextFileTrust) *VirtualGatewayListenerTlsValidationContextTrust {
 17405  	s.File = v
 17406  	return s
 17407  }
 17408  
 17409  // SetSds sets the Sds field's value.
 17410  func (s *VirtualGatewayListenerTlsValidationContextTrust) SetSds(v *VirtualGatewayTlsValidationContextSdsTrust) *VirtualGatewayListenerTlsValidationContextTrust {
 17411  	s.Sds = v
 17412  	return s
 17413  }
 17414  
 17415  // An object that represents logging information.
 17416  type VirtualGatewayLogging struct {
 17417  	_ struct{} `type:"structure"`
 17418  
 17419  	// The access log configuration.
 17420  	AccessLog *VirtualGatewayAccessLog `locationName:"accessLog" type:"structure"`
 17421  }
 17422  
 17423  // String returns the string representation.
 17424  //
 17425  // API parameter values that are decorated as "sensitive" in the API will not
 17426  // be included in the string output. The member name will be present, but the
 17427  // value will be replaced with "sensitive".
 17428  func (s VirtualGatewayLogging) String() string {
 17429  	return awsutil.Prettify(s)
 17430  }
 17431  
 17432  // GoString returns the string representation.
 17433  //
 17434  // API parameter values that are decorated as "sensitive" in the API will not
 17435  // be included in the string output. The member name will be present, but the
 17436  // value will be replaced with "sensitive".
 17437  func (s VirtualGatewayLogging) GoString() string {
 17438  	return s.String()
 17439  }
 17440  
 17441  // Validate inspects the fields of the type to determine if they are valid.
 17442  func (s *VirtualGatewayLogging) Validate() error {
 17443  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayLogging"}
 17444  	if s.AccessLog != nil {
 17445  		if err := s.AccessLog.Validate(); err != nil {
 17446  			invalidParams.AddNested("AccessLog", err.(request.ErrInvalidParams))
 17447  		}
 17448  	}
 17449  
 17450  	if invalidParams.Len() > 0 {
 17451  		return invalidParams
 17452  	}
 17453  	return nil
 17454  }
 17455  
 17456  // SetAccessLog sets the AccessLog field's value.
 17457  func (s *VirtualGatewayLogging) SetAccessLog(v *VirtualGatewayAccessLog) *VirtualGatewayLogging {
 17458  	s.AccessLog = v
 17459  	return s
 17460  }
 17461  
 17462  // An object that represents a port mapping.
 17463  type VirtualGatewayPortMapping struct {
 17464  	_ struct{} `type:"structure"`
 17465  
 17466  	// The port used for the port mapping. Specify one protocol.
 17467  	//
 17468  	// Port is a required field
 17469  	Port *int64 `locationName:"port" min:"1" type:"integer" required:"true"`
 17470  
 17471  	// The protocol used for the port mapping.
 17472  	//
 17473  	// Protocol is a required field
 17474  	Protocol *string `locationName:"protocol" type:"string" required:"true" enum:"VirtualGatewayPortProtocol"`
 17475  }
 17476  
 17477  // String returns the string representation.
 17478  //
 17479  // API parameter values that are decorated as "sensitive" in the API will not
 17480  // be included in the string output. The member name will be present, but the
 17481  // value will be replaced with "sensitive".
 17482  func (s VirtualGatewayPortMapping) String() string {
 17483  	return awsutil.Prettify(s)
 17484  }
 17485  
 17486  // GoString returns the string representation.
 17487  //
 17488  // API parameter values that are decorated as "sensitive" in the API will not
 17489  // be included in the string output. The member name will be present, but the
 17490  // value will be replaced with "sensitive".
 17491  func (s VirtualGatewayPortMapping) GoString() string {
 17492  	return s.String()
 17493  }
 17494  
 17495  // Validate inspects the fields of the type to determine if they are valid.
 17496  func (s *VirtualGatewayPortMapping) Validate() error {
 17497  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayPortMapping"}
 17498  	if s.Port == nil {
 17499  		invalidParams.Add(request.NewErrParamRequired("Port"))
 17500  	}
 17501  	if s.Port != nil && *s.Port < 1 {
 17502  		invalidParams.Add(request.NewErrParamMinValue("Port", 1))
 17503  	}
 17504  	if s.Protocol == nil {
 17505  		invalidParams.Add(request.NewErrParamRequired("Protocol"))
 17506  	}
 17507  
 17508  	if invalidParams.Len() > 0 {
 17509  		return invalidParams
 17510  	}
 17511  	return nil
 17512  }
 17513  
 17514  // SetPort sets the Port field's value.
 17515  func (s *VirtualGatewayPortMapping) SetPort(v int64) *VirtualGatewayPortMapping {
 17516  	s.Port = &v
 17517  	return s
 17518  }
 17519  
 17520  // SetProtocol sets the Protocol field's value.
 17521  func (s *VirtualGatewayPortMapping) SetProtocol(v string) *VirtualGatewayPortMapping {
 17522  	s.Protocol = &v
 17523  	return s
 17524  }
 17525  
 17526  // An object that represents a virtual gateway returned by a list operation.
 17527  type VirtualGatewayRef struct {
 17528  	_ struct{} `type:"structure"`
 17529  
 17530  	// The full Amazon Resource Name (ARN) for the resource.
 17531  	//
 17532  	// Arn is a required field
 17533  	Arn *string `locationName:"arn" type:"string" required:"true"`
 17534  
 17535  	// The Unix epoch timestamp in seconds for when the resource was created.
 17536  	//
 17537  	// CreatedAt is a required field
 17538  	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`
 17539  
 17540  	// The Unix epoch timestamp in seconds for when the resource was last updated.
 17541  	//
 17542  	// LastUpdatedAt is a required field
 17543  	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" required:"true"`
 17544  
 17545  	// The name of the service mesh that the resource resides in.
 17546  	//
 17547  	// MeshName is a required field
 17548  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
 17549  
 17550  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 17551  	// your own, then it's the ID of the account that shared the mesh with your
 17552  	// account. For more information about mesh sharing, see Working with shared
 17553  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 17554  	//
 17555  	// MeshOwner is a required field
 17556  	MeshOwner *string `locationName:"meshOwner" min:"12" type:"string" required:"true"`
 17557  
 17558  	// The AWS IAM account ID of the resource owner. If the account ID is not your
 17559  	// own, then it's the ID of the mesh owner or of another account that the mesh
 17560  	// is shared with. For more information about mesh sharing, see Working with
 17561  	// shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 17562  	//
 17563  	// ResourceOwner is a required field
 17564  	ResourceOwner *string `locationName:"resourceOwner" min:"12" type:"string" required:"true"`
 17565  
 17566  	// The version of the resource. Resources are created at version 1, and this
 17567  	// version is incremented each time that they're updated.
 17568  	//
 17569  	// Version is a required field
 17570  	Version *int64 `locationName:"version" type:"long" required:"true"`
 17571  
 17572  	// The name of the resource.
 17573  	//
 17574  	// VirtualGatewayName is a required field
 17575  	VirtualGatewayName *string `locationName:"virtualGatewayName" min:"1" type:"string" required:"true"`
 17576  }
 17577  
 17578  // String returns the string representation.
 17579  //
 17580  // API parameter values that are decorated as "sensitive" in the API will not
 17581  // be included in the string output. The member name will be present, but the
 17582  // value will be replaced with "sensitive".
 17583  func (s VirtualGatewayRef) String() string {
 17584  	return awsutil.Prettify(s)
 17585  }
 17586  
 17587  // GoString returns the string representation.
 17588  //
 17589  // API parameter values that are decorated as "sensitive" in the API will not
 17590  // be included in the string output. The member name will be present, but the
 17591  // value will be replaced with "sensitive".
 17592  func (s VirtualGatewayRef) GoString() string {
 17593  	return s.String()
 17594  }
 17595  
 17596  // SetArn sets the Arn field's value.
 17597  func (s *VirtualGatewayRef) SetArn(v string) *VirtualGatewayRef {
 17598  	s.Arn = &v
 17599  	return s
 17600  }
 17601  
 17602  // SetCreatedAt sets the CreatedAt field's value.
 17603  func (s *VirtualGatewayRef) SetCreatedAt(v time.Time) *VirtualGatewayRef {
 17604  	s.CreatedAt = &v
 17605  	return s
 17606  }
 17607  
 17608  // SetLastUpdatedAt sets the LastUpdatedAt field's value.
 17609  func (s *VirtualGatewayRef) SetLastUpdatedAt(v time.Time) *VirtualGatewayRef {
 17610  	s.LastUpdatedAt = &v
 17611  	return s
 17612  }
 17613  
 17614  // SetMeshName sets the MeshName field's value.
 17615  func (s *VirtualGatewayRef) SetMeshName(v string) *VirtualGatewayRef {
 17616  	s.MeshName = &v
 17617  	return s
 17618  }
 17619  
 17620  // SetMeshOwner sets the MeshOwner field's value.
 17621  func (s *VirtualGatewayRef) SetMeshOwner(v string) *VirtualGatewayRef {
 17622  	s.MeshOwner = &v
 17623  	return s
 17624  }
 17625  
 17626  // SetResourceOwner sets the ResourceOwner field's value.
 17627  func (s *VirtualGatewayRef) SetResourceOwner(v string) *VirtualGatewayRef {
 17628  	s.ResourceOwner = &v
 17629  	return s
 17630  }
 17631  
 17632  // SetVersion sets the Version field's value.
 17633  func (s *VirtualGatewayRef) SetVersion(v int64) *VirtualGatewayRef {
 17634  	s.Version = &v
 17635  	return s
 17636  }
 17637  
 17638  // SetVirtualGatewayName sets the VirtualGatewayName field's value.
 17639  func (s *VirtualGatewayRef) SetVirtualGatewayName(v string) *VirtualGatewayRef {
 17640  	s.VirtualGatewayName = &v
 17641  	return s
 17642  }
 17643  
 17644  // An object that represents the specification of a service mesh resource.
 17645  type VirtualGatewaySpec struct {
 17646  	_ struct{} `type:"structure"`
 17647  
 17648  	// A reference to an object that represents the defaults for backends.
 17649  	BackendDefaults *VirtualGatewayBackendDefaults `locationName:"backendDefaults" type:"structure"`
 17650  
 17651  	// The listeners that the mesh endpoint is expected to receive inbound traffic
 17652  	// from. You can specify one listener.
 17653  	//
 17654  	// Listeners is a required field
 17655  	Listeners []*VirtualGatewayListener `locationName:"listeners" type:"list" required:"true"`
 17656  
 17657  	// An object that represents logging information.
 17658  	Logging *VirtualGatewayLogging `locationName:"logging" type:"structure"`
 17659  }
 17660  
 17661  // String returns the string representation.
 17662  //
 17663  // API parameter values that are decorated as "sensitive" in the API will not
 17664  // be included in the string output. The member name will be present, but the
 17665  // value will be replaced with "sensitive".
 17666  func (s VirtualGatewaySpec) String() string {
 17667  	return awsutil.Prettify(s)
 17668  }
 17669  
 17670  // GoString returns the string representation.
 17671  //
 17672  // API parameter values that are decorated as "sensitive" in the API will not
 17673  // be included in the string output. The member name will be present, but the
 17674  // value will be replaced with "sensitive".
 17675  func (s VirtualGatewaySpec) GoString() string {
 17676  	return s.String()
 17677  }
 17678  
 17679  // Validate inspects the fields of the type to determine if they are valid.
 17680  func (s *VirtualGatewaySpec) Validate() error {
 17681  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewaySpec"}
 17682  	if s.Listeners == nil {
 17683  		invalidParams.Add(request.NewErrParamRequired("Listeners"))
 17684  	}
 17685  	if s.BackendDefaults != nil {
 17686  		if err := s.BackendDefaults.Validate(); err != nil {
 17687  			invalidParams.AddNested("BackendDefaults", err.(request.ErrInvalidParams))
 17688  		}
 17689  	}
 17690  	if s.Listeners != nil {
 17691  		for i, v := range s.Listeners {
 17692  			if v == nil {
 17693  				continue
 17694  			}
 17695  			if err := v.Validate(); err != nil {
 17696  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Listeners", i), err.(request.ErrInvalidParams))
 17697  			}
 17698  		}
 17699  	}
 17700  	if s.Logging != nil {
 17701  		if err := s.Logging.Validate(); err != nil {
 17702  			invalidParams.AddNested("Logging", err.(request.ErrInvalidParams))
 17703  		}
 17704  	}
 17705  
 17706  	if invalidParams.Len() > 0 {
 17707  		return invalidParams
 17708  	}
 17709  	return nil
 17710  }
 17711  
 17712  // SetBackendDefaults sets the BackendDefaults field's value.
 17713  func (s *VirtualGatewaySpec) SetBackendDefaults(v *VirtualGatewayBackendDefaults) *VirtualGatewaySpec {
 17714  	s.BackendDefaults = v
 17715  	return s
 17716  }
 17717  
 17718  // SetListeners sets the Listeners field's value.
 17719  func (s *VirtualGatewaySpec) SetListeners(v []*VirtualGatewayListener) *VirtualGatewaySpec {
 17720  	s.Listeners = v
 17721  	return s
 17722  }
 17723  
 17724  // SetLogging sets the Logging field's value.
 17725  func (s *VirtualGatewaySpec) SetLogging(v *VirtualGatewayLogging) *VirtualGatewaySpec {
 17726  	s.Logging = v
 17727  	return s
 17728  }
 17729  
 17730  // An object that represents the status of the mesh resource.
 17731  type VirtualGatewayStatus struct {
 17732  	_ struct{} `type:"structure"`
 17733  
 17734  	// The current status.
 17735  	//
 17736  	// Status is a required field
 17737  	Status *string `locationName:"status" type:"string" required:"true" enum:"VirtualGatewayStatusCode"`
 17738  }
 17739  
 17740  // String returns the string representation.
 17741  //
 17742  // API parameter values that are decorated as "sensitive" in the API will not
 17743  // be included in the string output. The member name will be present, but the
 17744  // value will be replaced with "sensitive".
 17745  func (s VirtualGatewayStatus) String() string {
 17746  	return awsutil.Prettify(s)
 17747  }
 17748  
 17749  // GoString returns the string representation.
 17750  //
 17751  // API parameter values that are decorated as "sensitive" in the API will not
 17752  // be included in the string output. The member name will be present, but the
 17753  // value will be replaced with "sensitive".
 17754  func (s VirtualGatewayStatus) GoString() string {
 17755  	return s.String()
 17756  }
 17757  
 17758  // SetStatus sets the Status field's value.
 17759  func (s *VirtualGatewayStatus) SetStatus(v string) *VirtualGatewayStatus {
 17760  	s.Status = &v
 17761  	return s
 17762  }
 17763  
 17764  // An object that represents a Transport Layer Security (TLS) validation context.
 17765  type VirtualGatewayTlsValidationContext struct {
 17766  	_ struct{} `type:"structure"`
 17767  
 17768  	// A reference to an object that represents the SANs for a virtual gateway's
 17769  	// listener's Transport Layer Security (TLS) validation context.
 17770  	SubjectAlternativeNames *SubjectAlternativeNames `locationName:"subjectAlternativeNames" type:"structure"`
 17771  
 17772  	// A reference to where to retrieve the trust chain when validating a peer’s
 17773  	// Transport Layer Security (TLS) certificate.
 17774  	//
 17775  	// Trust is a required field
 17776  	Trust *VirtualGatewayTlsValidationContextTrust `locationName:"trust" type:"structure" required:"true"`
 17777  }
 17778  
 17779  // String returns the string representation.
 17780  //
 17781  // API parameter values that are decorated as "sensitive" in the API will not
 17782  // be included in the string output. The member name will be present, but the
 17783  // value will be replaced with "sensitive".
 17784  func (s VirtualGatewayTlsValidationContext) String() string {
 17785  	return awsutil.Prettify(s)
 17786  }
 17787  
 17788  // GoString returns the string representation.
 17789  //
 17790  // API parameter values that are decorated as "sensitive" in the API will not
 17791  // be included in the string output. The member name will be present, but the
 17792  // value will be replaced with "sensitive".
 17793  func (s VirtualGatewayTlsValidationContext) GoString() string {
 17794  	return s.String()
 17795  }
 17796  
 17797  // Validate inspects the fields of the type to determine if they are valid.
 17798  func (s *VirtualGatewayTlsValidationContext) Validate() error {
 17799  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayTlsValidationContext"}
 17800  	if s.Trust == nil {
 17801  		invalidParams.Add(request.NewErrParamRequired("Trust"))
 17802  	}
 17803  	if s.SubjectAlternativeNames != nil {
 17804  		if err := s.SubjectAlternativeNames.Validate(); err != nil {
 17805  			invalidParams.AddNested("SubjectAlternativeNames", err.(request.ErrInvalidParams))
 17806  		}
 17807  	}
 17808  	if s.Trust != nil {
 17809  		if err := s.Trust.Validate(); err != nil {
 17810  			invalidParams.AddNested("Trust", err.(request.ErrInvalidParams))
 17811  		}
 17812  	}
 17813  
 17814  	if invalidParams.Len() > 0 {
 17815  		return invalidParams
 17816  	}
 17817  	return nil
 17818  }
 17819  
 17820  // SetSubjectAlternativeNames sets the SubjectAlternativeNames field's value.
 17821  func (s *VirtualGatewayTlsValidationContext) SetSubjectAlternativeNames(v *SubjectAlternativeNames) *VirtualGatewayTlsValidationContext {
 17822  	s.SubjectAlternativeNames = v
 17823  	return s
 17824  }
 17825  
 17826  // SetTrust sets the Trust field's value.
 17827  func (s *VirtualGatewayTlsValidationContext) SetTrust(v *VirtualGatewayTlsValidationContextTrust) *VirtualGatewayTlsValidationContext {
 17828  	s.Trust = v
 17829  	return s
 17830  }
 17831  
 17832  // An object that represents a Transport Layer Security (TLS) validation context
 17833  // trust for an Certificate Manager certificate.
 17834  type VirtualGatewayTlsValidationContextAcmTrust struct {
 17835  	_ struct{} `type:"structure"`
 17836  
 17837  	// One or more ACM Amazon Resource Name (ARN)s.
 17838  	//
 17839  	// CertificateAuthorityArns is a required field
 17840  	CertificateAuthorityArns []*string `locationName:"certificateAuthorityArns" min:"1" type:"list" required:"true"`
 17841  }
 17842  
 17843  // String returns the string representation.
 17844  //
 17845  // API parameter values that are decorated as "sensitive" in the API will not
 17846  // be included in the string output. The member name will be present, but the
 17847  // value will be replaced with "sensitive".
 17848  func (s VirtualGatewayTlsValidationContextAcmTrust) String() string {
 17849  	return awsutil.Prettify(s)
 17850  }
 17851  
 17852  // GoString returns the string representation.
 17853  //
 17854  // API parameter values that are decorated as "sensitive" in the API will not
 17855  // be included in the string output. The member name will be present, but the
 17856  // value will be replaced with "sensitive".
 17857  func (s VirtualGatewayTlsValidationContextAcmTrust) GoString() string {
 17858  	return s.String()
 17859  }
 17860  
 17861  // Validate inspects the fields of the type to determine if they are valid.
 17862  func (s *VirtualGatewayTlsValidationContextAcmTrust) Validate() error {
 17863  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayTlsValidationContextAcmTrust"}
 17864  	if s.CertificateAuthorityArns == nil {
 17865  		invalidParams.Add(request.NewErrParamRequired("CertificateAuthorityArns"))
 17866  	}
 17867  	if s.CertificateAuthorityArns != nil && len(s.CertificateAuthorityArns) < 1 {
 17868  		invalidParams.Add(request.NewErrParamMinLen("CertificateAuthorityArns", 1))
 17869  	}
 17870  
 17871  	if invalidParams.Len() > 0 {
 17872  		return invalidParams
 17873  	}
 17874  	return nil
 17875  }
 17876  
 17877  // SetCertificateAuthorityArns sets the CertificateAuthorityArns field's value.
 17878  func (s *VirtualGatewayTlsValidationContextAcmTrust) SetCertificateAuthorityArns(v []*string) *VirtualGatewayTlsValidationContextAcmTrust {
 17879  	s.CertificateAuthorityArns = v
 17880  	return s
 17881  }
 17882  
 17883  // An object that represents a Transport Layer Security (TLS) validation context
 17884  // trust for a local file.
 17885  type VirtualGatewayTlsValidationContextFileTrust struct {
 17886  	_ struct{} `type:"structure"`
 17887  
 17888  	// The certificate trust chain for a certificate stored on the file system of
 17889  	// the virtual node that the proxy is running on.
 17890  	//
 17891  	// CertificateChain is a required field
 17892  	CertificateChain *string `locationName:"certificateChain" min:"1" type:"string" required:"true"`
 17893  }
 17894  
 17895  // String returns the string representation.
 17896  //
 17897  // API parameter values that are decorated as "sensitive" in the API will not
 17898  // be included in the string output. The member name will be present, but the
 17899  // value will be replaced with "sensitive".
 17900  func (s VirtualGatewayTlsValidationContextFileTrust) String() string {
 17901  	return awsutil.Prettify(s)
 17902  }
 17903  
 17904  // GoString returns the string representation.
 17905  //
 17906  // API parameter values that are decorated as "sensitive" in the API will not
 17907  // be included in the string output. The member name will be present, but the
 17908  // value will be replaced with "sensitive".
 17909  func (s VirtualGatewayTlsValidationContextFileTrust) GoString() string {
 17910  	return s.String()
 17911  }
 17912  
 17913  // Validate inspects the fields of the type to determine if they are valid.
 17914  func (s *VirtualGatewayTlsValidationContextFileTrust) Validate() error {
 17915  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayTlsValidationContextFileTrust"}
 17916  	if s.CertificateChain == nil {
 17917  		invalidParams.Add(request.NewErrParamRequired("CertificateChain"))
 17918  	}
 17919  	if s.CertificateChain != nil && len(*s.CertificateChain) < 1 {
 17920  		invalidParams.Add(request.NewErrParamMinLen("CertificateChain", 1))
 17921  	}
 17922  
 17923  	if invalidParams.Len() > 0 {
 17924  		return invalidParams
 17925  	}
 17926  	return nil
 17927  }
 17928  
 17929  // SetCertificateChain sets the CertificateChain field's value.
 17930  func (s *VirtualGatewayTlsValidationContextFileTrust) SetCertificateChain(v string) *VirtualGatewayTlsValidationContextFileTrust {
 17931  	s.CertificateChain = &v
 17932  	return s
 17933  }
 17934  
 17935  // An object that represents a virtual gateway's listener's Transport Layer
 17936  // Security (TLS) Secret Discovery Service validation context trust. The proxy
 17937  // must be configured with a local SDS provider via a Unix Domain Socket. See
 17938  // App Mesh TLS documentation (https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html)
 17939  // for more info.
 17940  type VirtualGatewayTlsValidationContextSdsTrust struct {
 17941  	_ struct{} `type:"structure"`
 17942  
 17943  	// A reference to an object that represents the name of the secret for a virtual
 17944  	// gateway's Transport Layer Security (TLS) Secret Discovery Service validation
 17945  	// context trust.
 17946  	//
 17947  	// SecretName is a required field
 17948  	SecretName *string `locationName:"secretName" type:"string" required:"true"`
 17949  }
 17950  
 17951  // String returns the string representation.
 17952  //
 17953  // API parameter values that are decorated as "sensitive" in the API will not
 17954  // be included in the string output. The member name will be present, but the
 17955  // value will be replaced with "sensitive".
 17956  func (s VirtualGatewayTlsValidationContextSdsTrust) String() string {
 17957  	return awsutil.Prettify(s)
 17958  }
 17959  
 17960  // GoString returns the string representation.
 17961  //
 17962  // API parameter values that are decorated as "sensitive" in the API will not
 17963  // be included in the string output. The member name will be present, but the
 17964  // value will be replaced with "sensitive".
 17965  func (s VirtualGatewayTlsValidationContextSdsTrust) GoString() string {
 17966  	return s.String()
 17967  }
 17968  
 17969  // Validate inspects the fields of the type to determine if they are valid.
 17970  func (s *VirtualGatewayTlsValidationContextSdsTrust) Validate() error {
 17971  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayTlsValidationContextSdsTrust"}
 17972  	if s.SecretName == nil {
 17973  		invalidParams.Add(request.NewErrParamRequired("SecretName"))
 17974  	}
 17975  
 17976  	if invalidParams.Len() > 0 {
 17977  		return invalidParams
 17978  	}
 17979  	return nil
 17980  }
 17981  
 17982  // SetSecretName sets the SecretName field's value.
 17983  func (s *VirtualGatewayTlsValidationContextSdsTrust) SetSecretName(v string) *VirtualGatewayTlsValidationContextSdsTrust {
 17984  	s.SecretName = &v
 17985  	return s
 17986  }
 17987  
 17988  // An object that represents a Transport Layer Security (TLS) validation context
 17989  // trust.
 17990  type VirtualGatewayTlsValidationContextTrust struct {
 17991  	_ struct{} `type:"structure"`
 17992  
 17993  	// A reference to an object that represents a Transport Layer Security (TLS)
 17994  	// validation context trust for an Certificate Manager certificate.
 17995  	Acm *VirtualGatewayTlsValidationContextAcmTrust `locationName:"acm" type:"structure"`
 17996  
 17997  	// An object that represents a Transport Layer Security (TLS) validation context
 17998  	// trust for a local file.
 17999  	File *VirtualGatewayTlsValidationContextFileTrust `locationName:"file" type:"structure"`
 18000  
 18001  	// A reference to an object that represents a virtual gateway's Transport Layer
 18002  	// Security (TLS) Secret Discovery Service validation context trust.
 18003  	Sds *VirtualGatewayTlsValidationContextSdsTrust `locationName:"sds" type:"structure"`
 18004  }
 18005  
 18006  // String returns the string representation.
 18007  //
 18008  // API parameter values that are decorated as "sensitive" in the API will not
 18009  // be included in the string output. The member name will be present, but the
 18010  // value will be replaced with "sensitive".
 18011  func (s VirtualGatewayTlsValidationContextTrust) String() string {
 18012  	return awsutil.Prettify(s)
 18013  }
 18014  
 18015  // GoString returns the string representation.
 18016  //
 18017  // API parameter values that are decorated as "sensitive" in the API will not
 18018  // be included in the string output. The member name will be present, but the
 18019  // value will be replaced with "sensitive".
 18020  func (s VirtualGatewayTlsValidationContextTrust) GoString() string {
 18021  	return s.String()
 18022  }
 18023  
 18024  // Validate inspects the fields of the type to determine if they are valid.
 18025  func (s *VirtualGatewayTlsValidationContextTrust) Validate() error {
 18026  	invalidParams := request.ErrInvalidParams{Context: "VirtualGatewayTlsValidationContextTrust"}
 18027  	if s.Acm != nil {
 18028  		if err := s.Acm.Validate(); err != nil {
 18029  			invalidParams.AddNested("Acm", err.(request.ErrInvalidParams))
 18030  		}
 18031  	}
 18032  	if s.File != nil {
 18033  		if err := s.File.Validate(); err != nil {
 18034  			invalidParams.AddNested("File", err.(request.ErrInvalidParams))
 18035  		}
 18036  	}
 18037  	if s.Sds != nil {
 18038  		if err := s.Sds.Validate(); err != nil {
 18039  			invalidParams.AddNested("Sds", err.(request.ErrInvalidParams))
 18040  		}
 18041  	}
 18042  
 18043  	if invalidParams.Len() > 0 {
 18044  		return invalidParams
 18045  	}
 18046  	return nil
 18047  }
 18048  
 18049  // SetAcm sets the Acm field's value.
 18050  func (s *VirtualGatewayTlsValidationContextTrust) SetAcm(v *VirtualGatewayTlsValidationContextAcmTrust) *VirtualGatewayTlsValidationContextTrust {
 18051  	s.Acm = v
 18052  	return s
 18053  }
 18054  
 18055  // SetFile sets the File field's value.
 18056  func (s *VirtualGatewayTlsValidationContextTrust) SetFile(v *VirtualGatewayTlsValidationContextFileTrust) *VirtualGatewayTlsValidationContextTrust {
 18057  	s.File = v
 18058  	return s
 18059  }
 18060  
 18061  // SetSds sets the Sds field's value.
 18062  func (s *VirtualGatewayTlsValidationContextTrust) SetSds(v *VirtualGatewayTlsValidationContextSdsTrust) *VirtualGatewayTlsValidationContextTrust {
 18063  	s.Sds = v
 18064  	return s
 18065  }
 18066  
 18067  // An object that represents the type of virtual node connection pool.
 18068  //
 18069  // Only one protocol is used at a time and should be the same protocol as the
 18070  // one chosen under port mapping.
 18071  //
 18072  // If not present the default value for maxPendingRequests is 2147483647.
 18073  type VirtualNodeConnectionPool struct {
 18074  	_ struct{} `type:"structure"`
 18075  
 18076  	// An object that represents a type of connection pool.
 18077  	Grpc *VirtualNodeGrpcConnectionPool `locationName:"grpc" type:"structure"`
 18078  
 18079  	// An object that represents a type of connection pool.
 18080  	Http *VirtualNodeHttpConnectionPool `locationName:"http" type:"structure"`
 18081  
 18082  	// An object that represents a type of connection pool.
 18083  	Http2 *VirtualNodeHttp2ConnectionPool `locationName:"http2" type:"structure"`
 18084  
 18085  	// An object that represents a type of connection pool.
 18086  	Tcp *VirtualNodeTcpConnectionPool `locationName:"tcp" type:"structure"`
 18087  }
 18088  
 18089  // String returns the string representation.
 18090  //
 18091  // API parameter values that are decorated as "sensitive" in the API will not
 18092  // be included in the string output. The member name will be present, but the
 18093  // value will be replaced with "sensitive".
 18094  func (s VirtualNodeConnectionPool) String() string {
 18095  	return awsutil.Prettify(s)
 18096  }
 18097  
 18098  // GoString returns the string representation.
 18099  //
 18100  // API parameter values that are decorated as "sensitive" in the API will not
 18101  // be included in the string output. The member name will be present, but the
 18102  // value will be replaced with "sensitive".
 18103  func (s VirtualNodeConnectionPool) GoString() string {
 18104  	return s.String()
 18105  }
 18106  
 18107  // Validate inspects the fields of the type to determine if they are valid.
 18108  func (s *VirtualNodeConnectionPool) Validate() error {
 18109  	invalidParams := request.ErrInvalidParams{Context: "VirtualNodeConnectionPool"}
 18110  	if s.Grpc != nil {
 18111  		if err := s.Grpc.Validate(); err != nil {
 18112  			invalidParams.AddNested("Grpc", err.(request.ErrInvalidParams))
 18113  		}
 18114  	}
 18115  	if s.Http != nil {
 18116  		if err := s.Http.Validate(); err != nil {
 18117  			invalidParams.AddNested("Http", err.(request.ErrInvalidParams))
 18118  		}
 18119  	}
 18120  	if s.Http2 != nil {
 18121  		if err := s.Http2.Validate(); err != nil {
 18122  			invalidParams.AddNested("Http2", err.(request.ErrInvalidParams))
 18123  		}
 18124  	}
 18125  	if s.Tcp != nil {
 18126  		if err := s.Tcp.Validate(); err != nil {
 18127  			invalidParams.AddNested("Tcp", err.(request.ErrInvalidParams))
 18128  		}
 18129  	}
 18130  
 18131  	if invalidParams.Len() > 0 {
 18132  		return invalidParams
 18133  	}
 18134  	return nil
 18135  }
 18136  
 18137  // SetGrpc sets the Grpc field's value.
 18138  func (s *VirtualNodeConnectionPool) SetGrpc(v *VirtualNodeGrpcConnectionPool) *VirtualNodeConnectionPool {
 18139  	s.Grpc = v
 18140  	return s
 18141  }
 18142  
 18143  // SetHttp sets the Http field's value.
 18144  func (s *VirtualNodeConnectionPool) SetHttp(v *VirtualNodeHttpConnectionPool) *VirtualNodeConnectionPool {
 18145  	s.Http = v
 18146  	return s
 18147  }
 18148  
 18149  // SetHttp2 sets the Http2 field's value.
 18150  func (s *VirtualNodeConnectionPool) SetHttp2(v *VirtualNodeHttp2ConnectionPool) *VirtualNodeConnectionPool {
 18151  	s.Http2 = v
 18152  	return s
 18153  }
 18154  
 18155  // SetTcp sets the Tcp field's value.
 18156  func (s *VirtualNodeConnectionPool) SetTcp(v *VirtualNodeTcpConnectionPool) *VirtualNodeConnectionPool {
 18157  	s.Tcp = v
 18158  	return s
 18159  }
 18160  
 18161  // An object that represents a virtual node returned by a describe operation.
 18162  type VirtualNodeData struct {
 18163  	_ struct{} `type:"structure"`
 18164  
 18165  	// The name of the service mesh that the virtual node resides in.
 18166  	//
 18167  	// MeshName is a required field
 18168  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
 18169  
 18170  	// The associated metadata for the virtual node.
 18171  	//
 18172  	// Metadata is a required field
 18173  	Metadata *ResourceMetadata `locationName:"metadata" type:"structure" required:"true"`
 18174  
 18175  	// The specifications of the virtual node.
 18176  	//
 18177  	// Spec is a required field
 18178  	Spec *VirtualNodeSpec `locationName:"spec" type:"structure" required:"true"`
 18179  
 18180  	// The current status for the virtual node.
 18181  	//
 18182  	// Status is a required field
 18183  	Status *VirtualNodeStatus `locationName:"status" type:"structure" required:"true"`
 18184  
 18185  	// The name of the virtual node.
 18186  	//
 18187  	// VirtualNodeName is a required field
 18188  	VirtualNodeName *string `locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
 18189  }
 18190  
 18191  // String returns the string representation.
 18192  //
 18193  // API parameter values that are decorated as "sensitive" in the API will not
 18194  // be included in the string output. The member name will be present, but the
 18195  // value will be replaced with "sensitive".
 18196  func (s VirtualNodeData) String() string {
 18197  	return awsutil.Prettify(s)
 18198  }
 18199  
 18200  // GoString returns the string representation.
 18201  //
 18202  // API parameter values that are decorated as "sensitive" in the API will not
 18203  // be included in the string output. The member name will be present, but the
 18204  // value will be replaced with "sensitive".
 18205  func (s VirtualNodeData) GoString() string {
 18206  	return s.String()
 18207  }
 18208  
 18209  // SetMeshName sets the MeshName field's value.
 18210  func (s *VirtualNodeData) SetMeshName(v string) *VirtualNodeData {
 18211  	s.MeshName = &v
 18212  	return s
 18213  }
 18214  
 18215  // SetMetadata sets the Metadata field's value.
 18216  func (s *VirtualNodeData) SetMetadata(v *ResourceMetadata) *VirtualNodeData {
 18217  	s.Metadata = v
 18218  	return s
 18219  }
 18220  
 18221  // SetSpec sets the Spec field's value.
 18222  func (s *VirtualNodeData) SetSpec(v *VirtualNodeSpec) *VirtualNodeData {
 18223  	s.Spec = v
 18224  	return s
 18225  }
 18226  
 18227  // SetStatus sets the Status field's value.
 18228  func (s *VirtualNodeData) SetStatus(v *VirtualNodeStatus) *VirtualNodeData {
 18229  	s.Status = v
 18230  	return s
 18231  }
 18232  
 18233  // SetVirtualNodeName sets the VirtualNodeName field's value.
 18234  func (s *VirtualNodeData) SetVirtualNodeName(v string) *VirtualNodeData {
 18235  	s.VirtualNodeName = &v
 18236  	return s
 18237  }
 18238  
 18239  // An object that represents a type of connection pool.
 18240  type VirtualNodeGrpcConnectionPool struct {
 18241  	_ struct{} `type:"structure"`
 18242  
 18243  	// Maximum number of inflight requests Envoy can concurrently support across
 18244  	// hosts in upstream cluster.
 18245  	//
 18246  	// MaxRequests is a required field
 18247  	MaxRequests *int64 `locationName:"maxRequests" min:"1" type:"integer" required:"true"`
 18248  }
 18249  
 18250  // String returns the string representation.
 18251  //
 18252  // API parameter values that are decorated as "sensitive" in the API will not
 18253  // be included in the string output. The member name will be present, but the
 18254  // value will be replaced with "sensitive".
 18255  func (s VirtualNodeGrpcConnectionPool) String() string {
 18256  	return awsutil.Prettify(s)
 18257  }
 18258  
 18259  // GoString returns the string representation.
 18260  //
 18261  // API parameter values that are decorated as "sensitive" in the API will not
 18262  // be included in the string output. The member name will be present, but the
 18263  // value will be replaced with "sensitive".
 18264  func (s VirtualNodeGrpcConnectionPool) GoString() string {
 18265  	return s.String()
 18266  }
 18267  
 18268  // Validate inspects the fields of the type to determine if they are valid.
 18269  func (s *VirtualNodeGrpcConnectionPool) Validate() error {
 18270  	invalidParams := request.ErrInvalidParams{Context: "VirtualNodeGrpcConnectionPool"}
 18271  	if s.MaxRequests == nil {
 18272  		invalidParams.Add(request.NewErrParamRequired("MaxRequests"))
 18273  	}
 18274  	if s.MaxRequests != nil && *s.MaxRequests < 1 {
 18275  		invalidParams.Add(request.NewErrParamMinValue("MaxRequests", 1))
 18276  	}
 18277  
 18278  	if invalidParams.Len() > 0 {
 18279  		return invalidParams
 18280  	}
 18281  	return nil
 18282  }
 18283  
 18284  // SetMaxRequests sets the MaxRequests field's value.
 18285  func (s *VirtualNodeGrpcConnectionPool) SetMaxRequests(v int64) *VirtualNodeGrpcConnectionPool {
 18286  	s.MaxRequests = &v
 18287  	return s
 18288  }
 18289  
 18290  // An object that represents a type of connection pool.
 18291  type VirtualNodeHttp2ConnectionPool struct {
 18292  	_ struct{} `type:"structure"`
 18293  
 18294  	// Maximum number of inflight requests Envoy can concurrently support across
 18295  	// hosts in upstream cluster.
 18296  	//
 18297  	// MaxRequests is a required field
 18298  	MaxRequests *int64 `locationName:"maxRequests" min:"1" type:"integer" required:"true"`
 18299  }
 18300  
 18301  // String returns the string representation.
 18302  //
 18303  // API parameter values that are decorated as "sensitive" in the API will not
 18304  // be included in the string output. The member name will be present, but the
 18305  // value will be replaced with "sensitive".
 18306  func (s VirtualNodeHttp2ConnectionPool) String() string {
 18307  	return awsutil.Prettify(s)
 18308  }
 18309  
 18310  // GoString returns the string representation.
 18311  //
 18312  // API parameter values that are decorated as "sensitive" in the API will not
 18313  // be included in the string output. The member name will be present, but the
 18314  // value will be replaced with "sensitive".
 18315  func (s VirtualNodeHttp2ConnectionPool) GoString() string {
 18316  	return s.String()
 18317  }
 18318  
 18319  // Validate inspects the fields of the type to determine if they are valid.
 18320  func (s *VirtualNodeHttp2ConnectionPool) Validate() error {
 18321  	invalidParams := request.ErrInvalidParams{Context: "VirtualNodeHttp2ConnectionPool"}
 18322  	if s.MaxRequests == nil {
 18323  		invalidParams.Add(request.NewErrParamRequired("MaxRequests"))
 18324  	}
 18325  	if s.MaxRequests != nil && *s.MaxRequests < 1 {
 18326  		invalidParams.Add(request.NewErrParamMinValue("MaxRequests", 1))
 18327  	}
 18328  
 18329  	if invalidParams.Len() > 0 {
 18330  		return invalidParams
 18331  	}
 18332  	return nil
 18333  }
 18334  
 18335  // SetMaxRequests sets the MaxRequests field's value.
 18336  func (s *VirtualNodeHttp2ConnectionPool) SetMaxRequests(v int64) *VirtualNodeHttp2ConnectionPool {
 18337  	s.MaxRequests = &v
 18338  	return s
 18339  }
 18340  
 18341  // An object that represents a type of connection pool.
 18342  type VirtualNodeHttpConnectionPool struct {
 18343  	_ struct{} `type:"structure"`
 18344  
 18345  	// Maximum number of outbound TCP connections Envoy can establish concurrently
 18346  	// with all hosts in upstream cluster.
 18347  	//
 18348  	// MaxConnections is a required field
 18349  	MaxConnections *int64 `locationName:"maxConnections" min:"1" type:"integer" required:"true"`
 18350  
 18351  	// Number of overflowing requests after max_connections Envoy will queue to
 18352  	// upstream cluster.
 18353  	MaxPendingRequests *int64 `locationName:"maxPendingRequests" min:"1" type:"integer"`
 18354  }
 18355  
 18356  // String returns the string representation.
 18357  //
 18358  // API parameter values that are decorated as "sensitive" in the API will not
 18359  // be included in the string output. The member name will be present, but the
 18360  // value will be replaced with "sensitive".
 18361  func (s VirtualNodeHttpConnectionPool) String() string {
 18362  	return awsutil.Prettify(s)
 18363  }
 18364  
 18365  // GoString returns the string representation.
 18366  //
 18367  // API parameter values that are decorated as "sensitive" in the API will not
 18368  // be included in the string output. The member name will be present, but the
 18369  // value will be replaced with "sensitive".
 18370  func (s VirtualNodeHttpConnectionPool) GoString() string {
 18371  	return s.String()
 18372  }
 18373  
 18374  // Validate inspects the fields of the type to determine if they are valid.
 18375  func (s *VirtualNodeHttpConnectionPool) Validate() error {
 18376  	invalidParams := request.ErrInvalidParams{Context: "VirtualNodeHttpConnectionPool"}
 18377  	if s.MaxConnections == nil {
 18378  		invalidParams.Add(request.NewErrParamRequired("MaxConnections"))
 18379  	}
 18380  	if s.MaxConnections != nil && *s.MaxConnections < 1 {
 18381  		invalidParams.Add(request.NewErrParamMinValue("MaxConnections", 1))
 18382  	}
 18383  	if s.MaxPendingRequests != nil && *s.MaxPendingRequests < 1 {
 18384  		invalidParams.Add(request.NewErrParamMinValue("MaxPendingRequests", 1))
 18385  	}
 18386  
 18387  	if invalidParams.Len() > 0 {
 18388  		return invalidParams
 18389  	}
 18390  	return nil
 18391  }
 18392  
 18393  // SetMaxConnections sets the MaxConnections field's value.
 18394  func (s *VirtualNodeHttpConnectionPool) SetMaxConnections(v int64) *VirtualNodeHttpConnectionPool {
 18395  	s.MaxConnections = &v
 18396  	return s
 18397  }
 18398  
 18399  // SetMaxPendingRequests sets the MaxPendingRequests field's value.
 18400  func (s *VirtualNodeHttpConnectionPool) SetMaxPendingRequests(v int64) *VirtualNodeHttpConnectionPool {
 18401  	s.MaxPendingRequests = &v
 18402  	return s
 18403  }
 18404  
 18405  // An object that represents a virtual node returned by a list operation.
 18406  type VirtualNodeRef struct {
 18407  	_ struct{} `type:"structure"`
 18408  
 18409  	// The full Amazon Resource Name (ARN) for the virtual node.
 18410  	//
 18411  	// Arn is a required field
 18412  	Arn *string `locationName:"arn" type:"string" required:"true"`
 18413  
 18414  	// The Unix epoch timestamp in seconds for when the resource was created.
 18415  	//
 18416  	// CreatedAt is a required field
 18417  	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`
 18418  
 18419  	// The Unix epoch timestamp in seconds for when the resource was last updated.
 18420  	//
 18421  	// LastUpdatedAt is a required field
 18422  	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" required:"true"`
 18423  
 18424  	// The name of the service mesh that the virtual node resides in.
 18425  	//
 18426  	// MeshName is a required field
 18427  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
 18428  
 18429  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 18430  	// your own, then it's the ID of the account that shared the mesh with your
 18431  	// account. For more information about mesh sharing, see Working with shared
 18432  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 18433  	//
 18434  	// MeshOwner is a required field
 18435  	MeshOwner *string `locationName:"meshOwner" min:"12" type:"string" required:"true"`
 18436  
 18437  	// The AWS IAM account ID of the resource owner. If the account ID is not your
 18438  	// own, then it's the ID of the mesh owner or of another account that the mesh
 18439  	// is shared with. For more information about mesh sharing, see Working with
 18440  	// shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 18441  	//
 18442  	// ResourceOwner is a required field
 18443  	ResourceOwner *string `locationName:"resourceOwner" min:"12" type:"string" required:"true"`
 18444  
 18445  	// The version of the resource. Resources are created at version 1, and this
 18446  	// version is incremented each time that they're updated.
 18447  	//
 18448  	// Version is a required field
 18449  	Version *int64 `locationName:"version" type:"long" required:"true"`
 18450  
 18451  	// The name of the virtual node.
 18452  	//
 18453  	// VirtualNodeName is a required field
 18454  	VirtualNodeName *string `locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
 18455  }
 18456  
 18457  // String returns the string representation.
 18458  //
 18459  // API parameter values that are decorated as "sensitive" in the API will not
 18460  // be included in the string output. The member name will be present, but the
 18461  // value will be replaced with "sensitive".
 18462  func (s VirtualNodeRef) String() string {
 18463  	return awsutil.Prettify(s)
 18464  }
 18465  
 18466  // GoString returns the string representation.
 18467  //
 18468  // API parameter values that are decorated as "sensitive" in the API will not
 18469  // be included in the string output. The member name will be present, but the
 18470  // value will be replaced with "sensitive".
 18471  func (s VirtualNodeRef) GoString() string {
 18472  	return s.String()
 18473  }
 18474  
 18475  // SetArn sets the Arn field's value.
 18476  func (s *VirtualNodeRef) SetArn(v string) *VirtualNodeRef {
 18477  	s.Arn = &v
 18478  	return s
 18479  }
 18480  
 18481  // SetCreatedAt sets the CreatedAt field's value.
 18482  func (s *VirtualNodeRef) SetCreatedAt(v time.Time) *VirtualNodeRef {
 18483  	s.CreatedAt = &v
 18484  	return s
 18485  }
 18486  
 18487  // SetLastUpdatedAt sets the LastUpdatedAt field's value.
 18488  func (s *VirtualNodeRef) SetLastUpdatedAt(v time.Time) *VirtualNodeRef {
 18489  	s.LastUpdatedAt = &v
 18490  	return s
 18491  }
 18492  
 18493  // SetMeshName sets the MeshName field's value.
 18494  func (s *VirtualNodeRef) SetMeshName(v string) *VirtualNodeRef {
 18495  	s.MeshName = &v
 18496  	return s
 18497  }
 18498  
 18499  // SetMeshOwner sets the MeshOwner field's value.
 18500  func (s *VirtualNodeRef) SetMeshOwner(v string) *VirtualNodeRef {
 18501  	s.MeshOwner = &v
 18502  	return s
 18503  }
 18504  
 18505  // SetResourceOwner sets the ResourceOwner field's value.
 18506  func (s *VirtualNodeRef) SetResourceOwner(v string) *VirtualNodeRef {
 18507  	s.ResourceOwner = &v
 18508  	return s
 18509  }
 18510  
 18511  // SetVersion sets the Version field's value.
 18512  func (s *VirtualNodeRef) SetVersion(v int64) *VirtualNodeRef {
 18513  	s.Version = &v
 18514  	return s
 18515  }
 18516  
 18517  // SetVirtualNodeName sets the VirtualNodeName field's value.
 18518  func (s *VirtualNodeRef) SetVirtualNodeName(v string) *VirtualNodeRef {
 18519  	s.VirtualNodeName = &v
 18520  	return s
 18521  }
 18522  
 18523  // An object that represents a virtual node service provider.
 18524  type VirtualNodeServiceProvider struct {
 18525  	_ struct{} `type:"structure"`
 18526  
 18527  	// The name of the virtual node that is acting as a service provider.
 18528  	//
 18529  	// VirtualNodeName is a required field
 18530  	VirtualNodeName *string `locationName:"virtualNodeName" min:"1" type:"string" required:"true"`
 18531  }
 18532  
 18533  // String returns the string representation.
 18534  //
 18535  // API parameter values that are decorated as "sensitive" in the API will not
 18536  // be included in the string output. The member name will be present, but the
 18537  // value will be replaced with "sensitive".
 18538  func (s VirtualNodeServiceProvider) String() string {
 18539  	return awsutil.Prettify(s)
 18540  }
 18541  
 18542  // GoString returns the string representation.
 18543  //
 18544  // API parameter values that are decorated as "sensitive" in the API will not
 18545  // be included in the string output. The member name will be present, but the
 18546  // value will be replaced with "sensitive".
 18547  func (s VirtualNodeServiceProvider) GoString() string {
 18548  	return s.String()
 18549  }
 18550  
 18551  // Validate inspects the fields of the type to determine if they are valid.
 18552  func (s *VirtualNodeServiceProvider) Validate() error {
 18553  	invalidParams := request.ErrInvalidParams{Context: "VirtualNodeServiceProvider"}
 18554  	if s.VirtualNodeName == nil {
 18555  		invalidParams.Add(request.NewErrParamRequired("VirtualNodeName"))
 18556  	}
 18557  	if s.VirtualNodeName != nil && len(*s.VirtualNodeName) < 1 {
 18558  		invalidParams.Add(request.NewErrParamMinLen("VirtualNodeName", 1))
 18559  	}
 18560  
 18561  	if invalidParams.Len() > 0 {
 18562  		return invalidParams
 18563  	}
 18564  	return nil
 18565  }
 18566  
 18567  // SetVirtualNodeName sets the VirtualNodeName field's value.
 18568  func (s *VirtualNodeServiceProvider) SetVirtualNodeName(v string) *VirtualNodeServiceProvider {
 18569  	s.VirtualNodeName = &v
 18570  	return s
 18571  }
 18572  
 18573  // An object that represents the specification of a virtual node.
 18574  type VirtualNodeSpec struct {
 18575  	_ struct{} `type:"structure"`
 18576  
 18577  	// A reference to an object that represents the defaults for backends.
 18578  	BackendDefaults *BackendDefaults `locationName:"backendDefaults" type:"structure"`
 18579  
 18580  	// The backends that the virtual node is expected to send outbound traffic to.
 18581  	Backends []*Backend `locationName:"backends" type:"list"`
 18582  
 18583  	// The listener that the virtual node is expected to receive inbound traffic
 18584  	// from. You can specify one listener.
 18585  	Listeners []*Listener `locationName:"listeners" type:"list"`
 18586  
 18587  	// The inbound and outbound access logging information for the virtual node.
 18588  	Logging *Logging `locationName:"logging" type:"structure"`
 18589  
 18590  	// The service discovery information for the virtual node. If your virtual node
 18591  	// does not expect ingress traffic, you can omit this parameter. If you specify
 18592  	// a listener, then you must specify service discovery information.
 18593  	ServiceDiscovery *ServiceDiscovery `locationName:"serviceDiscovery" type:"structure"`
 18594  }
 18595  
 18596  // String returns the string representation.
 18597  //
 18598  // API parameter values that are decorated as "sensitive" in the API will not
 18599  // be included in the string output. The member name will be present, but the
 18600  // value will be replaced with "sensitive".
 18601  func (s VirtualNodeSpec) String() string {
 18602  	return awsutil.Prettify(s)
 18603  }
 18604  
 18605  // GoString returns the string representation.
 18606  //
 18607  // API parameter values that are decorated as "sensitive" in the API will not
 18608  // be included in the string output. The member name will be present, but the
 18609  // value will be replaced with "sensitive".
 18610  func (s VirtualNodeSpec) GoString() string {
 18611  	return s.String()
 18612  }
 18613  
 18614  // Validate inspects the fields of the type to determine if they are valid.
 18615  func (s *VirtualNodeSpec) Validate() error {
 18616  	invalidParams := request.ErrInvalidParams{Context: "VirtualNodeSpec"}
 18617  	if s.BackendDefaults != nil {
 18618  		if err := s.BackendDefaults.Validate(); err != nil {
 18619  			invalidParams.AddNested("BackendDefaults", err.(request.ErrInvalidParams))
 18620  		}
 18621  	}
 18622  	if s.Backends != nil {
 18623  		for i, v := range s.Backends {
 18624  			if v == nil {
 18625  				continue
 18626  			}
 18627  			if err := v.Validate(); err != nil {
 18628  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Backends", i), err.(request.ErrInvalidParams))
 18629  			}
 18630  		}
 18631  	}
 18632  	if s.Listeners != nil {
 18633  		for i, v := range s.Listeners {
 18634  			if v == nil {
 18635  				continue
 18636  			}
 18637  			if err := v.Validate(); err != nil {
 18638  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Listeners", i), err.(request.ErrInvalidParams))
 18639  			}
 18640  		}
 18641  	}
 18642  	if s.Logging != nil {
 18643  		if err := s.Logging.Validate(); err != nil {
 18644  			invalidParams.AddNested("Logging", err.(request.ErrInvalidParams))
 18645  		}
 18646  	}
 18647  	if s.ServiceDiscovery != nil {
 18648  		if err := s.ServiceDiscovery.Validate(); err != nil {
 18649  			invalidParams.AddNested("ServiceDiscovery", err.(request.ErrInvalidParams))
 18650  		}
 18651  	}
 18652  
 18653  	if invalidParams.Len() > 0 {
 18654  		return invalidParams
 18655  	}
 18656  	return nil
 18657  }
 18658  
 18659  // SetBackendDefaults sets the BackendDefaults field's value.
 18660  func (s *VirtualNodeSpec) SetBackendDefaults(v *BackendDefaults) *VirtualNodeSpec {
 18661  	s.BackendDefaults = v
 18662  	return s
 18663  }
 18664  
 18665  // SetBackends sets the Backends field's value.
 18666  func (s *VirtualNodeSpec) SetBackends(v []*Backend) *VirtualNodeSpec {
 18667  	s.Backends = v
 18668  	return s
 18669  }
 18670  
 18671  // SetListeners sets the Listeners field's value.
 18672  func (s *VirtualNodeSpec) SetListeners(v []*Listener) *VirtualNodeSpec {
 18673  	s.Listeners = v
 18674  	return s
 18675  }
 18676  
 18677  // SetLogging sets the Logging field's value.
 18678  func (s *VirtualNodeSpec) SetLogging(v *Logging) *VirtualNodeSpec {
 18679  	s.Logging = v
 18680  	return s
 18681  }
 18682  
 18683  // SetServiceDiscovery sets the ServiceDiscovery field's value.
 18684  func (s *VirtualNodeSpec) SetServiceDiscovery(v *ServiceDiscovery) *VirtualNodeSpec {
 18685  	s.ServiceDiscovery = v
 18686  	return s
 18687  }
 18688  
 18689  // An object that represents the current status of the virtual node.
 18690  type VirtualNodeStatus struct {
 18691  	_ struct{} `type:"structure"`
 18692  
 18693  	// The current status of the virtual node.
 18694  	//
 18695  	// Status is a required field
 18696  	Status *string `locationName:"status" type:"string" required:"true" enum:"VirtualNodeStatusCode"`
 18697  }
 18698  
 18699  // String returns the string representation.
 18700  //
 18701  // API parameter values that are decorated as "sensitive" in the API will not
 18702  // be included in the string output. The member name will be present, but the
 18703  // value will be replaced with "sensitive".
 18704  func (s VirtualNodeStatus) String() string {
 18705  	return awsutil.Prettify(s)
 18706  }
 18707  
 18708  // GoString returns the string representation.
 18709  //
 18710  // API parameter values that are decorated as "sensitive" in the API will not
 18711  // be included in the string output. The member name will be present, but the
 18712  // value will be replaced with "sensitive".
 18713  func (s VirtualNodeStatus) GoString() string {
 18714  	return s.String()
 18715  }
 18716  
 18717  // SetStatus sets the Status field's value.
 18718  func (s *VirtualNodeStatus) SetStatus(v string) *VirtualNodeStatus {
 18719  	s.Status = &v
 18720  	return s
 18721  }
 18722  
 18723  // An object that represents a type of connection pool.
 18724  type VirtualNodeTcpConnectionPool struct {
 18725  	_ struct{} `type:"structure"`
 18726  
 18727  	// Maximum number of outbound TCP connections Envoy can establish concurrently
 18728  	// with all hosts in upstream cluster.
 18729  	//
 18730  	// MaxConnections is a required field
 18731  	MaxConnections *int64 `locationName:"maxConnections" min:"1" type:"integer" required:"true"`
 18732  }
 18733  
 18734  // String returns the string representation.
 18735  //
 18736  // API parameter values that are decorated as "sensitive" in the API will not
 18737  // be included in the string output. The member name will be present, but the
 18738  // value will be replaced with "sensitive".
 18739  func (s VirtualNodeTcpConnectionPool) String() string {
 18740  	return awsutil.Prettify(s)
 18741  }
 18742  
 18743  // GoString returns the string representation.
 18744  //
 18745  // API parameter values that are decorated as "sensitive" in the API will not
 18746  // be included in the string output. The member name will be present, but the
 18747  // value will be replaced with "sensitive".
 18748  func (s VirtualNodeTcpConnectionPool) GoString() string {
 18749  	return s.String()
 18750  }
 18751  
 18752  // Validate inspects the fields of the type to determine if they are valid.
 18753  func (s *VirtualNodeTcpConnectionPool) Validate() error {
 18754  	invalidParams := request.ErrInvalidParams{Context: "VirtualNodeTcpConnectionPool"}
 18755  	if s.MaxConnections == nil {
 18756  		invalidParams.Add(request.NewErrParamRequired("MaxConnections"))
 18757  	}
 18758  	if s.MaxConnections != nil && *s.MaxConnections < 1 {
 18759  		invalidParams.Add(request.NewErrParamMinValue("MaxConnections", 1))
 18760  	}
 18761  
 18762  	if invalidParams.Len() > 0 {
 18763  		return invalidParams
 18764  	}
 18765  	return nil
 18766  }
 18767  
 18768  // SetMaxConnections sets the MaxConnections field's value.
 18769  func (s *VirtualNodeTcpConnectionPool) SetMaxConnections(v int64) *VirtualNodeTcpConnectionPool {
 18770  	s.MaxConnections = &v
 18771  	return s
 18772  }
 18773  
 18774  // An object that represents a virtual router returned by a describe operation.
 18775  type VirtualRouterData struct {
 18776  	_ struct{} `type:"structure"`
 18777  
 18778  	// The name of the service mesh that the virtual router resides in.
 18779  	//
 18780  	// MeshName is a required field
 18781  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
 18782  
 18783  	// The associated metadata for the virtual router.
 18784  	//
 18785  	// Metadata is a required field
 18786  	Metadata *ResourceMetadata `locationName:"metadata" type:"structure" required:"true"`
 18787  
 18788  	// The specifications of the virtual router.
 18789  	//
 18790  	// Spec is a required field
 18791  	Spec *VirtualRouterSpec `locationName:"spec" type:"structure" required:"true"`
 18792  
 18793  	// The current status of the virtual router.
 18794  	//
 18795  	// Status is a required field
 18796  	Status *VirtualRouterStatus `locationName:"status" type:"structure" required:"true"`
 18797  
 18798  	// The name of the virtual router.
 18799  	//
 18800  	// VirtualRouterName is a required field
 18801  	VirtualRouterName *string `locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
 18802  }
 18803  
 18804  // String returns the string representation.
 18805  //
 18806  // API parameter values that are decorated as "sensitive" in the API will not
 18807  // be included in the string output. The member name will be present, but the
 18808  // value will be replaced with "sensitive".
 18809  func (s VirtualRouterData) String() string {
 18810  	return awsutil.Prettify(s)
 18811  }
 18812  
 18813  // GoString returns the string representation.
 18814  //
 18815  // API parameter values that are decorated as "sensitive" in the API will not
 18816  // be included in the string output. The member name will be present, but the
 18817  // value will be replaced with "sensitive".
 18818  func (s VirtualRouterData) GoString() string {
 18819  	return s.String()
 18820  }
 18821  
 18822  // SetMeshName sets the MeshName field's value.
 18823  func (s *VirtualRouterData) SetMeshName(v string) *VirtualRouterData {
 18824  	s.MeshName = &v
 18825  	return s
 18826  }
 18827  
 18828  // SetMetadata sets the Metadata field's value.
 18829  func (s *VirtualRouterData) SetMetadata(v *ResourceMetadata) *VirtualRouterData {
 18830  	s.Metadata = v
 18831  	return s
 18832  }
 18833  
 18834  // SetSpec sets the Spec field's value.
 18835  func (s *VirtualRouterData) SetSpec(v *VirtualRouterSpec) *VirtualRouterData {
 18836  	s.Spec = v
 18837  	return s
 18838  }
 18839  
 18840  // SetStatus sets the Status field's value.
 18841  func (s *VirtualRouterData) SetStatus(v *VirtualRouterStatus) *VirtualRouterData {
 18842  	s.Status = v
 18843  	return s
 18844  }
 18845  
 18846  // SetVirtualRouterName sets the VirtualRouterName field's value.
 18847  func (s *VirtualRouterData) SetVirtualRouterName(v string) *VirtualRouterData {
 18848  	s.VirtualRouterName = &v
 18849  	return s
 18850  }
 18851  
 18852  // An object that represents a virtual router listener.
 18853  type VirtualRouterListener struct {
 18854  	_ struct{} `type:"structure"`
 18855  
 18856  	// An object that represents a port mapping.
 18857  	//
 18858  	// PortMapping is a required field
 18859  	PortMapping *PortMapping `locationName:"portMapping" type:"structure" required:"true"`
 18860  }
 18861  
 18862  // String returns the string representation.
 18863  //
 18864  // API parameter values that are decorated as "sensitive" in the API will not
 18865  // be included in the string output. The member name will be present, but the
 18866  // value will be replaced with "sensitive".
 18867  func (s VirtualRouterListener) String() string {
 18868  	return awsutil.Prettify(s)
 18869  }
 18870  
 18871  // GoString returns the string representation.
 18872  //
 18873  // API parameter values that are decorated as "sensitive" in the API will not
 18874  // be included in the string output. The member name will be present, but the
 18875  // value will be replaced with "sensitive".
 18876  func (s VirtualRouterListener) GoString() string {
 18877  	return s.String()
 18878  }
 18879  
 18880  // Validate inspects the fields of the type to determine if they are valid.
 18881  func (s *VirtualRouterListener) Validate() error {
 18882  	invalidParams := request.ErrInvalidParams{Context: "VirtualRouterListener"}
 18883  	if s.PortMapping == nil {
 18884  		invalidParams.Add(request.NewErrParamRequired("PortMapping"))
 18885  	}
 18886  	if s.PortMapping != nil {
 18887  		if err := s.PortMapping.Validate(); err != nil {
 18888  			invalidParams.AddNested("PortMapping", err.(request.ErrInvalidParams))
 18889  		}
 18890  	}
 18891  
 18892  	if invalidParams.Len() > 0 {
 18893  		return invalidParams
 18894  	}
 18895  	return nil
 18896  }
 18897  
 18898  // SetPortMapping sets the PortMapping field's value.
 18899  func (s *VirtualRouterListener) SetPortMapping(v *PortMapping) *VirtualRouterListener {
 18900  	s.PortMapping = v
 18901  	return s
 18902  }
 18903  
 18904  // An object that represents a virtual router returned by a list operation.
 18905  type VirtualRouterRef struct {
 18906  	_ struct{} `type:"structure"`
 18907  
 18908  	// The full Amazon Resource Name (ARN) for the virtual router.
 18909  	//
 18910  	// Arn is a required field
 18911  	Arn *string `locationName:"arn" type:"string" required:"true"`
 18912  
 18913  	// The Unix epoch timestamp in seconds for when the resource was created.
 18914  	//
 18915  	// CreatedAt is a required field
 18916  	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`
 18917  
 18918  	// The Unix epoch timestamp in seconds for when the resource was last updated.
 18919  	//
 18920  	// LastUpdatedAt is a required field
 18921  	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" required:"true"`
 18922  
 18923  	// The name of the service mesh that the virtual router resides in.
 18924  	//
 18925  	// MeshName is a required field
 18926  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
 18927  
 18928  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 18929  	// your own, then it's the ID of the account that shared the mesh with your
 18930  	// account. For more information about mesh sharing, see Working with shared
 18931  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 18932  	//
 18933  	// MeshOwner is a required field
 18934  	MeshOwner *string `locationName:"meshOwner" min:"12" type:"string" required:"true"`
 18935  
 18936  	// The AWS IAM account ID of the resource owner. If the account ID is not your
 18937  	// own, then it's the ID of the mesh owner or of another account that the mesh
 18938  	// is shared with. For more information about mesh sharing, see Working with
 18939  	// shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 18940  	//
 18941  	// ResourceOwner is a required field
 18942  	ResourceOwner *string `locationName:"resourceOwner" min:"12" type:"string" required:"true"`
 18943  
 18944  	// The version of the resource. Resources are created at version 1, and this
 18945  	// version is incremented each time that they're updated.
 18946  	//
 18947  	// Version is a required field
 18948  	Version *int64 `locationName:"version" type:"long" required:"true"`
 18949  
 18950  	// The name of the virtual router.
 18951  	//
 18952  	// VirtualRouterName is a required field
 18953  	VirtualRouterName *string `locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
 18954  }
 18955  
 18956  // String returns the string representation.
 18957  //
 18958  // API parameter values that are decorated as "sensitive" in the API will not
 18959  // be included in the string output. The member name will be present, but the
 18960  // value will be replaced with "sensitive".
 18961  func (s VirtualRouterRef) String() string {
 18962  	return awsutil.Prettify(s)
 18963  }
 18964  
 18965  // GoString returns the string representation.
 18966  //
 18967  // API parameter values that are decorated as "sensitive" in the API will not
 18968  // be included in the string output. The member name will be present, but the
 18969  // value will be replaced with "sensitive".
 18970  func (s VirtualRouterRef) GoString() string {
 18971  	return s.String()
 18972  }
 18973  
 18974  // SetArn sets the Arn field's value.
 18975  func (s *VirtualRouterRef) SetArn(v string) *VirtualRouterRef {
 18976  	s.Arn = &v
 18977  	return s
 18978  }
 18979  
 18980  // SetCreatedAt sets the CreatedAt field's value.
 18981  func (s *VirtualRouterRef) SetCreatedAt(v time.Time) *VirtualRouterRef {
 18982  	s.CreatedAt = &v
 18983  	return s
 18984  }
 18985  
 18986  // SetLastUpdatedAt sets the LastUpdatedAt field's value.
 18987  func (s *VirtualRouterRef) SetLastUpdatedAt(v time.Time) *VirtualRouterRef {
 18988  	s.LastUpdatedAt = &v
 18989  	return s
 18990  }
 18991  
 18992  // SetMeshName sets the MeshName field's value.
 18993  func (s *VirtualRouterRef) SetMeshName(v string) *VirtualRouterRef {
 18994  	s.MeshName = &v
 18995  	return s
 18996  }
 18997  
 18998  // SetMeshOwner sets the MeshOwner field's value.
 18999  func (s *VirtualRouterRef) SetMeshOwner(v string) *VirtualRouterRef {
 19000  	s.MeshOwner = &v
 19001  	return s
 19002  }
 19003  
 19004  // SetResourceOwner sets the ResourceOwner field's value.
 19005  func (s *VirtualRouterRef) SetResourceOwner(v string) *VirtualRouterRef {
 19006  	s.ResourceOwner = &v
 19007  	return s
 19008  }
 19009  
 19010  // SetVersion sets the Version field's value.
 19011  func (s *VirtualRouterRef) SetVersion(v int64) *VirtualRouterRef {
 19012  	s.Version = &v
 19013  	return s
 19014  }
 19015  
 19016  // SetVirtualRouterName sets the VirtualRouterName field's value.
 19017  func (s *VirtualRouterRef) SetVirtualRouterName(v string) *VirtualRouterRef {
 19018  	s.VirtualRouterName = &v
 19019  	return s
 19020  }
 19021  
 19022  // An object that represents a virtual node service provider.
 19023  type VirtualRouterServiceProvider struct {
 19024  	_ struct{} `type:"structure"`
 19025  
 19026  	// The name of the virtual router that is acting as a service provider.
 19027  	//
 19028  	// VirtualRouterName is a required field
 19029  	VirtualRouterName *string `locationName:"virtualRouterName" min:"1" type:"string" required:"true"`
 19030  }
 19031  
 19032  // String returns the string representation.
 19033  //
 19034  // API parameter values that are decorated as "sensitive" in the API will not
 19035  // be included in the string output. The member name will be present, but the
 19036  // value will be replaced with "sensitive".
 19037  func (s VirtualRouterServiceProvider) String() string {
 19038  	return awsutil.Prettify(s)
 19039  }
 19040  
 19041  // GoString returns the string representation.
 19042  //
 19043  // API parameter values that are decorated as "sensitive" in the API will not
 19044  // be included in the string output. The member name will be present, but the
 19045  // value will be replaced with "sensitive".
 19046  func (s VirtualRouterServiceProvider) GoString() string {
 19047  	return s.String()
 19048  }
 19049  
 19050  // Validate inspects the fields of the type to determine if they are valid.
 19051  func (s *VirtualRouterServiceProvider) Validate() error {
 19052  	invalidParams := request.ErrInvalidParams{Context: "VirtualRouterServiceProvider"}
 19053  	if s.VirtualRouterName == nil {
 19054  		invalidParams.Add(request.NewErrParamRequired("VirtualRouterName"))
 19055  	}
 19056  	if s.VirtualRouterName != nil && len(*s.VirtualRouterName) < 1 {
 19057  		invalidParams.Add(request.NewErrParamMinLen("VirtualRouterName", 1))
 19058  	}
 19059  
 19060  	if invalidParams.Len() > 0 {
 19061  		return invalidParams
 19062  	}
 19063  	return nil
 19064  }
 19065  
 19066  // SetVirtualRouterName sets the VirtualRouterName field's value.
 19067  func (s *VirtualRouterServiceProvider) SetVirtualRouterName(v string) *VirtualRouterServiceProvider {
 19068  	s.VirtualRouterName = &v
 19069  	return s
 19070  }
 19071  
 19072  // An object that represents the specification of a virtual router.
 19073  type VirtualRouterSpec struct {
 19074  	_ struct{} `type:"structure"`
 19075  
 19076  	// The listeners that the virtual router is expected to receive inbound traffic
 19077  	// from. You can specify one listener.
 19078  	Listeners []*VirtualRouterListener `locationName:"listeners" min:"1" type:"list"`
 19079  }
 19080  
 19081  // String returns the string representation.
 19082  //
 19083  // API parameter values that are decorated as "sensitive" in the API will not
 19084  // be included in the string output. The member name will be present, but the
 19085  // value will be replaced with "sensitive".
 19086  func (s VirtualRouterSpec) String() string {
 19087  	return awsutil.Prettify(s)
 19088  }
 19089  
 19090  // GoString returns the string representation.
 19091  //
 19092  // API parameter values that are decorated as "sensitive" in the API will not
 19093  // be included in the string output. The member name will be present, but the
 19094  // value will be replaced with "sensitive".
 19095  func (s VirtualRouterSpec) GoString() string {
 19096  	return s.String()
 19097  }
 19098  
 19099  // Validate inspects the fields of the type to determine if they are valid.
 19100  func (s *VirtualRouterSpec) Validate() error {
 19101  	invalidParams := request.ErrInvalidParams{Context: "VirtualRouterSpec"}
 19102  	if s.Listeners != nil && len(s.Listeners) < 1 {
 19103  		invalidParams.Add(request.NewErrParamMinLen("Listeners", 1))
 19104  	}
 19105  	if s.Listeners != nil {
 19106  		for i, v := range s.Listeners {
 19107  			if v == nil {
 19108  				continue
 19109  			}
 19110  			if err := v.Validate(); err != nil {
 19111  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Listeners", i), err.(request.ErrInvalidParams))
 19112  			}
 19113  		}
 19114  	}
 19115  
 19116  	if invalidParams.Len() > 0 {
 19117  		return invalidParams
 19118  	}
 19119  	return nil
 19120  }
 19121  
 19122  // SetListeners sets the Listeners field's value.
 19123  func (s *VirtualRouterSpec) SetListeners(v []*VirtualRouterListener) *VirtualRouterSpec {
 19124  	s.Listeners = v
 19125  	return s
 19126  }
 19127  
 19128  // An object that represents the status of a virtual router.
 19129  type VirtualRouterStatus struct {
 19130  	_ struct{} `type:"structure"`
 19131  
 19132  	// The current status of the virtual router.
 19133  	//
 19134  	// Status is a required field
 19135  	Status *string `locationName:"status" type:"string" required:"true" enum:"VirtualRouterStatusCode"`
 19136  }
 19137  
 19138  // String returns the string representation.
 19139  //
 19140  // API parameter values that are decorated as "sensitive" in the API will not
 19141  // be included in the string output. The member name will be present, but the
 19142  // value will be replaced with "sensitive".
 19143  func (s VirtualRouterStatus) String() string {
 19144  	return awsutil.Prettify(s)
 19145  }
 19146  
 19147  // GoString returns the string representation.
 19148  //
 19149  // API parameter values that are decorated as "sensitive" in the API will not
 19150  // be included in the string output. The member name will be present, but the
 19151  // value will be replaced with "sensitive".
 19152  func (s VirtualRouterStatus) GoString() string {
 19153  	return s.String()
 19154  }
 19155  
 19156  // SetStatus sets the Status field's value.
 19157  func (s *VirtualRouterStatus) SetStatus(v string) *VirtualRouterStatus {
 19158  	s.Status = &v
 19159  	return s
 19160  }
 19161  
 19162  // An object that represents a virtual service backend for a virtual node.
 19163  type VirtualServiceBackend struct {
 19164  	_ struct{} `type:"structure"`
 19165  
 19166  	// A reference to an object that represents the client policy for a backend.
 19167  	ClientPolicy *ClientPolicy `locationName:"clientPolicy" type:"structure"`
 19168  
 19169  	// The name of the virtual service that is acting as a virtual node backend.
 19170  	//
 19171  	// VirtualServiceName is a required field
 19172  	VirtualServiceName *string `locationName:"virtualServiceName" type:"string" required:"true"`
 19173  }
 19174  
 19175  // String returns the string representation.
 19176  //
 19177  // API parameter values that are decorated as "sensitive" in the API will not
 19178  // be included in the string output. The member name will be present, but the
 19179  // value will be replaced with "sensitive".
 19180  func (s VirtualServiceBackend) String() string {
 19181  	return awsutil.Prettify(s)
 19182  }
 19183  
 19184  // GoString returns the string representation.
 19185  //
 19186  // API parameter values that are decorated as "sensitive" in the API will not
 19187  // be included in the string output. The member name will be present, but the
 19188  // value will be replaced with "sensitive".
 19189  func (s VirtualServiceBackend) GoString() string {
 19190  	return s.String()
 19191  }
 19192  
 19193  // Validate inspects the fields of the type to determine if they are valid.
 19194  func (s *VirtualServiceBackend) Validate() error {
 19195  	invalidParams := request.ErrInvalidParams{Context: "VirtualServiceBackend"}
 19196  	if s.VirtualServiceName == nil {
 19197  		invalidParams.Add(request.NewErrParamRequired("VirtualServiceName"))
 19198  	}
 19199  	if s.ClientPolicy != nil {
 19200  		if err := s.ClientPolicy.Validate(); err != nil {
 19201  			invalidParams.AddNested("ClientPolicy", err.(request.ErrInvalidParams))
 19202  		}
 19203  	}
 19204  
 19205  	if invalidParams.Len() > 0 {
 19206  		return invalidParams
 19207  	}
 19208  	return nil
 19209  }
 19210  
 19211  // SetClientPolicy sets the ClientPolicy field's value.
 19212  func (s *VirtualServiceBackend) SetClientPolicy(v *ClientPolicy) *VirtualServiceBackend {
 19213  	s.ClientPolicy = v
 19214  	return s
 19215  }
 19216  
 19217  // SetVirtualServiceName sets the VirtualServiceName field's value.
 19218  func (s *VirtualServiceBackend) SetVirtualServiceName(v string) *VirtualServiceBackend {
 19219  	s.VirtualServiceName = &v
 19220  	return s
 19221  }
 19222  
 19223  // An object that represents a virtual service returned by a describe operation.
 19224  type VirtualServiceData struct {
 19225  	_ struct{} `type:"structure"`
 19226  
 19227  	// The name of the service mesh that the virtual service resides in.
 19228  	//
 19229  	// MeshName is a required field
 19230  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
 19231  
 19232  	// An object that represents metadata for a resource.
 19233  	//
 19234  	// Metadata is a required field
 19235  	Metadata *ResourceMetadata `locationName:"metadata" type:"structure" required:"true"`
 19236  
 19237  	// The specifications of the virtual service.
 19238  	//
 19239  	// Spec is a required field
 19240  	Spec *VirtualServiceSpec `locationName:"spec" type:"structure" required:"true"`
 19241  
 19242  	// The current status of the virtual service.
 19243  	//
 19244  	// Status is a required field
 19245  	Status *VirtualServiceStatus `locationName:"status" type:"structure" required:"true"`
 19246  
 19247  	// The name of the virtual service.
 19248  	//
 19249  	// VirtualServiceName is a required field
 19250  	VirtualServiceName *string `locationName:"virtualServiceName" type:"string" required:"true"`
 19251  }
 19252  
 19253  // String returns the string representation.
 19254  //
 19255  // API parameter values that are decorated as "sensitive" in the API will not
 19256  // be included in the string output. The member name will be present, but the
 19257  // value will be replaced with "sensitive".
 19258  func (s VirtualServiceData) String() string {
 19259  	return awsutil.Prettify(s)
 19260  }
 19261  
 19262  // GoString returns the string representation.
 19263  //
 19264  // API parameter values that are decorated as "sensitive" in the API will not
 19265  // be included in the string output. The member name will be present, but the
 19266  // value will be replaced with "sensitive".
 19267  func (s VirtualServiceData) GoString() string {
 19268  	return s.String()
 19269  }
 19270  
 19271  // SetMeshName sets the MeshName field's value.
 19272  func (s *VirtualServiceData) SetMeshName(v string) *VirtualServiceData {
 19273  	s.MeshName = &v
 19274  	return s
 19275  }
 19276  
 19277  // SetMetadata sets the Metadata field's value.
 19278  func (s *VirtualServiceData) SetMetadata(v *ResourceMetadata) *VirtualServiceData {
 19279  	s.Metadata = v
 19280  	return s
 19281  }
 19282  
 19283  // SetSpec sets the Spec field's value.
 19284  func (s *VirtualServiceData) SetSpec(v *VirtualServiceSpec) *VirtualServiceData {
 19285  	s.Spec = v
 19286  	return s
 19287  }
 19288  
 19289  // SetStatus sets the Status field's value.
 19290  func (s *VirtualServiceData) SetStatus(v *VirtualServiceStatus) *VirtualServiceData {
 19291  	s.Status = v
 19292  	return s
 19293  }
 19294  
 19295  // SetVirtualServiceName sets the VirtualServiceName field's value.
 19296  func (s *VirtualServiceData) SetVirtualServiceName(v string) *VirtualServiceData {
 19297  	s.VirtualServiceName = &v
 19298  	return s
 19299  }
 19300  
 19301  // An object that represents the provider for a virtual service.
 19302  type VirtualServiceProvider struct {
 19303  	_ struct{} `type:"structure"`
 19304  
 19305  	// The virtual node associated with a virtual service.
 19306  	VirtualNode *VirtualNodeServiceProvider `locationName:"virtualNode" type:"structure"`
 19307  
 19308  	// The virtual router associated with a virtual service.
 19309  	VirtualRouter *VirtualRouterServiceProvider `locationName:"virtualRouter" type:"structure"`
 19310  }
 19311  
 19312  // String returns the string representation.
 19313  //
 19314  // API parameter values that are decorated as "sensitive" in the API will not
 19315  // be included in the string output. The member name will be present, but the
 19316  // value will be replaced with "sensitive".
 19317  func (s VirtualServiceProvider) String() string {
 19318  	return awsutil.Prettify(s)
 19319  }
 19320  
 19321  // GoString returns the string representation.
 19322  //
 19323  // API parameter values that are decorated as "sensitive" in the API will not
 19324  // be included in the string output. The member name will be present, but the
 19325  // value will be replaced with "sensitive".
 19326  func (s VirtualServiceProvider) GoString() string {
 19327  	return s.String()
 19328  }
 19329  
 19330  // Validate inspects the fields of the type to determine if they are valid.
 19331  func (s *VirtualServiceProvider) Validate() error {
 19332  	invalidParams := request.ErrInvalidParams{Context: "VirtualServiceProvider"}
 19333  	if s.VirtualNode != nil {
 19334  		if err := s.VirtualNode.Validate(); err != nil {
 19335  			invalidParams.AddNested("VirtualNode", err.(request.ErrInvalidParams))
 19336  		}
 19337  	}
 19338  	if s.VirtualRouter != nil {
 19339  		if err := s.VirtualRouter.Validate(); err != nil {
 19340  			invalidParams.AddNested("VirtualRouter", err.(request.ErrInvalidParams))
 19341  		}
 19342  	}
 19343  
 19344  	if invalidParams.Len() > 0 {
 19345  		return invalidParams
 19346  	}
 19347  	return nil
 19348  }
 19349  
 19350  // SetVirtualNode sets the VirtualNode field's value.
 19351  func (s *VirtualServiceProvider) SetVirtualNode(v *VirtualNodeServiceProvider) *VirtualServiceProvider {
 19352  	s.VirtualNode = v
 19353  	return s
 19354  }
 19355  
 19356  // SetVirtualRouter sets the VirtualRouter field's value.
 19357  func (s *VirtualServiceProvider) SetVirtualRouter(v *VirtualRouterServiceProvider) *VirtualServiceProvider {
 19358  	s.VirtualRouter = v
 19359  	return s
 19360  }
 19361  
 19362  // An object that represents a virtual service returned by a list operation.
 19363  type VirtualServiceRef struct {
 19364  	_ struct{} `type:"structure"`
 19365  
 19366  	// The full Amazon Resource Name (ARN) for the virtual service.
 19367  	//
 19368  	// Arn is a required field
 19369  	Arn *string `locationName:"arn" type:"string" required:"true"`
 19370  
 19371  	// The Unix epoch timestamp in seconds for when the resource was created.
 19372  	//
 19373  	// CreatedAt is a required field
 19374  	CreatedAt *time.Time `locationName:"createdAt" type:"timestamp" required:"true"`
 19375  
 19376  	// The Unix epoch timestamp in seconds for when the resource was last updated.
 19377  	//
 19378  	// LastUpdatedAt is a required field
 19379  	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" required:"true"`
 19380  
 19381  	// The name of the service mesh that the virtual service resides in.
 19382  	//
 19383  	// MeshName is a required field
 19384  	MeshName *string `locationName:"meshName" min:"1" type:"string" required:"true"`
 19385  
 19386  	// The AWS IAM account ID of the service mesh owner. If the account ID is not
 19387  	// your own, then it's the ID of the account that shared the mesh with your
 19388  	// account. For more information about mesh sharing, see Working with shared
 19389  	// meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 19390  	//
 19391  	// MeshOwner is a required field
 19392  	MeshOwner *string `locationName:"meshOwner" min:"12" type:"string" required:"true"`
 19393  
 19394  	// The AWS IAM account ID of the resource owner. If the account ID is not your
 19395  	// own, then it's the ID of the mesh owner or of another account that the mesh
 19396  	// is shared with. For more information about mesh sharing, see Working with
 19397  	// shared meshes (https://docs.aws.amazon.com/app-mesh/latest/userguide/sharing.html).
 19398  	//
 19399  	// ResourceOwner is a required field
 19400  	ResourceOwner *string `locationName:"resourceOwner" min:"12" type:"string" required:"true"`
 19401  
 19402  	// The version of the resource. Resources are created at version 1, and this
 19403  	// version is incremented each time that they're updated.
 19404  	//
 19405  	// Version is a required field
 19406  	Version *int64 `locationName:"version" type:"long" required:"true"`
 19407  
 19408  	// The name of the virtual service.
 19409  	//
 19410  	// VirtualServiceName is a required field
 19411  	VirtualServiceName *string `locationName:"virtualServiceName" type:"string" required:"true"`
 19412  }
 19413  
 19414  // String returns the string representation.
 19415  //
 19416  // API parameter values that are decorated as "sensitive" in the API will not
 19417  // be included in the string output. The member name will be present, but the
 19418  // value will be replaced with "sensitive".
 19419  func (s VirtualServiceRef) String() string {
 19420  	return awsutil.Prettify(s)
 19421  }
 19422  
 19423  // GoString returns the string representation.
 19424  //
 19425  // API parameter values that are decorated as "sensitive" in the API will not
 19426  // be included in the string output. The member name will be present, but the
 19427  // value will be replaced with "sensitive".
 19428  func (s VirtualServiceRef) GoString() string {
 19429  	return s.String()
 19430  }
 19431  
 19432  // SetArn sets the Arn field's value.
 19433  func (s *VirtualServiceRef) SetArn(v string) *VirtualServiceRef {
 19434  	s.Arn = &v
 19435  	return s
 19436  }
 19437  
 19438  // SetCreatedAt sets the CreatedAt field's value.
 19439  func (s *VirtualServiceRef) SetCreatedAt(v time.Time) *VirtualServiceRef {
 19440  	s.CreatedAt = &v
 19441  	return s
 19442  }
 19443  
 19444  // SetLastUpdatedAt sets the LastUpdatedAt field's value.
 19445  func (s *VirtualServiceRef) SetLastUpdatedAt(v time.Time) *VirtualServiceRef {
 19446  	s.LastUpdatedAt = &v
 19447  	return s
 19448  }
 19449  
 19450  // SetMeshName sets the MeshName field's value.
 19451  func (s *VirtualServiceRef) SetMeshName(v string) *VirtualServiceRef {
 19452  	s.MeshName = &v
 19453  	return s
 19454  }
 19455  
 19456  // SetMeshOwner sets the MeshOwner field's value.
 19457  func (s *VirtualServiceRef) SetMeshOwner(v string) *VirtualServiceRef {
 19458  	s.MeshOwner = &v
 19459  	return s
 19460  }
 19461  
 19462  // SetResourceOwner sets the ResourceOwner field's value.
 19463  func (s *VirtualServiceRef) SetResourceOwner(v string) *VirtualServiceRef {
 19464  	s.ResourceOwner = &v
 19465  	return s
 19466  }
 19467  
 19468  // SetVersion sets the Version field's value.
 19469  func (s *VirtualServiceRef) SetVersion(v int64) *VirtualServiceRef {
 19470  	s.Version = &v
 19471  	return s
 19472  }
 19473  
 19474  // SetVirtualServiceName sets the VirtualServiceName field's value.
 19475  func (s *VirtualServiceRef) SetVirtualServiceName(v string) *VirtualServiceRef {
 19476  	s.VirtualServiceName = &v
 19477  	return s
 19478  }
 19479  
 19480  // An object that represents the specification of a virtual service.
 19481  type VirtualServiceSpec struct {
 19482  	_ struct{} `type:"structure"`
 19483  
 19484  	// The App Mesh object that is acting as the provider for a virtual service.
 19485  	// You can specify a single virtual node or virtual router.
 19486  	Provider *VirtualServiceProvider `locationName:"provider" type:"structure"`
 19487  }
 19488  
 19489  // String returns the string representation.
 19490  //
 19491  // API parameter values that are decorated as "sensitive" in the API will not
 19492  // be included in the string output. The member name will be present, but the
 19493  // value will be replaced with "sensitive".
 19494  func (s VirtualServiceSpec) String() string {
 19495  	return awsutil.Prettify(s)
 19496  }
 19497  
 19498  // GoString returns the string representation.
 19499  //
 19500  // API parameter values that are decorated as "sensitive" in the API will not
 19501  // be included in the string output. The member name will be present, but the
 19502  // value will be replaced with "sensitive".
 19503  func (s VirtualServiceSpec) GoString() string {
 19504  	return s.String()
 19505  }
 19506  
 19507  // Validate inspects the fields of the type to determine if they are valid.
 19508  func (s *VirtualServiceSpec) Validate() error {
 19509  	invalidParams := request.ErrInvalidParams{Context: "VirtualServiceSpec"}
 19510  	if s.Provider != nil {
 19511  		if err := s.Provider.Validate(); err != nil {
 19512  			invalidParams.AddNested("Provider", err.(request.ErrInvalidParams))
 19513  		}
 19514  	}
 19515  
 19516  	if invalidParams.Len() > 0 {
 19517  		return invalidParams
 19518  	}
 19519  	return nil
 19520  }
 19521  
 19522  // SetProvider sets the Provider field's value.
 19523  func (s *VirtualServiceSpec) SetProvider(v *VirtualServiceProvider) *VirtualServiceSpec {
 19524  	s.Provider = v
 19525  	return s
 19526  }
 19527  
 19528  // An object that represents the status of a virtual service.
 19529  type VirtualServiceStatus struct {
 19530  	_ struct{} `type:"structure"`
 19531  
 19532  	// The current status of the virtual service.
 19533  	//
 19534  	// Status is a required field
 19535  	Status *string `locationName:"status" type:"string" required:"true" enum:"VirtualServiceStatusCode"`
 19536  }
 19537  
 19538  // String returns the string representation.
 19539  //
 19540  // API parameter values that are decorated as "sensitive" in the API will not
 19541  // be included in the string output. The member name will be present, but the
 19542  // value will be replaced with "sensitive".
 19543  func (s VirtualServiceStatus) String() string {
 19544  	return awsutil.Prettify(s)
 19545  }
 19546  
 19547  // GoString returns the string representation.
 19548  //
 19549  // API parameter values that are decorated as "sensitive" in the API will not
 19550  // be included in the string output. The member name will be present, but the
 19551  // value will be replaced with "sensitive".
 19552  func (s VirtualServiceStatus) GoString() string {
 19553  	return s.String()
 19554  }
 19555  
 19556  // SetStatus sets the Status field's value.
 19557  func (s *VirtualServiceStatus) SetStatus(v string) *VirtualServiceStatus {
 19558  	s.Status = &v
 19559  	return s
 19560  }
 19561  
 19562  // An object that represents a target and its relative weight. Traffic is distributed
 19563  // across targets according to their relative weight. For example, a weighted
 19564  // target with a relative weight of 50 receives five times as much traffic as
 19565  // one with a relative weight of 10. The total weight for all targets combined
 19566  // must be less than or equal to 100.
 19567  type WeightedTarget struct {
 19568  	_ struct{} `type:"structure"`
 19569  
 19570  	// The virtual node to associate with the weighted target.
 19571  	//
 19572  	// VirtualNode is a required field
 19573  	VirtualNode *string `locationName:"virtualNode" min:"1" type:"string" required:"true"`
 19574  
 19575  	// The relative weight of the weighted target.
 19576  	//
 19577  	// Weight is a required field
 19578  	Weight *int64 `locationName:"weight" type:"integer" required:"true"`
 19579  }
 19580  
 19581  // String returns the string representation.
 19582  //
 19583  // API parameter values that are decorated as "sensitive" in the API will not
 19584  // be included in the string output. The member name will be present, but the
 19585  // value will be replaced with "sensitive".
 19586  func (s WeightedTarget) String() string {
 19587  	return awsutil.Prettify(s)
 19588  }
 19589  
 19590  // GoString returns the string representation.
 19591  //
 19592  // API parameter values that are decorated as "sensitive" in the API will not
 19593  // be included in the string output. The member name will be present, but the
 19594  // value will be replaced with "sensitive".
 19595  func (s WeightedTarget) GoString() string {
 19596  	return s.String()
 19597  }
 19598  
 19599  // Validate inspects the fields of the type to determine if they are valid.
 19600  func (s *WeightedTarget) Validate() error {
 19601  	invalidParams := request.ErrInvalidParams{Context: "WeightedTarget"}
 19602  	if s.VirtualNode == nil {
 19603  		invalidParams.Add(request.NewErrParamRequired("VirtualNode"))
 19604  	}
 19605  	if s.VirtualNode != nil && len(*s.VirtualNode) < 1 {
 19606  		invalidParams.Add(request.NewErrParamMinLen("VirtualNode", 1))
 19607  	}
 19608  	if s.Weight == nil {
 19609  		invalidParams.Add(request.NewErrParamRequired("Weight"))
 19610  	}
 19611  
 19612  	if invalidParams.Len() > 0 {
 19613  		return invalidParams
 19614  	}
 19615  	return nil
 19616  }
 19617  
 19618  // SetVirtualNode sets the VirtualNode field's value.
 19619  func (s *WeightedTarget) SetVirtualNode(v string) *WeightedTarget {
 19620  	s.VirtualNode = &v
 19621  	return s
 19622  }
 19623  
 19624  // SetWeight sets the Weight field's value.
 19625  func (s *WeightedTarget) SetWeight(v int64) *WeightedTarget {
 19626  	s.Weight = &v
 19627  	return s
 19628  }
 19629  
 19630  const (
 19631  	// DefaultGatewayRouteRewriteEnabled is a DefaultGatewayRouteRewrite enum value
 19632  	DefaultGatewayRouteRewriteEnabled = "ENABLED"
 19633  
 19634  	// DefaultGatewayRouteRewriteDisabled is a DefaultGatewayRouteRewrite enum value
 19635  	DefaultGatewayRouteRewriteDisabled = "DISABLED"
 19636  )
 19637  
 19638  // DefaultGatewayRouteRewrite_Values returns all elements of the DefaultGatewayRouteRewrite enum
 19639  func DefaultGatewayRouteRewrite_Values() []string {
 19640  	return []string{
 19641  		DefaultGatewayRouteRewriteEnabled,
 19642  		DefaultGatewayRouteRewriteDisabled,
 19643  	}
 19644  }
 19645  
 19646  const (
 19647  	// DnsResponseTypeLoadbalancer is a DnsResponseType enum value
 19648  	DnsResponseTypeLoadbalancer = "LOADBALANCER"
 19649  
 19650  	// DnsResponseTypeEndpoints is a DnsResponseType enum value
 19651  	DnsResponseTypeEndpoints = "ENDPOINTS"
 19652  )
 19653  
 19654  // DnsResponseType_Values returns all elements of the DnsResponseType enum
 19655  func DnsResponseType_Values() []string {
 19656  	return []string{
 19657  		DnsResponseTypeLoadbalancer,
 19658  		DnsResponseTypeEndpoints,
 19659  	}
 19660  }
 19661  
 19662  const (
 19663  	// DurationUnitS is a DurationUnit enum value
 19664  	DurationUnitS = "s"
 19665  
 19666  	// DurationUnitMs is a DurationUnit enum value
 19667  	DurationUnitMs = "ms"
 19668  )
 19669  
 19670  // DurationUnit_Values returns all elements of the DurationUnit enum
 19671  func DurationUnit_Values() []string {
 19672  	return []string{
 19673  		DurationUnitS,
 19674  		DurationUnitMs,
 19675  	}
 19676  }
 19677  
 19678  const (
 19679  	// EgressFilterTypeAllowAll is a EgressFilterType enum value
 19680  	EgressFilterTypeAllowAll = "ALLOW_ALL"
 19681  
 19682  	// EgressFilterTypeDropAll is a EgressFilterType enum value
 19683  	EgressFilterTypeDropAll = "DROP_ALL"
 19684  )
 19685  
 19686  // EgressFilterType_Values returns all elements of the EgressFilterType enum
 19687  func EgressFilterType_Values() []string {
 19688  	return []string{
 19689  		EgressFilterTypeAllowAll,
 19690  		EgressFilterTypeDropAll,
 19691  	}
 19692  }
 19693  
 19694  const (
 19695  	// GatewayRouteStatusCodeActive is a GatewayRouteStatusCode enum value
 19696  	GatewayRouteStatusCodeActive = "ACTIVE"
 19697  
 19698  	// GatewayRouteStatusCodeInactive is a GatewayRouteStatusCode enum value
 19699  	GatewayRouteStatusCodeInactive = "INACTIVE"
 19700  
 19701  	// GatewayRouteStatusCodeDeleted is a GatewayRouteStatusCode enum value
 19702  	GatewayRouteStatusCodeDeleted = "DELETED"
 19703  )
 19704  
 19705  // GatewayRouteStatusCode_Values returns all elements of the GatewayRouteStatusCode enum
 19706  func GatewayRouteStatusCode_Values() []string {
 19707  	return []string{
 19708  		GatewayRouteStatusCodeActive,
 19709  		GatewayRouteStatusCodeInactive,
 19710  		GatewayRouteStatusCodeDeleted,
 19711  	}
 19712  }
 19713  
 19714  const (
 19715  	// GrpcRetryPolicyEventCancelled is a GrpcRetryPolicyEvent enum value
 19716  	GrpcRetryPolicyEventCancelled = "cancelled"
 19717  
 19718  	// GrpcRetryPolicyEventDeadlineExceeded is a GrpcRetryPolicyEvent enum value
 19719  	GrpcRetryPolicyEventDeadlineExceeded = "deadline-exceeded"
 19720  
 19721  	// GrpcRetryPolicyEventInternal is a GrpcRetryPolicyEvent enum value
 19722  	GrpcRetryPolicyEventInternal = "internal"
 19723  
 19724  	// GrpcRetryPolicyEventResourceExhausted is a GrpcRetryPolicyEvent enum value
 19725  	GrpcRetryPolicyEventResourceExhausted = "resource-exhausted"
 19726  
 19727  	// GrpcRetryPolicyEventUnavailable is a GrpcRetryPolicyEvent enum value
 19728  	GrpcRetryPolicyEventUnavailable = "unavailable"
 19729  )
 19730  
 19731  // GrpcRetryPolicyEvent_Values returns all elements of the GrpcRetryPolicyEvent enum
 19732  func GrpcRetryPolicyEvent_Values() []string {
 19733  	return []string{
 19734  		GrpcRetryPolicyEventCancelled,
 19735  		GrpcRetryPolicyEventDeadlineExceeded,
 19736  		GrpcRetryPolicyEventInternal,
 19737  		GrpcRetryPolicyEventResourceExhausted,
 19738  		GrpcRetryPolicyEventUnavailable,
 19739  	}
 19740  }
 19741  
 19742  const (
 19743  	// HttpMethodGet is a HttpMethod enum value
 19744  	HttpMethodGet = "GET"
 19745  
 19746  	// HttpMethodHead is a HttpMethod enum value
 19747  	HttpMethodHead = "HEAD"
 19748  
 19749  	// HttpMethodPost is a HttpMethod enum value
 19750  	HttpMethodPost = "POST"
 19751  
 19752  	// HttpMethodPut is a HttpMethod enum value
 19753  	HttpMethodPut = "PUT"
 19754  
 19755  	// HttpMethodDelete is a HttpMethod enum value
 19756  	HttpMethodDelete = "DELETE"
 19757  
 19758  	// HttpMethodConnect is a HttpMethod enum value
 19759  	HttpMethodConnect = "CONNECT"
 19760  
 19761  	// HttpMethodOptions is a HttpMethod enum value
 19762  	HttpMethodOptions = "OPTIONS"
 19763  
 19764  	// HttpMethodTrace is a HttpMethod enum value
 19765  	HttpMethodTrace = "TRACE"
 19766  
 19767  	// HttpMethodPatch is a HttpMethod enum value
 19768  	HttpMethodPatch = "PATCH"
 19769  )
 19770  
 19771  // HttpMethod_Values returns all elements of the HttpMethod enum
 19772  func HttpMethod_Values() []string {
 19773  	return []string{
 19774  		HttpMethodGet,
 19775  		HttpMethodHead,
 19776  		HttpMethodPost,
 19777  		HttpMethodPut,
 19778  		HttpMethodDelete,
 19779  		HttpMethodConnect,
 19780  		HttpMethodOptions,
 19781  		HttpMethodTrace,
 19782  		HttpMethodPatch,
 19783  	}
 19784  }
 19785  
 19786  const (
 19787  	// HttpSchemeHttp is a HttpScheme enum value
 19788  	HttpSchemeHttp = "http"
 19789  
 19790  	// HttpSchemeHttps is a HttpScheme enum value
 19791  	HttpSchemeHttps = "https"
 19792  )
 19793  
 19794  // HttpScheme_Values returns all elements of the HttpScheme enum
 19795  func HttpScheme_Values() []string {
 19796  	return []string{
 19797  		HttpSchemeHttp,
 19798  		HttpSchemeHttps,
 19799  	}
 19800  }
 19801  
 19802  const (
 19803  	// ListenerTlsModeStrict is a ListenerTlsMode enum value
 19804  	ListenerTlsModeStrict = "STRICT"
 19805  
 19806  	// ListenerTlsModePermissive is a ListenerTlsMode enum value
 19807  	ListenerTlsModePermissive = "PERMISSIVE"
 19808  
 19809  	// ListenerTlsModeDisabled is a ListenerTlsMode enum value
 19810  	ListenerTlsModeDisabled = "DISABLED"
 19811  )
 19812  
 19813  // ListenerTlsMode_Values returns all elements of the ListenerTlsMode enum
 19814  func ListenerTlsMode_Values() []string {
 19815  	return []string{
 19816  		ListenerTlsModeStrict,
 19817  		ListenerTlsModePermissive,
 19818  		ListenerTlsModeDisabled,
 19819  	}
 19820  }
 19821  
 19822  const (
 19823  	// MeshStatusCodeActive is a MeshStatusCode enum value
 19824  	MeshStatusCodeActive = "ACTIVE"
 19825  
 19826  	// MeshStatusCodeInactive is a MeshStatusCode enum value
 19827  	MeshStatusCodeInactive = "INACTIVE"
 19828  
 19829  	// MeshStatusCodeDeleted is a MeshStatusCode enum value
 19830  	MeshStatusCodeDeleted = "DELETED"
 19831  )
 19832  
 19833  // MeshStatusCode_Values returns all elements of the MeshStatusCode enum
 19834  func MeshStatusCode_Values() []string {
 19835  	return []string{
 19836  		MeshStatusCodeActive,
 19837  		MeshStatusCodeInactive,
 19838  		MeshStatusCodeDeleted,
 19839  	}
 19840  }
 19841  
 19842  const (
 19843  	// PortProtocolHttp is a PortProtocol enum value
 19844  	PortProtocolHttp = "http"
 19845  
 19846  	// PortProtocolTcp is a PortProtocol enum value
 19847  	PortProtocolTcp = "tcp"
 19848  
 19849  	// PortProtocolHttp2 is a PortProtocol enum value
 19850  	PortProtocolHttp2 = "http2"
 19851  
 19852  	// PortProtocolGrpc is a PortProtocol enum value
 19853  	PortProtocolGrpc = "grpc"
 19854  )
 19855  
 19856  // PortProtocol_Values returns all elements of the PortProtocol enum
 19857  func PortProtocol_Values() []string {
 19858  	return []string{
 19859  		PortProtocolHttp,
 19860  		PortProtocolTcp,
 19861  		PortProtocolHttp2,
 19862  		PortProtocolGrpc,
 19863  	}
 19864  }
 19865  
 19866  const (
 19867  	// RouteStatusCodeActive is a RouteStatusCode enum value
 19868  	RouteStatusCodeActive = "ACTIVE"
 19869  
 19870  	// RouteStatusCodeInactive is a RouteStatusCode enum value
 19871  	RouteStatusCodeInactive = "INACTIVE"
 19872  
 19873  	// RouteStatusCodeDeleted is a RouteStatusCode enum value
 19874  	RouteStatusCodeDeleted = "DELETED"
 19875  )
 19876  
 19877  // RouteStatusCode_Values returns all elements of the RouteStatusCode enum
 19878  func RouteStatusCode_Values() []string {
 19879  	return []string{
 19880  		RouteStatusCodeActive,
 19881  		RouteStatusCodeInactive,
 19882  		RouteStatusCodeDeleted,
 19883  	}
 19884  }
 19885  
 19886  const (
 19887  	// TcpRetryPolicyEventConnectionError is a TcpRetryPolicyEvent enum value
 19888  	TcpRetryPolicyEventConnectionError = "connection-error"
 19889  )
 19890  
 19891  // TcpRetryPolicyEvent_Values returns all elements of the TcpRetryPolicyEvent enum
 19892  func TcpRetryPolicyEvent_Values() []string {
 19893  	return []string{
 19894  		TcpRetryPolicyEventConnectionError,
 19895  	}
 19896  }
 19897  
 19898  const (
 19899  	// VirtualGatewayListenerTlsModeStrict is a VirtualGatewayListenerTlsMode enum value
 19900  	VirtualGatewayListenerTlsModeStrict = "STRICT"
 19901  
 19902  	// VirtualGatewayListenerTlsModePermissive is a VirtualGatewayListenerTlsMode enum value
 19903  	VirtualGatewayListenerTlsModePermissive = "PERMISSIVE"
 19904  
 19905  	// VirtualGatewayListenerTlsModeDisabled is a VirtualGatewayListenerTlsMode enum value
 19906  	VirtualGatewayListenerTlsModeDisabled = "DISABLED"
 19907  )
 19908  
 19909  // VirtualGatewayListenerTlsMode_Values returns all elements of the VirtualGatewayListenerTlsMode enum
 19910  func VirtualGatewayListenerTlsMode_Values() []string {
 19911  	return []string{
 19912  		VirtualGatewayListenerTlsModeStrict,
 19913  		VirtualGatewayListenerTlsModePermissive,
 19914  		VirtualGatewayListenerTlsModeDisabled,
 19915  	}
 19916  }
 19917  
 19918  const (
 19919  	// VirtualGatewayPortProtocolHttp is a VirtualGatewayPortProtocol enum value
 19920  	VirtualGatewayPortProtocolHttp = "http"
 19921  
 19922  	// VirtualGatewayPortProtocolHttp2 is a VirtualGatewayPortProtocol enum value
 19923  	VirtualGatewayPortProtocolHttp2 = "http2"
 19924  
 19925  	// VirtualGatewayPortProtocolGrpc is a VirtualGatewayPortProtocol enum value
 19926  	VirtualGatewayPortProtocolGrpc = "grpc"
 19927  )
 19928  
 19929  // VirtualGatewayPortProtocol_Values returns all elements of the VirtualGatewayPortProtocol enum
 19930  func VirtualGatewayPortProtocol_Values() []string {
 19931  	return []string{
 19932  		VirtualGatewayPortProtocolHttp,
 19933  		VirtualGatewayPortProtocolHttp2,
 19934  		VirtualGatewayPortProtocolGrpc,
 19935  	}
 19936  }
 19937  
 19938  const (
 19939  	// VirtualGatewayStatusCodeActive is a VirtualGatewayStatusCode enum value
 19940  	VirtualGatewayStatusCodeActive = "ACTIVE"
 19941  
 19942  	// VirtualGatewayStatusCodeInactive is a VirtualGatewayStatusCode enum value
 19943  	VirtualGatewayStatusCodeInactive = "INACTIVE"
 19944  
 19945  	// VirtualGatewayStatusCodeDeleted is a VirtualGatewayStatusCode enum value
 19946  	VirtualGatewayStatusCodeDeleted = "DELETED"
 19947  )
 19948  
 19949  // VirtualGatewayStatusCode_Values returns all elements of the VirtualGatewayStatusCode enum
 19950  func VirtualGatewayStatusCode_Values() []string {
 19951  	return []string{
 19952  		VirtualGatewayStatusCodeActive,
 19953  		VirtualGatewayStatusCodeInactive,
 19954  		VirtualGatewayStatusCodeDeleted,
 19955  	}
 19956  }
 19957  
 19958  const (
 19959  	// VirtualNodeStatusCodeActive is a VirtualNodeStatusCode enum value
 19960  	VirtualNodeStatusCodeActive = "ACTIVE"
 19961  
 19962  	// VirtualNodeStatusCodeInactive is a VirtualNodeStatusCode enum value
 19963  	VirtualNodeStatusCodeInactive = "INACTIVE"
 19964  
 19965  	// VirtualNodeStatusCodeDeleted is a VirtualNodeStatusCode enum value
 19966  	VirtualNodeStatusCodeDeleted = "DELETED"
 19967  )
 19968  
 19969  // VirtualNodeStatusCode_Values returns all elements of the VirtualNodeStatusCode enum
 19970  func VirtualNodeStatusCode_Values() []string {
 19971  	return []string{
 19972  		VirtualNodeStatusCodeActive,
 19973  		VirtualNodeStatusCodeInactive,
 19974  		VirtualNodeStatusCodeDeleted,
 19975  	}
 19976  }
 19977  
 19978  const (
 19979  	// VirtualRouterStatusCodeActive is a VirtualRouterStatusCode enum value
 19980  	VirtualRouterStatusCodeActive = "ACTIVE"
 19981  
 19982  	// VirtualRouterStatusCodeInactive is a VirtualRouterStatusCode enum value
 19983  	VirtualRouterStatusCodeInactive = "INACTIVE"
 19984  
 19985  	// VirtualRouterStatusCodeDeleted is a VirtualRouterStatusCode enum value
 19986  	VirtualRouterStatusCodeDeleted = "DELETED"
 19987  )
 19988  
 19989  // VirtualRouterStatusCode_Values returns all elements of the VirtualRouterStatusCode enum
 19990  func VirtualRouterStatusCode_Values() []string {
 19991  	return []string{
 19992  		VirtualRouterStatusCodeActive,
 19993  		VirtualRouterStatusCodeInactive,
 19994  		VirtualRouterStatusCodeDeleted,
 19995  	}
 19996  }
 19997  
 19998  const (
 19999  	// VirtualServiceStatusCodeActive is a VirtualServiceStatusCode enum value
 20000  	VirtualServiceStatusCodeActive = "ACTIVE"
 20001  
 20002  	// VirtualServiceStatusCodeInactive is a VirtualServiceStatusCode enum value
 20003  	VirtualServiceStatusCodeInactive = "INACTIVE"
 20004  
 20005  	// VirtualServiceStatusCodeDeleted is a VirtualServiceStatusCode enum value
 20006  	VirtualServiceStatusCodeDeleted = "DELETED"
 20007  )
 20008  
 20009  // VirtualServiceStatusCode_Values returns all elements of the VirtualServiceStatusCode enum
 20010  func VirtualServiceStatusCode_Values() []string {
 20011  	return []string{
 20012  		VirtualServiceStatusCodeActive,
 20013  		VirtualServiceStatusCodeInactive,
 20014  		VirtualServiceStatusCodeDeleted,
 20015  	}
 20016  }