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

     1  // Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
     2  
     3  package elasticache
     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/query"
    14  )
    15  
    16  const opAddTagsToResource = "AddTagsToResource"
    17  
    18  // AddTagsToResourceRequest generates a "aws/request.Request" representing the
    19  // client's request for the AddTagsToResource 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 AddTagsToResource for more information on using the AddTagsToResource
    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 AddTagsToResourceRequest method.
    34  //    req, resp := client.AddTagsToResourceRequest(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/elasticache-2015-02-02/AddTagsToResource
    42  func (c *ElastiCache) AddTagsToResourceRequest(input *AddTagsToResourceInput) (req *request.Request, output *TagListMessage) {
    43  	op := &request.Operation{
    44  		Name:       opAddTagsToResource,
    45  		HTTPMethod: "POST",
    46  		HTTPPath:   "/",
    47  	}
    48  
    49  	if input == nil {
    50  		input = &AddTagsToResourceInput{}
    51  	}
    52  
    53  	output = &TagListMessage{}
    54  	req = c.newRequest(op, input, output)
    55  	return
    56  }
    57  
    58  // AddTagsToResource API operation for Amazon ElastiCache.
    59  //
    60  // A tag is a key-value pair where the key and value are case-sensitive. You
    61  // can use tags to categorize and track all your ElastiCache resources, with
    62  // the exception of global replication group. When you add or remove tags on
    63  // replication groups, those actions will be replicated to all nodes in the
    64  // replication group. For more information, see Resource-level permissions (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/IAM.ResourceLevelPermissions.html).
    65  //
    66  // For example, you can use cost-allocation tags to your ElastiCache resources,
    67  // Amazon generates a cost allocation report as a comma-separated value (CSV)
    68  // file with your usage and costs aggregated by your tags. You can apply tags
    69  // that represent business categories (such as cost centers, application names,
    70  // or owners) to organize your costs across multiple services.
    71  //
    72  // For more information, see Using Cost Allocation Tags in Amazon ElastiCache
    73  // (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Tagging.html)
    74  // in the ElastiCache User Guide.
    75  //
    76  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
    77  // with awserr.Error's Code and Message methods to get detailed information about
    78  // the error.
    79  //
    80  // See the AWS API reference guide for Amazon ElastiCache's
    81  // API operation AddTagsToResource for usage and error information.
    82  //
    83  // Returned Error Codes:
    84  //   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
    85  //   The requested cluster ID does not refer to an existing cluster.
    86  //
    87  //   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
    88  //   The requested cache parameter group name does not refer to an existing cache
    89  //   parameter group.
    90  //
    91  //   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
    92  //   The requested cache security group name does not refer to an existing cache
    93  //   security group.
    94  //
    95  //   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
    96  //   The requested cache subnet group name does not refer to an existing cache
    97  //   subnet group.
    98  //
    99  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
   100  //   The requested replication group is not in the available state.
   101  //
   102  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
   103  //   The specified replication group does not exist.
   104  //
   105  //   * ErrCodeReservedCacheNodeNotFoundFault "ReservedCacheNodeNotFound"
   106  //   The requested reserved cache node was not found.
   107  //
   108  //   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
   109  //   The requested snapshot name does not refer to an existing snapshot.
   110  //
   111  //   * ErrCodeUserNotFoundFault "UserNotFound"
   112  //   The user does not exist or could not be found.
   113  //
   114  //   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
   115  //   The user group was not found or does not exist
   116  //
   117  //   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
   118  //   The request cannot be processed because it would cause the resource to have
   119  //   more than the allowed number of tags. The maximum number of tags permitted
   120  //   on a resource is 50.
   121  //
   122  //   * ErrCodeInvalidARNFault "InvalidARN"
   123  //   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
   124  //
   125  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/AddTagsToResource
   126  func (c *ElastiCache) AddTagsToResource(input *AddTagsToResourceInput) (*TagListMessage, error) {
   127  	req, out := c.AddTagsToResourceRequest(input)
   128  	return out, req.Send()
   129  }
   130  
   131  // AddTagsToResourceWithContext is the same as AddTagsToResource with the addition of
   132  // the ability to pass a context and additional request options.
   133  //
   134  // See AddTagsToResource for details on how to use this API operation.
   135  //
   136  // The context must be non-nil and will be used for request cancellation. If
   137  // the context is nil a panic will occur. In the future the SDK may create
   138  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   139  // for more information on using Contexts.
   140  func (c *ElastiCache) AddTagsToResourceWithContext(ctx aws.Context, input *AddTagsToResourceInput, opts ...request.Option) (*TagListMessage, error) {
   141  	req, out := c.AddTagsToResourceRequest(input)
   142  	req.SetContext(ctx)
   143  	req.ApplyOptions(opts...)
   144  	return out, req.Send()
   145  }
   146  
   147  const opAuthorizeCacheSecurityGroupIngress = "AuthorizeCacheSecurityGroupIngress"
   148  
   149  // AuthorizeCacheSecurityGroupIngressRequest generates a "aws/request.Request" representing the
   150  // client's request for the AuthorizeCacheSecurityGroupIngress operation. The "output" return
   151  // value will be populated with the request's response once the request completes
   152  // successfully.
   153  //
   154  // Use "Send" method on the returned Request to send the API call to the service.
   155  // the "output" return value is not valid until after Send returns without error.
   156  //
   157  // See AuthorizeCacheSecurityGroupIngress for more information on using the AuthorizeCacheSecurityGroupIngress
   158  // API call, and error handling.
   159  //
   160  // This method is useful when you want to inject custom logic or configuration
   161  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   162  //
   163  //
   164  //    // Example sending a request using the AuthorizeCacheSecurityGroupIngressRequest method.
   165  //    req, resp := client.AuthorizeCacheSecurityGroupIngressRequest(params)
   166  //
   167  //    err := req.Send()
   168  //    if err == nil { // resp is now filled
   169  //        fmt.Println(resp)
   170  //    }
   171  //
   172  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/AuthorizeCacheSecurityGroupIngress
   173  func (c *ElastiCache) AuthorizeCacheSecurityGroupIngressRequest(input *AuthorizeCacheSecurityGroupIngressInput) (req *request.Request, output *AuthorizeCacheSecurityGroupIngressOutput) {
   174  	op := &request.Operation{
   175  		Name:       opAuthorizeCacheSecurityGroupIngress,
   176  		HTTPMethod: "POST",
   177  		HTTPPath:   "/",
   178  	}
   179  
   180  	if input == nil {
   181  		input = &AuthorizeCacheSecurityGroupIngressInput{}
   182  	}
   183  
   184  	output = &AuthorizeCacheSecurityGroupIngressOutput{}
   185  	req = c.newRequest(op, input, output)
   186  	return
   187  }
   188  
   189  // AuthorizeCacheSecurityGroupIngress API operation for Amazon ElastiCache.
   190  //
   191  // Allows network ingress to a cache security group. Applications using ElastiCache
   192  // must be running on Amazon EC2, and Amazon EC2 security groups are used as
   193  // the authorization mechanism.
   194  //
   195  // You cannot authorize ingress from an Amazon EC2 security group in one region
   196  // to an ElastiCache cluster in another region.
   197  //
   198  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   199  // with awserr.Error's Code and Message methods to get detailed information about
   200  // the error.
   201  //
   202  // See the AWS API reference guide for Amazon ElastiCache's
   203  // API operation AuthorizeCacheSecurityGroupIngress for usage and error information.
   204  //
   205  // Returned Error Codes:
   206  //   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
   207  //   The requested cache security group name does not refer to an existing cache
   208  //   security group.
   209  //
   210  //   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
   211  //   The current state of the cache security group does not allow deletion.
   212  //
   213  //   * ErrCodeAuthorizationAlreadyExistsFault "AuthorizationAlreadyExists"
   214  //   The specified Amazon EC2 security group is already authorized for the specified
   215  //   cache security group.
   216  //
   217  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
   218  //   The value for a parameter is invalid.
   219  //
   220  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
   221  //   Two or more incompatible parameters were specified.
   222  //
   223  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/AuthorizeCacheSecurityGroupIngress
   224  func (c *ElastiCache) AuthorizeCacheSecurityGroupIngress(input *AuthorizeCacheSecurityGroupIngressInput) (*AuthorizeCacheSecurityGroupIngressOutput, error) {
   225  	req, out := c.AuthorizeCacheSecurityGroupIngressRequest(input)
   226  	return out, req.Send()
   227  }
   228  
   229  // AuthorizeCacheSecurityGroupIngressWithContext is the same as AuthorizeCacheSecurityGroupIngress with the addition of
   230  // the ability to pass a context and additional request options.
   231  //
   232  // See AuthorizeCacheSecurityGroupIngress for details on how to use this API operation.
   233  //
   234  // The context must be non-nil and will be used for request cancellation. If
   235  // the context is nil a panic will occur. In the future the SDK may create
   236  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   237  // for more information on using Contexts.
   238  func (c *ElastiCache) AuthorizeCacheSecurityGroupIngressWithContext(ctx aws.Context, input *AuthorizeCacheSecurityGroupIngressInput, opts ...request.Option) (*AuthorizeCacheSecurityGroupIngressOutput, error) {
   239  	req, out := c.AuthorizeCacheSecurityGroupIngressRequest(input)
   240  	req.SetContext(ctx)
   241  	req.ApplyOptions(opts...)
   242  	return out, req.Send()
   243  }
   244  
   245  const opBatchApplyUpdateAction = "BatchApplyUpdateAction"
   246  
   247  // BatchApplyUpdateActionRequest generates a "aws/request.Request" representing the
   248  // client's request for the BatchApplyUpdateAction operation. The "output" return
   249  // value will be populated with the request's response once the request completes
   250  // successfully.
   251  //
   252  // Use "Send" method on the returned Request to send the API call to the service.
   253  // the "output" return value is not valid until after Send returns without error.
   254  //
   255  // See BatchApplyUpdateAction for more information on using the BatchApplyUpdateAction
   256  // API call, and error handling.
   257  //
   258  // This method is useful when you want to inject custom logic or configuration
   259  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   260  //
   261  //
   262  //    // Example sending a request using the BatchApplyUpdateActionRequest method.
   263  //    req, resp := client.BatchApplyUpdateActionRequest(params)
   264  //
   265  //    err := req.Send()
   266  //    if err == nil { // resp is now filled
   267  //        fmt.Println(resp)
   268  //    }
   269  //
   270  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/BatchApplyUpdateAction
   271  func (c *ElastiCache) BatchApplyUpdateActionRequest(input *BatchApplyUpdateActionInput) (req *request.Request, output *BatchApplyUpdateActionOutput) {
   272  	op := &request.Operation{
   273  		Name:       opBatchApplyUpdateAction,
   274  		HTTPMethod: "POST",
   275  		HTTPPath:   "/",
   276  	}
   277  
   278  	if input == nil {
   279  		input = &BatchApplyUpdateActionInput{}
   280  	}
   281  
   282  	output = &BatchApplyUpdateActionOutput{}
   283  	req = c.newRequest(op, input, output)
   284  	return
   285  }
   286  
   287  // BatchApplyUpdateAction API operation for Amazon ElastiCache.
   288  //
   289  // Apply the service update. For more information on service updates and applying
   290  // them, see Applying Service Updates (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/applying-updates.html).
   291  //
   292  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   293  // with awserr.Error's Code and Message methods to get detailed information about
   294  // the error.
   295  //
   296  // See the AWS API reference guide for Amazon ElastiCache's
   297  // API operation BatchApplyUpdateAction for usage and error information.
   298  //
   299  // Returned Error Codes:
   300  //   * ErrCodeServiceUpdateNotFoundFault "ServiceUpdateNotFoundFault"
   301  //   The service update doesn't exist
   302  //
   303  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
   304  //   The value for a parameter is invalid.
   305  //
   306  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/BatchApplyUpdateAction
   307  func (c *ElastiCache) BatchApplyUpdateAction(input *BatchApplyUpdateActionInput) (*BatchApplyUpdateActionOutput, error) {
   308  	req, out := c.BatchApplyUpdateActionRequest(input)
   309  	return out, req.Send()
   310  }
   311  
   312  // BatchApplyUpdateActionWithContext is the same as BatchApplyUpdateAction with the addition of
   313  // the ability to pass a context and additional request options.
   314  //
   315  // See BatchApplyUpdateAction for details on how to use this API operation.
   316  //
   317  // The context must be non-nil and will be used for request cancellation. If
   318  // the context is nil a panic will occur. In the future the SDK may create
   319  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   320  // for more information on using Contexts.
   321  func (c *ElastiCache) BatchApplyUpdateActionWithContext(ctx aws.Context, input *BatchApplyUpdateActionInput, opts ...request.Option) (*BatchApplyUpdateActionOutput, error) {
   322  	req, out := c.BatchApplyUpdateActionRequest(input)
   323  	req.SetContext(ctx)
   324  	req.ApplyOptions(opts...)
   325  	return out, req.Send()
   326  }
   327  
   328  const opBatchStopUpdateAction = "BatchStopUpdateAction"
   329  
   330  // BatchStopUpdateActionRequest generates a "aws/request.Request" representing the
   331  // client's request for the BatchStopUpdateAction operation. The "output" return
   332  // value will be populated with the request's response once the request completes
   333  // successfully.
   334  //
   335  // Use "Send" method on the returned Request to send the API call to the service.
   336  // the "output" return value is not valid until after Send returns without error.
   337  //
   338  // See BatchStopUpdateAction for more information on using the BatchStopUpdateAction
   339  // API call, and error handling.
   340  //
   341  // This method is useful when you want to inject custom logic or configuration
   342  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   343  //
   344  //
   345  //    // Example sending a request using the BatchStopUpdateActionRequest method.
   346  //    req, resp := client.BatchStopUpdateActionRequest(params)
   347  //
   348  //    err := req.Send()
   349  //    if err == nil { // resp is now filled
   350  //        fmt.Println(resp)
   351  //    }
   352  //
   353  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/BatchStopUpdateAction
   354  func (c *ElastiCache) BatchStopUpdateActionRequest(input *BatchStopUpdateActionInput) (req *request.Request, output *BatchStopUpdateActionOutput) {
   355  	op := &request.Operation{
   356  		Name:       opBatchStopUpdateAction,
   357  		HTTPMethod: "POST",
   358  		HTTPPath:   "/",
   359  	}
   360  
   361  	if input == nil {
   362  		input = &BatchStopUpdateActionInput{}
   363  	}
   364  
   365  	output = &BatchStopUpdateActionOutput{}
   366  	req = c.newRequest(op, input, output)
   367  	return
   368  }
   369  
   370  // BatchStopUpdateAction API operation for Amazon ElastiCache.
   371  //
   372  // Stop the service update. For more information on service updates and stopping
   373  // them, see Stopping Service Updates (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/stopping-self-service-updates.html).
   374  //
   375  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   376  // with awserr.Error's Code and Message methods to get detailed information about
   377  // the error.
   378  //
   379  // See the AWS API reference guide for Amazon ElastiCache's
   380  // API operation BatchStopUpdateAction for usage and error information.
   381  //
   382  // Returned Error Codes:
   383  //   * ErrCodeServiceUpdateNotFoundFault "ServiceUpdateNotFoundFault"
   384  //   The service update doesn't exist
   385  //
   386  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
   387  //   The value for a parameter is invalid.
   388  //
   389  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/BatchStopUpdateAction
   390  func (c *ElastiCache) BatchStopUpdateAction(input *BatchStopUpdateActionInput) (*BatchStopUpdateActionOutput, error) {
   391  	req, out := c.BatchStopUpdateActionRequest(input)
   392  	return out, req.Send()
   393  }
   394  
   395  // BatchStopUpdateActionWithContext is the same as BatchStopUpdateAction with the addition of
   396  // the ability to pass a context and additional request options.
   397  //
   398  // See BatchStopUpdateAction for details on how to use this API operation.
   399  //
   400  // The context must be non-nil and will be used for request cancellation. If
   401  // the context is nil a panic will occur. In the future the SDK may create
   402  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   403  // for more information on using Contexts.
   404  func (c *ElastiCache) BatchStopUpdateActionWithContext(ctx aws.Context, input *BatchStopUpdateActionInput, opts ...request.Option) (*BatchStopUpdateActionOutput, error) {
   405  	req, out := c.BatchStopUpdateActionRequest(input)
   406  	req.SetContext(ctx)
   407  	req.ApplyOptions(opts...)
   408  	return out, req.Send()
   409  }
   410  
   411  const opCompleteMigration = "CompleteMigration"
   412  
   413  // CompleteMigrationRequest generates a "aws/request.Request" representing the
   414  // client's request for the CompleteMigration operation. The "output" return
   415  // value will be populated with the request's response once the request completes
   416  // successfully.
   417  //
   418  // Use "Send" method on the returned Request to send the API call to the service.
   419  // the "output" return value is not valid until after Send returns without error.
   420  //
   421  // See CompleteMigration for more information on using the CompleteMigration
   422  // API call, and error handling.
   423  //
   424  // This method is useful when you want to inject custom logic or configuration
   425  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   426  //
   427  //
   428  //    // Example sending a request using the CompleteMigrationRequest method.
   429  //    req, resp := client.CompleteMigrationRequest(params)
   430  //
   431  //    err := req.Send()
   432  //    if err == nil { // resp is now filled
   433  //        fmt.Println(resp)
   434  //    }
   435  //
   436  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CompleteMigration
   437  func (c *ElastiCache) CompleteMigrationRequest(input *CompleteMigrationInput) (req *request.Request, output *CompleteMigrationOutput) {
   438  	op := &request.Operation{
   439  		Name:       opCompleteMigration,
   440  		HTTPMethod: "POST",
   441  		HTTPPath:   "/",
   442  	}
   443  
   444  	if input == nil {
   445  		input = &CompleteMigrationInput{}
   446  	}
   447  
   448  	output = &CompleteMigrationOutput{}
   449  	req = c.newRequest(op, input, output)
   450  	return
   451  }
   452  
   453  // CompleteMigration API operation for Amazon ElastiCache.
   454  //
   455  // Complete the migration of data.
   456  //
   457  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   458  // with awserr.Error's Code and Message methods to get detailed information about
   459  // the error.
   460  //
   461  // See the AWS API reference guide for Amazon ElastiCache's
   462  // API operation CompleteMigration for usage and error information.
   463  //
   464  // Returned Error Codes:
   465  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
   466  //   The specified replication group does not exist.
   467  //
   468  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
   469  //   The requested replication group is not in the available state.
   470  //
   471  //   * ErrCodeReplicationGroupNotUnderMigrationFault "ReplicationGroupNotUnderMigrationFault"
   472  //   The designated replication group is not available for data migration.
   473  //
   474  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CompleteMigration
   475  func (c *ElastiCache) CompleteMigration(input *CompleteMigrationInput) (*CompleteMigrationOutput, error) {
   476  	req, out := c.CompleteMigrationRequest(input)
   477  	return out, req.Send()
   478  }
   479  
   480  // CompleteMigrationWithContext is the same as CompleteMigration with the addition of
   481  // the ability to pass a context and additional request options.
   482  //
   483  // See CompleteMigration for details on how to use this API operation.
   484  //
   485  // The context must be non-nil and will be used for request cancellation. If
   486  // the context is nil a panic will occur. In the future the SDK may create
   487  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   488  // for more information on using Contexts.
   489  func (c *ElastiCache) CompleteMigrationWithContext(ctx aws.Context, input *CompleteMigrationInput, opts ...request.Option) (*CompleteMigrationOutput, error) {
   490  	req, out := c.CompleteMigrationRequest(input)
   491  	req.SetContext(ctx)
   492  	req.ApplyOptions(opts...)
   493  	return out, req.Send()
   494  }
   495  
   496  const opCopySnapshot = "CopySnapshot"
   497  
   498  // CopySnapshotRequest generates a "aws/request.Request" representing the
   499  // client's request for the CopySnapshot operation. The "output" return
   500  // value will be populated with the request's response once the request completes
   501  // successfully.
   502  //
   503  // Use "Send" method on the returned Request to send the API call to the service.
   504  // the "output" return value is not valid until after Send returns without error.
   505  //
   506  // See CopySnapshot for more information on using the CopySnapshot
   507  // API call, and error handling.
   508  //
   509  // This method is useful when you want to inject custom logic or configuration
   510  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   511  //
   512  //
   513  //    // Example sending a request using the CopySnapshotRequest method.
   514  //    req, resp := client.CopySnapshotRequest(params)
   515  //
   516  //    err := req.Send()
   517  //    if err == nil { // resp is now filled
   518  //        fmt.Println(resp)
   519  //    }
   520  //
   521  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CopySnapshot
   522  func (c *ElastiCache) CopySnapshotRequest(input *CopySnapshotInput) (req *request.Request, output *CopySnapshotOutput) {
   523  	op := &request.Operation{
   524  		Name:       opCopySnapshot,
   525  		HTTPMethod: "POST",
   526  		HTTPPath:   "/",
   527  	}
   528  
   529  	if input == nil {
   530  		input = &CopySnapshotInput{}
   531  	}
   532  
   533  	output = &CopySnapshotOutput{}
   534  	req = c.newRequest(op, input, output)
   535  	return
   536  }
   537  
   538  // CopySnapshot API operation for Amazon ElastiCache.
   539  //
   540  // Makes a copy of an existing snapshot.
   541  //
   542  // This operation is valid for Redis only.
   543  //
   544  // Users or groups that have permissions to use the CopySnapshot operation can
   545  // create their own Amazon S3 buckets and copy snapshots to it. To control access
   546  // to your snapshots, use an IAM policy to control who has the ability to use
   547  // the CopySnapshot operation. For more information about using IAM to control
   548  // the use of ElastiCache operations, see Exporting Snapshots (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html)
   549  // and Authentication & Access Control (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/IAM.html).
   550  //
   551  // You could receive the following error messages.
   552  //
   553  // Error Messages
   554  //
   555  //    * Error Message: The S3 bucket %s is outside of the region. Solution:
   556  //    Create an Amazon S3 bucket in the same region as your snapshot. For more
   557  //    information, see Step 1: Create an Amazon S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-create-s3-bucket)
   558  //    in the ElastiCache User Guide.
   559  //
   560  //    * Error Message: The S3 bucket %s does not exist. Solution: Create an
   561  //    Amazon S3 bucket in the same region as your snapshot. For more information,
   562  //    see Step 1: Create an Amazon S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-create-s3-bucket)
   563  //    in the ElastiCache User Guide.
   564  //
   565  //    * Error Message: The S3 bucket %s is not owned by the authenticated user.
   566  //    Solution: Create an Amazon S3 bucket in the same region as your snapshot.
   567  //    For more information, see Step 1: Create an Amazon S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-create-s3-bucket)
   568  //    in the ElastiCache User Guide.
   569  //
   570  //    * Error Message: The authenticated user does not have sufficient permissions
   571  //    to perform the desired activity. Solution: Contact your system administrator
   572  //    to get the needed permissions.
   573  //
   574  //    * Error Message: The S3 bucket %s already contains an object with key
   575  //    %s. Solution: Give the TargetSnapshotName a new and unique value. If exporting
   576  //    a snapshot, you could alternatively create a new Amazon S3 bucket and
   577  //    use this same value for TargetSnapshotName.
   578  //
   579  //    * Error Message: ElastiCache has not been granted READ permissions %s
   580  //    on the S3 Bucket. Solution: Add List and Read permissions on the bucket.
   581  //    For more information, see Step 2: Grant ElastiCache Access to Your Amazon
   582  //    S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access)
   583  //    in the ElastiCache User Guide.
   584  //
   585  //    * Error Message: ElastiCache has not been granted WRITE permissions %s
   586  //    on the S3 Bucket. Solution: Add Upload/Delete permissions on the bucket.
   587  //    For more information, see Step 2: Grant ElastiCache Access to Your Amazon
   588  //    S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access)
   589  //    in the ElastiCache User Guide.
   590  //
   591  //    * Error Message: ElastiCache has not been granted READ_ACP permissions
   592  //    %s on the S3 Bucket. Solution: Add View Permissions on the bucket. For
   593  //    more information, see Step 2: Grant ElastiCache Access to Your Amazon
   594  //    S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access)
   595  //    in the ElastiCache User Guide.
   596  //
   597  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   598  // with awserr.Error's Code and Message methods to get detailed information about
   599  // the error.
   600  //
   601  // See the AWS API reference guide for Amazon ElastiCache's
   602  // API operation CopySnapshot for usage and error information.
   603  //
   604  // Returned Error Codes:
   605  //   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
   606  //   You already have a snapshot with the given name.
   607  //
   608  //   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
   609  //   The requested snapshot name does not refer to an existing snapshot.
   610  //
   611  //   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
   612  //   The request cannot be processed because it would exceed the maximum number
   613  //   of snapshots.
   614  //
   615  //   * ErrCodeInvalidSnapshotStateFault "InvalidSnapshotState"
   616  //   The current state of the snapshot does not allow the requested operation
   617  //   to occur.
   618  //
   619  //   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
   620  //   The request cannot be processed because it would cause the resource to have
   621  //   more than the allowed number of tags. The maximum number of tags permitted
   622  //   on a resource is 50.
   623  //
   624  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
   625  //   The value for a parameter is invalid.
   626  //
   627  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
   628  //   Two or more incompatible parameters were specified.
   629  //
   630  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CopySnapshot
   631  func (c *ElastiCache) CopySnapshot(input *CopySnapshotInput) (*CopySnapshotOutput, error) {
   632  	req, out := c.CopySnapshotRequest(input)
   633  	return out, req.Send()
   634  }
   635  
   636  // CopySnapshotWithContext is the same as CopySnapshot with the addition of
   637  // the ability to pass a context and additional request options.
   638  //
   639  // See CopySnapshot for details on how to use this API operation.
   640  //
   641  // The context must be non-nil and will be used for request cancellation. If
   642  // the context is nil a panic will occur. In the future the SDK may create
   643  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   644  // for more information on using Contexts.
   645  func (c *ElastiCache) CopySnapshotWithContext(ctx aws.Context, input *CopySnapshotInput, opts ...request.Option) (*CopySnapshotOutput, error) {
   646  	req, out := c.CopySnapshotRequest(input)
   647  	req.SetContext(ctx)
   648  	req.ApplyOptions(opts...)
   649  	return out, req.Send()
   650  }
   651  
   652  const opCreateCacheCluster = "CreateCacheCluster"
   653  
   654  // CreateCacheClusterRequest generates a "aws/request.Request" representing the
   655  // client's request for the CreateCacheCluster operation. The "output" return
   656  // value will be populated with the request's response once the request completes
   657  // successfully.
   658  //
   659  // Use "Send" method on the returned Request to send the API call to the service.
   660  // the "output" return value is not valid until after Send returns without error.
   661  //
   662  // See CreateCacheCluster for more information on using the CreateCacheCluster
   663  // API call, and error handling.
   664  //
   665  // This method is useful when you want to inject custom logic or configuration
   666  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   667  //
   668  //
   669  //    // Example sending a request using the CreateCacheClusterRequest method.
   670  //    req, resp := client.CreateCacheClusterRequest(params)
   671  //
   672  //    err := req.Send()
   673  //    if err == nil { // resp is now filled
   674  //        fmt.Println(resp)
   675  //    }
   676  //
   677  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheCluster
   678  func (c *ElastiCache) CreateCacheClusterRequest(input *CreateCacheClusterInput) (req *request.Request, output *CreateCacheClusterOutput) {
   679  	op := &request.Operation{
   680  		Name:       opCreateCacheCluster,
   681  		HTTPMethod: "POST",
   682  		HTTPPath:   "/",
   683  	}
   684  
   685  	if input == nil {
   686  		input = &CreateCacheClusterInput{}
   687  	}
   688  
   689  	output = &CreateCacheClusterOutput{}
   690  	req = c.newRequest(op, input, output)
   691  	return
   692  }
   693  
   694  // CreateCacheCluster API operation for Amazon ElastiCache.
   695  //
   696  // Creates a cluster. All nodes in the cluster run the same protocol-compliant
   697  // cache engine software, either Memcached or Redis.
   698  //
   699  // This operation is not supported for Redis (cluster mode enabled) clusters.
   700  //
   701  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   702  // with awserr.Error's Code and Message methods to get detailed information about
   703  // the error.
   704  //
   705  // See the AWS API reference guide for Amazon ElastiCache's
   706  // API operation CreateCacheCluster for usage and error information.
   707  //
   708  // Returned Error Codes:
   709  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
   710  //   The specified replication group does not exist.
   711  //
   712  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
   713  //   The requested replication group is not in the available state.
   714  //
   715  //   * ErrCodeCacheClusterAlreadyExistsFault "CacheClusterAlreadyExists"
   716  //   You already have a cluster with the given identifier.
   717  //
   718  //   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
   719  //   The requested cache node type is not available in the specified Availability
   720  //   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
   721  //   in the ElastiCache User Guide.
   722  //
   723  //   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
   724  //   The requested cache security group name does not refer to an existing cache
   725  //   security group.
   726  //
   727  //   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
   728  //   The requested cache subnet group name does not refer to an existing cache
   729  //   subnet group.
   730  //
   731  //   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
   732  //   The request cannot be processed because it would exceed the allowed number
   733  //   of clusters per customer.
   734  //
   735  //   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
   736  //   The request cannot be processed because it would exceed the allowed number
   737  //   of cache nodes in a single cluster.
   738  //
   739  //   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
   740  //   The request cannot be processed because it would exceed the allowed number
   741  //   of cache nodes per customer.
   742  //
   743  //   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
   744  //   The requested cache parameter group name does not refer to an existing cache
   745  //   parameter group.
   746  //
   747  //   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
   748  //   The VPC network is in an invalid state.
   749  //
   750  //   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
   751  //   The request cannot be processed because it would cause the resource to have
   752  //   more than the allowed number of tags. The maximum number of tags permitted
   753  //   on a resource is 50.
   754  //
   755  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
   756  //   The value for a parameter is invalid.
   757  //
   758  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
   759  //   Two or more incompatible parameters were specified.
   760  //
   761  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheCluster
   762  func (c *ElastiCache) CreateCacheCluster(input *CreateCacheClusterInput) (*CreateCacheClusterOutput, error) {
   763  	req, out := c.CreateCacheClusterRequest(input)
   764  	return out, req.Send()
   765  }
   766  
   767  // CreateCacheClusterWithContext is the same as CreateCacheCluster with the addition of
   768  // the ability to pass a context and additional request options.
   769  //
   770  // See CreateCacheCluster for details on how to use this API operation.
   771  //
   772  // The context must be non-nil and will be used for request cancellation. If
   773  // the context is nil a panic will occur. In the future the SDK may create
   774  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   775  // for more information on using Contexts.
   776  func (c *ElastiCache) CreateCacheClusterWithContext(ctx aws.Context, input *CreateCacheClusterInput, opts ...request.Option) (*CreateCacheClusterOutput, error) {
   777  	req, out := c.CreateCacheClusterRequest(input)
   778  	req.SetContext(ctx)
   779  	req.ApplyOptions(opts...)
   780  	return out, req.Send()
   781  }
   782  
   783  const opCreateCacheParameterGroup = "CreateCacheParameterGroup"
   784  
   785  // CreateCacheParameterGroupRequest generates a "aws/request.Request" representing the
   786  // client's request for the CreateCacheParameterGroup operation. The "output" return
   787  // value will be populated with the request's response once the request completes
   788  // successfully.
   789  //
   790  // Use "Send" method on the returned Request to send the API call to the service.
   791  // the "output" return value is not valid until after Send returns without error.
   792  //
   793  // See CreateCacheParameterGroup for more information on using the CreateCacheParameterGroup
   794  // API call, and error handling.
   795  //
   796  // This method is useful when you want to inject custom logic or configuration
   797  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   798  //
   799  //
   800  //    // Example sending a request using the CreateCacheParameterGroupRequest method.
   801  //    req, resp := client.CreateCacheParameterGroupRequest(params)
   802  //
   803  //    err := req.Send()
   804  //    if err == nil { // resp is now filled
   805  //        fmt.Println(resp)
   806  //    }
   807  //
   808  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheParameterGroup
   809  func (c *ElastiCache) CreateCacheParameterGroupRequest(input *CreateCacheParameterGroupInput) (req *request.Request, output *CreateCacheParameterGroupOutput) {
   810  	op := &request.Operation{
   811  		Name:       opCreateCacheParameterGroup,
   812  		HTTPMethod: "POST",
   813  		HTTPPath:   "/",
   814  	}
   815  
   816  	if input == nil {
   817  		input = &CreateCacheParameterGroupInput{}
   818  	}
   819  
   820  	output = &CreateCacheParameterGroupOutput{}
   821  	req = c.newRequest(op, input, output)
   822  	return
   823  }
   824  
   825  // CreateCacheParameterGroup API operation for Amazon ElastiCache.
   826  //
   827  // Creates a new Amazon ElastiCache cache parameter group. An ElastiCache cache
   828  // parameter group is a collection of parameters and their values that are applied
   829  // to all of the nodes in any cluster or replication group using the CacheParameterGroup.
   830  //
   831  // A newly created CacheParameterGroup is an exact duplicate of the default
   832  // parameter group for the CacheParameterGroupFamily. To customize the newly
   833  // created CacheParameterGroup you can change the values of specific parameters.
   834  // For more information, see:
   835  //
   836  //    * ModifyCacheParameterGroup (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheParameterGroup.html)
   837  //    in the ElastiCache API Reference.
   838  //
   839  //    * Parameters and Parameter Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ParameterGroups.html)
   840  //    in the ElastiCache User Guide.
   841  //
   842  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   843  // with awserr.Error's Code and Message methods to get detailed information about
   844  // the error.
   845  //
   846  // See the AWS API reference guide for Amazon ElastiCache's
   847  // API operation CreateCacheParameterGroup for usage and error information.
   848  //
   849  // Returned Error Codes:
   850  //   * ErrCodeCacheParameterGroupQuotaExceededFault "CacheParameterGroupQuotaExceeded"
   851  //   The request cannot be processed because it would exceed the maximum number
   852  //   of cache security groups.
   853  //
   854  //   * ErrCodeCacheParameterGroupAlreadyExistsFault "CacheParameterGroupAlreadyExists"
   855  //   A cache parameter group with the requested name already exists.
   856  //
   857  //   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
   858  //   The current state of the cache parameter group does not allow the requested
   859  //   operation to occur.
   860  //
   861  //   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
   862  //   The request cannot be processed because it would cause the resource to have
   863  //   more than the allowed number of tags. The maximum number of tags permitted
   864  //   on a resource is 50.
   865  //
   866  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
   867  //   The value for a parameter is invalid.
   868  //
   869  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
   870  //   Two or more incompatible parameters were specified.
   871  //
   872  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheParameterGroup
   873  func (c *ElastiCache) CreateCacheParameterGroup(input *CreateCacheParameterGroupInput) (*CreateCacheParameterGroupOutput, error) {
   874  	req, out := c.CreateCacheParameterGroupRequest(input)
   875  	return out, req.Send()
   876  }
   877  
   878  // CreateCacheParameterGroupWithContext is the same as CreateCacheParameterGroup with the addition of
   879  // the ability to pass a context and additional request options.
   880  //
   881  // See CreateCacheParameterGroup for details on how to use this API operation.
   882  //
   883  // The context must be non-nil and will be used for request cancellation. If
   884  // the context is nil a panic will occur. In the future the SDK may create
   885  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   886  // for more information on using Contexts.
   887  func (c *ElastiCache) CreateCacheParameterGroupWithContext(ctx aws.Context, input *CreateCacheParameterGroupInput, opts ...request.Option) (*CreateCacheParameterGroupOutput, error) {
   888  	req, out := c.CreateCacheParameterGroupRequest(input)
   889  	req.SetContext(ctx)
   890  	req.ApplyOptions(opts...)
   891  	return out, req.Send()
   892  }
   893  
   894  const opCreateCacheSecurityGroup = "CreateCacheSecurityGroup"
   895  
   896  // CreateCacheSecurityGroupRequest generates a "aws/request.Request" representing the
   897  // client's request for the CreateCacheSecurityGroup operation. The "output" return
   898  // value will be populated with the request's response once the request completes
   899  // successfully.
   900  //
   901  // Use "Send" method on the returned Request to send the API call to the service.
   902  // the "output" return value is not valid until after Send returns without error.
   903  //
   904  // See CreateCacheSecurityGroup for more information on using the CreateCacheSecurityGroup
   905  // API call, and error handling.
   906  //
   907  // This method is useful when you want to inject custom logic or configuration
   908  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   909  //
   910  //
   911  //    // Example sending a request using the CreateCacheSecurityGroupRequest method.
   912  //    req, resp := client.CreateCacheSecurityGroupRequest(params)
   913  //
   914  //    err := req.Send()
   915  //    if err == nil { // resp is now filled
   916  //        fmt.Println(resp)
   917  //    }
   918  //
   919  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheSecurityGroup
   920  func (c *ElastiCache) CreateCacheSecurityGroupRequest(input *CreateCacheSecurityGroupInput) (req *request.Request, output *CreateCacheSecurityGroupOutput) {
   921  	op := &request.Operation{
   922  		Name:       opCreateCacheSecurityGroup,
   923  		HTTPMethod: "POST",
   924  		HTTPPath:   "/",
   925  	}
   926  
   927  	if input == nil {
   928  		input = &CreateCacheSecurityGroupInput{}
   929  	}
   930  
   931  	output = &CreateCacheSecurityGroupOutput{}
   932  	req = c.newRequest(op, input, output)
   933  	return
   934  }
   935  
   936  // CreateCacheSecurityGroup API operation for Amazon ElastiCache.
   937  //
   938  // Creates a new cache security group. Use a cache security group to control
   939  // access to one or more clusters.
   940  //
   941  // Cache security groups are only used when you are creating a cluster outside
   942  // of an Amazon Virtual Private Cloud (Amazon VPC). If you are creating a cluster
   943  // inside of a VPC, use a cache subnet group instead. For more information,
   944  // see CreateCacheSubnetGroup (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheSubnetGroup.html).
   945  //
   946  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   947  // with awserr.Error's Code and Message methods to get detailed information about
   948  // the error.
   949  //
   950  // See the AWS API reference guide for Amazon ElastiCache's
   951  // API operation CreateCacheSecurityGroup for usage and error information.
   952  //
   953  // Returned Error Codes:
   954  //   * ErrCodeCacheSecurityGroupAlreadyExistsFault "CacheSecurityGroupAlreadyExists"
   955  //   A cache security group with the specified name already exists.
   956  //
   957  //   * ErrCodeCacheSecurityGroupQuotaExceededFault "QuotaExceeded.CacheSecurityGroup"
   958  //   The request cannot be processed because it would exceed the allowed number
   959  //   of cache security groups.
   960  //
   961  //   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
   962  //   The request cannot be processed because it would cause the resource to have
   963  //   more than the allowed number of tags. The maximum number of tags permitted
   964  //   on a resource is 50.
   965  //
   966  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
   967  //   The value for a parameter is invalid.
   968  //
   969  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
   970  //   Two or more incompatible parameters were specified.
   971  //
   972  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheSecurityGroup
   973  func (c *ElastiCache) CreateCacheSecurityGroup(input *CreateCacheSecurityGroupInput) (*CreateCacheSecurityGroupOutput, error) {
   974  	req, out := c.CreateCacheSecurityGroupRequest(input)
   975  	return out, req.Send()
   976  }
   977  
   978  // CreateCacheSecurityGroupWithContext is the same as CreateCacheSecurityGroup with the addition of
   979  // the ability to pass a context and additional request options.
   980  //
   981  // See CreateCacheSecurityGroup for details on how to use this API operation.
   982  //
   983  // The context must be non-nil and will be used for request cancellation. If
   984  // the context is nil a panic will occur. In the future the SDK may create
   985  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   986  // for more information on using Contexts.
   987  func (c *ElastiCache) CreateCacheSecurityGroupWithContext(ctx aws.Context, input *CreateCacheSecurityGroupInput, opts ...request.Option) (*CreateCacheSecurityGroupOutput, error) {
   988  	req, out := c.CreateCacheSecurityGroupRequest(input)
   989  	req.SetContext(ctx)
   990  	req.ApplyOptions(opts...)
   991  	return out, req.Send()
   992  }
   993  
   994  const opCreateCacheSubnetGroup = "CreateCacheSubnetGroup"
   995  
   996  // CreateCacheSubnetGroupRequest generates a "aws/request.Request" representing the
   997  // client's request for the CreateCacheSubnetGroup operation. The "output" return
   998  // value will be populated with the request's response once the request completes
   999  // successfully.
  1000  //
  1001  // Use "Send" method on the returned Request to send the API call to the service.
  1002  // the "output" return value is not valid until after Send returns without error.
  1003  //
  1004  // See CreateCacheSubnetGroup for more information on using the CreateCacheSubnetGroup
  1005  // API call, and error handling.
  1006  //
  1007  // This method is useful when you want to inject custom logic or configuration
  1008  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1009  //
  1010  //
  1011  //    // Example sending a request using the CreateCacheSubnetGroupRequest method.
  1012  //    req, resp := client.CreateCacheSubnetGroupRequest(params)
  1013  //
  1014  //    err := req.Send()
  1015  //    if err == nil { // resp is now filled
  1016  //        fmt.Println(resp)
  1017  //    }
  1018  //
  1019  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheSubnetGroup
  1020  func (c *ElastiCache) CreateCacheSubnetGroupRequest(input *CreateCacheSubnetGroupInput) (req *request.Request, output *CreateCacheSubnetGroupOutput) {
  1021  	op := &request.Operation{
  1022  		Name:       opCreateCacheSubnetGroup,
  1023  		HTTPMethod: "POST",
  1024  		HTTPPath:   "/",
  1025  	}
  1026  
  1027  	if input == nil {
  1028  		input = &CreateCacheSubnetGroupInput{}
  1029  	}
  1030  
  1031  	output = &CreateCacheSubnetGroupOutput{}
  1032  	req = c.newRequest(op, input, output)
  1033  	return
  1034  }
  1035  
  1036  // CreateCacheSubnetGroup API operation for Amazon ElastiCache.
  1037  //
  1038  // Creates a new cache subnet group.
  1039  //
  1040  // Use this parameter only when you are creating a cluster in an Amazon Virtual
  1041  // Private Cloud (Amazon VPC).
  1042  //
  1043  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1044  // with awserr.Error's Code and Message methods to get detailed information about
  1045  // the error.
  1046  //
  1047  // See the AWS API reference guide for Amazon ElastiCache's
  1048  // API operation CreateCacheSubnetGroup for usage and error information.
  1049  //
  1050  // Returned Error Codes:
  1051  //   * ErrCodeCacheSubnetGroupAlreadyExistsFault "CacheSubnetGroupAlreadyExists"
  1052  //   The requested cache subnet group name is already in use by an existing cache
  1053  //   subnet group.
  1054  //
  1055  //   * ErrCodeCacheSubnetGroupQuotaExceededFault "CacheSubnetGroupQuotaExceeded"
  1056  //   The request cannot be processed because it would exceed the allowed number
  1057  //   of cache subnet groups.
  1058  //
  1059  //   * ErrCodeCacheSubnetQuotaExceededFault "CacheSubnetQuotaExceededFault"
  1060  //   The request cannot be processed because it would exceed the allowed number
  1061  //   of subnets in a cache subnet group.
  1062  //
  1063  //   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
  1064  //   The request cannot be processed because it would cause the resource to have
  1065  //   more than the allowed number of tags. The maximum number of tags permitted
  1066  //   on a resource is 50.
  1067  //
  1068  //   * ErrCodeInvalidSubnet "InvalidSubnet"
  1069  //   An invalid subnet identifier was specified.
  1070  //
  1071  //   * ErrCodeSubnetNotAllowedFault "SubnetNotAllowedFault"
  1072  //   At least one subnet ID does not match the other subnet IDs. This mismatch
  1073  //   typically occurs when a user sets one subnet ID to a regional Availability
  1074  //   Zone and a different one to an outpost. Or when a user sets the subnet ID
  1075  //   to an Outpost when not subscribed on this service.
  1076  //
  1077  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheSubnetGroup
  1078  func (c *ElastiCache) CreateCacheSubnetGroup(input *CreateCacheSubnetGroupInput) (*CreateCacheSubnetGroupOutput, error) {
  1079  	req, out := c.CreateCacheSubnetGroupRequest(input)
  1080  	return out, req.Send()
  1081  }
  1082  
  1083  // CreateCacheSubnetGroupWithContext is the same as CreateCacheSubnetGroup with the addition of
  1084  // the ability to pass a context and additional request options.
  1085  //
  1086  // See CreateCacheSubnetGroup for details on how to use this API operation.
  1087  //
  1088  // The context must be non-nil and will be used for request cancellation. If
  1089  // the context is nil a panic will occur. In the future the SDK may create
  1090  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1091  // for more information on using Contexts.
  1092  func (c *ElastiCache) CreateCacheSubnetGroupWithContext(ctx aws.Context, input *CreateCacheSubnetGroupInput, opts ...request.Option) (*CreateCacheSubnetGroupOutput, error) {
  1093  	req, out := c.CreateCacheSubnetGroupRequest(input)
  1094  	req.SetContext(ctx)
  1095  	req.ApplyOptions(opts...)
  1096  	return out, req.Send()
  1097  }
  1098  
  1099  const opCreateGlobalReplicationGroup = "CreateGlobalReplicationGroup"
  1100  
  1101  // CreateGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
  1102  // client's request for the CreateGlobalReplicationGroup operation. The "output" return
  1103  // value will be populated with the request's response once the request completes
  1104  // successfully.
  1105  //
  1106  // Use "Send" method on the returned Request to send the API call to the service.
  1107  // the "output" return value is not valid until after Send returns without error.
  1108  //
  1109  // See CreateGlobalReplicationGroup for more information on using the CreateGlobalReplicationGroup
  1110  // API call, and error handling.
  1111  //
  1112  // This method is useful when you want to inject custom logic or configuration
  1113  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1114  //
  1115  //
  1116  //    // Example sending a request using the CreateGlobalReplicationGroupRequest method.
  1117  //    req, resp := client.CreateGlobalReplicationGroupRequest(params)
  1118  //
  1119  //    err := req.Send()
  1120  //    if err == nil { // resp is now filled
  1121  //        fmt.Println(resp)
  1122  //    }
  1123  //
  1124  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateGlobalReplicationGroup
  1125  func (c *ElastiCache) CreateGlobalReplicationGroupRequest(input *CreateGlobalReplicationGroupInput) (req *request.Request, output *CreateGlobalReplicationGroupOutput) {
  1126  	op := &request.Operation{
  1127  		Name:       opCreateGlobalReplicationGroup,
  1128  		HTTPMethod: "POST",
  1129  		HTTPPath:   "/",
  1130  	}
  1131  
  1132  	if input == nil {
  1133  		input = &CreateGlobalReplicationGroupInput{}
  1134  	}
  1135  
  1136  	output = &CreateGlobalReplicationGroupOutput{}
  1137  	req = c.newRequest(op, input, output)
  1138  	return
  1139  }
  1140  
  1141  // CreateGlobalReplicationGroup API operation for Amazon ElastiCache.
  1142  //
  1143  // Global Datastore for Redis offers fully managed, fast, reliable and secure
  1144  // cross-region replication. Using Global Datastore for Redis, you can create
  1145  // cross-region read replica clusters for ElastiCache for Redis to enable low-latency
  1146  // reads and disaster recovery across regions. For more information, see Replication
  1147  // Across Regions Using Global Datastore (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Redis-Global-Datastore.html).
  1148  //
  1149  //    * The GlobalReplicationGroupIdSuffix is the name of the Global datastore.
  1150  //
  1151  //    * The PrimaryReplicationGroupId represents the name of the primary cluster
  1152  //    that accepts writes and will replicate updates to the secondary cluster.
  1153  //
  1154  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1155  // with awserr.Error's Code and Message methods to get detailed information about
  1156  // the error.
  1157  //
  1158  // See the AWS API reference guide for Amazon ElastiCache's
  1159  // API operation CreateGlobalReplicationGroup for usage and error information.
  1160  //
  1161  // Returned Error Codes:
  1162  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  1163  //   The specified replication group does not exist.
  1164  //
  1165  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
  1166  //   The requested replication group is not in the available state.
  1167  //
  1168  //   * ErrCodeGlobalReplicationGroupAlreadyExistsFault "GlobalReplicationGroupAlreadyExistsFault"
  1169  //   The Global datastore name already exists.
  1170  //
  1171  //   * ErrCodeServiceLinkedRoleNotFoundFault "ServiceLinkedRoleNotFoundFault"
  1172  //   The specified service linked role (SLR) was not found.
  1173  //
  1174  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  1175  //   The value for a parameter is invalid.
  1176  //
  1177  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateGlobalReplicationGroup
  1178  func (c *ElastiCache) CreateGlobalReplicationGroup(input *CreateGlobalReplicationGroupInput) (*CreateGlobalReplicationGroupOutput, error) {
  1179  	req, out := c.CreateGlobalReplicationGroupRequest(input)
  1180  	return out, req.Send()
  1181  }
  1182  
  1183  // CreateGlobalReplicationGroupWithContext is the same as CreateGlobalReplicationGroup with the addition of
  1184  // the ability to pass a context and additional request options.
  1185  //
  1186  // See CreateGlobalReplicationGroup for details on how to use this API operation.
  1187  //
  1188  // The context must be non-nil and will be used for request cancellation. If
  1189  // the context is nil a panic will occur. In the future the SDK may create
  1190  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1191  // for more information on using Contexts.
  1192  func (c *ElastiCache) CreateGlobalReplicationGroupWithContext(ctx aws.Context, input *CreateGlobalReplicationGroupInput, opts ...request.Option) (*CreateGlobalReplicationGroupOutput, error) {
  1193  	req, out := c.CreateGlobalReplicationGroupRequest(input)
  1194  	req.SetContext(ctx)
  1195  	req.ApplyOptions(opts...)
  1196  	return out, req.Send()
  1197  }
  1198  
  1199  const opCreateReplicationGroup = "CreateReplicationGroup"
  1200  
  1201  // CreateReplicationGroupRequest generates a "aws/request.Request" representing the
  1202  // client's request for the CreateReplicationGroup operation. The "output" return
  1203  // value will be populated with the request's response once the request completes
  1204  // successfully.
  1205  //
  1206  // Use "Send" method on the returned Request to send the API call to the service.
  1207  // the "output" return value is not valid until after Send returns without error.
  1208  //
  1209  // See CreateReplicationGroup for more information on using the CreateReplicationGroup
  1210  // API call, and error handling.
  1211  //
  1212  // This method is useful when you want to inject custom logic or configuration
  1213  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1214  //
  1215  //
  1216  //    // Example sending a request using the CreateReplicationGroupRequest method.
  1217  //    req, resp := client.CreateReplicationGroupRequest(params)
  1218  //
  1219  //    err := req.Send()
  1220  //    if err == nil { // resp is now filled
  1221  //        fmt.Println(resp)
  1222  //    }
  1223  //
  1224  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateReplicationGroup
  1225  func (c *ElastiCache) CreateReplicationGroupRequest(input *CreateReplicationGroupInput) (req *request.Request, output *CreateReplicationGroupOutput) {
  1226  	op := &request.Operation{
  1227  		Name:       opCreateReplicationGroup,
  1228  		HTTPMethod: "POST",
  1229  		HTTPPath:   "/",
  1230  	}
  1231  
  1232  	if input == nil {
  1233  		input = &CreateReplicationGroupInput{}
  1234  	}
  1235  
  1236  	output = &CreateReplicationGroupOutput{}
  1237  	req = c.newRequest(op, input, output)
  1238  	return
  1239  }
  1240  
  1241  // CreateReplicationGroup API operation for Amazon ElastiCache.
  1242  //
  1243  // Creates a Redis (cluster mode disabled) or a Redis (cluster mode enabled)
  1244  // replication group.
  1245  //
  1246  // This API can be used to create a standalone regional replication group or
  1247  // a secondary replication group associated with a Global datastore.
  1248  //
  1249  // A Redis (cluster mode disabled) replication group is a collection of clusters,
  1250  // where one of the clusters is a read/write primary and the others are read-only
  1251  // replicas. Writes to the primary are asynchronously propagated to the replicas.
  1252  //
  1253  // A Redis cluster-mode enabled cluster is comprised of from 1 to 90 shards
  1254  // (API/CLI: node groups). Each shard has a primary node and up to 5 read-only
  1255  // replica nodes. The configuration can range from 90 shards and 0 replicas
  1256  // to 15 shards and 5 replicas, which is the maximum number or replicas allowed.
  1257  //
  1258  // The node or shard limit can be increased to a maximum of 500 per cluster
  1259  // if the Redis engine version is 5.0.6 or higher. For example, you can choose
  1260  // to configure a 500 node cluster that ranges between 83 shards (one primary
  1261  // and 5 replicas per shard) and 500 shards (single primary and no replicas).
  1262  // Make sure there are enough available IP addresses to accommodate the increase.
  1263  // Common pitfalls include the subnets in the subnet group have too small a
  1264  // CIDR range or the subnets are shared and heavily used by other clusters.
  1265  // For more information, see Creating a Subnet Group (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.Creating.html).
  1266  // For versions below 5.0.6, the limit is 250 per cluster.
  1267  //
  1268  // To request a limit increase, see Amazon Service Limits (https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)
  1269  // and choose the limit type Nodes per cluster per instance type.
  1270  //
  1271  // When a Redis (cluster mode disabled) replication group has been successfully
  1272  // created, you can add one or more read replicas to it, up to a total of 5
  1273  // read replicas. If you need to increase or decrease the number of node groups
  1274  // (console: shards), you can avail yourself of ElastiCache for Redis' scaling.
  1275  // For more information, see Scaling ElastiCache for Redis Clusters (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Scaling.html)
  1276  // in the ElastiCache User Guide.
  1277  //
  1278  // This operation is valid for Redis only.
  1279  //
  1280  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1281  // with awserr.Error's Code and Message methods to get detailed information about
  1282  // the error.
  1283  //
  1284  // See the AWS API reference guide for Amazon ElastiCache's
  1285  // API operation CreateReplicationGroup for usage and error information.
  1286  //
  1287  // Returned Error Codes:
  1288  //   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
  1289  //   The requested cluster ID does not refer to an existing cluster.
  1290  //
  1291  //   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
  1292  //   The requested cluster is not in the available state.
  1293  //
  1294  //   * ErrCodeReplicationGroupAlreadyExistsFault "ReplicationGroupAlreadyExists"
  1295  //   The specified replication group already exists.
  1296  //
  1297  //   * ErrCodeInvalidUserGroupStateFault "InvalidUserGroupState"
  1298  //   The user group is not in an active state.
  1299  //
  1300  //   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
  1301  //   The user group was not found or does not exist
  1302  //
  1303  //   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
  1304  //   The requested cache node type is not available in the specified Availability
  1305  //   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
  1306  //   in the ElastiCache User Guide.
  1307  //
  1308  //   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
  1309  //   The requested cache security group name does not refer to an existing cache
  1310  //   security group.
  1311  //
  1312  //   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
  1313  //   The requested cache subnet group name does not refer to an existing cache
  1314  //   subnet group.
  1315  //
  1316  //   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
  1317  //   The request cannot be processed because it would exceed the allowed number
  1318  //   of clusters per customer.
  1319  //
  1320  //   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
  1321  //   The request cannot be processed because it would exceed the allowed number
  1322  //   of cache nodes in a single cluster.
  1323  //
  1324  //   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
  1325  //   The request cannot be processed because it would exceed the allowed number
  1326  //   of cache nodes per customer.
  1327  //
  1328  //   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
  1329  //   The requested cache parameter group name does not refer to an existing cache
  1330  //   parameter group.
  1331  //
  1332  //   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
  1333  //   The VPC network is in an invalid state.
  1334  //
  1335  //   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
  1336  //   The request cannot be processed because it would cause the resource to have
  1337  //   more than the allowed number of tags. The maximum number of tags permitted
  1338  //   on a resource is 50.
  1339  //
  1340  //   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
  1341  //   The request cannot be processed because it would exceed the maximum allowed
  1342  //   number of node groups (shards) in a single replication group. The default
  1343  //   maximum is 90
  1344  //
  1345  //   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
  1346  //   The Global datastore does not exist
  1347  //
  1348  //   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
  1349  //   The Global datastore is not available or in primary-only state.
  1350  //
  1351  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  1352  //   The value for a parameter is invalid.
  1353  //
  1354  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  1355  //   Two or more incompatible parameters were specified.
  1356  //
  1357  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateReplicationGroup
  1358  func (c *ElastiCache) CreateReplicationGroup(input *CreateReplicationGroupInput) (*CreateReplicationGroupOutput, error) {
  1359  	req, out := c.CreateReplicationGroupRequest(input)
  1360  	return out, req.Send()
  1361  }
  1362  
  1363  // CreateReplicationGroupWithContext is the same as CreateReplicationGroup with the addition of
  1364  // the ability to pass a context and additional request options.
  1365  //
  1366  // See CreateReplicationGroup for details on how to use this API operation.
  1367  //
  1368  // The context must be non-nil and will be used for request cancellation. If
  1369  // the context is nil a panic will occur. In the future the SDK may create
  1370  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1371  // for more information on using Contexts.
  1372  func (c *ElastiCache) CreateReplicationGroupWithContext(ctx aws.Context, input *CreateReplicationGroupInput, opts ...request.Option) (*CreateReplicationGroupOutput, error) {
  1373  	req, out := c.CreateReplicationGroupRequest(input)
  1374  	req.SetContext(ctx)
  1375  	req.ApplyOptions(opts...)
  1376  	return out, req.Send()
  1377  }
  1378  
  1379  const opCreateSnapshot = "CreateSnapshot"
  1380  
  1381  // CreateSnapshotRequest generates a "aws/request.Request" representing the
  1382  // client's request for the CreateSnapshot operation. The "output" return
  1383  // value will be populated with the request's response once the request completes
  1384  // successfully.
  1385  //
  1386  // Use "Send" method on the returned Request to send the API call to the service.
  1387  // the "output" return value is not valid until after Send returns without error.
  1388  //
  1389  // See CreateSnapshot for more information on using the CreateSnapshot
  1390  // API call, and error handling.
  1391  //
  1392  // This method is useful when you want to inject custom logic or configuration
  1393  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1394  //
  1395  //
  1396  //    // Example sending a request using the CreateSnapshotRequest method.
  1397  //    req, resp := client.CreateSnapshotRequest(params)
  1398  //
  1399  //    err := req.Send()
  1400  //    if err == nil { // resp is now filled
  1401  //        fmt.Println(resp)
  1402  //    }
  1403  //
  1404  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateSnapshot
  1405  func (c *ElastiCache) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Request, output *CreateSnapshotOutput) {
  1406  	op := &request.Operation{
  1407  		Name:       opCreateSnapshot,
  1408  		HTTPMethod: "POST",
  1409  		HTTPPath:   "/",
  1410  	}
  1411  
  1412  	if input == nil {
  1413  		input = &CreateSnapshotInput{}
  1414  	}
  1415  
  1416  	output = &CreateSnapshotOutput{}
  1417  	req = c.newRequest(op, input, output)
  1418  	return
  1419  }
  1420  
  1421  // CreateSnapshot API operation for Amazon ElastiCache.
  1422  //
  1423  // Creates a copy of an entire cluster or replication group at a specific moment
  1424  // in time.
  1425  //
  1426  // This operation is valid for Redis only.
  1427  //
  1428  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1429  // with awserr.Error's Code and Message methods to get detailed information about
  1430  // the error.
  1431  //
  1432  // See the AWS API reference guide for Amazon ElastiCache's
  1433  // API operation CreateSnapshot for usage and error information.
  1434  //
  1435  // Returned Error Codes:
  1436  //   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
  1437  //   You already have a snapshot with the given name.
  1438  //
  1439  //   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
  1440  //   The requested cluster ID does not refer to an existing cluster.
  1441  //
  1442  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  1443  //   The specified replication group does not exist.
  1444  //
  1445  //   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
  1446  //   The requested cluster is not in the available state.
  1447  //
  1448  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
  1449  //   The requested replication group is not in the available state.
  1450  //
  1451  //   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
  1452  //   The request cannot be processed because it would exceed the maximum number
  1453  //   of snapshots.
  1454  //
  1455  //   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
  1456  //   You attempted one of the following operations:
  1457  //
  1458  //      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
  1459  //      node.
  1460  //
  1461  //      * Creating a snapshot of a cluster that is running Memcached rather than
  1462  //      Redis.
  1463  //
  1464  //   Neither of these are supported by ElastiCache.
  1465  //
  1466  //   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
  1467  //   The request cannot be processed because it would cause the resource to have
  1468  //   more than the allowed number of tags. The maximum number of tags permitted
  1469  //   on a resource is 50.
  1470  //
  1471  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  1472  //   Two or more incompatible parameters were specified.
  1473  //
  1474  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  1475  //   The value for a parameter is invalid.
  1476  //
  1477  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateSnapshot
  1478  func (c *ElastiCache) CreateSnapshot(input *CreateSnapshotInput) (*CreateSnapshotOutput, error) {
  1479  	req, out := c.CreateSnapshotRequest(input)
  1480  	return out, req.Send()
  1481  }
  1482  
  1483  // CreateSnapshotWithContext is the same as CreateSnapshot with the addition of
  1484  // the ability to pass a context and additional request options.
  1485  //
  1486  // See CreateSnapshot for details on how to use this API operation.
  1487  //
  1488  // The context must be non-nil and will be used for request cancellation. If
  1489  // the context is nil a panic will occur. In the future the SDK may create
  1490  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1491  // for more information on using Contexts.
  1492  func (c *ElastiCache) CreateSnapshotWithContext(ctx aws.Context, input *CreateSnapshotInput, opts ...request.Option) (*CreateSnapshotOutput, error) {
  1493  	req, out := c.CreateSnapshotRequest(input)
  1494  	req.SetContext(ctx)
  1495  	req.ApplyOptions(opts...)
  1496  	return out, req.Send()
  1497  }
  1498  
  1499  const opCreateUser = "CreateUser"
  1500  
  1501  // CreateUserRequest generates a "aws/request.Request" representing the
  1502  // client's request for the CreateUser operation. The "output" return
  1503  // value will be populated with the request's response once the request completes
  1504  // successfully.
  1505  //
  1506  // Use "Send" method on the returned Request to send the API call to the service.
  1507  // the "output" return value is not valid until after Send returns without error.
  1508  //
  1509  // See CreateUser for more information on using the CreateUser
  1510  // API call, and error handling.
  1511  //
  1512  // This method is useful when you want to inject custom logic or configuration
  1513  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1514  //
  1515  //
  1516  //    // Example sending a request using the CreateUserRequest method.
  1517  //    req, resp := client.CreateUserRequest(params)
  1518  //
  1519  //    err := req.Send()
  1520  //    if err == nil { // resp is now filled
  1521  //        fmt.Println(resp)
  1522  //    }
  1523  //
  1524  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateUser
  1525  func (c *ElastiCache) CreateUserRequest(input *CreateUserInput) (req *request.Request, output *CreateUserOutput) {
  1526  	op := &request.Operation{
  1527  		Name:       opCreateUser,
  1528  		HTTPMethod: "POST",
  1529  		HTTPPath:   "/",
  1530  	}
  1531  
  1532  	if input == nil {
  1533  		input = &CreateUserInput{}
  1534  	}
  1535  
  1536  	output = &CreateUserOutput{}
  1537  	req = c.newRequest(op, input, output)
  1538  	return
  1539  }
  1540  
  1541  // CreateUser API operation for Amazon ElastiCache.
  1542  //
  1543  // For Redis engine version 6.x onwards: Creates a Redis user. For more information,
  1544  // see Using Role Based Access Control (RBAC) (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.RBAC.html).
  1545  //
  1546  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1547  // with awserr.Error's Code and Message methods to get detailed information about
  1548  // the error.
  1549  //
  1550  // See the AWS API reference guide for Amazon ElastiCache's
  1551  // API operation CreateUser for usage and error information.
  1552  //
  1553  // Returned Error Codes:
  1554  //   * ErrCodeUserAlreadyExistsFault "UserAlreadyExists"
  1555  //   A user with this ID already exists.
  1556  //
  1557  //   * ErrCodeUserQuotaExceededFault "UserQuotaExceeded"
  1558  //   The quota of users has been exceeded.
  1559  //
  1560  //   * ErrCodeDuplicateUserNameFault "DuplicateUserName"
  1561  //   A user with this username already exists.
  1562  //
  1563  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  1564  //   The value for a parameter is invalid.
  1565  //
  1566  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  1567  //   Two or more incompatible parameters were specified.
  1568  //
  1569  //   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
  1570  //   The request cannot be processed because it would cause the resource to have
  1571  //   more than the allowed number of tags. The maximum number of tags permitted
  1572  //   on a resource is 50.
  1573  //
  1574  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateUser
  1575  func (c *ElastiCache) CreateUser(input *CreateUserInput) (*CreateUserOutput, error) {
  1576  	req, out := c.CreateUserRequest(input)
  1577  	return out, req.Send()
  1578  }
  1579  
  1580  // CreateUserWithContext is the same as CreateUser with the addition of
  1581  // the ability to pass a context and additional request options.
  1582  //
  1583  // See CreateUser for details on how to use this API operation.
  1584  //
  1585  // The context must be non-nil and will be used for request cancellation. If
  1586  // the context is nil a panic will occur. In the future the SDK may create
  1587  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1588  // for more information on using Contexts.
  1589  func (c *ElastiCache) CreateUserWithContext(ctx aws.Context, input *CreateUserInput, opts ...request.Option) (*CreateUserOutput, error) {
  1590  	req, out := c.CreateUserRequest(input)
  1591  	req.SetContext(ctx)
  1592  	req.ApplyOptions(opts...)
  1593  	return out, req.Send()
  1594  }
  1595  
  1596  const opCreateUserGroup = "CreateUserGroup"
  1597  
  1598  // CreateUserGroupRequest generates a "aws/request.Request" representing the
  1599  // client's request for the CreateUserGroup operation. The "output" return
  1600  // value will be populated with the request's response once the request completes
  1601  // successfully.
  1602  //
  1603  // Use "Send" method on the returned Request to send the API call to the service.
  1604  // the "output" return value is not valid until after Send returns without error.
  1605  //
  1606  // See CreateUserGroup for more information on using the CreateUserGroup
  1607  // API call, and error handling.
  1608  //
  1609  // This method is useful when you want to inject custom logic or configuration
  1610  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1611  //
  1612  //
  1613  //    // Example sending a request using the CreateUserGroupRequest method.
  1614  //    req, resp := client.CreateUserGroupRequest(params)
  1615  //
  1616  //    err := req.Send()
  1617  //    if err == nil { // resp is now filled
  1618  //        fmt.Println(resp)
  1619  //    }
  1620  //
  1621  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateUserGroup
  1622  func (c *ElastiCache) CreateUserGroupRequest(input *CreateUserGroupInput) (req *request.Request, output *CreateUserGroupOutput) {
  1623  	op := &request.Operation{
  1624  		Name:       opCreateUserGroup,
  1625  		HTTPMethod: "POST",
  1626  		HTTPPath:   "/",
  1627  	}
  1628  
  1629  	if input == nil {
  1630  		input = &CreateUserGroupInput{}
  1631  	}
  1632  
  1633  	output = &CreateUserGroupOutput{}
  1634  	req = c.newRequest(op, input, output)
  1635  	return
  1636  }
  1637  
  1638  // CreateUserGroup API operation for Amazon ElastiCache.
  1639  //
  1640  // For Redis engine version 6.x onwards: Creates a Redis user group. For more
  1641  // information, see Using Role Based Access Control (RBAC) (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.RBAC.html)
  1642  //
  1643  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1644  // with awserr.Error's Code and Message methods to get detailed information about
  1645  // the error.
  1646  //
  1647  // See the AWS API reference guide for Amazon ElastiCache's
  1648  // API operation CreateUserGroup for usage and error information.
  1649  //
  1650  // Returned Error Codes:
  1651  //   * ErrCodeUserNotFoundFault "UserNotFound"
  1652  //   The user does not exist or could not be found.
  1653  //
  1654  //   * ErrCodeDuplicateUserNameFault "DuplicateUserName"
  1655  //   A user with this username already exists.
  1656  //
  1657  //   * ErrCodeUserGroupAlreadyExistsFault "UserGroupAlreadyExists"
  1658  //   The user group with this ID already exists.
  1659  //
  1660  //   * ErrCodeDefaultUserRequired "DefaultUserRequired"
  1661  //   You must add default user to a user group.
  1662  //
  1663  //   * ErrCodeUserGroupQuotaExceededFault "UserGroupQuotaExceeded"
  1664  //   The number of users exceeds the user group limit.
  1665  //
  1666  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  1667  //   The value for a parameter is invalid.
  1668  //
  1669  //   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
  1670  //   The request cannot be processed because it would cause the resource to have
  1671  //   more than the allowed number of tags. The maximum number of tags permitted
  1672  //   on a resource is 50.
  1673  //
  1674  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateUserGroup
  1675  func (c *ElastiCache) CreateUserGroup(input *CreateUserGroupInput) (*CreateUserGroupOutput, error) {
  1676  	req, out := c.CreateUserGroupRequest(input)
  1677  	return out, req.Send()
  1678  }
  1679  
  1680  // CreateUserGroupWithContext is the same as CreateUserGroup with the addition of
  1681  // the ability to pass a context and additional request options.
  1682  //
  1683  // See CreateUserGroup for details on how to use this API operation.
  1684  //
  1685  // The context must be non-nil and will be used for request cancellation. If
  1686  // the context is nil a panic will occur. In the future the SDK may create
  1687  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1688  // for more information on using Contexts.
  1689  func (c *ElastiCache) CreateUserGroupWithContext(ctx aws.Context, input *CreateUserGroupInput, opts ...request.Option) (*CreateUserGroupOutput, error) {
  1690  	req, out := c.CreateUserGroupRequest(input)
  1691  	req.SetContext(ctx)
  1692  	req.ApplyOptions(opts...)
  1693  	return out, req.Send()
  1694  }
  1695  
  1696  const opDecreaseNodeGroupsInGlobalReplicationGroup = "DecreaseNodeGroupsInGlobalReplicationGroup"
  1697  
  1698  // DecreaseNodeGroupsInGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
  1699  // client's request for the DecreaseNodeGroupsInGlobalReplicationGroup operation. The "output" return
  1700  // value will be populated with the request's response once the request completes
  1701  // successfully.
  1702  //
  1703  // Use "Send" method on the returned Request to send the API call to the service.
  1704  // the "output" return value is not valid until after Send returns without error.
  1705  //
  1706  // See DecreaseNodeGroupsInGlobalReplicationGroup for more information on using the DecreaseNodeGroupsInGlobalReplicationGroup
  1707  // API call, and error handling.
  1708  //
  1709  // This method is useful when you want to inject custom logic or configuration
  1710  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1711  //
  1712  //
  1713  //    // Example sending a request using the DecreaseNodeGroupsInGlobalReplicationGroupRequest method.
  1714  //    req, resp := client.DecreaseNodeGroupsInGlobalReplicationGroupRequest(params)
  1715  //
  1716  //    err := req.Send()
  1717  //    if err == nil { // resp is now filled
  1718  //        fmt.Println(resp)
  1719  //    }
  1720  //
  1721  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseNodeGroupsInGlobalReplicationGroup
  1722  func (c *ElastiCache) DecreaseNodeGroupsInGlobalReplicationGroupRequest(input *DecreaseNodeGroupsInGlobalReplicationGroupInput) (req *request.Request, output *DecreaseNodeGroupsInGlobalReplicationGroupOutput) {
  1723  	op := &request.Operation{
  1724  		Name:       opDecreaseNodeGroupsInGlobalReplicationGroup,
  1725  		HTTPMethod: "POST",
  1726  		HTTPPath:   "/",
  1727  	}
  1728  
  1729  	if input == nil {
  1730  		input = &DecreaseNodeGroupsInGlobalReplicationGroupInput{}
  1731  	}
  1732  
  1733  	output = &DecreaseNodeGroupsInGlobalReplicationGroupOutput{}
  1734  	req = c.newRequest(op, input, output)
  1735  	return
  1736  }
  1737  
  1738  // DecreaseNodeGroupsInGlobalReplicationGroup API operation for Amazon ElastiCache.
  1739  //
  1740  // Decreases the number of node groups in a Global datastore
  1741  //
  1742  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1743  // with awserr.Error's Code and Message methods to get detailed information about
  1744  // the error.
  1745  //
  1746  // See the AWS API reference guide for Amazon ElastiCache's
  1747  // API operation DecreaseNodeGroupsInGlobalReplicationGroup for usage and error information.
  1748  //
  1749  // Returned Error Codes:
  1750  //   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
  1751  //   The Global datastore does not exist
  1752  //
  1753  //   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
  1754  //   The Global datastore is not available or in primary-only state.
  1755  //
  1756  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  1757  //   The value for a parameter is invalid.
  1758  //
  1759  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  1760  //   Two or more incompatible parameters were specified.
  1761  //
  1762  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseNodeGroupsInGlobalReplicationGroup
  1763  func (c *ElastiCache) DecreaseNodeGroupsInGlobalReplicationGroup(input *DecreaseNodeGroupsInGlobalReplicationGroupInput) (*DecreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
  1764  	req, out := c.DecreaseNodeGroupsInGlobalReplicationGroupRequest(input)
  1765  	return out, req.Send()
  1766  }
  1767  
  1768  // DecreaseNodeGroupsInGlobalReplicationGroupWithContext is the same as DecreaseNodeGroupsInGlobalReplicationGroup with the addition of
  1769  // the ability to pass a context and additional request options.
  1770  //
  1771  // See DecreaseNodeGroupsInGlobalReplicationGroup for details on how to use this API operation.
  1772  //
  1773  // The context must be non-nil and will be used for request cancellation. If
  1774  // the context is nil a panic will occur. In the future the SDK may create
  1775  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1776  // for more information on using Contexts.
  1777  func (c *ElastiCache) DecreaseNodeGroupsInGlobalReplicationGroupWithContext(ctx aws.Context, input *DecreaseNodeGroupsInGlobalReplicationGroupInput, opts ...request.Option) (*DecreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
  1778  	req, out := c.DecreaseNodeGroupsInGlobalReplicationGroupRequest(input)
  1779  	req.SetContext(ctx)
  1780  	req.ApplyOptions(opts...)
  1781  	return out, req.Send()
  1782  }
  1783  
  1784  const opDecreaseReplicaCount = "DecreaseReplicaCount"
  1785  
  1786  // DecreaseReplicaCountRequest generates a "aws/request.Request" representing the
  1787  // client's request for the DecreaseReplicaCount operation. The "output" return
  1788  // value will be populated with the request's response once the request completes
  1789  // successfully.
  1790  //
  1791  // Use "Send" method on the returned Request to send the API call to the service.
  1792  // the "output" return value is not valid until after Send returns without error.
  1793  //
  1794  // See DecreaseReplicaCount for more information on using the DecreaseReplicaCount
  1795  // API call, and error handling.
  1796  //
  1797  // This method is useful when you want to inject custom logic or configuration
  1798  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1799  //
  1800  //
  1801  //    // Example sending a request using the DecreaseReplicaCountRequest method.
  1802  //    req, resp := client.DecreaseReplicaCountRequest(params)
  1803  //
  1804  //    err := req.Send()
  1805  //    if err == nil { // resp is now filled
  1806  //        fmt.Println(resp)
  1807  //    }
  1808  //
  1809  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseReplicaCount
  1810  func (c *ElastiCache) DecreaseReplicaCountRequest(input *DecreaseReplicaCountInput) (req *request.Request, output *DecreaseReplicaCountOutput) {
  1811  	op := &request.Operation{
  1812  		Name:       opDecreaseReplicaCount,
  1813  		HTTPMethod: "POST",
  1814  		HTTPPath:   "/",
  1815  	}
  1816  
  1817  	if input == nil {
  1818  		input = &DecreaseReplicaCountInput{}
  1819  	}
  1820  
  1821  	output = &DecreaseReplicaCountOutput{}
  1822  	req = c.newRequest(op, input, output)
  1823  	return
  1824  }
  1825  
  1826  // DecreaseReplicaCount API operation for Amazon ElastiCache.
  1827  //
  1828  // Dynamically decreases the number of replicas in a Redis (cluster mode disabled)
  1829  // replication group or the number of replica nodes in one or more node groups
  1830  // (shards) of a Redis (cluster mode enabled) replication group. This operation
  1831  // is performed with no cluster down time.
  1832  //
  1833  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1834  // with awserr.Error's Code and Message methods to get detailed information about
  1835  // the error.
  1836  //
  1837  // See the AWS API reference guide for Amazon ElastiCache's
  1838  // API operation DecreaseReplicaCount for usage and error information.
  1839  //
  1840  // Returned Error Codes:
  1841  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  1842  //   The specified replication group does not exist.
  1843  //
  1844  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
  1845  //   The requested replication group is not in the available state.
  1846  //
  1847  //   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
  1848  //   The requested cluster is not in the available state.
  1849  //
  1850  //   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
  1851  //   The VPC network is in an invalid state.
  1852  //
  1853  //   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
  1854  //   The requested cache node type is not available in the specified Availability
  1855  //   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
  1856  //   in the ElastiCache User Guide.
  1857  //
  1858  //   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
  1859  //   The request cannot be processed because it would exceed the allowed number
  1860  //   of clusters per customer.
  1861  //
  1862  //   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
  1863  //   The request cannot be processed because it would exceed the maximum allowed
  1864  //   number of node groups (shards) in a single replication group. The default
  1865  //   maximum is 90
  1866  //
  1867  //   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
  1868  //   The request cannot be processed because it would exceed the allowed number
  1869  //   of cache nodes per customer.
  1870  //
  1871  //   * ErrCodeServiceLinkedRoleNotFoundFault "ServiceLinkedRoleNotFoundFault"
  1872  //   The specified service linked role (SLR) was not found.
  1873  //
  1874  //   * ErrCodeNoOperationFault "NoOperationFault"
  1875  //   The operation was not performed because no changes were required.
  1876  //
  1877  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  1878  //   The value for a parameter is invalid.
  1879  //
  1880  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  1881  //   Two or more incompatible parameters were specified.
  1882  //
  1883  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseReplicaCount
  1884  func (c *ElastiCache) DecreaseReplicaCount(input *DecreaseReplicaCountInput) (*DecreaseReplicaCountOutput, error) {
  1885  	req, out := c.DecreaseReplicaCountRequest(input)
  1886  	return out, req.Send()
  1887  }
  1888  
  1889  // DecreaseReplicaCountWithContext is the same as DecreaseReplicaCount with the addition of
  1890  // the ability to pass a context and additional request options.
  1891  //
  1892  // See DecreaseReplicaCount for details on how to use this API operation.
  1893  //
  1894  // The context must be non-nil and will be used for request cancellation. If
  1895  // the context is nil a panic will occur. In the future the SDK may create
  1896  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1897  // for more information on using Contexts.
  1898  func (c *ElastiCache) DecreaseReplicaCountWithContext(ctx aws.Context, input *DecreaseReplicaCountInput, opts ...request.Option) (*DecreaseReplicaCountOutput, error) {
  1899  	req, out := c.DecreaseReplicaCountRequest(input)
  1900  	req.SetContext(ctx)
  1901  	req.ApplyOptions(opts...)
  1902  	return out, req.Send()
  1903  }
  1904  
  1905  const opDeleteCacheCluster = "DeleteCacheCluster"
  1906  
  1907  // DeleteCacheClusterRequest generates a "aws/request.Request" representing the
  1908  // client's request for the DeleteCacheCluster operation. The "output" return
  1909  // value will be populated with the request's response once the request completes
  1910  // successfully.
  1911  //
  1912  // Use "Send" method on the returned Request to send the API call to the service.
  1913  // the "output" return value is not valid until after Send returns without error.
  1914  //
  1915  // See DeleteCacheCluster for more information on using the DeleteCacheCluster
  1916  // API call, and error handling.
  1917  //
  1918  // This method is useful when you want to inject custom logic or configuration
  1919  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1920  //
  1921  //
  1922  //    // Example sending a request using the DeleteCacheClusterRequest method.
  1923  //    req, resp := client.DeleteCacheClusterRequest(params)
  1924  //
  1925  //    err := req.Send()
  1926  //    if err == nil { // resp is now filled
  1927  //        fmt.Println(resp)
  1928  //    }
  1929  //
  1930  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheCluster
  1931  func (c *ElastiCache) DeleteCacheClusterRequest(input *DeleteCacheClusterInput) (req *request.Request, output *DeleteCacheClusterOutput) {
  1932  	op := &request.Operation{
  1933  		Name:       opDeleteCacheCluster,
  1934  		HTTPMethod: "POST",
  1935  		HTTPPath:   "/",
  1936  	}
  1937  
  1938  	if input == nil {
  1939  		input = &DeleteCacheClusterInput{}
  1940  	}
  1941  
  1942  	output = &DeleteCacheClusterOutput{}
  1943  	req = c.newRequest(op, input, output)
  1944  	return
  1945  }
  1946  
  1947  // DeleteCacheCluster API operation for Amazon ElastiCache.
  1948  //
  1949  // Deletes a previously provisioned cluster. DeleteCacheCluster deletes all
  1950  // associated cache nodes, node endpoints and the cluster itself. When you receive
  1951  // a successful response from this operation, Amazon ElastiCache immediately
  1952  // begins deleting the cluster; you cannot cancel or revert this operation.
  1953  //
  1954  // This operation is not valid for:
  1955  //
  1956  //    * Redis (cluster mode enabled) clusters
  1957  //
  1958  //    * Redis (cluster mode disabled) clusters
  1959  //
  1960  //    * A cluster that is the last read replica of a replication group
  1961  //
  1962  //    * A cluster that is the primary node of a replication group
  1963  //
  1964  //    * A node group (shard) that has Multi-AZ mode enabled
  1965  //
  1966  //    * A cluster from a Redis (cluster mode enabled) replication group
  1967  //
  1968  //    * A cluster that is not in the available state
  1969  //
  1970  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1971  // with awserr.Error's Code and Message methods to get detailed information about
  1972  // the error.
  1973  //
  1974  // See the AWS API reference guide for Amazon ElastiCache's
  1975  // API operation DeleteCacheCluster for usage and error information.
  1976  //
  1977  // Returned Error Codes:
  1978  //   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
  1979  //   The requested cluster ID does not refer to an existing cluster.
  1980  //
  1981  //   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
  1982  //   The requested cluster is not in the available state.
  1983  //
  1984  //   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
  1985  //   You already have a snapshot with the given name.
  1986  //
  1987  //   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
  1988  //   You attempted one of the following operations:
  1989  //
  1990  //      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
  1991  //      node.
  1992  //
  1993  //      * Creating a snapshot of a cluster that is running Memcached rather than
  1994  //      Redis.
  1995  //
  1996  //   Neither of these are supported by ElastiCache.
  1997  //
  1998  //   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
  1999  //   The request cannot be processed because it would exceed the maximum number
  2000  //   of snapshots.
  2001  //
  2002  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  2003  //   The value for a parameter is invalid.
  2004  //
  2005  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  2006  //   Two or more incompatible parameters were specified.
  2007  //
  2008  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheCluster
  2009  func (c *ElastiCache) DeleteCacheCluster(input *DeleteCacheClusterInput) (*DeleteCacheClusterOutput, error) {
  2010  	req, out := c.DeleteCacheClusterRequest(input)
  2011  	return out, req.Send()
  2012  }
  2013  
  2014  // DeleteCacheClusterWithContext is the same as DeleteCacheCluster with the addition of
  2015  // the ability to pass a context and additional request options.
  2016  //
  2017  // See DeleteCacheCluster for details on how to use this API operation.
  2018  //
  2019  // The context must be non-nil and will be used for request cancellation. If
  2020  // the context is nil a panic will occur. In the future the SDK may create
  2021  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2022  // for more information on using Contexts.
  2023  func (c *ElastiCache) DeleteCacheClusterWithContext(ctx aws.Context, input *DeleteCacheClusterInput, opts ...request.Option) (*DeleteCacheClusterOutput, error) {
  2024  	req, out := c.DeleteCacheClusterRequest(input)
  2025  	req.SetContext(ctx)
  2026  	req.ApplyOptions(opts...)
  2027  	return out, req.Send()
  2028  }
  2029  
  2030  const opDeleteCacheParameterGroup = "DeleteCacheParameterGroup"
  2031  
  2032  // DeleteCacheParameterGroupRequest generates a "aws/request.Request" representing the
  2033  // client's request for the DeleteCacheParameterGroup operation. The "output" return
  2034  // value will be populated with the request's response once the request completes
  2035  // successfully.
  2036  //
  2037  // Use "Send" method on the returned Request to send the API call to the service.
  2038  // the "output" return value is not valid until after Send returns without error.
  2039  //
  2040  // See DeleteCacheParameterGroup for more information on using the DeleteCacheParameterGroup
  2041  // API call, and error handling.
  2042  //
  2043  // This method is useful when you want to inject custom logic or configuration
  2044  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2045  //
  2046  //
  2047  //    // Example sending a request using the DeleteCacheParameterGroupRequest method.
  2048  //    req, resp := client.DeleteCacheParameterGroupRequest(params)
  2049  //
  2050  //    err := req.Send()
  2051  //    if err == nil { // resp is now filled
  2052  //        fmt.Println(resp)
  2053  //    }
  2054  //
  2055  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheParameterGroup
  2056  func (c *ElastiCache) DeleteCacheParameterGroupRequest(input *DeleteCacheParameterGroupInput) (req *request.Request, output *DeleteCacheParameterGroupOutput) {
  2057  	op := &request.Operation{
  2058  		Name:       opDeleteCacheParameterGroup,
  2059  		HTTPMethod: "POST",
  2060  		HTTPPath:   "/",
  2061  	}
  2062  
  2063  	if input == nil {
  2064  		input = &DeleteCacheParameterGroupInput{}
  2065  	}
  2066  
  2067  	output = &DeleteCacheParameterGroupOutput{}
  2068  	req = c.newRequest(op, input, output)
  2069  	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  2070  	return
  2071  }
  2072  
  2073  // DeleteCacheParameterGroup API operation for Amazon ElastiCache.
  2074  //
  2075  // Deletes the specified cache parameter group. You cannot delete a cache parameter
  2076  // group if it is associated with any cache clusters. You cannot delete the
  2077  // default cache parameter groups in your account.
  2078  //
  2079  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2080  // with awserr.Error's Code and Message methods to get detailed information about
  2081  // the error.
  2082  //
  2083  // See the AWS API reference guide for Amazon ElastiCache's
  2084  // API operation DeleteCacheParameterGroup for usage and error information.
  2085  //
  2086  // Returned Error Codes:
  2087  //   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
  2088  //   The current state of the cache parameter group does not allow the requested
  2089  //   operation to occur.
  2090  //
  2091  //   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
  2092  //   The requested cache parameter group name does not refer to an existing cache
  2093  //   parameter group.
  2094  //
  2095  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  2096  //   The value for a parameter is invalid.
  2097  //
  2098  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  2099  //   Two or more incompatible parameters were specified.
  2100  //
  2101  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheParameterGroup
  2102  func (c *ElastiCache) DeleteCacheParameterGroup(input *DeleteCacheParameterGroupInput) (*DeleteCacheParameterGroupOutput, error) {
  2103  	req, out := c.DeleteCacheParameterGroupRequest(input)
  2104  	return out, req.Send()
  2105  }
  2106  
  2107  // DeleteCacheParameterGroupWithContext is the same as DeleteCacheParameterGroup with the addition of
  2108  // the ability to pass a context and additional request options.
  2109  //
  2110  // See DeleteCacheParameterGroup for details on how to use this API operation.
  2111  //
  2112  // The context must be non-nil and will be used for request cancellation. If
  2113  // the context is nil a panic will occur. In the future the SDK may create
  2114  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2115  // for more information on using Contexts.
  2116  func (c *ElastiCache) DeleteCacheParameterGroupWithContext(ctx aws.Context, input *DeleteCacheParameterGroupInput, opts ...request.Option) (*DeleteCacheParameterGroupOutput, error) {
  2117  	req, out := c.DeleteCacheParameterGroupRequest(input)
  2118  	req.SetContext(ctx)
  2119  	req.ApplyOptions(opts...)
  2120  	return out, req.Send()
  2121  }
  2122  
  2123  const opDeleteCacheSecurityGroup = "DeleteCacheSecurityGroup"
  2124  
  2125  // DeleteCacheSecurityGroupRequest generates a "aws/request.Request" representing the
  2126  // client's request for the DeleteCacheSecurityGroup operation. The "output" return
  2127  // value will be populated with the request's response once the request completes
  2128  // successfully.
  2129  //
  2130  // Use "Send" method on the returned Request to send the API call to the service.
  2131  // the "output" return value is not valid until after Send returns without error.
  2132  //
  2133  // See DeleteCacheSecurityGroup for more information on using the DeleteCacheSecurityGroup
  2134  // API call, and error handling.
  2135  //
  2136  // This method is useful when you want to inject custom logic or configuration
  2137  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2138  //
  2139  //
  2140  //    // Example sending a request using the DeleteCacheSecurityGroupRequest method.
  2141  //    req, resp := client.DeleteCacheSecurityGroupRequest(params)
  2142  //
  2143  //    err := req.Send()
  2144  //    if err == nil { // resp is now filled
  2145  //        fmt.Println(resp)
  2146  //    }
  2147  //
  2148  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSecurityGroup
  2149  func (c *ElastiCache) DeleteCacheSecurityGroupRequest(input *DeleteCacheSecurityGroupInput) (req *request.Request, output *DeleteCacheSecurityGroupOutput) {
  2150  	op := &request.Operation{
  2151  		Name:       opDeleteCacheSecurityGroup,
  2152  		HTTPMethod: "POST",
  2153  		HTTPPath:   "/",
  2154  	}
  2155  
  2156  	if input == nil {
  2157  		input = &DeleteCacheSecurityGroupInput{}
  2158  	}
  2159  
  2160  	output = &DeleteCacheSecurityGroupOutput{}
  2161  	req = c.newRequest(op, input, output)
  2162  	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  2163  	return
  2164  }
  2165  
  2166  // DeleteCacheSecurityGroup API operation for Amazon ElastiCache.
  2167  //
  2168  // Deletes a cache security group.
  2169  //
  2170  // You cannot delete a cache security group if it is associated with any clusters.
  2171  //
  2172  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2173  // with awserr.Error's Code and Message methods to get detailed information about
  2174  // the error.
  2175  //
  2176  // See the AWS API reference guide for Amazon ElastiCache's
  2177  // API operation DeleteCacheSecurityGroup for usage and error information.
  2178  //
  2179  // Returned Error Codes:
  2180  //   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
  2181  //   The current state of the cache security group does not allow deletion.
  2182  //
  2183  //   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
  2184  //   The requested cache security group name does not refer to an existing cache
  2185  //   security group.
  2186  //
  2187  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  2188  //   The value for a parameter is invalid.
  2189  //
  2190  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  2191  //   Two or more incompatible parameters were specified.
  2192  //
  2193  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSecurityGroup
  2194  func (c *ElastiCache) DeleteCacheSecurityGroup(input *DeleteCacheSecurityGroupInput) (*DeleteCacheSecurityGroupOutput, error) {
  2195  	req, out := c.DeleteCacheSecurityGroupRequest(input)
  2196  	return out, req.Send()
  2197  }
  2198  
  2199  // DeleteCacheSecurityGroupWithContext is the same as DeleteCacheSecurityGroup with the addition of
  2200  // the ability to pass a context and additional request options.
  2201  //
  2202  // See DeleteCacheSecurityGroup for details on how to use this API operation.
  2203  //
  2204  // The context must be non-nil and will be used for request cancellation. If
  2205  // the context is nil a panic will occur. In the future the SDK may create
  2206  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2207  // for more information on using Contexts.
  2208  func (c *ElastiCache) DeleteCacheSecurityGroupWithContext(ctx aws.Context, input *DeleteCacheSecurityGroupInput, opts ...request.Option) (*DeleteCacheSecurityGroupOutput, error) {
  2209  	req, out := c.DeleteCacheSecurityGroupRequest(input)
  2210  	req.SetContext(ctx)
  2211  	req.ApplyOptions(opts...)
  2212  	return out, req.Send()
  2213  }
  2214  
  2215  const opDeleteCacheSubnetGroup = "DeleteCacheSubnetGroup"
  2216  
  2217  // DeleteCacheSubnetGroupRequest generates a "aws/request.Request" representing the
  2218  // client's request for the DeleteCacheSubnetGroup operation. The "output" return
  2219  // value will be populated with the request's response once the request completes
  2220  // successfully.
  2221  //
  2222  // Use "Send" method on the returned Request to send the API call to the service.
  2223  // the "output" return value is not valid until after Send returns without error.
  2224  //
  2225  // See DeleteCacheSubnetGroup for more information on using the DeleteCacheSubnetGroup
  2226  // API call, and error handling.
  2227  //
  2228  // This method is useful when you want to inject custom logic or configuration
  2229  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2230  //
  2231  //
  2232  //    // Example sending a request using the DeleteCacheSubnetGroupRequest method.
  2233  //    req, resp := client.DeleteCacheSubnetGroupRequest(params)
  2234  //
  2235  //    err := req.Send()
  2236  //    if err == nil { // resp is now filled
  2237  //        fmt.Println(resp)
  2238  //    }
  2239  //
  2240  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSubnetGroup
  2241  func (c *ElastiCache) DeleteCacheSubnetGroupRequest(input *DeleteCacheSubnetGroupInput) (req *request.Request, output *DeleteCacheSubnetGroupOutput) {
  2242  	op := &request.Operation{
  2243  		Name:       opDeleteCacheSubnetGroup,
  2244  		HTTPMethod: "POST",
  2245  		HTTPPath:   "/",
  2246  	}
  2247  
  2248  	if input == nil {
  2249  		input = &DeleteCacheSubnetGroupInput{}
  2250  	}
  2251  
  2252  	output = &DeleteCacheSubnetGroupOutput{}
  2253  	req = c.newRequest(op, input, output)
  2254  	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  2255  	return
  2256  }
  2257  
  2258  // DeleteCacheSubnetGroup API operation for Amazon ElastiCache.
  2259  //
  2260  // Deletes a cache subnet group.
  2261  //
  2262  // You cannot delete a default cache subnet group or one that is associated
  2263  // with any clusters.
  2264  //
  2265  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2266  // with awserr.Error's Code and Message methods to get detailed information about
  2267  // the error.
  2268  //
  2269  // See the AWS API reference guide for Amazon ElastiCache's
  2270  // API operation DeleteCacheSubnetGroup for usage and error information.
  2271  //
  2272  // Returned Error Codes:
  2273  //   * ErrCodeCacheSubnetGroupInUse "CacheSubnetGroupInUse"
  2274  //   The requested cache subnet group is currently in use.
  2275  //
  2276  //   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
  2277  //   The requested cache subnet group name does not refer to an existing cache
  2278  //   subnet group.
  2279  //
  2280  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSubnetGroup
  2281  func (c *ElastiCache) DeleteCacheSubnetGroup(input *DeleteCacheSubnetGroupInput) (*DeleteCacheSubnetGroupOutput, error) {
  2282  	req, out := c.DeleteCacheSubnetGroupRequest(input)
  2283  	return out, req.Send()
  2284  }
  2285  
  2286  // DeleteCacheSubnetGroupWithContext is the same as DeleteCacheSubnetGroup with the addition of
  2287  // the ability to pass a context and additional request options.
  2288  //
  2289  // See DeleteCacheSubnetGroup for details on how to use this API operation.
  2290  //
  2291  // The context must be non-nil and will be used for request cancellation. If
  2292  // the context is nil a panic will occur. In the future the SDK may create
  2293  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2294  // for more information on using Contexts.
  2295  func (c *ElastiCache) DeleteCacheSubnetGroupWithContext(ctx aws.Context, input *DeleteCacheSubnetGroupInput, opts ...request.Option) (*DeleteCacheSubnetGroupOutput, error) {
  2296  	req, out := c.DeleteCacheSubnetGroupRequest(input)
  2297  	req.SetContext(ctx)
  2298  	req.ApplyOptions(opts...)
  2299  	return out, req.Send()
  2300  }
  2301  
  2302  const opDeleteGlobalReplicationGroup = "DeleteGlobalReplicationGroup"
  2303  
  2304  // DeleteGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
  2305  // client's request for the DeleteGlobalReplicationGroup operation. The "output" return
  2306  // value will be populated with the request's response once the request completes
  2307  // successfully.
  2308  //
  2309  // Use "Send" method on the returned Request to send the API call to the service.
  2310  // the "output" return value is not valid until after Send returns without error.
  2311  //
  2312  // See DeleteGlobalReplicationGroup for more information on using the DeleteGlobalReplicationGroup
  2313  // API call, and error handling.
  2314  //
  2315  // This method is useful when you want to inject custom logic or configuration
  2316  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2317  //
  2318  //
  2319  //    // Example sending a request using the DeleteGlobalReplicationGroupRequest method.
  2320  //    req, resp := client.DeleteGlobalReplicationGroupRequest(params)
  2321  //
  2322  //    err := req.Send()
  2323  //    if err == nil { // resp is now filled
  2324  //        fmt.Println(resp)
  2325  //    }
  2326  //
  2327  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteGlobalReplicationGroup
  2328  func (c *ElastiCache) DeleteGlobalReplicationGroupRequest(input *DeleteGlobalReplicationGroupInput) (req *request.Request, output *DeleteGlobalReplicationGroupOutput) {
  2329  	op := &request.Operation{
  2330  		Name:       opDeleteGlobalReplicationGroup,
  2331  		HTTPMethod: "POST",
  2332  		HTTPPath:   "/",
  2333  	}
  2334  
  2335  	if input == nil {
  2336  		input = &DeleteGlobalReplicationGroupInput{}
  2337  	}
  2338  
  2339  	output = &DeleteGlobalReplicationGroupOutput{}
  2340  	req = c.newRequest(op, input, output)
  2341  	return
  2342  }
  2343  
  2344  // DeleteGlobalReplicationGroup API operation for Amazon ElastiCache.
  2345  //
  2346  // Deleting a Global datastore is a two-step process:
  2347  //
  2348  //    * First, you must DisassociateGlobalReplicationGroup to remove the secondary
  2349  //    clusters in the Global datastore.
  2350  //
  2351  //    * Once the Global datastore contains only the primary cluster, you can
  2352  //    use the DeleteGlobalReplicationGroup API to delete the Global datastore
  2353  //    while retainining the primary cluster using RetainPrimaryReplicationGroup=true.
  2354  //
  2355  // Since the Global Datastore has only a primary cluster, you can delete the
  2356  // Global Datastore while retaining the primary by setting RetainPrimaryReplicationGroup=true.
  2357  // The primary cluster is never deleted when deleting a Global Datastore. It
  2358  // can only be deleted when it no longer is associated with any Global Datastore.
  2359  //
  2360  // When you receive a successful response from this operation, Amazon ElastiCache
  2361  // immediately begins deleting the selected resources; you cannot cancel or
  2362  // revert this operation.
  2363  //
  2364  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2365  // with awserr.Error's Code and Message methods to get detailed information about
  2366  // the error.
  2367  //
  2368  // See the AWS API reference guide for Amazon ElastiCache's
  2369  // API operation DeleteGlobalReplicationGroup for usage and error information.
  2370  //
  2371  // Returned Error Codes:
  2372  //   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
  2373  //   The Global datastore does not exist
  2374  //
  2375  //   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
  2376  //   The Global datastore is not available or in primary-only state.
  2377  //
  2378  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  2379  //   The value for a parameter is invalid.
  2380  //
  2381  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteGlobalReplicationGroup
  2382  func (c *ElastiCache) DeleteGlobalReplicationGroup(input *DeleteGlobalReplicationGroupInput) (*DeleteGlobalReplicationGroupOutput, error) {
  2383  	req, out := c.DeleteGlobalReplicationGroupRequest(input)
  2384  	return out, req.Send()
  2385  }
  2386  
  2387  // DeleteGlobalReplicationGroupWithContext is the same as DeleteGlobalReplicationGroup with the addition of
  2388  // the ability to pass a context and additional request options.
  2389  //
  2390  // See DeleteGlobalReplicationGroup for details on how to use this API operation.
  2391  //
  2392  // The context must be non-nil and will be used for request cancellation. If
  2393  // the context is nil a panic will occur. In the future the SDK may create
  2394  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2395  // for more information on using Contexts.
  2396  func (c *ElastiCache) DeleteGlobalReplicationGroupWithContext(ctx aws.Context, input *DeleteGlobalReplicationGroupInput, opts ...request.Option) (*DeleteGlobalReplicationGroupOutput, error) {
  2397  	req, out := c.DeleteGlobalReplicationGroupRequest(input)
  2398  	req.SetContext(ctx)
  2399  	req.ApplyOptions(opts...)
  2400  	return out, req.Send()
  2401  }
  2402  
  2403  const opDeleteReplicationGroup = "DeleteReplicationGroup"
  2404  
  2405  // DeleteReplicationGroupRequest generates a "aws/request.Request" representing the
  2406  // client's request for the DeleteReplicationGroup operation. The "output" return
  2407  // value will be populated with the request's response once the request completes
  2408  // successfully.
  2409  //
  2410  // Use "Send" method on the returned Request to send the API call to the service.
  2411  // the "output" return value is not valid until after Send returns without error.
  2412  //
  2413  // See DeleteReplicationGroup for more information on using the DeleteReplicationGroup
  2414  // API call, and error handling.
  2415  //
  2416  // This method is useful when you want to inject custom logic or configuration
  2417  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2418  //
  2419  //
  2420  //    // Example sending a request using the DeleteReplicationGroupRequest method.
  2421  //    req, resp := client.DeleteReplicationGroupRequest(params)
  2422  //
  2423  //    err := req.Send()
  2424  //    if err == nil { // resp is now filled
  2425  //        fmt.Println(resp)
  2426  //    }
  2427  //
  2428  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteReplicationGroup
  2429  func (c *ElastiCache) DeleteReplicationGroupRequest(input *DeleteReplicationGroupInput) (req *request.Request, output *DeleteReplicationGroupOutput) {
  2430  	op := &request.Operation{
  2431  		Name:       opDeleteReplicationGroup,
  2432  		HTTPMethod: "POST",
  2433  		HTTPPath:   "/",
  2434  	}
  2435  
  2436  	if input == nil {
  2437  		input = &DeleteReplicationGroupInput{}
  2438  	}
  2439  
  2440  	output = &DeleteReplicationGroupOutput{}
  2441  	req = c.newRequest(op, input, output)
  2442  	return
  2443  }
  2444  
  2445  // DeleteReplicationGroup API operation for Amazon ElastiCache.
  2446  //
  2447  // Deletes an existing replication group. By default, this operation deletes
  2448  // the entire replication group, including the primary/primaries and all of
  2449  // the read replicas. If the replication group has only one primary, you can
  2450  // optionally delete only the read replicas, while retaining the primary by
  2451  // setting RetainPrimaryCluster=true.
  2452  //
  2453  // When you receive a successful response from this operation, Amazon ElastiCache
  2454  // immediately begins deleting the selected resources; you cannot cancel or
  2455  // revert this operation.
  2456  //
  2457  // This operation is valid for Redis only.
  2458  //
  2459  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2460  // with awserr.Error's Code and Message methods to get detailed information about
  2461  // the error.
  2462  //
  2463  // See the AWS API reference guide for Amazon ElastiCache's
  2464  // API operation DeleteReplicationGroup for usage and error information.
  2465  //
  2466  // Returned Error Codes:
  2467  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  2468  //   The specified replication group does not exist.
  2469  //
  2470  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
  2471  //   The requested replication group is not in the available state.
  2472  //
  2473  //   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
  2474  //   You already have a snapshot with the given name.
  2475  //
  2476  //   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
  2477  //   You attempted one of the following operations:
  2478  //
  2479  //      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
  2480  //      node.
  2481  //
  2482  //      * Creating a snapshot of a cluster that is running Memcached rather than
  2483  //      Redis.
  2484  //
  2485  //   Neither of these are supported by ElastiCache.
  2486  //
  2487  //   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
  2488  //   The request cannot be processed because it would exceed the maximum number
  2489  //   of snapshots.
  2490  //
  2491  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  2492  //   The value for a parameter is invalid.
  2493  //
  2494  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  2495  //   Two or more incompatible parameters were specified.
  2496  //
  2497  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteReplicationGroup
  2498  func (c *ElastiCache) DeleteReplicationGroup(input *DeleteReplicationGroupInput) (*DeleteReplicationGroupOutput, error) {
  2499  	req, out := c.DeleteReplicationGroupRequest(input)
  2500  	return out, req.Send()
  2501  }
  2502  
  2503  // DeleteReplicationGroupWithContext is the same as DeleteReplicationGroup with the addition of
  2504  // the ability to pass a context and additional request options.
  2505  //
  2506  // See DeleteReplicationGroup for details on how to use this API operation.
  2507  //
  2508  // The context must be non-nil and will be used for request cancellation. If
  2509  // the context is nil a panic will occur. In the future the SDK may create
  2510  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2511  // for more information on using Contexts.
  2512  func (c *ElastiCache) DeleteReplicationGroupWithContext(ctx aws.Context, input *DeleteReplicationGroupInput, opts ...request.Option) (*DeleteReplicationGroupOutput, error) {
  2513  	req, out := c.DeleteReplicationGroupRequest(input)
  2514  	req.SetContext(ctx)
  2515  	req.ApplyOptions(opts...)
  2516  	return out, req.Send()
  2517  }
  2518  
  2519  const opDeleteSnapshot = "DeleteSnapshot"
  2520  
  2521  // DeleteSnapshotRequest generates a "aws/request.Request" representing the
  2522  // client's request for the DeleteSnapshot operation. The "output" return
  2523  // value will be populated with the request's response once the request completes
  2524  // successfully.
  2525  //
  2526  // Use "Send" method on the returned Request to send the API call to the service.
  2527  // the "output" return value is not valid until after Send returns without error.
  2528  //
  2529  // See DeleteSnapshot for more information on using the DeleteSnapshot
  2530  // API call, and error handling.
  2531  //
  2532  // This method is useful when you want to inject custom logic or configuration
  2533  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2534  //
  2535  //
  2536  //    // Example sending a request using the DeleteSnapshotRequest method.
  2537  //    req, resp := client.DeleteSnapshotRequest(params)
  2538  //
  2539  //    err := req.Send()
  2540  //    if err == nil { // resp is now filled
  2541  //        fmt.Println(resp)
  2542  //    }
  2543  //
  2544  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteSnapshot
  2545  func (c *ElastiCache) DeleteSnapshotRequest(input *DeleteSnapshotInput) (req *request.Request, output *DeleteSnapshotOutput) {
  2546  	op := &request.Operation{
  2547  		Name:       opDeleteSnapshot,
  2548  		HTTPMethod: "POST",
  2549  		HTTPPath:   "/",
  2550  	}
  2551  
  2552  	if input == nil {
  2553  		input = &DeleteSnapshotInput{}
  2554  	}
  2555  
  2556  	output = &DeleteSnapshotOutput{}
  2557  	req = c.newRequest(op, input, output)
  2558  	return
  2559  }
  2560  
  2561  // DeleteSnapshot API operation for Amazon ElastiCache.
  2562  //
  2563  // Deletes an existing snapshot. When you receive a successful response from
  2564  // this operation, ElastiCache immediately begins deleting the snapshot; you
  2565  // cannot cancel or revert this operation.
  2566  //
  2567  // This operation is valid for Redis only.
  2568  //
  2569  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2570  // with awserr.Error's Code and Message methods to get detailed information about
  2571  // the error.
  2572  //
  2573  // See the AWS API reference guide for Amazon ElastiCache's
  2574  // API operation DeleteSnapshot for usage and error information.
  2575  //
  2576  // Returned Error Codes:
  2577  //   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
  2578  //   The requested snapshot name does not refer to an existing snapshot.
  2579  //
  2580  //   * ErrCodeInvalidSnapshotStateFault "InvalidSnapshotState"
  2581  //   The current state of the snapshot does not allow the requested operation
  2582  //   to occur.
  2583  //
  2584  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  2585  //   The value for a parameter is invalid.
  2586  //
  2587  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  2588  //   Two or more incompatible parameters were specified.
  2589  //
  2590  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteSnapshot
  2591  func (c *ElastiCache) DeleteSnapshot(input *DeleteSnapshotInput) (*DeleteSnapshotOutput, error) {
  2592  	req, out := c.DeleteSnapshotRequest(input)
  2593  	return out, req.Send()
  2594  }
  2595  
  2596  // DeleteSnapshotWithContext is the same as DeleteSnapshot with the addition of
  2597  // the ability to pass a context and additional request options.
  2598  //
  2599  // See DeleteSnapshot for details on how to use this API operation.
  2600  //
  2601  // The context must be non-nil and will be used for request cancellation. If
  2602  // the context is nil a panic will occur. In the future the SDK may create
  2603  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2604  // for more information on using Contexts.
  2605  func (c *ElastiCache) DeleteSnapshotWithContext(ctx aws.Context, input *DeleteSnapshotInput, opts ...request.Option) (*DeleteSnapshotOutput, error) {
  2606  	req, out := c.DeleteSnapshotRequest(input)
  2607  	req.SetContext(ctx)
  2608  	req.ApplyOptions(opts...)
  2609  	return out, req.Send()
  2610  }
  2611  
  2612  const opDeleteUser = "DeleteUser"
  2613  
  2614  // DeleteUserRequest generates a "aws/request.Request" representing the
  2615  // client's request for the DeleteUser operation. The "output" return
  2616  // value will be populated with the request's response once the request completes
  2617  // successfully.
  2618  //
  2619  // Use "Send" method on the returned Request to send the API call to the service.
  2620  // the "output" return value is not valid until after Send returns without error.
  2621  //
  2622  // See DeleteUser for more information on using the DeleteUser
  2623  // API call, and error handling.
  2624  //
  2625  // This method is useful when you want to inject custom logic or configuration
  2626  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2627  //
  2628  //
  2629  //    // Example sending a request using the DeleteUserRequest method.
  2630  //    req, resp := client.DeleteUserRequest(params)
  2631  //
  2632  //    err := req.Send()
  2633  //    if err == nil { // resp is now filled
  2634  //        fmt.Println(resp)
  2635  //    }
  2636  //
  2637  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteUser
  2638  func (c *ElastiCache) DeleteUserRequest(input *DeleteUserInput) (req *request.Request, output *DeleteUserOutput) {
  2639  	op := &request.Operation{
  2640  		Name:       opDeleteUser,
  2641  		HTTPMethod: "POST",
  2642  		HTTPPath:   "/",
  2643  	}
  2644  
  2645  	if input == nil {
  2646  		input = &DeleteUserInput{}
  2647  	}
  2648  
  2649  	output = &DeleteUserOutput{}
  2650  	req = c.newRequest(op, input, output)
  2651  	return
  2652  }
  2653  
  2654  // DeleteUser API operation for Amazon ElastiCache.
  2655  //
  2656  // For Redis engine version 6.x onwards: Deletes a user. The user will be removed
  2657  // from all user groups and in turn removed from all replication groups. For
  2658  // more information, see Using Role Based Access Control (RBAC) (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.RBAC.html).
  2659  //
  2660  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2661  // with awserr.Error's Code and Message methods to get detailed information about
  2662  // the error.
  2663  //
  2664  // See the AWS API reference guide for Amazon ElastiCache's
  2665  // API operation DeleteUser for usage and error information.
  2666  //
  2667  // Returned Error Codes:
  2668  //   * ErrCodeInvalidUserStateFault "InvalidUserState"
  2669  //   The user is not in active state.
  2670  //
  2671  //   * ErrCodeUserNotFoundFault "UserNotFound"
  2672  //   The user does not exist or could not be found.
  2673  //
  2674  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  2675  //   The value for a parameter is invalid.
  2676  //
  2677  //   * ErrCodeDefaultUserAssociatedToUserGroupFault "DefaultUserAssociatedToUserGroup"
  2678  //   The default user assigned to the user group.
  2679  //
  2680  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteUser
  2681  func (c *ElastiCache) DeleteUser(input *DeleteUserInput) (*DeleteUserOutput, error) {
  2682  	req, out := c.DeleteUserRequest(input)
  2683  	return out, req.Send()
  2684  }
  2685  
  2686  // DeleteUserWithContext is the same as DeleteUser with the addition of
  2687  // the ability to pass a context and additional request options.
  2688  //
  2689  // See DeleteUser for details on how to use this API operation.
  2690  //
  2691  // The context must be non-nil and will be used for request cancellation. If
  2692  // the context is nil a panic will occur. In the future the SDK may create
  2693  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2694  // for more information on using Contexts.
  2695  func (c *ElastiCache) DeleteUserWithContext(ctx aws.Context, input *DeleteUserInput, opts ...request.Option) (*DeleteUserOutput, error) {
  2696  	req, out := c.DeleteUserRequest(input)
  2697  	req.SetContext(ctx)
  2698  	req.ApplyOptions(opts...)
  2699  	return out, req.Send()
  2700  }
  2701  
  2702  const opDeleteUserGroup = "DeleteUserGroup"
  2703  
  2704  // DeleteUserGroupRequest generates a "aws/request.Request" representing the
  2705  // client's request for the DeleteUserGroup operation. The "output" return
  2706  // value will be populated with the request's response once the request completes
  2707  // successfully.
  2708  //
  2709  // Use "Send" method on the returned Request to send the API call to the service.
  2710  // the "output" return value is not valid until after Send returns without error.
  2711  //
  2712  // See DeleteUserGroup for more information on using the DeleteUserGroup
  2713  // API call, and error handling.
  2714  //
  2715  // This method is useful when you want to inject custom logic or configuration
  2716  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2717  //
  2718  //
  2719  //    // Example sending a request using the DeleteUserGroupRequest method.
  2720  //    req, resp := client.DeleteUserGroupRequest(params)
  2721  //
  2722  //    err := req.Send()
  2723  //    if err == nil { // resp is now filled
  2724  //        fmt.Println(resp)
  2725  //    }
  2726  //
  2727  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteUserGroup
  2728  func (c *ElastiCache) DeleteUserGroupRequest(input *DeleteUserGroupInput) (req *request.Request, output *DeleteUserGroupOutput) {
  2729  	op := &request.Operation{
  2730  		Name:       opDeleteUserGroup,
  2731  		HTTPMethod: "POST",
  2732  		HTTPPath:   "/",
  2733  	}
  2734  
  2735  	if input == nil {
  2736  		input = &DeleteUserGroupInput{}
  2737  	}
  2738  
  2739  	output = &DeleteUserGroupOutput{}
  2740  	req = c.newRequest(op, input, output)
  2741  	return
  2742  }
  2743  
  2744  // DeleteUserGroup API operation for Amazon ElastiCache.
  2745  //
  2746  // For Redis engine version 6.x onwards: Deletes a user group. The user group
  2747  // must first be disassociated from the replication group before it can be deleted.
  2748  // For more information, see Using Role Based Access Control (RBAC) (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.RBAC.html).
  2749  //
  2750  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2751  // with awserr.Error's Code and Message methods to get detailed information about
  2752  // the error.
  2753  //
  2754  // See the AWS API reference guide for Amazon ElastiCache's
  2755  // API operation DeleteUserGroup for usage and error information.
  2756  //
  2757  // Returned Error Codes:
  2758  //   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
  2759  //   The user group was not found or does not exist
  2760  //
  2761  //   * ErrCodeInvalidUserGroupStateFault "InvalidUserGroupState"
  2762  //   The user group is not in an active state.
  2763  //
  2764  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  2765  //   The value for a parameter is invalid.
  2766  //
  2767  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteUserGroup
  2768  func (c *ElastiCache) DeleteUserGroup(input *DeleteUserGroupInput) (*DeleteUserGroupOutput, error) {
  2769  	req, out := c.DeleteUserGroupRequest(input)
  2770  	return out, req.Send()
  2771  }
  2772  
  2773  // DeleteUserGroupWithContext is the same as DeleteUserGroup with the addition of
  2774  // the ability to pass a context and additional request options.
  2775  //
  2776  // See DeleteUserGroup for details on how to use this API operation.
  2777  //
  2778  // The context must be non-nil and will be used for request cancellation. If
  2779  // the context is nil a panic will occur. In the future the SDK may create
  2780  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2781  // for more information on using Contexts.
  2782  func (c *ElastiCache) DeleteUserGroupWithContext(ctx aws.Context, input *DeleteUserGroupInput, opts ...request.Option) (*DeleteUserGroupOutput, error) {
  2783  	req, out := c.DeleteUserGroupRequest(input)
  2784  	req.SetContext(ctx)
  2785  	req.ApplyOptions(opts...)
  2786  	return out, req.Send()
  2787  }
  2788  
  2789  const opDescribeCacheClusters = "DescribeCacheClusters"
  2790  
  2791  // DescribeCacheClustersRequest generates a "aws/request.Request" representing the
  2792  // client's request for the DescribeCacheClusters operation. The "output" return
  2793  // value will be populated with the request's response once the request completes
  2794  // successfully.
  2795  //
  2796  // Use "Send" method on the returned Request to send the API call to the service.
  2797  // the "output" return value is not valid until after Send returns without error.
  2798  //
  2799  // See DescribeCacheClusters for more information on using the DescribeCacheClusters
  2800  // API call, and error handling.
  2801  //
  2802  // This method is useful when you want to inject custom logic or configuration
  2803  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2804  //
  2805  //
  2806  //    // Example sending a request using the DescribeCacheClustersRequest method.
  2807  //    req, resp := client.DescribeCacheClustersRequest(params)
  2808  //
  2809  //    err := req.Send()
  2810  //    if err == nil { // resp is now filled
  2811  //        fmt.Println(resp)
  2812  //    }
  2813  //
  2814  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheClusters
  2815  func (c *ElastiCache) DescribeCacheClustersRequest(input *DescribeCacheClustersInput) (req *request.Request, output *DescribeCacheClustersOutput) {
  2816  	op := &request.Operation{
  2817  		Name:       opDescribeCacheClusters,
  2818  		HTTPMethod: "POST",
  2819  		HTTPPath:   "/",
  2820  		Paginator: &request.Paginator{
  2821  			InputTokens:     []string{"Marker"},
  2822  			OutputTokens:    []string{"Marker"},
  2823  			LimitToken:      "MaxRecords",
  2824  			TruncationToken: "",
  2825  		},
  2826  	}
  2827  
  2828  	if input == nil {
  2829  		input = &DescribeCacheClustersInput{}
  2830  	}
  2831  
  2832  	output = &DescribeCacheClustersOutput{}
  2833  	req = c.newRequest(op, input, output)
  2834  	return
  2835  }
  2836  
  2837  // DescribeCacheClusters API operation for Amazon ElastiCache.
  2838  //
  2839  // Returns information about all provisioned clusters if no cluster identifier
  2840  // is specified, or about a specific cache cluster if a cluster identifier is
  2841  // supplied.
  2842  //
  2843  // By default, abbreviated information about the clusters is returned. You can
  2844  // use the optional ShowCacheNodeInfo flag to retrieve detailed information
  2845  // about the cache nodes associated with the clusters. These details include
  2846  // the DNS address and port for the cache node endpoint.
  2847  //
  2848  // If the cluster is in the creating state, only cluster-level information is
  2849  // displayed until all of the nodes are successfully provisioned.
  2850  //
  2851  // If the cluster is in the deleting state, only cluster-level information is
  2852  // displayed.
  2853  //
  2854  // If cache nodes are currently being added to the cluster, node endpoint information
  2855  // and creation time for the additional nodes are not displayed until they are
  2856  // completely provisioned. When the cluster state is available, the cluster
  2857  // is ready for use.
  2858  //
  2859  // If cache nodes are currently being removed from the cluster, no endpoint
  2860  // information for the removed nodes is displayed.
  2861  //
  2862  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  2863  // with awserr.Error's Code and Message methods to get detailed information about
  2864  // the error.
  2865  //
  2866  // See the AWS API reference guide for Amazon ElastiCache's
  2867  // API operation DescribeCacheClusters for usage and error information.
  2868  //
  2869  // Returned Error Codes:
  2870  //   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
  2871  //   The requested cluster ID does not refer to an existing cluster.
  2872  //
  2873  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  2874  //   The value for a parameter is invalid.
  2875  //
  2876  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  2877  //   Two or more incompatible parameters were specified.
  2878  //
  2879  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheClusters
  2880  func (c *ElastiCache) DescribeCacheClusters(input *DescribeCacheClustersInput) (*DescribeCacheClustersOutput, error) {
  2881  	req, out := c.DescribeCacheClustersRequest(input)
  2882  	return out, req.Send()
  2883  }
  2884  
  2885  // DescribeCacheClustersWithContext is the same as DescribeCacheClusters with the addition of
  2886  // the ability to pass a context and additional request options.
  2887  //
  2888  // See DescribeCacheClusters for details on how to use this API operation.
  2889  //
  2890  // The context must be non-nil and will be used for request cancellation. If
  2891  // the context is nil a panic will occur. In the future the SDK may create
  2892  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2893  // for more information on using Contexts.
  2894  func (c *ElastiCache) DescribeCacheClustersWithContext(ctx aws.Context, input *DescribeCacheClustersInput, opts ...request.Option) (*DescribeCacheClustersOutput, error) {
  2895  	req, out := c.DescribeCacheClustersRequest(input)
  2896  	req.SetContext(ctx)
  2897  	req.ApplyOptions(opts...)
  2898  	return out, req.Send()
  2899  }
  2900  
  2901  // DescribeCacheClustersPages iterates over the pages of a DescribeCacheClusters operation,
  2902  // calling the "fn" function with the response data for each page. To stop
  2903  // iterating, return false from the fn function.
  2904  //
  2905  // See DescribeCacheClusters method for more information on how to use this operation.
  2906  //
  2907  // Note: This operation can generate multiple requests to a service.
  2908  //
  2909  //    // Example iterating over at most 3 pages of a DescribeCacheClusters operation.
  2910  //    pageNum := 0
  2911  //    err := client.DescribeCacheClustersPages(params,
  2912  //        func(page *elasticache.DescribeCacheClustersOutput, lastPage bool) bool {
  2913  //            pageNum++
  2914  //            fmt.Println(page)
  2915  //            return pageNum <= 3
  2916  //        })
  2917  //
  2918  func (c *ElastiCache) DescribeCacheClustersPages(input *DescribeCacheClustersInput, fn func(*DescribeCacheClustersOutput, bool) bool) error {
  2919  	return c.DescribeCacheClustersPagesWithContext(aws.BackgroundContext(), input, fn)
  2920  }
  2921  
  2922  // DescribeCacheClustersPagesWithContext same as DescribeCacheClustersPages except
  2923  // it takes a Context and allows setting request options on the pages.
  2924  //
  2925  // The context must be non-nil and will be used for request cancellation. If
  2926  // the context is nil a panic will occur. In the future the SDK may create
  2927  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  2928  // for more information on using Contexts.
  2929  func (c *ElastiCache) DescribeCacheClustersPagesWithContext(ctx aws.Context, input *DescribeCacheClustersInput, fn func(*DescribeCacheClustersOutput, bool) bool, opts ...request.Option) error {
  2930  	p := request.Pagination{
  2931  		NewRequest: func() (*request.Request, error) {
  2932  			var inCpy *DescribeCacheClustersInput
  2933  			if input != nil {
  2934  				tmp := *input
  2935  				inCpy = &tmp
  2936  			}
  2937  			req, _ := c.DescribeCacheClustersRequest(inCpy)
  2938  			req.SetContext(ctx)
  2939  			req.ApplyOptions(opts...)
  2940  			return req, nil
  2941  		},
  2942  	}
  2943  
  2944  	for p.Next() {
  2945  		if !fn(p.Page().(*DescribeCacheClustersOutput), !p.HasNextPage()) {
  2946  			break
  2947  		}
  2948  	}
  2949  
  2950  	return p.Err()
  2951  }
  2952  
  2953  const opDescribeCacheEngineVersions = "DescribeCacheEngineVersions"
  2954  
  2955  // DescribeCacheEngineVersionsRequest generates a "aws/request.Request" representing the
  2956  // client's request for the DescribeCacheEngineVersions operation. The "output" return
  2957  // value will be populated with the request's response once the request completes
  2958  // successfully.
  2959  //
  2960  // Use "Send" method on the returned Request to send the API call to the service.
  2961  // the "output" return value is not valid until after Send returns without error.
  2962  //
  2963  // See DescribeCacheEngineVersions for more information on using the DescribeCacheEngineVersions
  2964  // API call, and error handling.
  2965  //
  2966  // This method is useful when you want to inject custom logic or configuration
  2967  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  2968  //
  2969  //
  2970  //    // Example sending a request using the DescribeCacheEngineVersionsRequest method.
  2971  //    req, resp := client.DescribeCacheEngineVersionsRequest(params)
  2972  //
  2973  //    err := req.Send()
  2974  //    if err == nil { // resp is now filled
  2975  //        fmt.Println(resp)
  2976  //    }
  2977  //
  2978  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheEngineVersions
  2979  func (c *ElastiCache) DescribeCacheEngineVersionsRequest(input *DescribeCacheEngineVersionsInput) (req *request.Request, output *DescribeCacheEngineVersionsOutput) {
  2980  	op := &request.Operation{
  2981  		Name:       opDescribeCacheEngineVersions,
  2982  		HTTPMethod: "POST",
  2983  		HTTPPath:   "/",
  2984  		Paginator: &request.Paginator{
  2985  			InputTokens:     []string{"Marker"},
  2986  			OutputTokens:    []string{"Marker"},
  2987  			LimitToken:      "MaxRecords",
  2988  			TruncationToken: "",
  2989  		},
  2990  	}
  2991  
  2992  	if input == nil {
  2993  		input = &DescribeCacheEngineVersionsInput{}
  2994  	}
  2995  
  2996  	output = &DescribeCacheEngineVersionsOutput{}
  2997  	req = c.newRequest(op, input, output)
  2998  	return
  2999  }
  3000  
  3001  // DescribeCacheEngineVersions API operation for Amazon ElastiCache.
  3002  //
  3003  // Returns a list of the available cache engines and their versions.
  3004  //
  3005  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3006  // with awserr.Error's Code and Message methods to get detailed information about
  3007  // the error.
  3008  //
  3009  // See the AWS API reference guide for Amazon ElastiCache's
  3010  // API operation DescribeCacheEngineVersions for usage and error information.
  3011  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheEngineVersions
  3012  func (c *ElastiCache) DescribeCacheEngineVersions(input *DescribeCacheEngineVersionsInput) (*DescribeCacheEngineVersionsOutput, error) {
  3013  	req, out := c.DescribeCacheEngineVersionsRequest(input)
  3014  	return out, req.Send()
  3015  }
  3016  
  3017  // DescribeCacheEngineVersionsWithContext is the same as DescribeCacheEngineVersions with the addition of
  3018  // the ability to pass a context and additional request options.
  3019  //
  3020  // See DescribeCacheEngineVersions for details on how to use this API operation.
  3021  //
  3022  // The context must be non-nil and will be used for request cancellation. If
  3023  // the context is nil a panic will occur. In the future the SDK may create
  3024  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3025  // for more information on using Contexts.
  3026  func (c *ElastiCache) DescribeCacheEngineVersionsWithContext(ctx aws.Context, input *DescribeCacheEngineVersionsInput, opts ...request.Option) (*DescribeCacheEngineVersionsOutput, error) {
  3027  	req, out := c.DescribeCacheEngineVersionsRequest(input)
  3028  	req.SetContext(ctx)
  3029  	req.ApplyOptions(opts...)
  3030  	return out, req.Send()
  3031  }
  3032  
  3033  // DescribeCacheEngineVersionsPages iterates over the pages of a DescribeCacheEngineVersions operation,
  3034  // calling the "fn" function with the response data for each page. To stop
  3035  // iterating, return false from the fn function.
  3036  //
  3037  // See DescribeCacheEngineVersions method for more information on how to use this operation.
  3038  //
  3039  // Note: This operation can generate multiple requests to a service.
  3040  //
  3041  //    // Example iterating over at most 3 pages of a DescribeCacheEngineVersions operation.
  3042  //    pageNum := 0
  3043  //    err := client.DescribeCacheEngineVersionsPages(params,
  3044  //        func(page *elasticache.DescribeCacheEngineVersionsOutput, lastPage bool) bool {
  3045  //            pageNum++
  3046  //            fmt.Println(page)
  3047  //            return pageNum <= 3
  3048  //        })
  3049  //
  3050  func (c *ElastiCache) DescribeCacheEngineVersionsPages(input *DescribeCacheEngineVersionsInput, fn func(*DescribeCacheEngineVersionsOutput, bool) bool) error {
  3051  	return c.DescribeCacheEngineVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
  3052  }
  3053  
  3054  // DescribeCacheEngineVersionsPagesWithContext same as DescribeCacheEngineVersionsPages except
  3055  // it takes a Context and allows setting request options on the pages.
  3056  //
  3057  // The context must be non-nil and will be used for request cancellation. If
  3058  // the context is nil a panic will occur. In the future the SDK may create
  3059  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3060  // for more information on using Contexts.
  3061  func (c *ElastiCache) DescribeCacheEngineVersionsPagesWithContext(ctx aws.Context, input *DescribeCacheEngineVersionsInput, fn func(*DescribeCacheEngineVersionsOutput, bool) bool, opts ...request.Option) error {
  3062  	p := request.Pagination{
  3063  		NewRequest: func() (*request.Request, error) {
  3064  			var inCpy *DescribeCacheEngineVersionsInput
  3065  			if input != nil {
  3066  				tmp := *input
  3067  				inCpy = &tmp
  3068  			}
  3069  			req, _ := c.DescribeCacheEngineVersionsRequest(inCpy)
  3070  			req.SetContext(ctx)
  3071  			req.ApplyOptions(opts...)
  3072  			return req, nil
  3073  		},
  3074  	}
  3075  
  3076  	for p.Next() {
  3077  		if !fn(p.Page().(*DescribeCacheEngineVersionsOutput), !p.HasNextPage()) {
  3078  			break
  3079  		}
  3080  	}
  3081  
  3082  	return p.Err()
  3083  }
  3084  
  3085  const opDescribeCacheParameterGroups = "DescribeCacheParameterGroups"
  3086  
  3087  // DescribeCacheParameterGroupsRequest generates a "aws/request.Request" representing the
  3088  // client's request for the DescribeCacheParameterGroups operation. The "output" return
  3089  // value will be populated with the request's response once the request completes
  3090  // successfully.
  3091  //
  3092  // Use "Send" method on the returned Request to send the API call to the service.
  3093  // the "output" return value is not valid until after Send returns without error.
  3094  //
  3095  // See DescribeCacheParameterGroups for more information on using the DescribeCacheParameterGroups
  3096  // API call, and error handling.
  3097  //
  3098  // This method is useful when you want to inject custom logic or configuration
  3099  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3100  //
  3101  //
  3102  //    // Example sending a request using the DescribeCacheParameterGroupsRequest method.
  3103  //    req, resp := client.DescribeCacheParameterGroupsRequest(params)
  3104  //
  3105  //    err := req.Send()
  3106  //    if err == nil { // resp is now filled
  3107  //        fmt.Println(resp)
  3108  //    }
  3109  //
  3110  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameterGroups
  3111  func (c *ElastiCache) DescribeCacheParameterGroupsRequest(input *DescribeCacheParameterGroupsInput) (req *request.Request, output *DescribeCacheParameterGroupsOutput) {
  3112  	op := &request.Operation{
  3113  		Name:       opDescribeCacheParameterGroups,
  3114  		HTTPMethod: "POST",
  3115  		HTTPPath:   "/",
  3116  		Paginator: &request.Paginator{
  3117  			InputTokens:     []string{"Marker"},
  3118  			OutputTokens:    []string{"Marker"},
  3119  			LimitToken:      "MaxRecords",
  3120  			TruncationToken: "",
  3121  		},
  3122  	}
  3123  
  3124  	if input == nil {
  3125  		input = &DescribeCacheParameterGroupsInput{}
  3126  	}
  3127  
  3128  	output = &DescribeCacheParameterGroupsOutput{}
  3129  	req = c.newRequest(op, input, output)
  3130  	return
  3131  }
  3132  
  3133  // DescribeCacheParameterGroups API operation for Amazon ElastiCache.
  3134  //
  3135  // Returns a list of cache parameter group descriptions. If a cache parameter
  3136  // group name is specified, the list contains only the descriptions for that
  3137  // group.
  3138  //
  3139  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3140  // with awserr.Error's Code and Message methods to get detailed information about
  3141  // the error.
  3142  //
  3143  // See the AWS API reference guide for Amazon ElastiCache's
  3144  // API operation DescribeCacheParameterGroups for usage and error information.
  3145  //
  3146  // Returned Error Codes:
  3147  //   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
  3148  //   The requested cache parameter group name does not refer to an existing cache
  3149  //   parameter group.
  3150  //
  3151  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  3152  //   The value for a parameter is invalid.
  3153  //
  3154  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  3155  //   Two or more incompatible parameters were specified.
  3156  //
  3157  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameterGroups
  3158  func (c *ElastiCache) DescribeCacheParameterGroups(input *DescribeCacheParameterGroupsInput) (*DescribeCacheParameterGroupsOutput, error) {
  3159  	req, out := c.DescribeCacheParameterGroupsRequest(input)
  3160  	return out, req.Send()
  3161  }
  3162  
  3163  // DescribeCacheParameterGroupsWithContext is the same as DescribeCacheParameterGroups with the addition of
  3164  // the ability to pass a context and additional request options.
  3165  //
  3166  // See DescribeCacheParameterGroups for details on how to use this API operation.
  3167  //
  3168  // The context must be non-nil and will be used for request cancellation. If
  3169  // the context is nil a panic will occur. In the future the SDK may create
  3170  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3171  // for more information on using Contexts.
  3172  func (c *ElastiCache) DescribeCacheParameterGroupsWithContext(ctx aws.Context, input *DescribeCacheParameterGroupsInput, opts ...request.Option) (*DescribeCacheParameterGroupsOutput, error) {
  3173  	req, out := c.DescribeCacheParameterGroupsRequest(input)
  3174  	req.SetContext(ctx)
  3175  	req.ApplyOptions(opts...)
  3176  	return out, req.Send()
  3177  }
  3178  
  3179  // DescribeCacheParameterGroupsPages iterates over the pages of a DescribeCacheParameterGroups operation,
  3180  // calling the "fn" function with the response data for each page. To stop
  3181  // iterating, return false from the fn function.
  3182  //
  3183  // See DescribeCacheParameterGroups method for more information on how to use this operation.
  3184  //
  3185  // Note: This operation can generate multiple requests to a service.
  3186  //
  3187  //    // Example iterating over at most 3 pages of a DescribeCacheParameterGroups operation.
  3188  //    pageNum := 0
  3189  //    err := client.DescribeCacheParameterGroupsPages(params,
  3190  //        func(page *elasticache.DescribeCacheParameterGroupsOutput, lastPage bool) bool {
  3191  //            pageNum++
  3192  //            fmt.Println(page)
  3193  //            return pageNum <= 3
  3194  //        })
  3195  //
  3196  func (c *ElastiCache) DescribeCacheParameterGroupsPages(input *DescribeCacheParameterGroupsInput, fn func(*DescribeCacheParameterGroupsOutput, bool) bool) error {
  3197  	return c.DescribeCacheParameterGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
  3198  }
  3199  
  3200  // DescribeCacheParameterGroupsPagesWithContext same as DescribeCacheParameterGroupsPages except
  3201  // it takes a Context and allows setting request options on the pages.
  3202  //
  3203  // The context must be non-nil and will be used for request cancellation. If
  3204  // the context is nil a panic will occur. In the future the SDK may create
  3205  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3206  // for more information on using Contexts.
  3207  func (c *ElastiCache) DescribeCacheParameterGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheParameterGroupsInput, fn func(*DescribeCacheParameterGroupsOutput, bool) bool, opts ...request.Option) error {
  3208  	p := request.Pagination{
  3209  		NewRequest: func() (*request.Request, error) {
  3210  			var inCpy *DescribeCacheParameterGroupsInput
  3211  			if input != nil {
  3212  				tmp := *input
  3213  				inCpy = &tmp
  3214  			}
  3215  			req, _ := c.DescribeCacheParameterGroupsRequest(inCpy)
  3216  			req.SetContext(ctx)
  3217  			req.ApplyOptions(opts...)
  3218  			return req, nil
  3219  		},
  3220  	}
  3221  
  3222  	for p.Next() {
  3223  		if !fn(p.Page().(*DescribeCacheParameterGroupsOutput), !p.HasNextPage()) {
  3224  			break
  3225  		}
  3226  	}
  3227  
  3228  	return p.Err()
  3229  }
  3230  
  3231  const opDescribeCacheParameters = "DescribeCacheParameters"
  3232  
  3233  // DescribeCacheParametersRequest generates a "aws/request.Request" representing the
  3234  // client's request for the DescribeCacheParameters operation. The "output" return
  3235  // value will be populated with the request's response once the request completes
  3236  // successfully.
  3237  //
  3238  // Use "Send" method on the returned Request to send the API call to the service.
  3239  // the "output" return value is not valid until after Send returns without error.
  3240  //
  3241  // See DescribeCacheParameters for more information on using the DescribeCacheParameters
  3242  // API call, and error handling.
  3243  //
  3244  // This method is useful when you want to inject custom logic or configuration
  3245  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3246  //
  3247  //
  3248  //    // Example sending a request using the DescribeCacheParametersRequest method.
  3249  //    req, resp := client.DescribeCacheParametersRequest(params)
  3250  //
  3251  //    err := req.Send()
  3252  //    if err == nil { // resp is now filled
  3253  //        fmt.Println(resp)
  3254  //    }
  3255  //
  3256  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameters
  3257  func (c *ElastiCache) DescribeCacheParametersRequest(input *DescribeCacheParametersInput) (req *request.Request, output *DescribeCacheParametersOutput) {
  3258  	op := &request.Operation{
  3259  		Name:       opDescribeCacheParameters,
  3260  		HTTPMethod: "POST",
  3261  		HTTPPath:   "/",
  3262  		Paginator: &request.Paginator{
  3263  			InputTokens:     []string{"Marker"},
  3264  			OutputTokens:    []string{"Marker"},
  3265  			LimitToken:      "MaxRecords",
  3266  			TruncationToken: "",
  3267  		},
  3268  	}
  3269  
  3270  	if input == nil {
  3271  		input = &DescribeCacheParametersInput{}
  3272  	}
  3273  
  3274  	output = &DescribeCacheParametersOutput{}
  3275  	req = c.newRequest(op, input, output)
  3276  	return
  3277  }
  3278  
  3279  // DescribeCacheParameters API operation for Amazon ElastiCache.
  3280  //
  3281  // Returns the detailed parameter list for a particular cache parameter group.
  3282  //
  3283  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3284  // with awserr.Error's Code and Message methods to get detailed information about
  3285  // the error.
  3286  //
  3287  // See the AWS API reference guide for Amazon ElastiCache's
  3288  // API operation DescribeCacheParameters for usage and error information.
  3289  //
  3290  // Returned Error Codes:
  3291  //   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
  3292  //   The requested cache parameter group name does not refer to an existing cache
  3293  //   parameter group.
  3294  //
  3295  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  3296  //   The value for a parameter is invalid.
  3297  //
  3298  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  3299  //   Two or more incompatible parameters were specified.
  3300  //
  3301  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameters
  3302  func (c *ElastiCache) DescribeCacheParameters(input *DescribeCacheParametersInput) (*DescribeCacheParametersOutput, error) {
  3303  	req, out := c.DescribeCacheParametersRequest(input)
  3304  	return out, req.Send()
  3305  }
  3306  
  3307  // DescribeCacheParametersWithContext is the same as DescribeCacheParameters with the addition of
  3308  // the ability to pass a context and additional request options.
  3309  //
  3310  // See DescribeCacheParameters for details on how to use this API operation.
  3311  //
  3312  // The context must be non-nil and will be used for request cancellation. If
  3313  // the context is nil a panic will occur. In the future the SDK may create
  3314  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3315  // for more information on using Contexts.
  3316  func (c *ElastiCache) DescribeCacheParametersWithContext(ctx aws.Context, input *DescribeCacheParametersInput, opts ...request.Option) (*DescribeCacheParametersOutput, error) {
  3317  	req, out := c.DescribeCacheParametersRequest(input)
  3318  	req.SetContext(ctx)
  3319  	req.ApplyOptions(opts...)
  3320  	return out, req.Send()
  3321  }
  3322  
  3323  // DescribeCacheParametersPages iterates over the pages of a DescribeCacheParameters operation,
  3324  // calling the "fn" function with the response data for each page. To stop
  3325  // iterating, return false from the fn function.
  3326  //
  3327  // See DescribeCacheParameters method for more information on how to use this operation.
  3328  //
  3329  // Note: This operation can generate multiple requests to a service.
  3330  //
  3331  //    // Example iterating over at most 3 pages of a DescribeCacheParameters operation.
  3332  //    pageNum := 0
  3333  //    err := client.DescribeCacheParametersPages(params,
  3334  //        func(page *elasticache.DescribeCacheParametersOutput, lastPage bool) bool {
  3335  //            pageNum++
  3336  //            fmt.Println(page)
  3337  //            return pageNum <= 3
  3338  //        })
  3339  //
  3340  func (c *ElastiCache) DescribeCacheParametersPages(input *DescribeCacheParametersInput, fn func(*DescribeCacheParametersOutput, bool) bool) error {
  3341  	return c.DescribeCacheParametersPagesWithContext(aws.BackgroundContext(), input, fn)
  3342  }
  3343  
  3344  // DescribeCacheParametersPagesWithContext same as DescribeCacheParametersPages except
  3345  // it takes a Context and allows setting request options on the pages.
  3346  //
  3347  // The context must be non-nil and will be used for request cancellation. If
  3348  // the context is nil a panic will occur. In the future the SDK may create
  3349  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3350  // for more information on using Contexts.
  3351  func (c *ElastiCache) DescribeCacheParametersPagesWithContext(ctx aws.Context, input *DescribeCacheParametersInput, fn func(*DescribeCacheParametersOutput, bool) bool, opts ...request.Option) error {
  3352  	p := request.Pagination{
  3353  		NewRequest: func() (*request.Request, error) {
  3354  			var inCpy *DescribeCacheParametersInput
  3355  			if input != nil {
  3356  				tmp := *input
  3357  				inCpy = &tmp
  3358  			}
  3359  			req, _ := c.DescribeCacheParametersRequest(inCpy)
  3360  			req.SetContext(ctx)
  3361  			req.ApplyOptions(opts...)
  3362  			return req, nil
  3363  		},
  3364  	}
  3365  
  3366  	for p.Next() {
  3367  		if !fn(p.Page().(*DescribeCacheParametersOutput), !p.HasNextPage()) {
  3368  			break
  3369  		}
  3370  	}
  3371  
  3372  	return p.Err()
  3373  }
  3374  
  3375  const opDescribeCacheSecurityGroups = "DescribeCacheSecurityGroups"
  3376  
  3377  // DescribeCacheSecurityGroupsRequest generates a "aws/request.Request" representing the
  3378  // client's request for the DescribeCacheSecurityGroups operation. The "output" return
  3379  // value will be populated with the request's response once the request completes
  3380  // successfully.
  3381  //
  3382  // Use "Send" method on the returned Request to send the API call to the service.
  3383  // the "output" return value is not valid until after Send returns without error.
  3384  //
  3385  // See DescribeCacheSecurityGroups for more information on using the DescribeCacheSecurityGroups
  3386  // API call, and error handling.
  3387  //
  3388  // This method is useful when you want to inject custom logic or configuration
  3389  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3390  //
  3391  //
  3392  //    // Example sending a request using the DescribeCacheSecurityGroupsRequest method.
  3393  //    req, resp := client.DescribeCacheSecurityGroupsRequest(params)
  3394  //
  3395  //    err := req.Send()
  3396  //    if err == nil { // resp is now filled
  3397  //        fmt.Println(resp)
  3398  //    }
  3399  //
  3400  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSecurityGroups
  3401  func (c *ElastiCache) DescribeCacheSecurityGroupsRequest(input *DescribeCacheSecurityGroupsInput) (req *request.Request, output *DescribeCacheSecurityGroupsOutput) {
  3402  	op := &request.Operation{
  3403  		Name:       opDescribeCacheSecurityGroups,
  3404  		HTTPMethod: "POST",
  3405  		HTTPPath:   "/",
  3406  		Paginator: &request.Paginator{
  3407  			InputTokens:     []string{"Marker"},
  3408  			OutputTokens:    []string{"Marker"},
  3409  			LimitToken:      "MaxRecords",
  3410  			TruncationToken: "",
  3411  		},
  3412  	}
  3413  
  3414  	if input == nil {
  3415  		input = &DescribeCacheSecurityGroupsInput{}
  3416  	}
  3417  
  3418  	output = &DescribeCacheSecurityGroupsOutput{}
  3419  	req = c.newRequest(op, input, output)
  3420  	return
  3421  }
  3422  
  3423  // DescribeCacheSecurityGroups API operation for Amazon ElastiCache.
  3424  //
  3425  // Returns a list of cache security group descriptions. If a cache security
  3426  // group name is specified, the list contains only the description of that group.
  3427  // This applicable only when you have ElastiCache in Classic setup
  3428  //
  3429  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3430  // with awserr.Error's Code and Message methods to get detailed information about
  3431  // the error.
  3432  //
  3433  // See the AWS API reference guide for Amazon ElastiCache's
  3434  // API operation DescribeCacheSecurityGroups for usage and error information.
  3435  //
  3436  // Returned Error Codes:
  3437  //   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
  3438  //   The requested cache security group name does not refer to an existing cache
  3439  //   security group.
  3440  //
  3441  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  3442  //   The value for a parameter is invalid.
  3443  //
  3444  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  3445  //   Two or more incompatible parameters were specified.
  3446  //
  3447  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSecurityGroups
  3448  func (c *ElastiCache) DescribeCacheSecurityGroups(input *DescribeCacheSecurityGroupsInput) (*DescribeCacheSecurityGroupsOutput, error) {
  3449  	req, out := c.DescribeCacheSecurityGroupsRequest(input)
  3450  	return out, req.Send()
  3451  }
  3452  
  3453  // DescribeCacheSecurityGroupsWithContext is the same as DescribeCacheSecurityGroups with the addition of
  3454  // the ability to pass a context and additional request options.
  3455  //
  3456  // See DescribeCacheSecurityGroups for details on how to use this API operation.
  3457  //
  3458  // The context must be non-nil and will be used for request cancellation. If
  3459  // the context is nil a panic will occur. In the future the SDK may create
  3460  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3461  // for more information on using Contexts.
  3462  func (c *ElastiCache) DescribeCacheSecurityGroupsWithContext(ctx aws.Context, input *DescribeCacheSecurityGroupsInput, opts ...request.Option) (*DescribeCacheSecurityGroupsOutput, error) {
  3463  	req, out := c.DescribeCacheSecurityGroupsRequest(input)
  3464  	req.SetContext(ctx)
  3465  	req.ApplyOptions(opts...)
  3466  	return out, req.Send()
  3467  }
  3468  
  3469  // DescribeCacheSecurityGroupsPages iterates over the pages of a DescribeCacheSecurityGroups operation,
  3470  // calling the "fn" function with the response data for each page. To stop
  3471  // iterating, return false from the fn function.
  3472  //
  3473  // See DescribeCacheSecurityGroups method for more information on how to use this operation.
  3474  //
  3475  // Note: This operation can generate multiple requests to a service.
  3476  //
  3477  //    // Example iterating over at most 3 pages of a DescribeCacheSecurityGroups operation.
  3478  //    pageNum := 0
  3479  //    err := client.DescribeCacheSecurityGroupsPages(params,
  3480  //        func(page *elasticache.DescribeCacheSecurityGroupsOutput, lastPage bool) bool {
  3481  //            pageNum++
  3482  //            fmt.Println(page)
  3483  //            return pageNum <= 3
  3484  //        })
  3485  //
  3486  func (c *ElastiCache) DescribeCacheSecurityGroupsPages(input *DescribeCacheSecurityGroupsInput, fn func(*DescribeCacheSecurityGroupsOutput, bool) bool) error {
  3487  	return c.DescribeCacheSecurityGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
  3488  }
  3489  
  3490  // DescribeCacheSecurityGroupsPagesWithContext same as DescribeCacheSecurityGroupsPages except
  3491  // it takes a Context and allows setting request options on the pages.
  3492  //
  3493  // The context must be non-nil and will be used for request cancellation. If
  3494  // the context is nil a panic will occur. In the future the SDK may create
  3495  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3496  // for more information on using Contexts.
  3497  func (c *ElastiCache) DescribeCacheSecurityGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheSecurityGroupsInput, fn func(*DescribeCacheSecurityGroupsOutput, bool) bool, opts ...request.Option) error {
  3498  	p := request.Pagination{
  3499  		NewRequest: func() (*request.Request, error) {
  3500  			var inCpy *DescribeCacheSecurityGroupsInput
  3501  			if input != nil {
  3502  				tmp := *input
  3503  				inCpy = &tmp
  3504  			}
  3505  			req, _ := c.DescribeCacheSecurityGroupsRequest(inCpy)
  3506  			req.SetContext(ctx)
  3507  			req.ApplyOptions(opts...)
  3508  			return req, nil
  3509  		},
  3510  	}
  3511  
  3512  	for p.Next() {
  3513  		if !fn(p.Page().(*DescribeCacheSecurityGroupsOutput), !p.HasNextPage()) {
  3514  			break
  3515  		}
  3516  	}
  3517  
  3518  	return p.Err()
  3519  }
  3520  
  3521  const opDescribeCacheSubnetGroups = "DescribeCacheSubnetGroups"
  3522  
  3523  // DescribeCacheSubnetGroupsRequest generates a "aws/request.Request" representing the
  3524  // client's request for the DescribeCacheSubnetGroups operation. The "output" return
  3525  // value will be populated with the request's response once the request completes
  3526  // successfully.
  3527  //
  3528  // Use "Send" method on the returned Request to send the API call to the service.
  3529  // the "output" return value is not valid until after Send returns without error.
  3530  //
  3531  // See DescribeCacheSubnetGroups for more information on using the DescribeCacheSubnetGroups
  3532  // API call, and error handling.
  3533  //
  3534  // This method is useful when you want to inject custom logic or configuration
  3535  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3536  //
  3537  //
  3538  //    // Example sending a request using the DescribeCacheSubnetGroupsRequest method.
  3539  //    req, resp := client.DescribeCacheSubnetGroupsRequest(params)
  3540  //
  3541  //    err := req.Send()
  3542  //    if err == nil { // resp is now filled
  3543  //        fmt.Println(resp)
  3544  //    }
  3545  //
  3546  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSubnetGroups
  3547  func (c *ElastiCache) DescribeCacheSubnetGroupsRequest(input *DescribeCacheSubnetGroupsInput) (req *request.Request, output *DescribeCacheSubnetGroupsOutput) {
  3548  	op := &request.Operation{
  3549  		Name:       opDescribeCacheSubnetGroups,
  3550  		HTTPMethod: "POST",
  3551  		HTTPPath:   "/",
  3552  		Paginator: &request.Paginator{
  3553  			InputTokens:     []string{"Marker"},
  3554  			OutputTokens:    []string{"Marker"},
  3555  			LimitToken:      "MaxRecords",
  3556  			TruncationToken: "",
  3557  		},
  3558  	}
  3559  
  3560  	if input == nil {
  3561  		input = &DescribeCacheSubnetGroupsInput{}
  3562  	}
  3563  
  3564  	output = &DescribeCacheSubnetGroupsOutput{}
  3565  	req = c.newRequest(op, input, output)
  3566  	return
  3567  }
  3568  
  3569  // DescribeCacheSubnetGroups API operation for Amazon ElastiCache.
  3570  //
  3571  // Returns a list of cache subnet group descriptions. If a subnet group name
  3572  // is specified, the list contains only the description of that group. This
  3573  // is applicable only when you have ElastiCache in VPC setup. All ElastiCache
  3574  // clusters now launch in VPC by default.
  3575  //
  3576  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3577  // with awserr.Error's Code and Message methods to get detailed information about
  3578  // the error.
  3579  //
  3580  // See the AWS API reference guide for Amazon ElastiCache's
  3581  // API operation DescribeCacheSubnetGroups for usage and error information.
  3582  //
  3583  // Returned Error Codes:
  3584  //   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
  3585  //   The requested cache subnet group name does not refer to an existing cache
  3586  //   subnet group.
  3587  //
  3588  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSubnetGroups
  3589  func (c *ElastiCache) DescribeCacheSubnetGroups(input *DescribeCacheSubnetGroupsInput) (*DescribeCacheSubnetGroupsOutput, error) {
  3590  	req, out := c.DescribeCacheSubnetGroupsRequest(input)
  3591  	return out, req.Send()
  3592  }
  3593  
  3594  // DescribeCacheSubnetGroupsWithContext is the same as DescribeCacheSubnetGroups with the addition of
  3595  // the ability to pass a context and additional request options.
  3596  //
  3597  // See DescribeCacheSubnetGroups for details on how to use this API operation.
  3598  //
  3599  // The context must be non-nil and will be used for request cancellation. If
  3600  // the context is nil a panic will occur. In the future the SDK may create
  3601  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3602  // for more information on using Contexts.
  3603  func (c *ElastiCache) DescribeCacheSubnetGroupsWithContext(ctx aws.Context, input *DescribeCacheSubnetGroupsInput, opts ...request.Option) (*DescribeCacheSubnetGroupsOutput, error) {
  3604  	req, out := c.DescribeCacheSubnetGroupsRequest(input)
  3605  	req.SetContext(ctx)
  3606  	req.ApplyOptions(opts...)
  3607  	return out, req.Send()
  3608  }
  3609  
  3610  // DescribeCacheSubnetGroupsPages iterates over the pages of a DescribeCacheSubnetGroups operation,
  3611  // calling the "fn" function with the response data for each page. To stop
  3612  // iterating, return false from the fn function.
  3613  //
  3614  // See DescribeCacheSubnetGroups method for more information on how to use this operation.
  3615  //
  3616  // Note: This operation can generate multiple requests to a service.
  3617  //
  3618  //    // Example iterating over at most 3 pages of a DescribeCacheSubnetGroups operation.
  3619  //    pageNum := 0
  3620  //    err := client.DescribeCacheSubnetGroupsPages(params,
  3621  //        func(page *elasticache.DescribeCacheSubnetGroupsOutput, lastPage bool) bool {
  3622  //            pageNum++
  3623  //            fmt.Println(page)
  3624  //            return pageNum <= 3
  3625  //        })
  3626  //
  3627  func (c *ElastiCache) DescribeCacheSubnetGroupsPages(input *DescribeCacheSubnetGroupsInput, fn func(*DescribeCacheSubnetGroupsOutput, bool) bool) error {
  3628  	return c.DescribeCacheSubnetGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
  3629  }
  3630  
  3631  // DescribeCacheSubnetGroupsPagesWithContext same as DescribeCacheSubnetGroupsPages except
  3632  // it takes a Context and allows setting request options on the pages.
  3633  //
  3634  // The context must be non-nil and will be used for request cancellation. If
  3635  // the context is nil a panic will occur. In the future the SDK may create
  3636  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3637  // for more information on using Contexts.
  3638  func (c *ElastiCache) DescribeCacheSubnetGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheSubnetGroupsInput, fn func(*DescribeCacheSubnetGroupsOutput, bool) bool, opts ...request.Option) error {
  3639  	p := request.Pagination{
  3640  		NewRequest: func() (*request.Request, error) {
  3641  			var inCpy *DescribeCacheSubnetGroupsInput
  3642  			if input != nil {
  3643  				tmp := *input
  3644  				inCpy = &tmp
  3645  			}
  3646  			req, _ := c.DescribeCacheSubnetGroupsRequest(inCpy)
  3647  			req.SetContext(ctx)
  3648  			req.ApplyOptions(opts...)
  3649  			return req, nil
  3650  		},
  3651  	}
  3652  
  3653  	for p.Next() {
  3654  		if !fn(p.Page().(*DescribeCacheSubnetGroupsOutput), !p.HasNextPage()) {
  3655  			break
  3656  		}
  3657  	}
  3658  
  3659  	return p.Err()
  3660  }
  3661  
  3662  const opDescribeEngineDefaultParameters = "DescribeEngineDefaultParameters"
  3663  
  3664  // DescribeEngineDefaultParametersRequest generates a "aws/request.Request" representing the
  3665  // client's request for the DescribeEngineDefaultParameters operation. The "output" return
  3666  // value will be populated with the request's response once the request completes
  3667  // successfully.
  3668  //
  3669  // Use "Send" method on the returned Request to send the API call to the service.
  3670  // the "output" return value is not valid until after Send returns without error.
  3671  //
  3672  // See DescribeEngineDefaultParameters for more information on using the DescribeEngineDefaultParameters
  3673  // API call, and error handling.
  3674  //
  3675  // This method is useful when you want to inject custom logic or configuration
  3676  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3677  //
  3678  //
  3679  //    // Example sending a request using the DescribeEngineDefaultParametersRequest method.
  3680  //    req, resp := client.DescribeEngineDefaultParametersRequest(params)
  3681  //
  3682  //    err := req.Send()
  3683  //    if err == nil { // resp is now filled
  3684  //        fmt.Println(resp)
  3685  //    }
  3686  //
  3687  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEngineDefaultParameters
  3688  func (c *ElastiCache) DescribeEngineDefaultParametersRequest(input *DescribeEngineDefaultParametersInput) (req *request.Request, output *DescribeEngineDefaultParametersOutput) {
  3689  	op := &request.Operation{
  3690  		Name:       opDescribeEngineDefaultParameters,
  3691  		HTTPMethod: "POST",
  3692  		HTTPPath:   "/",
  3693  		Paginator: &request.Paginator{
  3694  			InputTokens:     []string{"Marker"},
  3695  			OutputTokens:    []string{"EngineDefaults.Marker"},
  3696  			LimitToken:      "MaxRecords",
  3697  			TruncationToken: "",
  3698  		},
  3699  	}
  3700  
  3701  	if input == nil {
  3702  		input = &DescribeEngineDefaultParametersInput{}
  3703  	}
  3704  
  3705  	output = &DescribeEngineDefaultParametersOutput{}
  3706  	req = c.newRequest(op, input, output)
  3707  	return
  3708  }
  3709  
  3710  // DescribeEngineDefaultParameters API operation for Amazon ElastiCache.
  3711  //
  3712  // Returns the default engine and system parameter information for the specified
  3713  // cache engine.
  3714  //
  3715  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3716  // with awserr.Error's Code and Message methods to get detailed information about
  3717  // the error.
  3718  //
  3719  // See the AWS API reference guide for Amazon ElastiCache's
  3720  // API operation DescribeEngineDefaultParameters for usage and error information.
  3721  //
  3722  // Returned Error Codes:
  3723  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  3724  //   The value for a parameter is invalid.
  3725  //
  3726  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  3727  //   Two or more incompatible parameters were specified.
  3728  //
  3729  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEngineDefaultParameters
  3730  func (c *ElastiCache) DescribeEngineDefaultParameters(input *DescribeEngineDefaultParametersInput) (*DescribeEngineDefaultParametersOutput, error) {
  3731  	req, out := c.DescribeEngineDefaultParametersRequest(input)
  3732  	return out, req.Send()
  3733  }
  3734  
  3735  // DescribeEngineDefaultParametersWithContext is the same as DescribeEngineDefaultParameters with the addition of
  3736  // the ability to pass a context and additional request options.
  3737  //
  3738  // See DescribeEngineDefaultParameters for details on how to use this API operation.
  3739  //
  3740  // The context must be non-nil and will be used for request cancellation. If
  3741  // the context is nil a panic will occur. In the future the SDK may create
  3742  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3743  // for more information on using Contexts.
  3744  func (c *ElastiCache) DescribeEngineDefaultParametersWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, opts ...request.Option) (*DescribeEngineDefaultParametersOutput, error) {
  3745  	req, out := c.DescribeEngineDefaultParametersRequest(input)
  3746  	req.SetContext(ctx)
  3747  	req.ApplyOptions(opts...)
  3748  	return out, req.Send()
  3749  }
  3750  
  3751  // DescribeEngineDefaultParametersPages iterates over the pages of a DescribeEngineDefaultParameters operation,
  3752  // calling the "fn" function with the response data for each page. To stop
  3753  // iterating, return false from the fn function.
  3754  //
  3755  // See DescribeEngineDefaultParameters method for more information on how to use this operation.
  3756  //
  3757  // Note: This operation can generate multiple requests to a service.
  3758  //
  3759  //    // Example iterating over at most 3 pages of a DescribeEngineDefaultParameters operation.
  3760  //    pageNum := 0
  3761  //    err := client.DescribeEngineDefaultParametersPages(params,
  3762  //        func(page *elasticache.DescribeEngineDefaultParametersOutput, lastPage bool) bool {
  3763  //            pageNum++
  3764  //            fmt.Println(page)
  3765  //            return pageNum <= 3
  3766  //        })
  3767  //
  3768  func (c *ElastiCache) DescribeEngineDefaultParametersPages(input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool) error {
  3769  	return c.DescribeEngineDefaultParametersPagesWithContext(aws.BackgroundContext(), input, fn)
  3770  }
  3771  
  3772  // DescribeEngineDefaultParametersPagesWithContext same as DescribeEngineDefaultParametersPages except
  3773  // it takes a Context and allows setting request options on the pages.
  3774  //
  3775  // The context must be non-nil and will be used for request cancellation. If
  3776  // the context is nil a panic will occur. In the future the SDK may create
  3777  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3778  // for more information on using Contexts.
  3779  func (c *ElastiCache) DescribeEngineDefaultParametersPagesWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool, opts ...request.Option) error {
  3780  	p := request.Pagination{
  3781  		NewRequest: func() (*request.Request, error) {
  3782  			var inCpy *DescribeEngineDefaultParametersInput
  3783  			if input != nil {
  3784  				tmp := *input
  3785  				inCpy = &tmp
  3786  			}
  3787  			req, _ := c.DescribeEngineDefaultParametersRequest(inCpy)
  3788  			req.SetContext(ctx)
  3789  			req.ApplyOptions(opts...)
  3790  			return req, nil
  3791  		},
  3792  	}
  3793  
  3794  	for p.Next() {
  3795  		if !fn(p.Page().(*DescribeEngineDefaultParametersOutput), !p.HasNextPage()) {
  3796  			break
  3797  		}
  3798  	}
  3799  
  3800  	return p.Err()
  3801  }
  3802  
  3803  const opDescribeEvents = "DescribeEvents"
  3804  
  3805  // DescribeEventsRequest generates a "aws/request.Request" representing the
  3806  // client's request for the DescribeEvents operation. The "output" return
  3807  // value will be populated with the request's response once the request completes
  3808  // successfully.
  3809  //
  3810  // Use "Send" method on the returned Request to send the API call to the service.
  3811  // the "output" return value is not valid until after Send returns without error.
  3812  //
  3813  // See DescribeEvents for more information on using the DescribeEvents
  3814  // API call, and error handling.
  3815  //
  3816  // This method is useful when you want to inject custom logic or configuration
  3817  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3818  //
  3819  //
  3820  //    // Example sending a request using the DescribeEventsRequest method.
  3821  //    req, resp := client.DescribeEventsRequest(params)
  3822  //
  3823  //    err := req.Send()
  3824  //    if err == nil { // resp is now filled
  3825  //        fmt.Println(resp)
  3826  //    }
  3827  //
  3828  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEvents
  3829  func (c *ElastiCache) DescribeEventsRequest(input *DescribeEventsInput) (req *request.Request, output *DescribeEventsOutput) {
  3830  	op := &request.Operation{
  3831  		Name:       opDescribeEvents,
  3832  		HTTPMethod: "POST",
  3833  		HTTPPath:   "/",
  3834  		Paginator: &request.Paginator{
  3835  			InputTokens:     []string{"Marker"},
  3836  			OutputTokens:    []string{"Marker"},
  3837  			LimitToken:      "MaxRecords",
  3838  			TruncationToken: "",
  3839  		},
  3840  	}
  3841  
  3842  	if input == nil {
  3843  		input = &DescribeEventsInput{}
  3844  	}
  3845  
  3846  	output = &DescribeEventsOutput{}
  3847  	req = c.newRequest(op, input, output)
  3848  	return
  3849  }
  3850  
  3851  // DescribeEvents API operation for Amazon ElastiCache.
  3852  //
  3853  // Returns events related to clusters, cache security groups, and cache parameter
  3854  // groups. You can obtain events specific to a particular cluster, cache security
  3855  // group, or cache parameter group by providing the name as a parameter.
  3856  //
  3857  // By default, only the events occurring within the last hour are returned;
  3858  // however, you can retrieve up to 14 days' worth of events if necessary.
  3859  //
  3860  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  3861  // with awserr.Error's Code and Message methods to get detailed information about
  3862  // the error.
  3863  //
  3864  // See the AWS API reference guide for Amazon ElastiCache's
  3865  // API operation DescribeEvents for usage and error information.
  3866  //
  3867  // Returned Error Codes:
  3868  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  3869  //   The value for a parameter is invalid.
  3870  //
  3871  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  3872  //   Two or more incompatible parameters were specified.
  3873  //
  3874  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEvents
  3875  func (c *ElastiCache) DescribeEvents(input *DescribeEventsInput) (*DescribeEventsOutput, error) {
  3876  	req, out := c.DescribeEventsRequest(input)
  3877  	return out, req.Send()
  3878  }
  3879  
  3880  // DescribeEventsWithContext is the same as DescribeEvents with the addition of
  3881  // the ability to pass a context and additional request options.
  3882  //
  3883  // See DescribeEvents for details on how to use this API operation.
  3884  //
  3885  // The context must be non-nil and will be used for request cancellation. If
  3886  // the context is nil a panic will occur. In the future the SDK may create
  3887  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3888  // for more information on using Contexts.
  3889  func (c *ElastiCache) DescribeEventsWithContext(ctx aws.Context, input *DescribeEventsInput, opts ...request.Option) (*DescribeEventsOutput, error) {
  3890  	req, out := c.DescribeEventsRequest(input)
  3891  	req.SetContext(ctx)
  3892  	req.ApplyOptions(opts...)
  3893  	return out, req.Send()
  3894  }
  3895  
  3896  // DescribeEventsPages iterates over the pages of a DescribeEvents operation,
  3897  // calling the "fn" function with the response data for each page. To stop
  3898  // iterating, return false from the fn function.
  3899  //
  3900  // See DescribeEvents method for more information on how to use this operation.
  3901  //
  3902  // Note: This operation can generate multiple requests to a service.
  3903  //
  3904  //    // Example iterating over at most 3 pages of a DescribeEvents operation.
  3905  //    pageNum := 0
  3906  //    err := client.DescribeEventsPages(params,
  3907  //        func(page *elasticache.DescribeEventsOutput, lastPage bool) bool {
  3908  //            pageNum++
  3909  //            fmt.Println(page)
  3910  //            return pageNum <= 3
  3911  //        })
  3912  //
  3913  func (c *ElastiCache) DescribeEventsPages(input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool) error {
  3914  	return c.DescribeEventsPagesWithContext(aws.BackgroundContext(), input, fn)
  3915  }
  3916  
  3917  // DescribeEventsPagesWithContext same as DescribeEventsPages except
  3918  // it takes a Context and allows setting request options on the pages.
  3919  //
  3920  // The context must be non-nil and will be used for request cancellation. If
  3921  // the context is nil a panic will occur. In the future the SDK may create
  3922  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  3923  // for more information on using Contexts.
  3924  func (c *ElastiCache) DescribeEventsPagesWithContext(ctx aws.Context, input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool, opts ...request.Option) error {
  3925  	p := request.Pagination{
  3926  		NewRequest: func() (*request.Request, error) {
  3927  			var inCpy *DescribeEventsInput
  3928  			if input != nil {
  3929  				tmp := *input
  3930  				inCpy = &tmp
  3931  			}
  3932  			req, _ := c.DescribeEventsRequest(inCpy)
  3933  			req.SetContext(ctx)
  3934  			req.ApplyOptions(opts...)
  3935  			return req, nil
  3936  		},
  3937  	}
  3938  
  3939  	for p.Next() {
  3940  		if !fn(p.Page().(*DescribeEventsOutput), !p.HasNextPage()) {
  3941  			break
  3942  		}
  3943  	}
  3944  
  3945  	return p.Err()
  3946  }
  3947  
  3948  const opDescribeGlobalReplicationGroups = "DescribeGlobalReplicationGroups"
  3949  
  3950  // DescribeGlobalReplicationGroupsRequest generates a "aws/request.Request" representing the
  3951  // client's request for the DescribeGlobalReplicationGroups operation. The "output" return
  3952  // value will be populated with the request's response once the request completes
  3953  // successfully.
  3954  //
  3955  // Use "Send" method on the returned Request to send the API call to the service.
  3956  // the "output" return value is not valid until after Send returns without error.
  3957  //
  3958  // See DescribeGlobalReplicationGroups for more information on using the DescribeGlobalReplicationGroups
  3959  // API call, and error handling.
  3960  //
  3961  // This method is useful when you want to inject custom logic or configuration
  3962  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  3963  //
  3964  //
  3965  //    // Example sending a request using the DescribeGlobalReplicationGroupsRequest method.
  3966  //    req, resp := client.DescribeGlobalReplicationGroupsRequest(params)
  3967  //
  3968  //    err := req.Send()
  3969  //    if err == nil { // resp is now filled
  3970  //        fmt.Println(resp)
  3971  //    }
  3972  //
  3973  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeGlobalReplicationGroups
  3974  func (c *ElastiCache) DescribeGlobalReplicationGroupsRequest(input *DescribeGlobalReplicationGroupsInput) (req *request.Request, output *DescribeGlobalReplicationGroupsOutput) {
  3975  	op := &request.Operation{
  3976  		Name:       opDescribeGlobalReplicationGroups,
  3977  		HTTPMethod: "POST",
  3978  		HTTPPath:   "/",
  3979  		Paginator: &request.Paginator{
  3980  			InputTokens:     []string{"Marker"},
  3981  			OutputTokens:    []string{"Marker"},
  3982  			LimitToken:      "MaxRecords",
  3983  			TruncationToken: "",
  3984  		},
  3985  	}
  3986  
  3987  	if input == nil {
  3988  		input = &DescribeGlobalReplicationGroupsInput{}
  3989  	}
  3990  
  3991  	output = &DescribeGlobalReplicationGroupsOutput{}
  3992  	req = c.newRequest(op, input, output)
  3993  	return
  3994  }
  3995  
  3996  // DescribeGlobalReplicationGroups API operation for Amazon ElastiCache.
  3997  //
  3998  // Returns information about a particular global replication group. If no identifier
  3999  // is specified, returns information about all Global datastores.
  4000  //
  4001  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4002  // with awserr.Error's Code and Message methods to get detailed information about
  4003  // the error.
  4004  //
  4005  // See the AWS API reference guide for Amazon ElastiCache's
  4006  // API operation DescribeGlobalReplicationGroups for usage and error information.
  4007  //
  4008  // Returned Error Codes:
  4009  //   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
  4010  //   The Global datastore does not exist
  4011  //
  4012  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  4013  //   The value for a parameter is invalid.
  4014  //
  4015  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  4016  //   Two or more incompatible parameters were specified.
  4017  //
  4018  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeGlobalReplicationGroups
  4019  func (c *ElastiCache) DescribeGlobalReplicationGroups(input *DescribeGlobalReplicationGroupsInput) (*DescribeGlobalReplicationGroupsOutput, error) {
  4020  	req, out := c.DescribeGlobalReplicationGroupsRequest(input)
  4021  	return out, req.Send()
  4022  }
  4023  
  4024  // DescribeGlobalReplicationGroupsWithContext is the same as DescribeGlobalReplicationGroups with the addition of
  4025  // the ability to pass a context and additional request options.
  4026  //
  4027  // See DescribeGlobalReplicationGroups for details on how to use this API operation.
  4028  //
  4029  // The context must be non-nil and will be used for request cancellation. If
  4030  // the context is nil a panic will occur. In the future the SDK may create
  4031  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4032  // for more information on using Contexts.
  4033  func (c *ElastiCache) DescribeGlobalReplicationGroupsWithContext(ctx aws.Context, input *DescribeGlobalReplicationGroupsInput, opts ...request.Option) (*DescribeGlobalReplicationGroupsOutput, error) {
  4034  	req, out := c.DescribeGlobalReplicationGroupsRequest(input)
  4035  	req.SetContext(ctx)
  4036  	req.ApplyOptions(opts...)
  4037  	return out, req.Send()
  4038  }
  4039  
  4040  // DescribeGlobalReplicationGroupsPages iterates over the pages of a DescribeGlobalReplicationGroups operation,
  4041  // calling the "fn" function with the response data for each page. To stop
  4042  // iterating, return false from the fn function.
  4043  //
  4044  // See DescribeGlobalReplicationGroups method for more information on how to use this operation.
  4045  //
  4046  // Note: This operation can generate multiple requests to a service.
  4047  //
  4048  //    // Example iterating over at most 3 pages of a DescribeGlobalReplicationGroups operation.
  4049  //    pageNum := 0
  4050  //    err := client.DescribeGlobalReplicationGroupsPages(params,
  4051  //        func(page *elasticache.DescribeGlobalReplicationGroupsOutput, lastPage bool) bool {
  4052  //            pageNum++
  4053  //            fmt.Println(page)
  4054  //            return pageNum <= 3
  4055  //        })
  4056  //
  4057  func (c *ElastiCache) DescribeGlobalReplicationGroupsPages(input *DescribeGlobalReplicationGroupsInput, fn func(*DescribeGlobalReplicationGroupsOutput, bool) bool) error {
  4058  	return c.DescribeGlobalReplicationGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
  4059  }
  4060  
  4061  // DescribeGlobalReplicationGroupsPagesWithContext same as DescribeGlobalReplicationGroupsPages except
  4062  // it takes a Context and allows setting request options on the pages.
  4063  //
  4064  // The context must be non-nil and will be used for request cancellation. If
  4065  // the context is nil a panic will occur. In the future the SDK may create
  4066  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4067  // for more information on using Contexts.
  4068  func (c *ElastiCache) DescribeGlobalReplicationGroupsPagesWithContext(ctx aws.Context, input *DescribeGlobalReplicationGroupsInput, fn func(*DescribeGlobalReplicationGroupsOutput, bool) bool, opts ...request.Option) error {
  4069  	p := request.Pagination{
  4070  		NewRequest: func() (*request.Request, error) {
  4071  			var inCpy *DescribeGlobalReplicationGroupsInput
  4072  			if input != nil {
  4073  				tmp := *input
  4074  				inCpy = &tmp
  4075  			}
  4076  			req, _ := c.DescribeGlobalReplicationGroupsRequest(inCpy)
  4077  			req.SetContext(ctx)
  4078  			req.ApplyOptions(opts...)
  4079  			return req, nil
  4080  		},
  4081  	}
  4082  
  4083  	for p.Next() {
  4084  		if !fn(p.Page().(*DescribeGlobalReplicationGroupsOutput), !p.HasNextPage()) {
  4085  			break
  4086  		}
  4087  	}
  4088  
  4089  	return p.Err()
  4090  }
  4091  
  4092  const opDescribeReplicationGroups = "DescribeReplicationGroups"
  4093  
  4094  // DescribeReplicationGroupsRequest generates a "aws/request.Request" representing the
  4095  // client's request for the DescribeReplicationGroups operation. The "output" return
  4096  // value will be populated with the request's response once the request completes
  4097  // successfully.
  4098  //
  4099  // Use "Send" method on the returned Request to send the API call to the service.
  4100  // the "output" return value is not valid until after Send returns without error.
  4101  //
  4102  // See DescribeReplicationGroups for more information on using the DescribeReplicationGroups
  4103  // API call, and error handling.
  4104  //
  4105  // This method is useful when you want to inject custom logic or configuration
  4106  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4107  //
  4108  //
  4109  //    // Example sending a request using the DescribeReplicationGroupsRequest method.
  4110  //    req, resp := client.DescribeReplicationGroupsRequest(params)
  4111  //
  4112  //    err := req.Send()
  4113  //    if err == nil { // resp is now filled
  4114  //        fmt.Println(resp)
  4115  //    }
  4116  //
  4117  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReplicationGroups
  4118  func (c *ElastiCache) DescribeReplicationGroupsRequest(input *DescribeReplicationGroupsInput) (req *request.Request, output *DescribeReplicationGroupsOutput) {
  4119  	op := &request.Operation{
  4120  		Name:       opDescribeReplicationGroups,
  4121  		HTTPMethod: "POST",
  4122  		HTTPPath:   "/",
  4123  		Paginator: &request.Paginator{
  4124  			InputTokens:     []string{"Marker"},
  4125  			OutputTokens:    []string{"Marker"},
  4126  			LimitToken:      "MaxRecords",
  4127  			TruncationToken: "",
  4128  		},
  4129  	}
  4130  
  4131  	if input == nil {
  4132  		input = &DescribeReplicationGroupsInput{}
  4133  	}
  4134  
  4135  	output = &DescribeReplicationGroupsOutput{}
  4136  	req = c.newRequest(op, input, output)
  4137  	return
  4138  }
  4139  
  4140  // DescribeReplicationGroups API operation for Amazon ElastiCache.
  4141  //
  4142  // Returns information about a particular replication group. If no identifier
  4143  // is specified, DescribeReplicationGroups returns information about all replication
  4144  // groups.
  4145  //
  4146  // This operation is valid for Redis only.
  4147  //
  4148  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4149  // with awserr.Error's Code and Message methods to get detailed information about
  4150  // the error.
  4151  //
  4152  // See the AWS API reference guide for Amazon ElastiCache's
  4153  // API operation DescribeReplicationGroups for usage and error information.
  4154  //
  4155  // Returned Error Codes:
  4156  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  4157  //   The specified replication group does not exist.
  4158  //
  4159  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  4160  //   The value for a parameter is invalid.
  4161  //
  4162  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  4163  //   Two or more incompatible parameters were specified.
  4164  //
  4165  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReplicationGroups
  4166  func (c *ElastiCache) DescribeReplicationGroups(input *DescribeReplicationGroupsInput) (*DescribeReplicationGroupsOutput, error) {
  4167  	req, out := c.DescribeReplicationGroupsRequest(input)
  4168  	return out, req.Send()
  4169  }
  4170  
  4171  // DescribeReplicationGroupsWithContext is the same as DescribeReplicationGroups with the addition of
  4172  // the ability to pass a context and additional request options.
  4173  //
  4174  // See DescribeReplicationGroups for details on how to use this API operation.
  4175  //
  4176  // The context must be non-nil and will be used for request cancellation. If
  4177  // the context is nil a panic will occur. In the future the SDK may create
  4178  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4179  // for more information on using Contexts.
  4180  func (c *ElastiCache) DescribeReplicationGroupsWithContext(ctx aws.Context, input *DescribeReplicationGroupsInput, opts ...request.Option) (*DescribeReplicationGroupsOutput, error) {
  4181  	req, out := c.DescribeReplicationGroupsRequest(input)
  4182  	req.SetContext(ctx)
  4183  	req.ApplyOptions(opts...)
  4184  	return out, req.Send()
  4185  }
  4186  
  4187  // DescribeReplicationGroupsPages iterates over the pages of a DescribeReplicationGroups operation,
  4188  // calling the "fn" function with the response data for each page. To stop
  4189  // iterating, return false from the fn function.
  4190  //
  4191  // See DescribeReplicationGroups method for more information on how to use this operation.
  4192  //
  4193  // Note: This operation can generate multiple requests to a service.
  4194  //
  4195  //    // Example iterating over at most 3 pages of a DescribeReplicationGroups operation.
  4196  //    pageNum := 0
  4197  //    err := client.DescribeReplicationGroupsPages(params,
  4198  //        func(page *elasticache.DescribeReplicationGroupsOutput, lastPage bool) bool {
  4199  //            pageNum++
  4200  //            fmt.Println(page)
  4201  //            return pageNum <= 3
  4202  //        })
  4203  //
  4204  func (c *ElastiCache) DescribeReplicationGroupsPages(input *DescribeReplicationGroupsInput, fn func(*DescribeReplicationGroupsOutput, bool) bool) error {
  4205  	return c.DescribeReplicationGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
  4206  }
  4207  
  4208  // DescribeReplicationGroupsPagesWithContext same as DescribeReplicationGroupsPages except
  4209  // it takes a Context and allows setting request options on the pages.
  4210  //
  4211  // The context must be non-nil and will be used for request cancellation. If
  4212  // the context is nil a panic will occur. In the future the SDK may create
  4213  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4214  // for more information on using Contexts.
  4215  func (c *ElastiCache) DescribeReplicationGroupsPagesWithContext(ctx aws.Context, input *DescribeReplicationGroupsInput, fn func(*DescribeReplicationGroupsOutput, bool) bool, opts ...request.Option) error {
  4216  	p := request.Pagination{
  4217  		NewRequest: func() (*request.Request, error) {
  4218  			var inCpy *DescribeReplicationGroupsInput
  4219  			if input != nil {
  4220  				tmp := *input
  4221  				inCpy = &tmp
  4222  			}
  4223  			req, _ := c.DescribeReplicationGroupsRequest(inCpy)
  4224  			req.SetContext(ctx)
  4225  			req.ApplyOptions(opts...)
  4226  			return req, nil
  4227  		},
  4228  	}
  4229  
  4230  	for p.Next() {
  4231  		if !fn(p.Page().(*DescribeReplicationGroupsOutput), !p.HasNextPage()) {
  4232  			break
  4233  		}
  4234  	}
  4235  
  4236  	return p.Err()
  4237  }
  4238  
  4239  const opDescribeReservedCacheNodes = "DescribeReservedCacheNodes"
  4240  
  4241  // DescribeReservedCacheNodesRequest generates a "aws/request.Request" representing the
  4242  // client's request for the DescribeReservedCacheNodes operation. The "output" return
  4243  // value will be populated with the request's response once the request completes
  4244  // successfully.
  4245  //
  4246  // Use "Send" method on the returned Request to send the API call to the service.
  4247  // the "output" return value is not valid until after Send returns without error.
  4248  //
  4249  // See DescribeReservedCacheNodes for more information on using the DescribeReservedCacheNodes
  4250  // API call, and error handling.
  4251  //
  4252  // This method is useful when you want to inject custom logic or configuration
  4253  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4254  //
  4255  //
  4256  //    // Example sending a request using the DescribeReservedCacheNodesRequest method.
  4257  //    req, resp := client.DescribeReservedCacheNodesRequest(params)
  4258  //
  4259  //    err := req.Send()
  4260  //    if err == nil { // resp is now filled
  4261  //        fmt.Println(resp)
  4262  //    }
  4263  //
  4264  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodes
  4265  func (c *ElastiCache) DescribeReservedCacheNodesRequest(input *DescribeReservedCacheNodesInput) (req *request.Request, output *DescribeReservedCacheNodesOutput) {
  4266  	op := &request.Operation{
  4267  		Name:       opDescribeReservedCacheNodes,
  4268  		HTTPMethod: "POST",
  4269  		HTTPPath:   "/",
  4270  		Paginator: &request.Paginator{
  4271  			InputTokens:     []string{"Marker"},
  4272  			OutputTokens:    []string{"Marker"},
  4273  			LimitToken:      "MaxRecords",
  4274  			TruncationToken: "",
  4275  		},
  4276  	}
  4277  
  4278  	if input == nil {
  4279  		input = &DescribeReservedCacheNodesInput{}
  4280  	}
  4281  
  4282  	output = &DescribeReservedCacheNodesOutput{}
  4283  	req = c.newRequest(op, input, output)
  4284  	return
  4285  }
  4286  
  4287  // DescribeReservedCacheNodes API operation for Amazon ElastiCache.
  4288  //
  4289  // Returns information about reserved cache nodes for this account, or about
  4290  // a specified reserved cache node.
  4291  //
  4292  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4293  // with awserr.Error's Code and Message methods to get detailed information about
  4294  // the error.
  4295  //
  4296  // See the AWS API reference guide for Amazon ElastiCache's
  4297  // API operation DescribeReservedCacheNodes for usage and error information.
  4298  //
  4299  // Returned Error Codes:
  4300  //   * ErrCodeReservedCacheNodeNotFoundFault "ReservedCacheNodeNotFound"
  4301  //   The requested reserved cache node was not found.
  4302  //
  4303  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  4304  //   The value for a parameter is invalid.
  4305  //
  4306  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  4307  //   Two or more incompatible parameters were specified.
  4308  //
  4309  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodes
  4310  func (c *ElastiCache) DescribeReservedCacheNodes(input *DescribeReservedCacheNodesInput) (*DescribeReservedCacheNodesOutput, error) {
  4311  	req, out := c.DescribeReservedCacheNodesRequest(input)
  4312  	return out, req.Send()
  4313  }
  4314  
  4315  // DescribeReservedCacheNodesWithContext is the same as DescribeReservedCacheNodes with the addition of
  4316  // the ability to pass a context and additional request options.
  4317  //
  4318  // See DescribeReservedCacheNodes for details on how to use this API operation.
  4319  //
  4320  // The context must be non-nil and will be used for request cancellation. If
  4321  // the context is nil a panic will occur. In the future the SDK may create
  4322  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4323  // for more information on using Contexts.
  4324  func (c *ElastiCache) DescribeReservedCacheNodesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesInput, opts ...request.Option) (*DescribeReservedCacheNodesOutput, error) {
  4325  	req, out := c.DescribeReservedCacheNodesRequest(input)
  4326  	req.SetContext(ctx)
  4327  	req.ApplyOptions(opts...)
  4328  	return out, req.Send()
  4329  }
  4330  
  4331  // DescribeReservedCacheNodesPages iterates over the pages of a DescribeReservedCacheNodes operation,
  4332  // calling the "fn" function with the response data for each page. To stop
  4333  // iterating, return false from the fn function.
  4334  //
  4335  // See DescribeReservedCacheNodes method for more information on how to use this operation.
  4336  //
  4337  // Note: This operation can generate multiple requests to a service.
  4338  //
  4339  //    // Example iterating over at most 3 pages of a DescribeReservedCacheNodes operation.
  4340  //    pageNum := 0
  4341  //    err := client.DescribeReservedCacheNodesPages(params,
  4342  //        func(page *elasticache.DescribeReservedCacheNodesOutput, lastPage bool) bool {
  4343  //            pageNum++
  4344  //            fmt.Println(page)
  4345  //            return pageNum <= 3
  4346  //        })
  4347  //
  4348  func (c *ElastiCache) DescribeReservedCacheNodesPages(input *DescribeReservedCacheNodesInput, fn func(*DescribeReservedCacheNodesOutput, bool) bool) error {
  4349  	return c.DescribeReservedCacheNodesPagesWithContext(aws.BackgroundContext(), input, fn)
  4350  }
  4351  
  4352  // DescribeReservedCacheNodesPagesWithContext same as DescribeReservedCacheNodesPages except
  4353  // it takes a Context and allows setting request options on the pages.
  4354  //
  4355  // The context must be non-nil and will be used for request cancellation. If
  4356  // the context is nil a panic will occur. In the future the SDK may create
  4357  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4358  // for more information on using Contexts.
  4359  func (c *ElastiCache) DescribeReservedCacheNodesPagesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesInput, fn func(*DescribeReservedCacheNodesOutput, bool) bool, opts ...request.Option) error {
  4360  	p := request.Pagination{
  4361  		NewRequest: func() (*request.Request, error) {
  4362  			var inCpy *DescribeReservedCacheNodesInput
  4363  			if input != nil {
  4364  				tmp := *input
  4365  				inCpy = &tmp
  4366  			}
  4367  			req, _ := c.DescribeReservedCacheNodesRequest(inCpy)
  4368  			req.SetContext(ctx)
  4369  			req.ApplyOptions(opts...)
  4370  			return req, nil
  4371  		},
  4372  	}
  4373  
  4374  	for p.Next() {
  4375  		if !fn(p.Page().(*DescribeReservedCacheNodesOutput), !p.HasNextPage()) {
  4376  			break
  4377  		}
  4378  	}
  4379  
  4380  	return p.Err()
  4381  }
  4382  
  4383  const opDescribeReservedCacheNodesOfferings = "DescribeReservedCacheNodesOfferings"
  4384  
  4385  // DescribeReservedCacheNodesOfferingsRequest generates a "aws/request.Request" representing the
  4386  // client's request for the DescribeReservedCacheNodesOfferings operation. The "output" return
  4387  // value will be populated with the request's response once the request completes
  4388  // successfully.
  4389  //
  4390  // Use "Send" method on the returned Request to send the API call to the service.
  4391  // the "output" return value is not valid until after Send returns without error.
  4392  //
  4393  // See DescribeReservedCacheNodesOfferings for more information on using the DescribeReservedCacheNodesOfferings
  4394  // API call, and error handling.
  4395  //
  4396  // This method is useful when you want to inject custom logic or configuration
  4397  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4398  //
  4399  //
  4400  //    // Example sending a request using the DescribeReservedCacheNodesOfferingsRequest method.
  4401  //    req, resp := client.DescribeReservedCacheNodesOfferingsRequest(params)
  4402  //
  4403  //    err := req.Send()
  4404  //    if err == nil { // resp is now filled
  4405  //        fmt.Println(resp)
  4406  //    }
  4407  //
  4408  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodesOfferings
  4409  func (c *ElastiCache) DescribeReservedCacheNodesOfferingsRequest(input *DescribeReservedCacheNodesOfferingsInput) (req *request.Request, output *DescribeReservedCacheNodesOfferingsOutput) {
  4410  	op := &request.Operation{
  4411  		Name:       opDescribeReservedCacheNodesOfferings,
  4412  		HTTPMethod: "POST",
  4413  		HTTPPath:   "/",
  4414  		Paginator: &request.Paginator{
  4415  			InputTokens:     []string{"Marker"},
  4416  			OutputTokens:    []string{"Marker"},
  4417  			LimitToken:      "MaxRecords",
  4418  			TruncationToken: "",
  4419  		},
  4420  	}
  4421  
  4422  	if input == nil {
  4423  		input = &DescribeReservedCacheNodesOfferingsInput{}
  4424  	}
  4425  
  4426  	output = &DescribeReservedCacheNodesOfferingsOutput{}
  4427  	req = c.newRequest(op, input, output)
  4428  	return
  4429  }
  4430  
  4431  // DescribeReservedCacheNodesOfferings API operation for Amazon ElastiCache.
  4432  //
  4433  // Lists available reserved cache node offerings.
  4434  //
  4435  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4436  // with awserr.Error's Code and Message methods to get detailed information about
  4437  // the error.
  4438  //
  4439  // See the AWS API reference guide for Amazon ElastiCache's
  4440  // API operation DescribeReservedCacheNodesOfferings for usage and error information.
  4441  //
  4442  // Returned Error Codes:
  4443  //   * ErrCodeReservedCacheNodesOfferingNotFoundFault "ReservedCacheNodesOfferingNotFound"
  4444  //   The requested cache node offering does not exist.
  4445  //
  4446  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  4447  //   The value for a parameter is invalid.
  4448  //
  4449  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  4450  //   Two or more incompatible parameters were specified.
  4451  //
  4452  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodesOfferings
  4453  func (c *ElastiCache) DescribeReservedCacheNodesOfferings(input *DescribeReservedCacheNodesOfferingsInput) (*DescribeReservedCacheNodesOfferingsOutput, error) {
  4454  	req, out := c.DescribeReservedCacheNodesOfferingsRequest(input)
  4455  	return out, req.Send()
  4456  }
  4457  
  4458  // DescribeReservedCacheNodesOfferingsWithContext is the same as DescribeReservedCacheNodesOfferings with the addition of
  4459  // the ability to pass a context and additional request options.
  4460  //
  4461  // See DescribeReservedCacheNodesOfferings for details on how to use this API operation.
  4462  //
  4463  // The context must be non-nil and will be used for request cancellation. If
  4464  // the context is nil a panic will occur. In the future the SDK may create
  4465  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4466  // for more information on using Contexts.
  4467  func (c *ElastiCache) DescribeReservedCacheNodesOfferingsWithContext(ctx aws.Context, input *DescribeReservedCacheNodesOfferingsInput, opts ...request.Option) (*DescribeReservedCacheNodesOfferingsOutput, error) {
  4468  	req, out := c.DescribeReservedCacheNodesOfferingsRequest(input)
  4469  	req.SetContext(ctx)
  4470  	req.ApplyOptions(opts...)
  4471  	return out, req.Send()
  4472  }
  4473  
  4474  // DescribeReservedCacheNodesOfferingsPages iterates over the pages of a DescribeReservedCacheNodesOfferings operation,
  4475  // calling the "fn" function with the response data for each page. To stop
  4476  // iterating, return false from the fn function.
  4477  //
  4478  // See DescribeReservedCacheNodesOfferings method for more information on how to use this operation.
  4479  //
  4480  // Note: This operation can generate multiple requests to a service.
  4481  //
  4482  //    // Example iterating over at most 3 pages of a DescribeReservedCacheNodesOfferings operation.
  4483  //    pageNum := 0
  4484  //    err := client.DescribeReservedCacheNodesOfferingsPages(params,
  4485  //        func(page *elasticache.DescribeReservedCacheNodesOfferingsOutput, lastPage bool) bool {
  4486  //            pageNum++
  4487  //            fmt.Println(page)
  4488  //            return pageNum <= 3
  4489  //        })
  4490  //
  4491  func (c *ElastiCache) DescribeReservedCacheNodesOfferingsPages(input *DescribeReservedCacheNodesOfferingsInput, fn func(*DescribeReservedCacheNodesOfferingsOutput, bool) bool) error {
  4492  	return c.DescribeReservedCacheNodesOfferingsPagesWithContext(aws.BackgroundContext(), input, fn)
  4493  }
  4494  
  4495  // DescribeReservedCacheNodesOfferingsPagesWithContext same as DescribeReservedCacheNodesOfferingsPages except
  4496  // it takes a Context and allows setting request options on the pages.
  4497  //
  4498  // The context must be non-nil and will be used for request cancellation. If
  4499  // the context is nil a panic will occur. In the future the SDK may create
  4500  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4501  // for more information on using Contexts.
  4502  func (c *ElastiCache) DescribeReservedCacheNodesOfferingsPagesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesOfferingsInput, fn func(*DescribeReservedCacheNodesOfferingsOutput, bool) bool, opts ...request.Option) error {
  4503  	p := request.Pagination{
  4504  		NewRequest: func() (*request.Request, error) {
  4505  			var inCpy *DescribeReservedCacheNodesOfferingsInput
  4506  			if input != nil {
  4507  				tmp := *input
  4508  				inCpy = &tmp
  4509  			}
  4510  			req, _ := c.DescribeReservedCacheNodesOfferingsRequest(inCpy)
  4511  			req.SetContext(ctx)
  4512  			req.ApplyOptions(opts...)
  4513  			return req, nil
  4514  		},
  4515  	}
  4516  
  4517  	for p.Next() {
  4518  		if !fn(p.Page().(*DescribeReservedCacheNodesOfferingsOutput), !p.HasNextPage()) {
  4519  			break
  4520  		}
  4521  	}
  4522  
  4523  	return p.Err()
  4524  }
  4525  
  4526  const opDescribeServiceUpdates = "DescribeServiceUpdates"
  4527  
  4528  // DescribeServiceUpdatesRequest generates a "aws/request.Request" representing the
  4529  // client's request for the DescribeServiceUpdates operation. The "output" return
  4530  // value will be populated with the request's response once the request completes
  4531  // successfully.
  4532  //
  4533  // Use "Send" method on the returned Request to send the API call to the service.
  4534  // the "output" return value is not valid until after Send returns without error.
  4535  //
  4536  // See DescribeServiceUpdates for more information on using the DescribeServiceUpdates
  4537  // API call, and error handling.
  4538  //
  4539  // This method is useful when you want to inject custom logic or configuration
  4540  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4541  //
  4542  //
  4543  //    // Example sending a request using the DescribeServiceUpdatesRequest method.
  4544  //    req, resp := client.DescribeServiceUpdatesRequest(params)
  4545  //
  4546  //    err := req.Send()
  4547  //    if err == nil { // resp is now filled
  4548  //        fmt.Println(resp)
  4549  //    }
  4550  //
  4551  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeServiceUpdates
  4552  func (c *ElastiCache) DescribeServiceUpdatesRequest(input *DescribeServiceUpdatesInput) (req *request.Request, output *DescribeServiceUpdatesOutput) {
  4553  	op := &request.Operation{
  4554  		Name:       opDescribeServiceUpdates,
  4555  		HTTPMethod: "POST",
  4556  		HTTPPath:   "/",
  4557  		Paginator: &request.Paginator{
  4558  			InputTokens:     []string{"Marker"},
  4559  			OutputTokens:    []string{"Marker"},
  4560  			LimitToken:      "MaxRecords",
  4561  			TruncationToken: "",
  4562  		},
  4563  	}
  4564  
  4565  	if input == nil {
  4566  		input = &DescribeServiceUpdatesInput{}
  4567  	}
  4568  
  4569  	output = &DescribeServiceUpdatesOutput{}
  4570  	req = c.newRequest(op, input, output)
  4571  	return
  4572  }
  4573  
  4574  // DescribeServiceUpdates API operation for Amazon ElastiCache.
  4575  //
  4576  // Returns details of the service updates
  4577  //
  4578  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4579  // with awserr.Error's Code and Message methods to get detailed information about
  4580  // the error.
  4581  //
  4582  // See the AWS API reference guide for Amazon ElastiCache's
  4583  // API operation DescribeServiceUpdates for usage and error information.
  4584  //
  4585  // Returned Error Codes:
  4586  //   * ErrCodeServiceUpdateNotFoundFault "ServiceUpdateNotFoundFault"
  4587  //   The service update doesn't exist
  4588  //
  4589  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  4590  //   The value for a parameter is invalid.
  4591  //
  4592  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  4593  //   Two or more incompatible parameters were specified.
  4594  //
  4595  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeServiceUpdates
  4596  func (c *ElastiCache) DescribeServiceUpdates(input *DescribeServiceUpdatesInput) (*DescribeServiceUpdatesOutput, error) {
  4597  	req, out := c.DescribeServiceUpdatesRequest(input)
  4598  	return out, req.Send()
  4599  }
  4600  
  4601  // DescribeServiceUpdatesWithContext is the same as DescribeServiceUpdates with the addition of
  4602  // the ability to pass a context and additional request options.
  4603  //
  4604  // See DescribeServiceUpdates for details on how to use this API operation.
  4605  //
  4606  // The context must be non-nil and will be used for request cancellation. If
  4607  // the context is nil a panic will occur. In the future the SDK may create
  4608  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4609  // for more information on using Contexts.
  4610  func (c *ElastiCache) DescribeServiceUpdatesWithContext(ctx aws.Context, input *DescribeServiceUpdatesInput, opts ...request.Option) (*DescribeServiceUpdatesOutput, error) {
  4611  	req, out := c.DescribeServiceUpdatesRequest(input)
  4612  	req.SetContext(ctx)
  4613  	req.ApplyOptions(opts...)
  4614  	return out, req.Send()
  4615  }
  4616  
  4617  // DescribeServiceUpdatesPages iterates over the pages of a DescribeServiceUpdates operation,
  4618  // calling the "fn" function with the response data for each page. To stop
  4619  // iterating, return false from the fn function.
  4620  //
  4621  // See DescribeServiceUpdates method for more information on how to use this operation.
  4622  //
  4623  // Note: This operation can generate multiple requests to a service.
  4624  //
  4625  //    // Example iterating over at most 3 pages of a DescribeServiceUpdates operation.
  4626  //    pageNum := 0
  4627  //    err := client.DescribeServiceUpdatesPages(params,
  4628  //        func(page *elasticache.DescribeServiceUpdatesOutput, lastPage bool) bool {
  4629  //            pageNum++
  4630  //            fmt.Println(page)
  4631  //            return pageNum <= 3
  4632  //        })
  4633  //
  4634  func (c *ElastiCache) DescribeServiceUpdatesPages(input *DescribeServiceUpdatesInput, fn func(*DescribeServiceUpdatesOutput, bool) bool) error {
  4635  	return c.DescribeServiceUpdatesPagesWithContext(aws.BackgroundContext(), input, fn)
  4636  }
  4637  
  4638  // DescribeServiceUpdatesPagesWithContext same as DescribeServiceUpdatesPages except
  4639  // it takes a Context and allows setting request options on the pages.
  4640  //
  4641  // The context must be non-nil and will be used for request cancellation. If
  4642  // the context is nil a panic will occur. In the future the SDK may create
  4643  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4644  // for more information on using Contexts.
  4645  func (c *ElastiCache) DescribeServiceUpdatesPagesWithContext(ctx aws.Context, input *DescribeServiceUpdatesInput, fn func(*DescribeServiceUpdatesOutput, bool) bool, opts ...request.Option) error {
  4646  	p := request.Pagination{
  4647  		NewRequest: func() (*request.Request, error) {
  4648  			var inCpy *DescribeServiceUpdatesInput
  4649  			if input != nil {
  4650  				tmp := *input
  4651  				inCpy = &tmp
  4652  			}
  4653  			req, _ := c.DescribeServiceUpdatesRequest(inCpy)
  4654  			req.SetContext(ctx)
  4655  			req.ApplyOptions(opts...)
  4656  			return req, nil
  4657  		},
  4658  	}
  4659  
  4660  	for p.Next() {
  4661  		if !fn(p.Page().(*DescribeServiceUpdatesOutput), !p.HasNextPage()) {
  4662  			break
  4663  		}
  4664  	}
  4665  
  4666  	return p.Err()
  4667  }
  4668  
  4669  const opDescribeSnapshots = "DescribeSnapshots"
  4670  
  4671  // DescribeSnapshotsRequest generates a "aws/request.Request" representing the
  4672  // client's request for the DescribeSnapshots operation. The "output" return
  4673  // value will be populated with the request's response once the request completes
  4674  // successfully.
  4675  //
  4676  // Use "Send" method on the returned Request to send the API call to the service.
  4677  // the "output" return value is not valid until after Send returns without error.
  4678  //
  4679  // See DescribeSnapshots for more information on using the DescribeSnapshots
  4680  // API call, and error handling.
  4681  //
  4682  // This method is useful when you want to inject custom logic or configuration
  4683  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4684  //
  4685  //
  4686  //    // Example sending a request using the DescribeSnapshotsRequest method.
  4687  //    req, resp := client.DescribeSnapshotsRequest(params)
  4688  //
  4689  //    err := req.Send()
  4690  //    if err == nil { // resp is now filled
  4691  //        fmt.Println(resp)
  4692  //    }
  4693  //
  4694  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeSnapshots
  4695  func (c *ElastiCache) DescribeSnapshotsRequest(input *DescribeSnapshotsInput) (req *request.Request, output *DescribeSnapshotsOutput) {
  4696  	op := &request.Operation{
  4697  		Name:       opDescribeSnapshots,
  4698  		HTTPMethod: "POST",
  4699  		HTTPPath:   "/",
  4700  		Paginator: &request.Paginator{
  4701  			InputTokens:     []string{"Marker"},
  4702  			OutputTokens:    []string{"Marker"},
  4703  			LimitToken:      "MaxRecords",
  4704  			TruncationToken: "",
  4705  		},
  4706  	}
  4707  
  4708  	if input == nil {
  4709  		input = &DescribeSnapshotsInput{}
  4710  	}
  4711  
  4712  	output = &DescribeSnapshotsOutput{}
  4713  	req = c.newRequest(op, input, output)
  4714  	return
  4715  }
  4716  
  4717  // DescribeSnapshots API operation for Amazon ElastiCache.
  4718  //
  4719  // Returns information about cluster or replication group snapshots. By default,
  4720  // DescribeSnapshots lists all of your snapshots; it can optionally describe
  4721  // a single snapshot, or just the snapshots associated with a particular cache
  4722  // cluster.
  4723  //
  4724  // This operation is valid for Redis only.
  4725  //
  4726  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4727  // with awserr.Error's Code and Message methods to get detailed information about
  4728  // the error.
  4729  //
  4730  // See the AWS API reference guide for Amazon ElastiCache's
  4731  // API operation DescribeSnapshots for usage and error information.
  4732  //
  4733  // Returned Error Codes:
  4734  //   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
  4735  //   The requested cluster ID does not refer to an existing cluster.
  4736  //
  4737  //   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
  4738  //   The requested snapshot name does not refer to an existing snapshot.
  4739  //
  4740  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  4741  //   The value for a parameter is invalid.
  4742  //
  4743  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  4744  //   Two or more incompatible parameters were specified.
  4745  //
  4746  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeSnapshots
  4747  func (c *ElastiCache) DescribeSnapshots(input *DescribeSnapshotsInput) (*DescribeSnapshotsOutput, error) {
  4748  	req, out := c.DescribeSnapshotsRequest(input)
  4749  	return out, req.Send()
  4750  }
  4751  
  4752  // DescribeSnapshotsWithContext is the same as DescribeSnapshots with the addition of
  4753  // the ability to pass a context and additional request options.
  4754  //
  4755  // See DescribeSnapshots for details on how to use this API operation.
  4756  //
  4757  // The context must be non-nil and will be used for request cancellation. If
  4758  // the context is nil a panic will occur. In the future the SDK may create
  4759  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4760  // for more information on using Contexts.
  4761  func (c *ElastiCache) DescribeSnapshotsWithContext(ctx aws.Context, input *DescribeSnapshotsInput, opts ...request.Option) (*DescribeSnapshotsOutput, error) {
  4762  	req, out := c.DescribeSnapshotsRequest(input)
  4763  	req.SetContext(ctx)
  4764  	req.ApplyOptions(opts...)
  4765  	return out, req.Send()
  4766  }
  4767  
  4768  // DescribeSnapshotsPages iterates over the pages of a DescribeSnapshots operation,
  4769  // calling the "fn" function with the response data for each page. To stop
  4770  // iterating, return false from the fn function.
  4771  //
  4772  // See DescribeSnapshots method for more information on how to use this operation.
  4773  //
  4774  // Note: This operation can generate multiple requests to a service.
  4775  //
  4776  //    // Example iterating over at most 3 pages of a DescribeSnapshots operation.
  4777  //    pageNum := 0
  4778  //    err := client.DescribeSnapshotsPages(params,
  4779  //        func(page *elasticache.DescribeSnapshotsOutput, lastPage bool) bool {
  4780  //            pageNum++
  4781  //            fmt.Println(page)
  4782  //            return pageNum <= 3
  4783  //        })
  4784  //
  4785  func (c *ElastiCache) DescribeSnapshotsPages(input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool) error {
  4786  	return c.DescribeSnapshotsPagesWithContext(aws.BackgroundContext(), input, fn)
  4787  }
  4788  
  4789  // DescribeSnapshotsPagesWithContext same as DescribeSnapshotsPages except
  4790  // it takes a Context and allows setting request options on the pages.
  4791  //
  4792  // The context must be non-nil and will be used for request cancellation. If
  4793  // the context is nil a panic will occur. In the future the SDK may create
  4794  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4795  // for more information on using Contexts.
  4796  func (c *ElastiCache) DescribeSnapshotsPagesWithContext(ctx aws.Context, input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool, opts ...request.Option) error {
  4797  	p := request.Pagination{
  4798  		NewRequest: func() (*request.Request, error) {
  4799  			var inCpy *DescribeSnapshotsInput
  4800  			if input != nil {
  4801  				tmp := *input
  4802  				inCpy = &tmp
  4803  			}
  4804  			req, _ := c.DescribeSnapshotsRequest(inCpy)
  4805  			req.SetContext(ctx)
  4806  			req.ApplyOptions(opts...)
  4807  			return req, nil
  4808  		},
  4809  	}
  4810  
  4811  	for p.Next() {
  4812  		if !fn(p.Page().(*DescribeSnapshotsOutput), !p.HasNextPage()) {
  4813  			break
  4814  		}
  4815  	}
  4816  
  4817  	return p.Err()
  4818  }
  4819  
  4820  const opDescribeUpdateActions = "DescribeUpdateActions"
  4821  
  4822  // DescribeUpdateActionsRequest generates a "aws/request.Request" representing the
  4823  // client's request for the DescribeUpdateActions operation. The "output" return
  4824  // value will be populated with the request's response once the request completes
  4825  // successfully.
  4826  //
  4827  // Use "Send" method on the returned Request to send the API call to the service.
  4828  // the "output" return value is not valid until after Send returns without error.
  4829  //
  4830  // See DescribeUpdateActions for more information on using the DescribeUpdateActions
  4831  // API call, and error handling.
  4832  //
  4833  // This method is useful when you want to inject custom logic or configuration
  4834  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4835  //
  4836  //
  4837  //    // Example sending a request using the DescribeUpdateActionsRequest method.
  4838  //    req, resp := client.DescribeUpdateActionsRequest(params)
  4839  //
  4840  //    err := req.Send()
  4841  //    if err == nil { // resp is now filled
  4842  //        fmt.Println(resp)
  4843  //    }
  4844  //
  4845  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUpdateActions
  4846  func (c *ElastiCache) DescribeUpdateActionsRequest(input *DescribeUpdateActionsInput) (req *request.Request, output *DescribeUpdateActionsOutput) {
  4847  	op := &request.Operation{
  4848  		Name:       opDescribeUpdateActions,
  4849  		HTTPMethod: "POST",
  4850  		HTTPPath:   "/",
  4851  		Paginator: &request.Paginator{
  4852  			InputTokens:     []string{"Marker"},
  4853  			OutputTokens:    []string{"Marker"},
  4854  			LimitToken:      "MaxRecords",
  4855  			TruncationToken: "",
  4856  		},
  4857  	}
  4858  
  4859  	if input == nil {
  4860  		input = &DescribeUpdateActionsInput{}
  4861  	}
  4862  
  4863  	output = &DescribeUpdateActionsOutput{}
  4864  	req = c.newRequest(op, input, output)
  4865  	return
  4866  }
  4867  
  4868  // DescribeUpdateActions API operation for Amazon ElastiCache.
  4869  //
  4870  // Returns details of the update actions
  4871  //
  4872  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  4873  // with awserr.Error's Code and Message methods to get detailed information about
  4874  // the error.
  4875  //
  4876  // See the AWS API reference guide for Amazon ElastiCache's
  4877  // API operation DescribeUpdateActions for usage and error information.
  4878  //
  4879  // Returned Error Codes:
  4880  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  4881  //   The value for a parameter is invalid.
  4882  //
  4883  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  4884  //   Two or more incompatible parameters were specified.
  4885  //
  4886  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUpdateActions
  4887  func (c *ElastiCache) DescribeUpdateActions(input *DescribeUpdateActionsInput) (*DescribeUpdateActionsOutput, error) {
  4888  	req, out := c.DescribeUpdateActionsRequest(input)
  4889  	return out, req.Send()
  4890  }
  4891  
  4892  // DescribeUpdateActionsWithContext is the same as DescribeUpdateActions with the addition of
  4893  // the ability to pass a context and additional request options.
  4894  //
  4895  // See DescribeUpdateActions for details on how to use this API operation.
  4896  //
  4897  // The context must be non-nil and will be used for request cancellation. If
  4898  // the context is nil a panic will occur. In the future the SDK may create
  4899  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4900  // for more information on using Contexts.
  4901  func (c *ElastiCache) DescribeUpdateActionsWithContext(ctx aws.Context, input *DescribeUpdateActionsInput, opts ...request.Option) (*DescribeUpdateActionsOutput, error) {
  4902  	req, out := c.DescribeUpdateActionsRequest(input)
  4903  	req.SetContext(ctx)
  4904  	req.ApplyOptions(opts...)
  4905  	return out, req.Send()
  4906  }
  4907  
  4908  // DescribeUpdateActionsPages iterates over the pages of a DescribeUpdateActions operation,
  4909  // calling the "fn" function with the response data for each page. To stop
  4910  // iterating, return false from the fn function.
  4911  //
  4912  // See DescribeUpdateActions method for more information on how to use this operation.
  4913  //
  4914  // Note: This operation can generate multiple requests to a service.
  4915  //
  4916  //    // Example iterating over at most 3 pages of a DescribeUpdateActions operation.
  4917  //    pageNum := 0
  4918  //    err := client.DescribeUpdateActionsPages(params,
  4919  //        func(page *elasticache.DescribeUpdateActionsOutput, lastPage bool) bool {
  4920  //            pageNum++
  4921  //            fmt.Println(page)
  4922  //            return pageNum <= 3
  4923  //        })
  4924  //
  4925  func (c *ElastiCache) DescribeUpdateActionsPages(input *DescribeUpdateActionsInput, fn func(*DescribeUpdateActionsOutput, bool) bool) error {
  4926  	return c.DescribeUpdateActionsPagesWithContext(aws.BackgroundContext(), input, fn)
  4927  }
  4928  
  4929  // DescribeUpdateActionsPagesWithContext same as DescribeUpdateActionsPages except
  4930  // it takes a Context and allows setting request options on the pages.
  4931  //
  4932  // The context must be non-nil and will be used for request cancellation. If
  4933  // the context is nil a panic will occur. In the future the SDK may create
  4934  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  4935  // for more information on using Contexts.
  4936  func (c *ElastiCache) DescribeUpdateActionsPagesWithContext(ctx aws.Context, input *DescribeUpdateActionsInput, fn func(*DescribeUpdateActionsOutput, bool) bool, opts ...request.Option) error {
  4937  	p := request.Pagination{
  4938  		NewRequest: func() (*request.Request, error) {
  4939  			var inCpy *DescribeUpdateActionsInput
  4940  			if input != nil {
  4941  				tmp := *input
  4942  				inCpy = &tmp
  4943  			}
  4944  			req, _ := c.DescribeUpdateActionsRequest(inCpy)
  4945  			req.SetContext(ctx)
  4946  			req.ApplyOptions(opts...)
  4947  			return req, nil
  4948  		},
  4949  	}
  4950  
  4951  	for p.Next() {
  4952  		if !fn(p.Page().(*DescribeUpdateActionsOutput), !p.HasNextPage()) {
  4953  			break
  4954  		}
  4955  	}
  4956  
  4957  	return p.Err()
  4958  }
  4959  
  4960  const opDescribeUserGroups = "DescribeUserGroups"
  4961  
  4962  // DescribeUserGroupsRequest generates a "aws/request.Request" representing the
  4963  // client's request for the DescribeUserGroups operation. The "output" return
  4964  // value will be populated with the request's response once the request completes
  4965  // successfully.
  4966  //
  4967  // Use "Send" method on the returned Request to send the API call to the service.
  4968  // the "output" return value is not valid until after Send returns without error.
  4969  //
  4970  // See DescribeUserGroups for more information on using the DescribeUserGroups
  4971  // API call, and error handling.
  4972  //
  4973  // This method is useful when you want to inject custom logic or configuration
  4974  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  4975  //
  4976  //
  4977  //    // Example sending a request using the DescribeUserGroupsRequest method.
  4978  //    req, resp := client.DescribeUserGroupsRequest(params)
  4979  //
  4980  //    err := req.Send()
  4981  //    if err == nil { // resp is now filled
  4982  //        fmt.Println(resp)
  4983  //    }
  4984  //
  4985  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUserGroups
  4986  func (c *ElastiCache) DescribeUserGroupsRequest(input *DescribeUserGroupsInput) (req *request.Request, output *DescribeUserGroupsOutput) {
  4987  	op := &request.Operation{
  4988  		Name:       opDescribeUserGroups,
  4989  		HTTPMethod: "POST",
  4990  		HTTPPath:   "/",
  4991  		Paginator: &request.Paginator{
  4992  			InputTokens:     []string{"Marker"},
  4993  			OutputTokens:    []string{"Marker"},
  4994  			LimitToken:      "MaxRecords",
  4995  			TruncationToken: "",
  4996  		},
  4997  	}
  4998  
  4999  	if input == nil {
  5000  		input = &DescribeUserGroupsInput{}
  5001  	}
  5002  
  5003  	output = &DescribeUserGroupsOutput{}
  5004  	req = c.newRequest(op, input, output)
  5005  	return
  5006  }
  5007  
  5008  // DescribeUserGroups API operation for Amazon ElastiCache.
  5009  //
  5010  // Returns a list of user groups.
  5011  //
  5012  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5013  // with awserr.Error's Code and Message methods to get detailed information about
  5014  // the error.
  5015  //
  5016  // See the AWS API reference guide for Amazon ElastiCache's
  5017  // API operation DescribeUserGroups for usage and error information.
  5018  //
  5019  // Returned Error Codes:
  5020  //   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
  5021  //   The user group was not found or does not exist
  5022  //
  5023  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  5024  //   Two or more incompatible parameters were specified.
  5025  //
  5026  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUserGroups
  5027  func (c *ElastiCache) DescribeUserGroups(input *DescribeUserGroupsInput) (*DescribeUserGroupsOutput, error) {
  5028  	req, out := c.DescribeUserGroupsRequest(input)
  5029  	return out, req.Send()
  5030  }
  5031  
  5032  // DescribeUserGroupsWithContext is the same as DescribeUserGroups with the addition of
  5033  // the ability to pass a context and additional request options.
  5034  //
  5035  // See DescribeUserGroups for details on how to use this API operation.
  5036  //
  5037  // The context must be non-nil and will be used for request cancellation. If
  5038  // the context is nil a panic will occur. In the future the SDK may create
  5039  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5040  // for more information on using Contexts.
  5041  func (c *ElastiCache) DescribeUserGroupsWithContext(ctx aws.Context, input *DescribeUserGroupsInput, opts ...request.Option) (*DescribeUserGroupsOutput, error) {
  5042  	req, out := c.DescribeUserGroupsRequest(input)
  5043  	req.SetContext(ctx)
  5044  	req.ApplyOptions(opts...)
  5045  	return out, req.Send()
  5046  }
  5047  
  5048  // DescribeUserGroupsPages iterates over the pages of a DescribeUserGroups operation,
  5049  // calling the "fn" function with the response data for each page. To stop
  5050  // iterating, return false from the fn function.
  5051  //
  5052  // See DescribeUserGroups method for more information on how to use this operation.
  5053  //
  5054  // Note: This operation can generate multiple requests to a service.
  5055  //
  5056  //    // Example iterating over at most 3 pages of a DescribeUserGroups operation.
  5057  //    pageNum := 0
  5058  //    err := client.DescribeUserGroupsPages(params,
  5059  //        func(page *elasticache.DescribeUserGroupsOutput, lastPage bool) bool {
  5060  //            pageNum++
  5061  //            fmt.Println(page)
  5062  //            return pageNum <= 3
  5063  //        })
  5064  //
  5065  func (c *ElastiCache) DescribeUserGroupsPages(input *DescribeUserGroupsInput, fn func(*DescribeUserGroupsOutput, bool) bool) error {
  5066  	return c.DescribeUserGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
  5067  }
  5068  
  5069  // DescribeUserGroupsPagesWithContext same as DescribeUserGroupsPages except
  5070  // it takes a Context and allows setting request options on the pages.
  5071  //
  5072  // The context must be non-nil and will be used for request cancellation. If
  5073  // the context is nil a panic will occur. In the future the SDK may create
  5074  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5075  // for more information on using Contexts.
  5076  func (c *ElastiCache) DescribeUserGroupsPagesWithContext(ctx aws.Context, input *DescribeUserGroupsInput, fn func(*DescribeUserGroupsOutput, bool) bool, opts ...request.Option) error {
  5077  	p := request.Pagination{
  5078  		NewRequest: func() (*request.Request, error) {
  5079  			var inCpy *DescribeUserGroupsInput
  5080  			if input != nil {
  5081  				tmp := *input
  5082  				inCpy = &tmp
  5083  			}
  5084  			req, _ := c.DescribeUserGroupsRequest(inCpy)
  5085  			req.SetContext(ctx)
  5086  			req.ApplyOptions(opts...)
  5087  			return req, nil
  5088  		},
  5089  	}
  5090  
  5091  	for p.Next() {
  5092  		if !fn(p.Page().(*DescribeUserGroupsOutput), !p.HasNextPage()) {
  5093  			break
  5094  		}
  5095  	}
  5096  
  5097  	return p.Err()
  5098  }
  5099  
  5100  const opDescribeUsers = "DescribeUsers"
  5101  
  5102  // DescribeUsersRequest generates a "aws/request.Request" representing the
  5103  // client's request for the DescribeUsers operation. The "output" return
  5104  // value will be populated with the request's response once the request completes
  5105  // successfully.
  5106  //
  5107  // Use "Send" method on the returned Request to send the API call to the service.
  5108  // the "output" return value is not valid until after Send returns without error.
  5109  //
  5110  // See DescribeUsers for more information on using the DescribeUsers
  5111  // API call, and error handling.
  5112  //
  5113  // This method is useful when you want to inject custom logic or configuration
  5114  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5115  //
  5116  //
  5117  //    // Example sending a request using the DescribeUsersRequest method.
  5118  //    req, resp := client.DescribeUsersRequest(params)
  5119  //
  5120  //    err := req.Send()
  5121  //    if err == nil { // resp is now filled
  5122  //        fmt.Println(resp)
  5123  //    }
  5124  //
  5125  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUsers
  5126  func (c *ElastiCache) DescribeUsersRequest(input *DescribeUsersInput) (req *request.Request, output *DescribeUsersOutput) {
  5127  	op := &request.Operation{
  5128  		Name:       opDescribeUsers,
  5129  		HTTPMethod: "POST",
  5130  		HTTPPath:   "/",
  5131  		Paginator: &request.Paginator{
  5132  			InputTokens:     []string{"Marker"},
  5133  			OutputTokens:    []string{"Marker"},
  5134  			LimitToken:      "MaxRecords",
  5135  			TruncationToken: "",
  5136  		},
  5137  	}
  5138  
  5139  	if input == nil {
  5140  		input = &DescribeUsersInput{}
  5141  	}
  5142  
  5143  	output = &DescribeUsersOutput{}
  5144  	req = c.newRequest(op, input, output)
  5145  	return
  5146  }
  5147  
  5148  // DescribeUsers API operation for Amazon ElastiCache.
  5149  //
  5150  // Returns a list of users.
  5151  //
  5152  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5153  // with awserr.Error's Code and Message methods to get detailed information about
  5154  // the error.
  5155  //
  5156  // See the AWS API reference guide for Amazon ElastiCache's
  5157  // API operation DescribeUsers for usage and error information.
  5158  //
  5159  // Returned Error Codes:
  5160  //   * ErrCodeUserNotFoundFault "UserNotFound"
  5161  //   The user does not exist or could not be found.
  5162  //
  5163  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  5164  //   Two or more incompatible parameters were specified.
  5165  //
  5166  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUsers
  5167  func (c *ElastiCache) DescribeUsers(input *DescribeUsersInput) (*DescribeUsersOutput, error) {
  5168  	req, out := c.DescribeUsersRequest(input)
  5169  	return out, req.Send()
  5170  }
  5171  
  5172  // DescribeUsersWithContext is the same as DescribeUsers with the addition of
  5173  // the ability to pass a context and additional request options.
  5174  //
  5175  // See DescribeUsers for details on how to use this API operation.
  5176  //
  5177  // The context must be non-nil and will be used for request cancellation. If
  5178  // the context is nil a panic will occur. In the future the SDK may create
  5179  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5180  // for more information on using Contexts.
  5181  func (c *ElastiCache) DescribeUsersWithContext(ctx aws.Context, input *DescribeUsersInput, opts ...request.Option) (*DescribeUsersOutput, error) {
  5182  	req, out := c.DescribeUsersRequest(input)
  5183  	req.SetContext(ctx)
  5184  	req.ApplyOptions(opts...)
  5185  	return out, req.Send()
  5186  }
  5187  
  5188  // DescribeUsersPages iterates over the pages of a DescribeUsers operation,
  5189  // calling the "fn" function with the response data for each page. To stop
  5190  // iterating, return false from the fn function.
  5191  //
  5192  // See DescribeUsers method for more information on how to use this operation.
  5193  //
  5194  // Note: This operation can generate multiple requests to a service.
  5195  //
  5196  //    // Example iterating over at most 3 pages of a DescribeUsers operation.
  5197  //    pageNum := 0
  5198  //    err := client.DescribeUsersPages(params,
  5199  //        func(page *elasticache.DescribeUsersOutput, lastPage bool) bool {
  5200  //            pageNum++
  5201  //            fmt.Println(page)
  5202  //            return pageNum <= 3
  5203  //        })
  5204  //
  5205  func (c *ElastiCache) DescribeUsersPages(input *DescribeUsersInput, fn func(*DescribeUsersOutput, bool) bool) error {
  5206  	return c.DescribeUsersPagesWithContext(aws.BackgroundContext(), input, fn)
  5207  }
  5208  
  5209  // DescribeUsersPagesWithContext same as DescribeUsersPages except
  5210  // it takes a Context and allows setting request options on the pages.
  5211  //
  5212  // The context must be non-nil and will be used for request cancellation. If
  5213  // the context is nil a panic will occur. In the future the SDK may create
  5214  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5215  // for more information on using Contexts.
  5216  func (c *ElastiCache) DescribeUsersPagesWithContext(ctx aws.Context, input *DescribeUsersInput, fn func(*DescribeUsersOutput, bool) bool, opts ...request.Option) error {
  5217  	p := request.Pagination{
  5218  		NewRequest: func() (*request.Request, error) {
  5219  			var inCpy *DescribeUsersInput
  5220  			if input != nil {
  5221  				tmp := *input
  5222  				inCpy = &tmp
  5223  			}
  5224  			req, _ := c.DescribeUsersRequest(inCpy)
  5225  			req.SetContext(ctx)
  5226  			req.ApplyOptions(opts...)
  5227  			return req, nil
  5228  		},
  5229  	}
  5230  
  5231  	for p.Next() {
  5232  		if !fn(p.Page().(*DescribeUsersOutput), !p.HasNextPage()) {
  5233  			break
  5234  		}
  5235  	}
  5236  
  5237  	return p.Err()
  5238  }
  5239  
  5240  const opDisassociateGlobalReplicationGroup = "DisassociateGlobalReplicationGroup"
  5241  
  5242  // DisassociateGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
  5243  // client's request for the DisassociateGlobalReplicationGroup operation. The "output" return
  5244  // value will be populated with the request's response once the request completes
  5245  // successfully.
  5246  //
  5247  // Use "Send" method on the returned Request to send the API call to the service.
  5248  // the "output" return value is not valid until after Send returns without error.
  5249  //
  5250  // See DisassociateGlobalReplicationGroup for more information on using the DisassociateGlobalReplicationGroup
  5251  // API call, and error handling.
  5252  //
  5253  // This method is useful when you want to inject custom logic or configuration
  5254  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5255  //
  5256  //
  5257  //    // Example sending a request using the DisassociateGlobalReplicationGroupRequest method.
  5258  //    req, resp := client.DisassociateGlobalReplicationGroupRequest(params)
  5259  //
  5260  //    err := req.Send()
  5261  //    if err == nil { // resp is now filled
  5262  //        fmt.Println(resp)
  5263  //    }
  5264  //
  5265  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DisassociateGlobalReplicationGroup
  5266  func (c *ElastiCache) DisassociateGlobalReplicationGroupRequest(input *DisassociateGlobalReplicationGroupInput) (req *request.Request, output *DisassociateGlobalReplicationGroupOutput) {
  5267  	op := &request.Operation{
  5268  		Name:       opDisassociateGlobalReplicationGroup,
  5269  		HTTPMethod: "POST",
  5270  		HTTPPath:   "/",
  5271  	}
  5272  
  5273  	if input == nil {
  5274  		input = &DisassociateGlobalReplicationGroupInput{}
  5275  	}
  5276  
  5277  	output = &DisassociateGlobalReplicationGroupOutput{}
  5278  	req = c.newRequest(op, input, output)
  5279  	return
  5280  }
  5281  
  5282  // DisassociateGlobalReplicationGroup API operation for Amazon ElastiCache.
  5283  //
  5284  // Remove a secondary cluster from the Global datastore using the Global datastore
  5285  // name. The secondary cluster will no longer receive updates from the primary
  5286  // cluster, but will remain as a standalone cluster in that Amazon region.
  5287  //
  5288  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5289  // with awserr.Error's Code and Message methods to get detailed information about
  5290  // the error.
  5291  //
  5292  // See the AWS API reference guide for Amazon ElastiCache's
  5293  // API operation DisassociateGlobalReplicationGroup for usage and error information.
  5294  //
  5295  // Returned Error Codes:
  5296  //   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
  5297  //   The Global datastore does not exist
  5298  //
  5299  //   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
  5300  //   The Global datastore is not available or in primary-only state.
  5301  //
  5302  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  5303  //   The value for a parameter is invalid.
  5304  //
  5305  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  5306  //   Two or more incompatible parameters were specified.
  5307  //
  5308  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DisassociateGlobalReplicationGroup
  5309  func (c *ElastiCache) DisassociateGlobalReplicationGroup(input *DisassociateGlobalReplicationGroupInput) (*DisassociateGlobalReplicationGroupOutput, error) {
  5310  	req, out := c.DisassociateGlobalReplicationGroupRequest(input)
  5311  	return out, req.Send()
  5312  }
  5313  
  5314  // DisassociateGlobalReplicationGroupWithContext is the same as DisassociateGlobalReplicationGroup with the addition of
  5315  // the ability to pass a context and additional request options.
  5316  //
  5317  // See DisassociateGlobalReplicationGroup for details on how to use this API operation.
  5318  //
  5319  // The context must be non-nil and will be used for request cancellation. If
  5320  // the context is nil a panic will occur. In the future the SDK may create
  5321  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5322  // for more information on using Contexts.
  5323  func (c *ElastiCache) DisassociateGlobalReplicationGroupWithContext(ctx aws.Context, input *DisassociateGlobalReplicationGroupInput, opts ...request.Option) (*DisassociateGlobalReplicationGroupOutput, error) {
  5324  	req, out := c.DisassociateGlobalReplicationGroupRequest(input)
  5325  	req.SetContext(ctx)
  5326  	req.ApplyOptions(opts...)
  5327  	return out, req.Send()
  5328  }
  5329  
  5330  const opFailoverGlobalReplicationGroup = "FailoverGlobalReplicationGroup"
  5331  
  5332  // FailoverGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
  5333  // client's request for the FailoverGlobalReplicationGroup operation. The "output" return
  5334  // value will be populated with the request's response once the request completes
  5335  // successfully.
  5336  //
  5337  // Use "Send" method on the returned Request to send the API call to the service.
  5338  // the "output" return value is not valid until after Send returns without error.
  5339  //
  5340  // See FailoverGlobalReplicationGroup for more information on using the FailoverGlobalReplicationGroup
  5341  // API call, and error handling.
  5342  //
  5343  // This method is useful when you want to inject custom logic or configuration
  5344  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5345  //
  5346  //
  5347  //    // Example sending a request using the FailoverGlobalReplicationGroupRequest method.
  5348  //    req, resp := client.FailoverGlobalReplicationGroupRequest(params)
  5349  //
  5350  //    err := req.Send()
  5351  //    if err == nil { // resp is now filled
  5352  //        fmt.Println(resp)
  5353  //    }
  5354  //
  5355  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/FailoverGlobalReplicationGroup
  5356  func (c *ElastiCache) FailoverGlobalReplicationGroupRequest(input *FailoverGlobalReplicationGroupInput) (req *request.Request, output *FailoverGlobalReplicationGroupOutput) {
  5357  	op := &request.Operation{
  5358  		Name:       opFailoverGlobalReplicationGroup,
  5359  		HTTPMethod: "POST",
  5360  		HTTPPath:   "/",
  5361  	}
  5362  
  5363  	if input == nil {
  5364  		input = &FailoverGlobalReplicationGroupInput{}
  5365  	}
  5366  
  5367  	output = &FailoverGlobalReplicationGroupOutput{}
  5368  	req = c.newRequest(op, input, output)
  5369  	return
  5370  }
  5371  
  5372  // FailoverGlobalReplicationGroup API operation for Amazon ElastiCache.
  5373  //
  5374  // Used to failover the primary region to a selected secondary region. The selected
  5375  // secondary region will become primary, and all other clusters will become
  5376  // secondary.
  5377  //
  5378  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5379  // with awserr.Error's Code and Message methods to get detailed information about
  5380  // the error.
  5381  //
  5382  // See the AWS API reference guide for Amazon ElastiCache's
  5383  // API operation FailoverGlobalReplicationGroup for usage and error information.
  5384  //
  5385  // Returned Error Codes:
  5386  //   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
  5387  //   The Global datastore does not exist
  5388  //
  5389  //   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
  5390  //   The Global datastore is not available or in primary-only state.
  5391  //
  5392  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  5393  //   The value for a parameter is invalid.
  5394  //
  5395  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  5396  //   Two or more incompatible parameters were specified.
  5397  //
  5398  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/FailoverGlobalReplicationGroup
  5399  func (c *ElastiCache) FailoverGlobalReplicationGroup(input *FailoverGlobalReplicationGroupInput) (*FailoverGlobalReplicationGroupOutput, error) {
  5400  	req, out := c.FailoverGlobalReplicationGroupRequest(input)
  5401  	return out, req.Send()
  5402  }
  5403  
  5404  // FailoverGlobalReplicationGroupWithContext is the same as FailoverGlobalReplicationGroup with the addition of
  5405  // the ability to pass a context and additional request options.
  5406  //
  5407  // See FailoverGlobalReplicationGroup for details on how to use this API operation.
  5408  //
  5409  // The context must be non-nil and will be used for request cancellation. If
  5410  // the context is nil a panic will occur. In the future the SDK may create
  5411  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5412  // for more information on using Contexts.
  5413  func (c *ElastiCache) FailoverGlobalReplicationGroupWithContext(ctx aws.Context, input *FailoverGlobalReplicationGroupInput, opts ...request.Option) (*FailoverGlobalReplicationGroupOutput, error) {
  5414  	req, out := c.FailoverGlobalReplicationGroupRequest(input)
  5415  	req.SetContext(ctx)
  5416  	req.ApplyOptions(opts...)
  5417  	return out, req.Send()
  5418  }
  5419  
  5420  const opIncreaseNodeGroupsInGlobalReplicationGroup = "IncreaseNodeGroupsInGlobalReplicationGroup"
  5421  
  5422  // IncreaseNodeGroupsInGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
  5423  // client's request for the IncreaseNodeGroupsInGlobalReplicationGroup operation. The "output" return
  5424  // value will be populated with the request's response once the request completes
  5425  // successfully.
  5426  //
  5427  // Use "Send" method on the returned Request to send the API call to the service.
  5428  // the "output" return value is not valid until after Send returns without error.
  5429  //
  5430  // See IncreaseNodeGroupsInGlobalReplicationGroup for more information on using the IncreaseNodeGroupsInGlobalReplicationGroup
  5431  // API call, and error handling.
  5432  //
  5433  // This method is useful when you want to inject custom logic or configuration
  5434  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5435  //
  5436  //
  5437  //    // Example sending a request using the IncreaseNodeGroupsInGlobalReplicationGroupRequest method.
  5438  //    req, resp := client.IncreaseNodeGroupsInGlobalReplicationGroupRequest(params)
  5439  //
  5440  //    err := req.Send()
  5441  //    if err == nil { // resp is now filled
  5442  //        fmt.Println(resp)
  5443  //    }
  5444  //
  5445  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseNodeGroupsInGlobalReplicationGroup
  5446  func (c *ElastiCache) IncreaseNodeGroupsInGlobalReplicationGroupRequest(input *IncreaseNodeGroupsInGlobalReplicationGroupInput) (req *request.Request, output *IncreaseNodeGroupsInGlobalReplicationGroupOutput) {
  5447  	op := &request.Operation{
  5448  		Name:       opIncreaseNodeGroupsInGlobalReplicationGroup,
  5449  		HTTPMethod: "POST",
  5450  		HTTPPath:   "/",
  5451  	}
  5452  
  5453  	if input == nil {
  5454  		input = &IncreaseNodeGroupsInGlobalReplicationGroupInput{}
  5455  	}
  5456  
  5457  	output = &IncreaseNodeGroupsInGlobalReplicationGroupOutput{}
  5458  	req = c.newRequest(op, input, output)
  5459  	return
  5460  }
  5461  
  5462  // IncreaseNodeGroupsInGlobalReplicationGroup API operation for Amazon ElastiCache.
  5463  //
  5464  // Increase the number of node groups in the Global datastore
  5465  //
  5466  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5467  // with awserr.Error's Code and Message methods to get detailed information about
  5468  // the error.
  5469  //
  5470  // See the AWS API reference guide for Amazon ElastiCache's
  5471  // API operation IncreaseNodeGroupsInGlobalReplicationGroup for usage and error information.
  5472  //
  5473  // Returned Error Codes:
  5474  //   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
  5475  //   The Global datastore does not exist
  5476  //
  5477  //   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
  5478  //   The Global datastore is not available or in primary-only state.
  5479  //
  5480  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  5481  //   The value for a parameter is invalid.
  5482  //
  5483  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseNodeGroupsInGlobalReplicationGroup
  5484  func (c *ElastiCache) IncreaseNodeGroupsInGlobalReplicationGroup(input *IncreaseNodeGroupsInGlobalReplicationGroupInput) (*IncreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
  5485  	req, out := c.IncreaseNodeGroupsInGlobalReplicationGroupRequest(input)
  5486  	return out, req.Send()
  5487  }
  5488  
  5489  // IncreaseNodeGroupsInGlobalReplicationGroupWithContext is the same as IncreaseNodeGroupsInGlobalReplicationGroup with the addition of
  5490  // the ability to pass a context and additional request options.
  5491  //
  5492  // See IncreaseNodeGroupsInGlobalReplicationGroup for details on how to use this API operation.
  5493  //
  5494  // The context must be non-nil and will be used for request cancellation. If
  5495  // the context is nil a panic will occur. In the future the SDK may create
  5496  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5497  // for more information on using Contexts.
  5498  func (c *ElastiCache) IncreaseNodeGroupsInGlobalReplicationGroupWithContext(ctx aws.Context, input *IncreaseNodeGroupsInGlobalReplicationGroupInput, opts ...request.Option) (*IncreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
  5499  	req, out := c.IncreaseNodeGroupsInGlobalReplicationGroupRequest(input)
  5500  	req.SetContext(ctx)
  5501  	req.ApplyOptions(opts...)
  5502  	return out, req.Send()
  5503  }
  5504  
  5505  const opIncreaseReplicaCount = "IncreaseReplicaCount"
  5506  
  5507  // IncreaseReplicaCountRequest generates a "aws/request.Request" representing the
  5508  // client's request for the IncreaseReplicaCount operation. The "output" return
  5509  // value will be populated with the request's response once the request completes
  5510  // successfully.
  5511  //
  5512  // Use "Send" method on the returned Request to send the API call to the service.
  5513  // the "output" return value is not valid until after Send returns without error.
  5514  //
  5515  // See IncreaseReplicaCount for more information on using the IncreaseReplicaCount
  5516  // API call, and error handling.
  5517  //
  5518  // This method is useful when you want to inject custom logic or configuration
  5519  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5520  //
  5521  //
  5522  //    // Example sending a request using the IncreaseReplicaCountRequest method.
  5523  //    req, resp := client.IncreaseReplicaCountRequest(params)
  5524  //
  5525  //    err := req.Send()
  5526  //    if err == nil { // resp is now filled
  5527  //        fmt.Println(resp)
  5528  //    }
  5529  //
  5530  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseReplicaCount
  5531  func (c *ElastiCache) IncreaseReplicaCountRequest(input *IncreaseReplicaCountInput) (req *request.Request, output *IncreaseReplicaCountOutput) {
  5532  	op := &request.Operation{
  5533  		Name:       opIncreaseReplicaCount,
  5534  		HTTPMethod: "POST",
  5535  		HTTPPath:   "/",
  5536  	}
  5537  
  5538  	if input == nil {
  5539  		input = &IncreaseReplicaCountInput{}
  5540  	}
  5541  
  5542  	output = &IncreaseReplicaCountOutput{}
  5543  	req = c.newRequest(op, input, output)
  5544  	return
  5545  }
  5546  
  5547  // IncreaseReplicaCount API operation for Amazon ElastiCache.
  5548  //
  5549  // Dynamically increases the number of replicas in a Redis (cluster mode disabled)
  5550  // replication group or the number of replica nodes in one or more node groups
  5551  // (shards) of a Redis (cluster mode enabled) replication group. This operation
  5552  // is performed with no cluster down time.
  5553  //
  5554  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5555  // with awserr.Error's Code and Message methods to get detailed information about
  5556  // the error.
  5557  //
  5558  // See the AWS API reference guide for Amazon ElastiCache's
  5559  // API operation IncreaseReplicaCount for usage and error information.
  5560  //
  5561  // Returned Error Codes:
  5562  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  5563  //   The specified replication group does not exist.
  5564  //
  5565  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
  5566  //   The requested replication group is not in the available state.
  5567  //
  5568  //   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
  5569  //   The requested cluster is not in the available state.
  5570  //
  5571  //   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
  5572  //   The VPC network is in an invalid state.
  5573  //
  5574  //   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
  5575  //   The requested cache node type is not available in the specified Availability
  5576  //   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
  5577  //   in the ElastiCache User Guide.
  5578  //
  5579  //   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
  5580  //   The request cannot be processed because it would exceed the allowed number
  5581  //   of clusters per customer.
  5582  //
  5583  //   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
  5584  //   The request cannot be processed because it would exceed the maximum allowed
  5585  //   number of node groups (shards) in a single replication group. The default
  5586  //   maximum is 90
  5587  //
  5588  //   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
  5589  //   The request cannot be processed because it would exceed the allowed number
  5590  //   of cache nodes per customer.
  5591  //
  5592  //   * ErrCodeNoOperationFault "NoOperationFault"
  5593  //   The operation was not performed because no changes were required.
  5594  //
  5595  //   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
  5596  //   The KMS key supplied is not valid.
  5597  //
  5598  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  5599  //   The value for a parameter is invalid.
  5600  //
  5601  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  5602  //   Two or more incompatible parameters were specified.
  5603  //
  5604  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseReplicaCount
  5605  func (c *ElastiCache) IncreaseReplicaCount(input *IncreaseReplicaCountInput) (*IncreaseReplicaCountOutput, error) {
  5606  	req, out := c.IncreaseReplicaCountRequest(input)
  5607  	return out, req.Send()
  5608  }
  5609  
  5610  // IncreaseReplicaCountWithContext is the same as IncreaseReplicaCount with the addition of
  5611  // the ability to pass a context and additional request options.
  5612  //
  5613  // See IncreaseReplicaCount for details on how to use this API operation.
  5614  //
  5615  // The context must be non-nil and will be used for request cancellation. If
  5616  // the context is nil a panic will occur. In the future the SDK may create
  5617  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5618  // for more information on using Contexts.
  5619  func (c *ElastiCache) IncreaseReplicaCountWithContext(ctx aws.Context, input *IncreaseReplicaCountInput, opts ...request.Option) (*IncreaseReplicaCountOutput, error) {
  5620  	req, out := c.IncreaseReplicaCountRequest(input)
  5621  	req.SetContext(ctx)
  5622  	req.ApplyOptions(opts...)
  5623  	return out, req.Send()
  5624  }
  5625  
  5626  const opListAllowedNodeTypeModifications = "ListAllowedNodeTypeModifications"
  5627  
  5628  // ListAllowedNodeTypeModificationsRequest generates a "aws/request.Request" representing the
  5629  // client's request for the ListAllowedNodeTypeModifications operation. The "output" return
  5630  // value will be populated with the request's response once the request completes
  5631  // successfully.
  5632  //
  5633  // Use "Send" method on the returned Request to send the API call to the service.
  5634  // the "output" return value is not valid until after Send returns without error.
  5635  //
  5636  // See ListAllowedNodeTypeModifications for more information on using the ListAllowedNodeTypeModifications
  5637  // API call, and error handling.
  5638  //
  5639  // This method is useful when you want to inject custom logic or configuration
  5640  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5641  //
  5642  //
  5643  //    // Example sending a request using the ListAllowedNodeTypeModificationsRequest method.
  5644  //    req, resp := client.ListAllowedNodeTypeModificationsRequest(params)
  5645  //
  5646  //    err := req.Send()
  5647  //    if err == nil { // resp is now filled
  5648  //        fmt.Println(resp)
  5649  //    }
  5650  //
  5651  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListAllowedNodeTypeModifications
  5652  func (c *ElastiCache) ListAllowedNodeTypeModificationsRequest(input *ListAllowedNodeTypeModificationsInput) (req *request.Request, output *ListAllowedNodeTypeModificationsOutput) {
  5653  	op := &request.Operation{
  5654  		Name:       opListAllowedNodeTypeModifications,
  5655  		HTTPMethod: "POST",
  5656  		HTTPPath:   "/",
  5657  	}
  5658  
  5659  	if input == nil {
  5660  		input = &ListAllowedNodeTypeModificationsInput{}
  5661  	}
  5662  
  5663  	output = &ListAllowedNodeTypeModificationsOutput{}
  5664  	req = c.newRequest(op, input, output)
  5665  	return
  5666  }
  5667  
  5668  // ListAllowedNodeTypeModifications API operation for Amazon ElastiCache.
  5669  //
  5670  // Lists all available node types that you can scale your Redis cluster's or
  5671  // replication group's current node type.
  5672  //
  5673  // When you use the ModifyCacheCluster or ModifyReplicationGroup operations
  5674  // to scale your cluster or replication group, the value of the CacheNodeType
  5675  // parameter must be one of the node types returned by this operation.
  5676  //
  5677  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5678  // with awserr.Error's Code and Message methods to get detailed information about
  5679  // the error.
  5680  //
  5681  // See the AWS API reference guide for Amazon ElastiCache's
  5682  // API operation ListAllowedNodeTypeModifications for usage and error information.
  5683  //
  5684  // Returned Error Codes:
  5685  //   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
  5686  //   The requested cluster ID does not refer to an existing cluster.
  5687  //
  5688  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  5689  //   The specified replication group does not exist.
  5690  //
  5691  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  5692  //   Two or more incompatible parameters were specified.
  5693  //
  5694  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  5695  //   The value for a parameter is invalid.
  5696  //
  5697  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListAllowedNodeTypeModifications
  5698  func (c *ElastiCache) ListAllowedNodeTypeModifications(input *ListAllowedNodeTypeModificationsInput) (*ListAllowedNodeTypeModificationsOutput, error) {
  5699  	req, out := c.ListAllowedNodeTypeModificationsRequest(input)
  5700  	return out, req.Send()
  5701  }
  5702  
  5703  // ListAllowedNodeTypeModificationsWithContext is the same as ListAllowedNodeTypeModifications with the addition of
  5704  // the ability to pass a context and additional request options.
  5705  //
  5706  // See ListAllowedNodeTypeModifications for details on how to use this API operation.
  5707  //
  5708  // The context must be non-nil and will be used for request cancellation. If
  5709  // the context is nil a panic will occur. In the future the SDK may create
  5710  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5711  // for more information on using Contexts.
  5712  func (c *ElastiCache) ListAllowedNodeTypeModificationsWithContext(ctx aws.Context, input *ListAllowedNodeTypeModificationsInput, opts ...request.Option) (*ListAllowedNodeTypeModificationsOutput, error) {
  5713  	req, out := c.ListAllowedNodeTypeModificationsRequest(input)
  5714  	req.SetContext(ctx)
  5715  	req.ApplyOptions(opts...)
  5716  	return out, req.Send()
  5717  }
  5718  
  5719  const opListTagsForResource = "ListTagsForResource"
  5720  
  5721  // ListTagsForResourceRequest generates a "aws/request.Request" representing the
  5722  // client's request for the ListTagsForResource operation. The "output" return
  5723  // value will be populated with the request's response once the request completes
  5724  // successfully.
  5725  //
  5726  // Use "Send" method on the returned Request to send the API call to the service.
  5727  // the "output" return value is not valid until after Send returns without error.
  5728  //
  5729  // See ListTagsForResource for more information on using the ListTagsForResource
  5730  // API call, and error handling.
  5731  //
  5732  // This method is useful when you want to inject custom logic or configuration
  5733  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5734  //
  5735  //
  5736  //    // Example sending a request using the ListTagsForResourceRequest method.
  5737  //    req, resp := client.ListTagsForResourceRequest(params)
  5738  //
  5739  //    err := req.Send()
  5740  //    if err == nil { // resp is now filled
  5741  //        fmt.Println(resp)
  5742  //    }
  5743  //
  5744  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListTagsForResource
  5745  func (c *ElastiCache) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *TagListMessage) {
  5746  	op := &request.Operation{
  5747  		Name:       opListTagsForResource,
  5748  		HTTPMethod: "POST",
  5749  		HTTPPath:   "/",
  5750  	}
  5751  
  5752  	if input == nil {
  5753  		input = &ListTagsForResourceInput{}
  5754  	}
  5755  
  5756  	output = &TagListMessage{}
  5757  	req = c.newRequest(op, input, output)
  5758  	return
  5759  }
  5760  
  5761  // ListTagsForResource API operation for Amazon ElastiCache.
  5762  //
  5763  // Lists all tags currently on a named resource.
  5764  //
  5765  // A tag is a key-value pair where the key and value are case-sensitive. You
  5766  // can use tags to categorize and track all your ElastiCache resources, with
  5767  // the exception of global replication group. When you add or remove tags on
  5768  // replication groups, those actions will be replicated to all nodes in the
  5769  // replication group. For more information, see Resource-level permissions (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/IAM.ResourceLevelPermissions.html).
  5770  //
  5771  // If the cluster is not in the available state, ListTagsForResource returns
  5772  // an error.
  5773  //
  5774  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5775  // with awserr.Error's Code and Message methods to get detailed information about
  5776  // the error.
  5777  //
  5778  // See the AWS API reference guide for Amazon ElastiCache's
  5779  // API operation ListTagsForResource for usage and error information.
  5780  //
  5781  // Returned Error Codes:
  5782  //   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
  5783  //   The requested cluster ID does not refer to an existing cluster.
  5784  //
  5785  //   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
  5786  //   The requested cache parameter group name does not refer to an existing cache
  5787  //   parameter group.
  5788  //
  5789  //   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
  5790  //   The requested cache security group name does not refer to an existing cache
  5791  //   security group.
  5792  //
  5793  //   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
  5794  //   The requested cache subnet group name does not refer to an existing cache
  5795  //   subnet group.
  5796  //
  5797  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
  5798  //   The requested replication group is not in the available state.
  5799  //
  5800  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  5801  //   The specified replication group does not exist.
  5802  //
  5803  //   * ErrCodeReservedCacheNodeNotFoundFault "ReservedCacheNodeNotFound"
  5804  //   The requested reserved cache node was not found.
  5805  //
  5806  //   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
  5807  //   The requested snapshot name does not refer to an existing snapshot.
  5808  //
  5809  //   * ErrCodeUserNotFoundFault "UserNotFound"
  5810  //   The user does not exist or could not be found.
  5811  //
  5812  //   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
  5813  //   The user group was not found or does not exist
  5814  //
  5815  //   * ErrCodeInvalidARNFault "InvalidARN"
  5816  //   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
  5817  //
  5818  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListTagsForResource
  5819  func (c *ElastiCache) ListTagsForResource(input *ListTagsForResourceInput) (*TagListMessage, error) {
  5820  	req, out := c.ListTagsForResourceRequest(input)
  5821  	return out, req.Send()
  5822  }
  5823  
  5824  // ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
  5825  // the ability to pass a context and additional request options.
  5826  //
  5827  // See ListTagsForResource for details on how to use this API operation.
  5828  //
  5829  // The context must be non-nil and will be used for request cancellation. If
  5830  // the context is nil a panic will occur. In the future the SDK may create
  5831  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5832  // for more information on using Contexts.
  5833  func (c *ElastiCache) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*TagListMessage, error) {
  5834  	req, out := c.ListTagsForResourceRequest(input)
  5835  	req.SetContext(ctx)
  5836  	req.ApplyOptions(opts...)
  5837  	return out, req.Send()
  5838  }
  5839  
  5840  const opModifyCacheCluster = "ModifyCacheCluster"
  5841  
  5842  // ModifyCacheClusterRequest generates a "aws/request.Request" representing the
  5843  // client's request for the ModifyCacheCluster operation. The "output" return
  5844  // value will be populated with the request's response once the request completes
  5845  // successfully.
  5846  //
  5847  // Use "Send" method on the returned Request to send the API call to the service.
  5848  // the "output" return value is not valid until after Send returns without error.
  5849  //
  5850  // See ModifyCacheCluster for more information on using the ModifyCacheCluster
  5851  // API call, and error handling.
  5852  //
  5853  // This method is useful when you want to inject custom logic or configuration
  5854  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5855  //
  5856  //
  5857  //    // Example sending a request using the ModifyCacheClusterRequest method.
  5858  //    req, resp := client.ModifyCacheClusterRequest(params)
  5859  //
  5860  //    err := req.Send()
  5861  //    if err == nil { // resp is now filled
  5862  //        fmt.Println(resp)
  5863  //    }
  5864  //
  5865  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster
  5866  func (c *ElastiCache) ModifyCacheClusterRequest(input *ModifyCacheClusterInput) (req *request.Request, output *ModifyCacheClusterOutput) {
  5867  	op := &request.Operation{
  5868  		Name:       opModifyCacheCluster,
  5869  		HTTPMethod: "POST",
  5870  		HTTPPath:   "/",
  5871  	}
  5872  
  5873  	if input == nil {
  5874  		input = &ModifyCacheClusterInput{}
  5875  	}
  5876  
  5877  	output = &ModifyCacheClusterOutput{}
  5878  	req = c.newRequest(op, input, output)
  5879  	return
  5880  }
  5881  
  5882  // ModifyCacheCluster API operation for Amazon ElastiCache.
  5883  //
  5884  // Modifies the settings for a cluster. You can use this operation to change
  5885  // one or more cluster configuration parameters by specifying the parameters
  5886  // and the new values.
  5887  //
  5888  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  5889  // with awserr.Error's Code and Message methods to get detailed information about
  5890  // the error.
  5891  //
  5892  // See the AWS API reference guide for Amazon ElastiCache's
  5893  // API operation ModifyCacheCluster for usage and error information.
  5894  //
  5895  // Returned Error Codes:
  5896  //   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
  5897  //   The requested cluster is not in the available state.
  5898  //
  5899  //   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
  5900  //   The current state of the cache security group does not allow deletion.
  5901  //
  5902  //   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
  5903  //   The requested cache node type is not available in the specified Availability
  5904  //   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
  5905  //   in the ElastiCache User Guide.
  5906  //
  5907  //   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
  5908  //   The requested cluster ID does not refer to an existing cluster.
  5909  //
  5910  //   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
  5911  //   The request cannot be processed because it would exceed the allowed number
  5912  //   of cache nodes in a single cluster.
  5913  //
  5914  //   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
  5915  //   The request cannot be processed because it would exceed the allowed number
  5916  //   of cache nodes per customer.
  5917  //
  5918  //   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
  5919  //   The requested cache security group name does not refer to an existing cache
  5920  //   security group.
  5921  //
  5922  //   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
  5923  //   The requested cache parameter group name does not refer to an existing cache
  5924  //   parameter group.
  5925  //
  5926  //   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
  5927  //   The VPC network is in an invalid state.
  5928  //
  5929  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  5930  //   The value for a parameter is invalid.
  5931  //
  5932  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  5933  //   Two or more incompatible parameters were specified.
  5934  //
  5935  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster
  5936  func (c *ElastiCache) ModifyCacheCluster(input *ModifyCacheClusterInput) (*ModifyCacheClusterOutput, error) {
  5937  	req, out := c.ModifyCacheClusterRequest(input)
  5938  	return out, req.Send()
  5939  }
  5940  
  5941  // ModifyCacheClusterWithContext is the same as ModifyCacheCluster with the addition of
  5942  // the ability to pass a context and additional request options.
  5943  //
  5944  // See ModifyCacheCluster for details on how to use this API operation.
  5945  //
  5946  // The context must be non-nil and will be used for request cancellation. If
  5947  // the context is nil a panic will occur. In the future the SDK may create
  5948  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  5949  // for more information on using Contexts.
  5950  func (c *ElastiCache) ModifyCacheClusterWithContext(ctx aws.Context, input *ModifyCacheClusterInput, opts ...request.Option) (*ModifyCacheClusterOutput, error) {
  5951  	req, out := c.ModifyCacheClusterRequest(input)
  5952  	req.SetContext(ctx)
  5953  	req.ApplyOptions(opts...)
  5954  	return out, req.Send()
  5955  }
  5956  
  5957  const opModifyCacheParameterGroup = "ModifyCacheParameterGroup"
  5958  
  5959  // ModifyCacheParameterGroupRequest generates a "aws/request.Request" representing the
  5960  // client's request for the ModifyCacheParameterGroup operation. The "output" return
  5961  // value will be populated with the request's response once the request completes
  5962  // successfully.
  5963  //
  5964  // Use "Send" method on the returned Request to send the API call to the service.
  5965  // the "output" return value is not valid until after Send returns without error.
  5966  //
  5967  // See ModifyCacheParameterGroup for more information on using the ModifyCacheParameterGroup
  5968  // API call, and error handling.
  5969  //
  5970  // This method is useful when you want to inject custom logic or configuration
  5971  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  5972  //
  5973  //
  5974  //    // Example sending a request using the ModifyCacheParameterGroupRequest method.
  5975  //    req, resp := client.ModifyCacheParameterGroupRequest(params)
  5976  //
  5977  //    err := req.Send()
  5978  //    if err == nil { // resp is now filled
  5979  //        fmt.Println(resp)
  5980  //    }
  5981  //
  5982  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheParameterGroup
  5983  func (c *ElastiCache) ModifyCacheParameterGroupRequest(input *ModifyCacheParameterGroupInput) (req *request.Request, output *CacheParameterGroupNameMessage) {
  5984  	op := &request.Operation{
  5985  		Name:       opModifyCacheParameterGroup,
  5986  		HTTPMethod: "POST",
  5987  		HTTPPath:   "/",
  5988  	}
  5989  
  5990  	if input == nil {
  5991  		input = &ModifyCacheParameterGroupInput{}
  5992  	}
  5993  
  5994  	output = &CacheParameterGroupNameMessage{}
  5995  	req = c.newRequest(op, input, output)
  5996  	return
  5997  }
  5998  
  5999  // ModifyCacheParameterGroup API operation for Amazon ElastiCache.
  6000  //
  6001  // Modifies the parameters of a cache parameter group. You can modify up to
  6002  // 20 parameters in a single request by submitting a list parameter name and
  6003  // value pairs.
  6004  //
  6005  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6006  // with awserr.Error's Code and Message methods to get detailed information about
  6007  // the error.
  6008  //
  6009  // See the AWS API reference guide for Amazon ElastiCache's
  6010  // API operation ModifyCacheParameterGroup for usage and error information.
  6011  //
  6012  // Returned Error Codes:
  6013  //   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
  6014  //   The requested cache parameter group name does not refer to an existing cache
  6015  //   parameter group.
  6016  //
  6017  //   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
  6018  //   The current state of the cache parameter group does not allow the requested
  6019  //   operation to occur.
  6020  //
  6021  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  6022  //   The value for a parameter is invalid.
  6023  //
  6024  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  6025  //   Two or more incompatible parameters were specified.
  6026  //
  6027  //   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
  6028  //   The Global datastore is not available or in primary-only state.
  6029  //
  6030  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheParameterGroup
  6031  func (c *ElastiCache) ModifyCacheParameterGroup(input *ModifyCacheParameterGroupInput) (*CacheParameterGroupNameMessage, error) {
  6032  	req, out := c.ModifyCacheParameterGroupRequest(input)
  6033  	return out, req.Send()
  6034  }
  6035  
  6036  // ModifyCacheParameterGroupWithContext is the same as ModifyCacheParameterGroup with the addition of
  6037  // the ability to pass a context and additional request options.
  6038  //
  6039  // See ModifyCacheParameterGroup for details on how to use this API operation.
  6040  //
  6041  // The context must be non-nil and will be used for request cancellation. If
  6042  // the context is nil a panic will occur. In the future the SDK may create
  6043  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6044  // for more information on using Contexts.
  6045  func (c *ElastiCache) ModifyCacheParameterGroupWithContext(ctx aws.Context, input *ModifyCacheParameterGroupInput, opts ...request.Option) (*CacheParameterGroupNameMessage, error) {
  6046  	req, out := c.ModifyCacheParameterGroupRequest(input)
  6047  	req.SetContext(ctx)
  6048  	req.ApplyOptions(opts...)
  6049  	return out, req.Send()
  6050  }
  6051  
  6052  const opModifyCacheSubnetGroup = "ModifyCacheSubnetGroup"
  6053  
  6054  // ModifyCacheSubnetGroupRequest generates a "aws/request.Request" representing the
  6055  // client's request for the ModifyCacheSubnetGroup operation. The "output" return
  6056  // value will be populated with the request's response once the request completes
  6057  // successfully.
  6058  //
  6059  // Use "Send" method on the returned Request to send the API call to the service.
  6060  // the "output" return value is not valid until after Send returns without error.
  6061  //
  6062  // See ModifyCacheSubnetGroup for more information on using the ModifyCacheSubnetGroup
  6063  // API call, and error handling.
  6064  //
  6065  // This method is useful when you want to inject custom logic or configuration
  6066  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6067  //
  6068  //
  6069  //    // Example sending a request using the ModifyCacheSubnetGroupRequest method.
  6070  //    req, resp := client.ModifyCacheSubnetGroupRequest(params)
  6071  //
  6072  //    err := req.Send()
  6073  //    if err == nil { // resp is now filled
  6074  //        fmt.Println(resp)
  6075  //    }
  6076  //
  6077  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheSubnetGroup
  6078  func (c *ElastiCache) ModifyCacheSubnetGroupRequest(input *ModifyCacheSubnetGroupInput) (req *request.Request, output *ModifyCacheSubnetGroupOutput) {
  6079  	op := &request.Operation{
  6080  		Name:       opModifyCacheSubnetGroup,
  6081  		HTTPMethod: "POST",
  6082  		HTTPPath:   "/",
  6083  	}
  6084  
  6085  	if input == nil {
  6086  		input = &ModifyCacheSubnetGroupInput{}
  6087  	}
  6088  
  6089  	output = &ModifyCacheSubnetGroupOutput{}
  6090  	req = c.newRequest(op, input, output)
  6091  	return
  6092  }
  6093  
  6094  // ModifyCacheSubnetGroup API operation for Amazon ElastiCache.
  6095  //
  6096  // Modifies an existing cache subnet group.
  6097  //
  6098  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6099  // with awserr.Error's Code and Message methods to get detailed information about
  6100  // the error.
  6101  //
  6102  // See the AWS API reference guide for Amazon ElastiCache's
  6103  // API operation ModifyCacheSubnetGroup for usage and error information.
  6104  //
  6105  // Returned Error Codes:
  6106  //   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
  6107  //   The requested cache subnet group name does not refer to an existing cache
  6108  //   subnet group.
  6109  //
  6110  //   * ErrCodeCacheSubnetQuotaExceededFault "CacheSubnetQuotaExceededFault"
  6111  //   The request cannot be processed because it would exceed the allowed number
  6112  //   of subnets in a cache subnet group.
  6113  //
  6114  //   * ErrCodeSubnetInUse "SubnetInUse"
  6115  //   The requested subnet is being used by another cache subnet group.
  6116  //
  6117  //   * ErrCodeInvalidSubnet "InvalidSubnet"
  6118  //   An invalid subnet identifier was specified.
  6119  //
  6120  //   * ErrCodeSubnetNotAllowedFault "SubnetNotAllowedFault"
  6121  //   At least one subnet ID does not match the other subnet IDs. This mismatch
  6122  //   typically occurs when a user sets one subnet ID to a regional Availability
  6123  //   Zone and a different one to an outpost. Or when a user sets the subnet ID
  6124  //   to an Outpost when not subscribed on this service.
  6125  //
  6126  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheSubnetGroup
  6127  func (c *ElastiCache) ModifyCacheSubnetGroup(input *ModifyCacheSubnetGroupInput) (*ModifyCacheSubnetGroupOutput, error) {
  6128  	req, out := c.ModifyCacheSubnetGroupRequest(input)
  6129  	return out, req.Send()
  6130  }
  6131  
  6132  // ModifyCacheSubnetGroupWithContext is the same as ModifyCacheSubnetGroup with the addition of
  6133  // the ability to pass a context and additional request options.
  6134  //
  6135  // See ModifyCacheSubnetGroup for details on how to use this API operation.
  6136  //
  6137  // The context must be non-nil and will be used for request cancellation. If
  6138  // the context is nil a panic will occur. In the future the SDK may create
  6139  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6140  // for more information on using Contexts.
  6141  func (c *ElastiCache) ModifyCacheSubnetGroupWithContext(ctx aws.Context, input *ModifyCacheSubnetGroupInput, opts ...request.Option) (*ModifyCacheSubnetGroupOutput, error) {
  6142  	req, out := c.ModifyCacheSubnetGroupRequest(input)
  6143  	req.SetContext(ctx)
  6144  	req.ApplyOptions(opts...)
  6145  	return out, req.Send()
  6146  }
  6147  
  6148  const opModifyGlobalReplicationGroup = "ModifyGlobalReplicationGroup"
  6149  
  6150  // ModifyGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
  6151  // client's request for the ModifyGlobalReplicationGroup operation. The "output" return
  6152  // value will be populated with the request's response once the request completes
  6153  // successfully.
  6154  //
  6155  // Use "Send" method on the returned Request to send the API call to the service.
  6156  // the "output" return value is not valid until after Send returns without error.
  6157  //
  6158  // See ModifyGlobalReplicationGroup for more information on using the ModifyGlobalReplicationGroup
  6159  // API call, and error handling.
  6160  //
  6161  // This method is useful when you want to inject custom logic or configuration
  6162  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6163  //
  6164  //
  6165  //    // Example sending a request using the ModifyGlobalReplicationGroupRequest method.
  6166  //    req, resp := client.ModifyGlobalReplicationGroupRequest(params)
  6167  //
  6168  //    err := req.Send()
  6169  //    if err == nil { // resp is now filled
  6170  //        fmt.Println(resp)
  6171  //    }
  6172  //
  6173  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyGlobalReplicationGroup
  6174  func (c *ElastiCache) ModifyGlobalReplicationGroupRequest(input *ModifyGlobalReplicationGroupInput) (req *request.Request, output *ModifyGlobalReplicationGroupOutput) {
  6175  	op := &request.Operation{
  6176  		Name:       opModifyGlobalReplicationGroup,
  6177  		HTTPMethod: "POST",
  6178  		HTTPPath:   "/",
  6179  	}
  6180  
  6181  	if input == nil {
  6182  		input = &ModifyGlobalReplicationGroupInput{}
  6183  	}
  6184  
  6185  	output = &ModifyGlobalReplicationGroupOutput{}
  6186  	req = c.newRequest(op, input, output)
  6187  	return
  6188  }
  6189  
  6190  // ModifyGlobalReplicationGroup API operation for Amazon ElastiCache.
  6191  //
  6192  // Modifies the settings for a Global datastore.
  6193  //
  6194  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6195  // with awserr.Error's Code and Message methods to get detailed information about
  6196  // the error.
  6197  //
  6198  // See the AWS API reference guide for Amazon ElastiCache's
  6199  // API operation ModifyGlobalReplicationGroup for usage and error information.
  6200  //
  6201  // Returned Error Codes:
  6202  //   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
  6203  //   The Global datastore does not exist
  6204  //
  6205  //   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
  6206  //   The Global datastore is not available or in primary-only state.
  6207  //
  6208  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  6209  //   The value for a parameter is invalid.
  6210  //
  6211  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyGlobalReplicationGroup
  6212  func (c *ElastiCache) ModifyGlobalReplicationGroup(input *ModifyGlobalReplicationGroupInput) (*ModifyGlobalReplicationGroupOutput, error) {
  6213  	req, out := c.ModifyGlobalReplicationGroupRequest(input)
  6214  	return out, req.Send()
  6215  }
  6216  
  6217  // ModifyGlobalReplicationGroupWithContext is the same as ModifyGlobalReplicationGroup with the addition of
  6218  // the ability to pass a context and additional request options.
  6219  //
  6220  // See ModifyGlobalReplicationGroup for details on how to use this API operation.
  6221  //
  6222  // The context must be non-nil and will be used for request cancellation. If
  6223  // the context is nil a panic will occur. In the future the SDK may create
  6224  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6225  // for more information on using Contexts.
  6226  func (c *ElastiCache) ModifyGlobalReplicationGroupWithContext(ctx aws.Context, input *ModifyGlobalReplicationGroupInput, opts ...request.Option) (*ModifyGlobalReplicationGroupOutput, error) {
  6227  	req, out := c.ModifyGlobalReplicationGroupRequest(input)
  6228  	req.SetContext(ctx)
  6229  	req.ApplyOptions(opts...)
  6230  	return out, req.Send()
  6231  }
  6232  
  6233  const opModifyReplicationGroup = "ModifyReplicationGroup"
  6234  
  6235  // ModifyReplicationGroupRequest generates a "aws/request.Request" representing the
  6236  // client's request for the ModifyReplicationGroup operation. The "output" return
  6237  // value will be populated with the request's response once the request completes
  6238  // successfully.
  6239  //
  6240  // Use "Send" method on the returned Request to send the API call to the service.
  6241  // the "output" return value is not valid until after Send returns without error.
  6242  //
  6243  // See ModifyReplicationGroup for more information on using the ModifyReplicationGroup
  6244  // API call, and error handling.
  6245  //
  6246  // This method is useful when you want to inject custom logic or configuration
  6247  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6248  //
  6249  //
  6250  //    // Example sending a request using the ModifyReplicationGroupRequest method.
  6251  //    req, resp := client.ModifyReplicationGroupRequest(params)
  6252  //
  6253  //    err := req.Send()
  6254  //    if err == nil { // resp is now filled
  6255  //        fmt.Println(resp)
  6256  //    }
  6257  //
  6258  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroup
  6259  func (c *ElastiCache) ModifyReplicationGroupRequest(input *ModifyReplicationGroupInput) (req *request.Request, output *ModifyReplicationGroupOutput) {
  6260  	op := &request.Operation{
  6261  		Name:       opModifyReplicationGroup,
  6262  		HTTPMethod: "POST",
  6263  		HTTPPath:   "/",
  6264  	}
  6265  
  6266  	if input == nil {
  6267  		input = &ModifyReplicationGroupInput{}
  6268  	}
  6269  
  6270  	output = &ModifyReplicationGroupOutput{}
  6271  	req = c.newRequest(op, input, output)
  6272  	return
  6273  }
  6274  
  6275  // ModifyReplicationGroup API operation for Amazon ElastiCache.
  6276  //
  6277  // Modifies the settings for a replication group.
  6278  //
  6279  //    * Scaling for Amazon ElastiCache for Redis (cluster mode enabled) (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/scaling-redis-cluster-mode-enabled.html)
  6280  //    in the ElastiCache User Guide
  6281  //
  6282  //    * ModifyReplicationGroupShardConfiguration (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html)
  6283  //    in the ElastiCache API Reference
  6284  //
  6285  // This operation is valid for Redis only.
  6286  //
  6287  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6288  // with awserr.Error's Code and Message methods to get detailed information about
  6289  // the error.
  6290  //
  6291  // See the AWS API reference guide for Amazon ElastiCache's
  6292  // API operation ModifyReplicationGroup for usage and error information.
  6293  //
  6294  // Returned Error Codes:
  6295  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  6296  //   The specified replication group does not exist.
  6297  //
  6298  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
  6299  //   The requested replication group is not in the available state.
  6300  //
  6301  //   * ErrCodeInvalidUserGroupStateFault "InvalidUserGroupState"
  6302  //   The user group is not in an active state.
  6303  //
  6304  //   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
  6305  //   The user group was not found or does not exist
  6306  //
  6307  //   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
  6308  //   The requested cluster is not in the available state.
  6309  //
  6310  //   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
  6311  //   The current state of the cache security group does not allow deletion.
  6312  //
  6313  //   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
  6314  //   The requested cache node type is not available in the specified Availability
  6315  //   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
  6316  //   in the ElastiCache User Guide.
  6317  //
  6318  //   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
  6319  //   The requested cluster ID does not refer to an existing cluster.
  6320  //
  6321  //   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
  6322  //   The request cannot be processed because it would exceed the allowed number
  6323  //   of cache nodes in a single cluster.
  6324  //
  6325  //   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
  6326  //   The request cannot be processed because it would exceed the allowed number
  6327  //   of cache nodes per customer.
  6328  //
  6329  //   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
  6330  //   The requested cache security group name does not refer to an existing cache
  6331  //   security group.
  6332  //
  6333  //   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
  6334  //   The requested cache parameter group name does not refer to an existing cache
  6335  //   parameter group.
  6336  //
  6337  //   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
  6338  //   The VPC network is in an invalid state.
  6339  //
  6340  //   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
  6341  //   The KMS key supplied is not valid.
  6342  //
  6343  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  6344  //   The value for a parameter is invalid.
  6345  //
  6346  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  6347  //   Two or more incompatible parameters were specified.
  6348  //
  6349  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroup
  6350  func (c *ElastiCache) ModifyReplicationGroup(input *ModifyReplicationGroupInput) (*ModifyReplicationGroupOutput, error) {
  6351  	req, out := c.ModifyReplicationGroupRequest(input)
  6352  	return out, req.Send()
  6353  }
  6354  
  6355  // ModifyReplicationGroupWithContext is the same as ModifyReplicationGroup with the addition of
  6356  // the ability to pass a context and additional request options.
  6357  //
  6358  // See ModifyReplicationGroup for details on how to use this API operation.
  6359  //
  6360  // The context must be non-nil and will be used for request cancellation. If
  6361  // the context is nil a panic will occur. In the future the SDK may create
  6362  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6363  // for more information on using Contexts.
  6364  func (c *ElastiCache) ModifyReplicationGroupWithContext(ctx aws.Context, input *ModifyReplicationGroupInput, opts ...request.Option) (*ModifyReplicationGroupOutput, error) {
  6365  	req, out := c.ModifyReplicationGroupRequest(input)
  6366  	req.SetContext(ctx)
  6367  	req.ApplyOptions(opts...)
  6368  	return out, req.Send()
  6369  }
  6370  
  6371  const opModifyReplicationGroupShardConfiguration = "ModifyReplicationGroupShardConfiguration"
  6372  
  6373  // ModifyReplicationGroupShardConfigurationRequest generates a "aws/request.Request" representing the
  6374  // client's request for the ModifyReplicationGroupShardConfiguration operation. The "output" return
  6375  // value will be populated with the request's response once the request completes
  6376  // successfully.
  6377  //
  6378  // Use "Send" method on the returned Request to send the API call to the service.
  6379  // the "output" return value is not valid until after Send returns without error.
  6380  //
  6381  // See ModifyReplicationGroupShardConfiguration for more information on using the ModifyReplicationGroupShardConfiguration
  6382  // API call, and error handling.
  6383  //
  6384  // This method is useful when you want to inject custom logic or configuration
  6385  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6386  //
  6387  //
  6388  //    // Example sending a request using the ModifyReplicationGroupShardConfigurationRequest method.
  6389  //    req, resp := client.ModifyReplicationGroupShardConfigurationRequest(params)
  6390  //
  6391  //    err := req.Send()
  6392  //    if err == nil { // resp is now filled
  6393  //        fmt.Println(resp)
  6394  //    }
  6395  //
  6396  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroupShardConfiguration
  6397  func (c *ElastiCache) ModifyReplicationGroupShardConfigurationRequest(input *ModifyReplicationGroupShardConfigurationInput) (req *request.Request, output *ModifyReplicationGroupShardConfigurationOutput) {
  6398  	op := &request.Operation{
  6399  		Name:       opModifyReplicationGroupShardConfiguration,
  6400  		HTTPMethod: "POST",
  6401  		HTTPPath:   "/",
  6402  	}
  6403  
  6404  	if input == nil {
  6405  		input = &ModifyReplicationGroupShardConfigurationInput{}
  6406  	}
  6407  
  6408  	output = &ModifyReplicationGroupShardConfigurationOutput{}
  6409  	req = c.newRequest(op, input, output)
  6410  	return
  6411  }
  6412  
  6413  // ModifyReplicationGroupShardConfiguration API operation for Amazon ElastiCache.
  6414  //
  6415  // Modifies a replication group's shards (node groups) by allowing you to add
  6416  // shards, remove shards, or rebalance the keyspaces among existing shards.
  6417  //
  6418  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6419  // with awserr.Error's Code and Message methods to get detailed information about
  6420  // the error.
  6421  //
  6422  // See the AWS API reference guide for Amazon ElastiCache's
  6423  // API operation ModifyReplicationGroupShardConfiguration for usage and error information.
  6424  //
  6425  // Returned Error Codes:
  6426  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  6427  //   The specified replication group does not exist.
  6428  //
  6429  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
  6430  //   The requested replication group is not in the available state.
  6431  //
  6432  //   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
  6433  //   The requested cluster is not in the available state.
  6434  //
  6435  //   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
  6436  //   The VPC network is in an invalid state.
  6437  //
  6438  //   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
  6439  //   The requested cache node type is not available in the specified Availability
  6440  //   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
  6441  //   in the ElastiCache User Guide.
  6442  //
  6443  //   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
  6444  //   The request cannot be processed because it would exceed the maximum allowed
  6445  //   number of node groups (shards) in a single replication group. The default
  6446  //   maximum is 90
  6447  //
  6448  //   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
  6449  //   The request cannot be processed because it would exceed the allowed number
  6450  //   of cache nodes per customer.
  6451  //
  6452  //   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
  6453  //   The KMS key supplied is not valid.
  6454  //
  6455  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  6456  //   The value for a parameter is invalid.
  6457  //
  6458  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  6459  //   Two or more incompatible parameters were specified.
  6460  //
  6461  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroupShardConfiguration
  6462  func (c *ElastiCache) ModifyReplicationGroupShardConfiguration(input *ModifyReplicationGroupShardConfigurationInput) (*ModifyReplicationGroupShardConfigurationOutput, error) {
  6463  	req, out := c.ModifyReplicationGroupShardConfigurationRequest(input)
  6464  	return out, req.Send()
  6465  }
  6466  
  6467  // ModifyReplicationGroupShardConfigurationWithContext is the same as ModifyReplicationGroupShardConfiguration with the addition of
  6468  // the ability to pass a context and additional request options.
  6469  //
  6470  // See ModifyReplicationGroupShardConfiguration for details on how to use this API operation.
  6471  //
  6472  // The context must be non-nil and will be used for request cancellation. If
  6473  // the context is nil a panic will occur. In the future the SDK may create
  6474  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6475  // for more information on using Contexts.
  6476  func (c *ElastiCache) ModifyReplicationGroupShardConfigurationWithContext(ctx aws.Context, input *ModifyReplicationGroupShardConfigurationInput, opts ...request.Option) (*ModifyReplicationGroupShardConfigurationOutput, error) {
  6477  	req, out := c.ModifyReplicationGroupShardConfigurationRequest(input)
  6478  	req.SetContext(ctx)
  6479  	req.ApplyOptions(opts...)
  6480  	return out, req.Send()
  6481  }
  6482  
  6483  const opModifyUser = "ModifyUser"
  6484  
  6485  // ModifyUserRequest generates a "aws/request.Request" representing the
  6486  // client's request for the ModifyUser operation. The "output" return
  6487  // value will be populated with the request's response once the request completes
  6488  // successfully.
  6489  //
  6490  // Use "Send" method on the returned Request to send the API call to the service.
  6491  // the "output" return value is not valid until after Send returns without error.
  6492  //
  6493  // See ModifyUser for more information on using the ModifyUser
  6494  // API call, and error handling.
  6495  //
  6496  // This method is useful when you want to inject custom logic or configuration
  6497  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6498  //
  6499  //
  6500  //    // Example sending a request using the ModifyUserRequest method.
  6501  //    req, resp := client.ModifyUserRequest(params)
  6502  //
  6503  //    err := req.Send()
  6504  //    if err == nil { // resp is now filled
  6505  //        fmt.Println(resp)
  6506  //    }
  6507  //
  6508  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyUser
  6509  func (c *ElastiCache) ModifyUserRequest(input *ModifyUserInput) (req *request.Request, output *ModifyUserOutput) {
  6510  	op := &request.Operation{
  6511  		Name:       opModifyUser,
  6512  		HTTPMethod: "POST",
  6513  		HTTPPath:   "/",
  6514  	}
  6515  
  6516  	if input == nil {
  6517  		input = &ModifyUserInput{}
  6518  	}
  6519  
  6520  	output = &ModifyUserOutput{}
  6521  	req = c.newRequest(op, input, output)
  6522  	return
  6523  }
  6524  
  6525  // ModifyUser API operation for Amazon ElastiCache.
  6526  //
  6527  // Changes user password(s) and/or access string.
  6528  //
  6529  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6530  // with awserr.Error's Code and Message methods to get detailed information about
  6531  // the error.
  6532  //
  6533  // See the AWS API reference guide for Amazon ElastiCache's
  6534  // API operation ModifyUser for usage and error information.
  6535  //
  6536  // Returned Error Codes:
  6537  //   * ErrCodeUserNotFoundFault "UserNotFound"
  6538  //   The user does not exist or could not be found.
  6539  //
  6540  //   * ErrCodeInvalidUserStateFault "InvalidUserState"
  6541  //   The user is not in active state.
  6542  //
  6543  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  6544  //   The value for a parameter is invalid.
  6545  //
  6546  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  6547  //   Two or more incompatible parameters were specified.
  6548  //
  6549  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyUser
  6550  func (c *ElastiCache) ModifyUser(input *ModifyUserInput) (*ModifyUserOutput, error) {
  6551  	req, out := c.ModifyUserRequest(input)
  6552  	return out, req.Send()
  6553  }
  6554  
  6555  // ModifyUserWithContext is the same as ModifyUser with the addition of
  6556  // the ability to pass a context and additional request options.
  6557  //
  6558  // See ModifyUser for details on how to use this API operation.
  6559  //
  6560  // The context must be non-nil and will be used for request cancellation. If
  6561  // the context is nil a panic will occur. In the future the SDK may create
  6562  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6563  // for more information on using Contexts.
  6564  func (c *ElastiCache) ModifyUserWithContext(ctx aws.Context, input *ModifyUserInput, opts ...request.Option) (*ModifyUserOutput, error) {
  6565  	req, out := c.ModifyUserRequest(input)
  6566  	req.SetContext(ctx)
  6567  	req.ApplyOptions(opts...)
  6568  	return out, req.Send()
  6569  }
  6570  
  6571  const opModifyUserGroup = "ModifyUserGroup"
  6572  
  6573  // ModifyUserGroupRequest generates a "aws/request.Request" representing the
  6574  // client's request for the ModifyUserGroup operation. The "output" return
  6575  // value will be populated with the request's response once the request completes
  6576  // successfully.
  6577  //
  6578  // Use "Send" method on the returned Request to send the API call to the service.
  6579  // the "output" return value is not valid until after Send returns without error.
  6580  //
  6581  // See ModifyUserGroup for more information on using the ModifyUserGroup
  6582  // API call, and error handling.
  6583  //
  6584  // This method is useful when you want to inject custom logic or configuration
  6585  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6586  //
  6587  //
  6588  //    // Example sending a request using the ModifyUserGroupRequest method.
  6589  //    req, resp := client.ModifyUserGroupRequest(params)
  6590  //
  6591  //    err := req.Send()
  6592  //    if err == nil { // resp is now filled
  6593  //        fmt.Println(resp)
  6594  //    }
  6595  //
  6596  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyUserGroup
  6597  func (c *ElastiCache) ModifyUserGroupRequest(input *ModifyUserGroupInput) (req *request.Request, output *ModifyUserGroupOutput) {
  6598  	op := &request.Operation{
  6599  		Name:       opModifyUserGroup,
  6600  		HTTPMethod: "POST",
  6601  		HTTPPath:   "/",
  6602  	}
  6603  
  6604  	if input == nil {
  6605  		input = &ModifyUserGroupInput{}
  6606  	}
  6607  
  6608  	output = &ModifyUserGroupOutput{}
  6609  	req = c.newRequest(op, input, output)
  6610  	return
  6611  }
  6612  
  6613  // ModifyUserGroup API operation for Amazon ElastiCache.
  6614  //
  6615  // Changes the list of users that belong to the user group.
  6616  //
  6617  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6618  // with awserr.Error's Code and Message methods to get detailed information about
  6619  // the error.
  6620  //
  6621  // See the AWS API reference guide for Amazon ElastiCache's
  6622  // API operation ModifyUserGroup for usage and error information.
  6623  //
  6624  // Returned Error Codes:
  6625  //   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
  6626  //   The user group was not found or does not exist
  6627  //
  6628  //   * ErrCodeUserNotFoundFault "UserNotFound"
  6629  //   The user does not exist or could not be found.
  6630  //
  6631  //   * ErrCodeDuplicateUserNameFault "DuplicateUserName"
  6632  //   A user with this username already exists.
  6633  //
  6634  //   * ErrCodeDefaultUserRequired "DefaultUserRequired"
  6635  //   You must add default user to a user group.
  6636  //
  6637  //   * ErrCodeInvalidUserGroupStateFault "InvalidUserGroupState"
  6638  //   The user group is not in an active state.
  6639  //
  6640  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  6641  //   The value for a parameter is invalid.
  6642  //
  6643  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  6644  //   Two or more incompatible parameters were specified.
  6645  //
  6646  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyUserGroup
  6647  func (c *ElastiCache) ModifyUserGroup(input *ModifyUserGroupInput) (*ModifyUserGroupOutput, error) {
  6648  	req, out := c.ModifyUserGroupRequest(input)
  6649  	return out, req.Send()
  6650  }
  6651  
  6652  // ModifyUserGroupWithContext is the same as ModifyUserGroup with the addition of
  6653  // the ability to pass a context and additional request options.
  6654  //
  6655  // See ModifyUserGroup for details on how to use this API operation.
  6656  //
  6657  // The context must be non-nil and will be used for request cancellation. If
  6658  // the context is nil a panic will occur. In the future the SDK may create
  6659  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6660  // for more information on using Contexts.
  6661  func (c *ElastiCache) ModifyUserGroupWithContext(ctx aws.Context, input *ModifyUserGroupInput, opts ...request.Option) (*ModifyUserGroupOutput, error) {
  6662  	req, out := c.ModifyUserGroupRequest(input)
  6663  	req.SetContext(ctx)
  6664  	req.ApplyOptions(opts...)
  6665  	return out, req.Send()
  6666  }
  6667  
  6668  const opPurchaseReservedCacheNodesOffering = "PurchaseReservedCacheNodesOffering"
  6669  
  6670  // PurchaseReservedCacheNodesOfferingRequest generates a "aws/request.Request" representing the
  6671  // client's request for the PurchaseReservedCacheNodesOffering operation. The "output" return
  6672  // value will be populated with the request's response once the request completes
  6673  // successfully.
  6674  //
  6675  // Use "Send" method on the returned Request to send the API call to the service.
  6676  // the "output" return value is not valid until after Send returns without error.
  6677  //
  6678  // See PurchaseReservedCacheNodesOffering for more information on using the PurchaseReservedCacheNodesOffering
  6679  // API call, and error handling.
  6680  //
  6681  // This method is useful when you want to inject custom logic or configuration
  6682  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6683  //
  6684  //
  6685  //    // Example sending a request using the PurchaseReservedCacheNodesOfferingRequest method.
  6686  //    req, resp := client.PurchaseReservedCacheNodesOfferingRequest(params)
  6687  //
  6688  //    err := req.Send()
  6689  //    if err == nil { // resp is now filled
  6690  //        fmt.Println(resp)
  6691  //    }
  6692  //
  6693  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/PurchaseReservedCacheNodesOffering
  6694  func (c *ElastiCache) PurchaseReservedCacheNodesOfferingRequest(input *PurchaseReservedCacheNodesOfferingInput) (req *request.Request, output *PurchaseReservedCacheNodesOfferingOutput) {
  6695  	op := &request.Operation{
  6696  		Name:       opPurchaseReservedCacheNodesOffering,
  6697  		HTTPMethod: "POST",
  6698  		HTTPPath:   "/",
  6699  	}
  6700  
  6701  	if input == nil {
  6702  		input = &PurchaseReservedCacheNodesOfferingInput{}
  6703  	}
  6704  
  6705  	output = &PurchaseReservedCacheNodesOfferingOutput{}
  6706  	req = c.newRequest(op, input, output)
  6707  	return
  6708  }
  6709  
  6710  // PurchaseReservedCacheNodesOffering API operation for Amazon ElastiCache.
  6711  //
  6712  // Allows you to purchase a reserved cache node offering. Reserved nodes are
  6713  // not eligible for cancellation and are non-refundable. For more information,
  6714  // see Managing Costs with Reserved Nodes (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/reserved-nodes.html)
  6715  // for Redis or Managing Costs with Reserved Nodes (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/reserved-nodes.html)
  6716  // for Memcached.
  6717  //
  6718  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6719  // with awserr.Error's Code and Message methods to get detailed information about
  6720  // the error.
  6721  //
  6722  // See the AWS API reference guide for Amazon ElastiCache's
  6723  // API operation PurchaseReservedCacheNodesOffering for usage and error information.
  6724  //
  6725  // Returned Error Codes:
  6726  //   * ErrCodeReservedCacheNodesOfferingNotFoundFault "ReservedCacheNodesOfferingNotFound"
  6727  //   The requested cache node offering does not exist.
  6728  //
  6729  //   * ErrCodeReservedCacheNodeAlreadyExistsFault "ReservedCacheNodeAlreadyExists"
  6730  //   You already have a reservation with the given identifier.
  6731  //
  6732  //   * ErrCodeReservedCacheNodeQuotaExceededFault "ReservedCacheNodeQuotaExceeded"
  6733  //   The request cannot be processed because it would exceed the user's cache
  6734  //   node quota.
  6735  //
  6736  //   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
  6737  //   The request cannot be processed because it would cause the resource to have
  6738  //   more than the allowed number of tags. The maximum number of tags permitted
  6739  //   on a resource is 50.
  6740  //
  6741  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  6742  //   The value for a parameter is invalid.
  6743  //
  6744  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  6745  //   Two or more incompatible parameters were specified.
  6746  //
  6747  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/PurchaseReservedCacheNodesOffering
  6748  func (c *ElastiCache) PurchaseReservedCacheNodesOffering(input *PurchaseReservedCacheNodesOfferingInput) (*PurchaseReservedCacheNodesOfferingOutput, error) {
  6749  	req, out := c.PurchaseReservedCacheNodesOfferingRequest(input)
  6750  	return out, req.Send()
  6751  }
  6752  
  6753  // PurchaseReservedCacheNodesOfferingWithContext is the same as PurchaseReservedCacheNodesOffering with the addition of
  6754  // the ability to pass a context and additional request options.
  6755  //
  6756  // See PurchaseReservedCacheNodesOffering for details on how to use this API operation.
  6757  //
  6758  // The context must be non-nil and will be used for request cancellation. If
  6759  // the context is nil a panic will occur. In the future the SDK may create
  6760  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6761  // for more information on using Contexts.
  6762  func (c *ElastiCache) PurchaseReservedCacheNodesOfferingWithContext(ctx aws.Context, input *PurchaseReservedCacheNodesOfferingInput, opts ...request.Option) (*PurchaseReservedCacheNodesOfferingOutput, error) {
  6763  	req, out := c.PurchaseReservedCacheNodesOfferingRequest(input)
  6764  	req.SetContext(ctx)
  6765  	req.ApplyOptions(opts...)
  6766  	return out, req.Send()
  6767  }
  6768  
  6769  const opRebalanceSlotsInGlobalReplicationGroup = "RebalanceSlotsInGlobalReplicationGroup"
  6770  
  6771  // RebalanceSlotsInGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
  6772  // client's request for the RebalanceSlotsInGlobalReplicationGroup operation. The "output" return
  6773  // value will be populated with the request's response once the request completes
  6774  // successfully.
  6775  //
  6776  // Use "Send" method on the returned Request to send the API call to the service.
  6777  // the "output" return value is not valid until after Send returns without error.
  6778  //
  6779  // See RebalanceSlotsInGlobalReplicationGroup for more information on using the RebalanceSlotsInGlobalReplicationGroup
  6780  // API call, and error handling.
  6781  //
  6782  // This method is useful when you want to inject custom logic or configuration
  6783  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6784  //
  6785  //
  6786  //    // Example sending a request using the RebalanceSlotsInGlobalReplicationGroupRequest method.
  6787  //    req, resp := client.RebalanceSlotsInGlobalReplicationGroupRequest(params)
  6788  //
  6789  //    err := req.Send()
  6790  //    if err == nil { // resp is now filled
  6791  //        fmt.Println(resp)
  6792  //    }
  6793  //
  6794  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebalanceSlotsInGlobalReplicationGroup
  6795  func (c *ElastiCache) RebalanceSlotsInGlobalReplicationGroupRequest(input *RebalanceSlotsInGlobalReplicationGroupInput) (req *request.Request, output *RebalanceSlotsInGlobalReplicationGroupOutput) {
  6796  	op := &request.Operation{
  6797  		Name:       opRebalanceSlotsInGlobalReplicationGroup,
  6798  		HTTPMethod: "POST",
  6799  		HTTPPath:   "/",
  6800  	}
  6801  
  6802  	if input == nil {
  6803  		input = &RebalanceSlotsInGlobalReplicationGroupInput{}
  6804  	}
  6805  
  6806  	output = &RebalanceSlotsInGlobalReplicationGroupOutput{}
  6807  	req = c.newRequest(op, input, output)
  6808  	return
  6809  }
  6810  
  6811  // RebalanceSlotsInGlobalReplicationGroup API operation for Amazon ElastiCache.
  6812  //
  6813  // Redistribute slots to ensure uniform distribution across existing shards
  6814  // in the cluster.
  6815  //
  6816  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6817  // with awserr.Error's Code and Message methods to get detailed information about
  6818  // the error.
  6819  //
  6820  // See the AWS API reference guide for Amazon ElastiCache's
  6821  // API operation RebalanceSlotsInGlobalReplicationGroup for usage and error information.
  6822  //
  6823  // Returned Error Codes:
  6824  //   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
  6825  //   The Global datastore does not exist
  6826  //
  6827  //   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
  6828  //   The Global datastore is not available or in primary-only state.
  6829  //
  6830  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  6831  //   The value for a parameter is invalid.
  6832  //
  6833  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebalanceSlotsInGlobalReplicationGroup
  6834  func (c *ElastiCache) RebalanceSlotsInGlobalReplicationGroup(input *RebalanceSlotsInGlobalReplicationGroupInput) (*RebalanceSlotsInGlobalReplicationGroupOutput, error) {
  6835  	req, out := c.RebalanceSlotsInGlobalReplicationGroupRequest(input)
  6836  	return out, req.Send()
  6837  }
  6838  
  6839  // RebalanceSlotsInGlobalReplicationGroupWithContext is the same as RebalanceSlotsInGlobalReplicationGroup with the addition of
  6840  // the ability to pass a context and additional request options.
  6841  //
  6842  // See RebalanceSlotsInGlobalReplicationGroup for details on how to use this API operation.
  6843  //
  6844  // The context must be non-nil and will be used for request cancellation. If
  6845  // the context is nil a panic will occur. In the future the SDK may create
  6846  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6847  // for more information on using Contexts.
  6848  func (c *ElastiCache) RebalanceSlotsInGlobalReplicationGroupWithContext(ctx aws.Context, input *RebalanceSlotsInGlobalReplicationGroupInput, opts ...request.Option) (*RebalanceSlotsInGlobalReplicationGroupOutput, error) {
  6849  	req, out := c.RebalanceSlotsInGlobalReplicationGroupRequest(input)
  6850  	req.SetContext(ctx)
  6851  	req.ApplyOptions(opts...)
  6852  	return out, req.Send()
  6853  }
  6854  
  6855  const opRebootCacheCluster = "RebootCacheCluster"
  6856  
  6857  // RebootCacheClusterRequest generates a "aws/request.Request" representing the
  6858  // client's request for the RebootCacheCluster operation. The "output" return
  6859  // value will be populated with the request's response once the request completes
  6860  // successfully.
  6861  //
  6862  // Use "Send" method on the returned Request to send the API call to the service.
  6863  // the "output" return value is not valid until after Send returns without error.
  6864  //
  6865  // See RebootCacheCluster for more information on using the RebootCacheCluster
  6866  // API call, and error handling.
  6867  //
  6868  // This method is useful when you want to inject custom logic or configuration
  6869  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6870  //
  6871  //
  6872  //    // Example sending a request using the RebootCacheClusterRequest method.
  6873  //    req, resp := client.RebootCacheClusterRequest(params)
  6874  //
  6875  //    err := req.Send()
  6876  //    if err == nil { // resp is now filled
  6877  //        fmt.Println(resp)
  6878  //    }
  6879  //
  6880  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebootCacheCluster
  6881  func (c *ElastiCache) RebootCacheClusterRequest(input *RebootCacheClusterInput) (req *request.Request, output *RebootCacheClusterOutput) {
  6882  	op := &request.Operation{
  6883  		Name:       opRebootCacheCluster,
  6884  		HTTPMethod: "POST",
  6885  		HTTPPath:   "/",
  6886  	}
  6887  
  6888  	if input == nil {
  6889  		input = &RebootCacheClusterInput{}
  6890  	}
  6891  
  6892  	output = &RebootCacheClusterOutput{}
  6893  	req = c.newRequest(op, input, output)
  6894  	return
  6895  }
  6896  
  6897  // RebootCacheCluster API operation for Amazon ElastiCache.
  6898  //
  6899  // Reboots some, or all, of the cache nodes within a provisioned cluster. This
  6900  // operation applies any modified cache parameter groups to the cluster. The
  6901  // reboot operation takes place as soon as possible, and results in a momentary
  6902  // outage to the cluster. During the reboot, the cluster status is set to REBOOTING.
  6903  //
  6904  // The reboot causes the contents of the cache (for each cache node being rebooted)
  6905  // to be lost.
  6906  //
  6907  // When the reboot is complete, a cluster event is created.
  6908  //
  6909  // Rebooting a cluster is currently supported on Memcached and Redis (cluster
  6910  // mode disabled) clusters. Rebooting is not supported on Redis (cluster mode
  6911  // enabled) clusters.
  6912  //
  6913  // If you make changes to parameters that require a Redis (cluster mode enabled)
  6914  // cluster reboot for the changes to be applied, see Rebooting a Cluster (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html)
  6915  // for an alternate process.
  6916  //
  6917  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  6918  // with awserr.Error's Code and Message methods to get detailed information about
  6919  // the error.
  6920  //
  6921  // See the AWS API reference guide for Amazon ElastiCache's
  6922  // API operation RebootCacheCluster for usage and error information.
  6923  //
  6924  // Returned Error Codes:
  6925  //   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
  6926  //   The requested cluster is not in the available state.
  6927  //
  6928  //   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
  6929  //   The requested cluster ID does not refer to an existing cluster.
  6930  //
  6931  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebootCacheCluster
  6932  func (c *ElastiCache) RebootCacheCluster(input *RebootCacheClusterInput) (*RebootCacheClusterOutput, error) {
  6933  	req, out := c.RebootCacheClusterRequest(input)
  6934  	return out, req.Send()
  6935  }
  6936  
  6937  // RebootCacheClusterWithContext is the same as RebootCacheCluster with the addition of
  6938  // the ability to pass a context and additional request options.
  6939  //
  6940  // See RebootCacheCluster for details on how to use this API operation.
  6941  //
  6942  // The context must be non-nil and will be used for request cancellation. If
  6943  // the context is nil a panic will occur. In the future the SDK may create
  6944  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  6945  // for more information on using Contexts.
  6946  func (c *ElastiCache) RebootCacheClusterWithContext(ctx aws.Context, input *RebootCacheClusterInput, opts ...request.Option) (*RebootCacheClusterOutput, error) {
  6947  	req, out := c.RebootCacheClusterRequest(input)
  6948  	req.SetContext(ctx)
  6949  	req.ApplyOptions(opts...)
  6950  	return out, req.Send()
  6951  }
  6952  
  6953  const opRemoveTagsFromResource = "RemoveTagsFromResource"
  6954  
  6955  // RemoveTagsFromResourceRequest generates a "aws/request.Request" representing the
  6956  // client's request for the RemoveTagsFromResource operation. The "output" return
  6957  // value will be populated with the request's response once the request completes
  6958  // successfully.
  6959  //
  6960  // Use "Send" method on the returned Request to send the API call to the service.
  6961  // the "output" return value is not valid until after Send returns without error.
  6962  //
  6963  // See RemoveTagsFromResource for more information on using the RemoveTagsFromResource
  6964  // API call, and error handling.
  6965  //
  6966  // This method is useful when you want to inject custom logic or configuration
  6967  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  6968  //
  6969  //
  6970  //    // Example sending a request using the RemoveTagsFromResourceRequest method.
  6971  //    req, resp := client.RemoveTagsFromResourceRequest(params)
  6972  //
  6973  //    err := req.Send()
  6974  //    if err == nil { // resp is now filled
  6975  //        fmt.Println(resp)
  6976  //    }
  6977  //
  6978  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RemoveTagsFromResource
  6979  func (c *ElastiCache) RemoveTagsFromResourceRequest(input *RemoveTagsFromResourceInput) (req *request.Request, output *TagListMessage) {
  6980  	op := &request.Operation{
  6981  		Name:       opRemoveTagsFromResource,
  6982  		HTTPMethod: "POST",
  6983  		HTTPPath:   "/",
  6984  	}
  6985  
  6986  	if input == nil {
  6987  		input = &RemoveTagsFromResourceInput{}
  6988  	}
  6989  
  6990  	output = &TagListMessage{}
  6991  	req = c.newRequest(op, input, output)
  6992  	return
  6993  }
  6994  
  6995  // RemoveTagsFromResource API operation for Amazon ElastiCache.
  6996  //
  6997  // Removes the tags identified by the TagKeys list from the named resource.
  6998  // A tag is a key-value pair where the key and value are case-sensitive. You
  6999  // can use tags to categorize and track all your ElastiCache resources, with
  7000  // the exception of global replication group. When you add or remove tags on
  7001  // replication groups, those actions will be replicated to all nodes in the
  7002  // replication group. For more information, see Resource-level permissions (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/IAM.ResourceLevelPermissions.html).
  7003  //
  7004  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7005  // with awserr.Error's Code and Message methods to get detailed information about
  7006  // the error.
  7007  //
  7008  // See the AWS API reference guide for Amazon ElastiCache's
  7009  // API operation RemoveTagsFromResource for usage and error information.
  7010  //
  7011  // Returned Error Codes:
  7012  //   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
  7013  //   The requested cluster ID does not refer to an existing cluster.
  7014  //
  7015  //   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
  7016  //   The requested cache parameter group name does not refer to an existing cache
  7017  //   parameter group.
  7018  //
  7019  //   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
  7020  //   The requested cache security group name does not refer to an existing cache
  7021  //   security group.
  7022  //
  7023  //   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
  7024  //   The requested cache subnet group name does not refer to an existing cache
  7025  //   subnet group.
  7026  //
  7027  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
  7028  //   The requested replication group is not in the available state.
  7029  //
  7030  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  7031  //   The specified replication group does not exist.
  7032  //
  7033  //   * ErrCodeReservedCacheNodeNotFoundFault "ReservedCacheNodeNotFound"
  7034  //   The requested reserved cache node was not found.
  7035  //
  7036  //   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
  7037  //   The requested snapshot name does not refer to an existing snapshot.
  7038  //
  7039  //   * ErrCodeUserNotFoundFault "UserNotFound"
  7040  //   The user does not exist or could not be found.
  7041  //
  7042  //   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
  7043  //   The user group was not found or does not exist
  7044  //
  7045  //   * ErrCodeInvalidARNFault "InvalidARN"
  7046  //   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
  7047  //
  7048  //   * ErrCodeTagNotFoundFault "TagNotFound"
  7049  //   The requested tag was not found on this resource.
  7050  //
  7051  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RemoveTagsFromResource
  7052  func (c *ElastiCache) RemoveTagsFromResource(input *RemoveTagsFromResourceInput) (*TagListMessage, error) {
  7053  	req, out := c.RemoveTagsFromResourceRequest(input)
  7054  	return out, req.Send()
  7055  }
  7056  
  7057  // RemoveTagsFromResourceWithContext is the same as RemoveTagsFromResource with the addition of
  7058  // the ability to pass a context and additional request options.
  7059  //
  7060  // See RemoveTagsFromResource for details on how to use this API operation.
  7061  //
  7062  // The context must be non-nil and will be used for request cancellation. If
  7063  // the context is nil a panic will occur. In the future the SDK may create
  7064  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7065  // for more information on using Contexts.
  7066  func (c *ElastiCache) RemoveTagsFromResourceWithContext(ctx aws.Context, input *RemoveTagsFromResourceInput, opts ...request.Option) (*TagListMessage, error) {
  7067  	req, out := c.RemoveTagsFromResourceRequest(input)
  7068  	req.SetContext(ctx)
  7069  	req.ApplyOptions(opts...)
  7070  	return out, req.Send()
  7071  }
  7072  
  7073  const opResetCacheParameterGroup = "ResetCacheParameterGroup"
  7074  
  7075  // ResetCacheParameterGroupRequest generates a "aws/request.Request" representing the
  7076  // client's request for the ResetCacheParameterGroup operation. The "output" return
  7077  // value will be populated with the request's response once the request completes
  7078  // successfully.
  7079  //
  7080  // Use "Send" method on the returned Request to send the API call to the service.
  7081  // the "output" return value is not valid until after Send returns without error.
  7082  //
  7083  // See ResetCacheParameterGroup for more information on using the ResetCacheParameterGroup
  7084  // API call, and error handling.
  7085  //
  7086  // This method is useful when you want to inject custom logic or configuration
  7087  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  7088  //
  7089  //
  7090  //    // Example sending a request using the ResetCacheParameterGroupRequest method.
  7091  //    req, resp := client.ResetCacheParameterGroupRequest(params)
  7092  //
  7093  //    err := req.Send()
  7094  //    if err == nil { // resp is now filled
  7095  //        fmt.Println(resp)
  7096  //    }
  7097  //
  7098  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ResetCacheParameterGroup
  7099  func (c *ElastiCache) ResetCacheParameterGroupRequest(input *ResetCacheParameterGroupInput) (req *request.Request, output *CacheParameterGroupNameMessage) {
  7100  	op := &request.Operation{
  7101  		Name:       opResetCacheParameterGroup,
  7102  		HTTPMethod: "POST",
  7103  		HTTPPath:   "/",
  7104  	}
  7105  
  7106  	if input == nil {
  7107  		input = &ResetCacheParameterGroupInput{}
  7108  	}
  7109  
  7110  	output = &CacheParameterGroupNameMessage{}
  7111  	req = c.newRequest(op, input, output)
  7112  	return
  7113  }
  7114  
  7115  // ResetCacheParameterGroup API operation for Amazon ElastiCache.
  7116  //
  7117  // Modifies the parameters of a cache parameter group to the engine or system
  7118  // default value. You can reset specific parameters by submitting a list of
  7119  // parameter names. To reset the entire cache parameter group, specify the ResetAllParameters
  7120  // and CacheParameterGroupName parameters.
  7121  //
  7122  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7123  // with awserr.Error's Code and Message methods to get detailed information about
  7124  // the error.
  7125  //
  7126  // See the AWS API reference guide for Amazon ElastiCache's
  7127  // API operation ResetCacheParameterGroup for usage and error information.
  7128  //
  7129  // Returned Error Codes:
  7130  //   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
  7131  //   The current state of the cache parameter group does not allow the requested
  7132  //   operation to occur.
  7133  //
  7134  //   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
  7135  //   The requested cache parameter group name does not refer to an existing cache
  7136  //   parameter group.
  7137  //
  7138  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  7139  //   The value for a parameter is invalid.
  7140  //
  7141  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  7142  //   Two or more incompatible parameters were specified.
  7143  //
  7144  //   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
  7145  //   The Global datastore is not available or in primary-only state.
  7146  //
  7147  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ResetCacheParameterGroup
  7148  func (c *ElastiCache) ResetCacheParameterGroup(input *ResetCacheParameterGroupInput) (*CacheParameterGroupNameMessage, error) {
  7149  	req, out := c.ResetCacheParameterGroupRequest(input)
  7150  	return out, req.Send()
  7151  }
  7152  
  7153  // ResetCacheParameterGroupWithContext is the same as ResetCacheParameterGroup with the addition of
  7154  // the ability to pass a context and additional request options.
  7155  //
  7156  // See ResetCacheParameterGroup for details on how to use this API operation.
  7157  //
  7158  // The context must be non-nil and will be used for request cancellation. If
  7159  // the context is nil a panic will occur. In the future the SDK may create
  7160  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7161  // for more information on using Contexts.
  7162  func (c *ElastiCache) ResetCacheParameterGroupWithContext(ctx aws.Context, input *ResetCacheParameterGroupInput, opts ...request.Option) (*CacheParameterGroupNameMessage, error) {
  7163  	req, out := c.ResetCacheParameterGroupRequest(input)
  7164  	req.SetContext(ctx)
  7165  	req.ApplyOptions(opts...)
  7166  	return out, req.Send()
  7167  }
  7168  
  7169  const opRevokeCacheSecurityGroupIngress = "RevokeCacheSecurityGroupIngress"
  7170  
  7171  // RevokeCacheSecurityGroupIngressRequest generates a "aws/request.Request" representing the
  7172  // client's request for the RevokeCacheSecurityGroupIngress operation. The "output" return
  7173  // value will be populated with the request's response once the request completes
  7174  // successfully.
  7175  //
  7176  // Use "Send" method on the returned Request to send the API call to the service.
  7177  // the "output" return value is not valid until after Send returns without error.
  7178  //
  7179  // See RevokeCacheSecurityGroupIngress for more information on using the RevokeCacheSecurityGroupIngress
  7180  // API call, and error handling.
  7181  //
  7182  // This method is useful when you want to inject custom logic or configuration
  7183  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  7184  //
  7185  //
  7186  //    // Example sending a request using the RevokeCacheSecurityGroupIngressRequest method.
  7187  //    req, resp := client.RevokeCacheSecurityGroupIngressRequest(params)
  7188  //
  7189  //    err := req.Send()
  7190  //    if err == nil { // resp is now filled
  7191  //        fmt.Println(resp)
  7192  //    }
  7193  //
  7194  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RevokeCacheSecurityGroupIngress
  7195  func (c *ElastiCache) RevokeCacheSecurityGroupIngressRequest(input *RevokeCacheSecurityGroupIngressInput) (req *request.Request, output *RevokeCacheSecurityGroupIngressOutput) {
  7196  	op := &request.Operation{
  7197  		Name:       opRevokeCacheSecurityGroupIngress,
  7198  		HTTPMethod: "POST",
  7199  		HTTPPath:   "/",
  7200  	}
  7201  
  7202  	if input == nil {
  7203  		input = &RevokeCacheSecurityGroupIngressInput{}
  7204  	}
  7205  
  7206  	output = &RevokeCacheSecurityGroupIngressOutput{}
  7207  	req = c.newRequest(op, input, output)
  7208  	return
  7209  }
  7210  
  7211  // RevokeCacheSecurityGroupIngress API operation for Amazon ElastiCache.
  7212  //
  7213  // Revokes ingress from a cache security group. Use this operation to disallow
  7214  // access from an Amazon EC2 security group that had been previously authorized.
  7215  //
  7216  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7217  // with awserr.Error's Code and Message methods to get detailed information about
  7218  // the error.
  7219  //
  7220  // See the AWS API reference guide for Amazon ElastiCache's
  7221  // API operation RevokeCacheSecurityGroupIngress for usage and error information.
  7222  //
  7223  // Returned Error Codes:
  7224  //   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
  7225  //   The requested cache security group name does not refer to an existing cache
  7226  //   security group.
  7227  //
  7228  //   * ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
  7229  //   The specified Amazon EC2 security group is not authorized for the specified
  7230  //   cache security group.
  7231  //
  7232  //   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
  7233  //   The current state of the cache security group does not allow deletion.
  7234  //
  7235  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  7236  //   The value for a parameter is invalid.
  7237  //
  7238  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  7239  //   Two or more incompatible parameters were specified.
  7240  //
  7241  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RevokeCacheSecurityGroupIngress
  7242  func (c *ElastiCache) RevokeCacheSecurityGroupIngress(input *RevokeCacheSecurityGroupIngressInput) (*RevokeCacheSecurityGroupIngressOutput, error) {
  7243  	req, out := c.RevokeCacheSecurityGroupIngressRequest(input)
  7244  	return out, req.Send()
  7245  }
  7246  
  7247  // RevokeCacheSecurityGroupIngressWithContext is the same as RevokeCacheSecurityGroupIngress with the addition of
  7248  // the ability to pass a context and additional request options.
  7249  //
  7250  // See RevokeCacheSecurityGroupIngress for details on how to use this API operation.
  7251  //
  7252  // The context must be non-nil and will be used for request cancellation. If
  7253  // the context is nil a panic will occur. In the future the SDK may create
  7254  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7255  // for more information on using Contexts.
  7256  func (c *ElastiCache) RevokeCacheSecurityGroupIngressWithContext(ctx aws.Context, input *RevokeCacheSecurityGroupIngressInput, opts ...request.Option) (*RevokeCacheSecurityGroupIngressOutput, error) {
  7257  	req, out := c.RevokeCacheSecurityGroupIngressRequest(input)
  7258  	req.SetContext(ctx)
  7259  	req.ApplyOptions(opts...)
  7260  	return out, req.Send()
  7261  }
  7262  
  7263  const opStartMigration = "StartMigration"
  7264  
  7265  // StartMigrationRequest generates a "aws/request.Request" representing the
  7266  // client's request for the StartMigration operation. The "output" return
  7267  // value will be populated with the request's response once the request completes
  7268  // successfully.
  7269  //
  7270  // Use "Send" method on the returned Request to send the API call to the service.
  7271  // the "output" return value is not valid until after Send returns without error.
  7272  //
  7273  // See StartMigration for more information on using the StartMigration
  7274  // API call, and error handling.
  7275  //
  7276  // This method is useful when you want to inject custom logic or configuration
  7277  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  7278  //
  7279  //
  7280  //    // Example sending a request using the StartMigrationRequest method.
  7281  //    req, resp := client.StartMigrationRequest(params)
  7282  //
  7283  //    err := req.Send()
  7284  //    if err == nil { // resp is now filled
  7285  //        fmt.Println(resp)
  7286  //    }
  7287  //
  7288  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/StartMigration
  7289  func (c *ElastiCache) StartMigrationRequest(input *StartMigrationInput) (req *request.Request, output *StartMigrationOutput) {
  7290  	op := &request.Operation{
  7291  		Name:       opStartMigration,
  7292  		HTTPMethod: "POST",
  7293  		HTTPPath:   "/",
  7294  	}
  7295  
  7296  	if input == nil {
  7297  		input = &StartMigrationInput{}
  7298  	}
  7299  
  7300  	output = &StartMigrationOutput{}
  7301  	req = c.newRequest(op, input, output)
  7302  	return
  7303  }
  7304  
  7305  // StartMigration API operation for Amazon ElastiCache.
  7306  //
  7307  // Start the migration of data.
  7308  //
  7309  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7310  // with awserr.Error's Code and Message methods to get detailed information about
  7311  // the error.
  7312  //
  7313  // See the AWS API reference guide for Amazon ElastiCache's
  7314  // API operation StartMigration for usage and error information.
  7315  //
  7316  // Returned Error Codes:
  7317  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  7318  //   The specified replication group does not exist.
  7319  //
  7320  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
  7321  //   The requested replication group is not in the available state.
  7322  //
  7323  //   * ErrCodeReplicationGroupAlreadyUnderMigrationFault "ReplicationGroupAlreadyUnderMigrationFault"
  7324  //   The targeted replication group is not available.
  7325  //
  7326  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  7327  //   The value for a parameter is invalid.
  7328  //
  7329  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/StartMigration
  7330  func (c *ElastiCache) StartMigration(input *StartMigrationInput) (*StartMigrationOutput, error) {
  7331  	req, out := c.StartMigrationRequest(input)
  7332  	return out, req.Send()
  7333  }
  7334  
  7335  // StartMigrationWithContext is the same as StartMigration with the addition of
  7336  // the ability to pass a context and additional request options.
  7337  //
  7338  // See StartMigration for details on how to use this API operation.
  7339  //
  7340  // The context must be non-nil and will be used for request cancellation. If
  7341  // the context is nil a panic will occur. In the future the SDK may create
  7342  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7343  // for more information on using Contexts.
  7344  func (c *ElastiCache) StartMigrationWithContext(ctx aws.Context, input *StartMigrationInput, opts ...request.Option) (*StartMigrationOutput, error) {
  7345  	req, out := c.StartMigrationRequest(input)
  7346  	req.SetContext(ctx)
  7347  	req.ApplyOptions(opts...)
  7348  	return out, req.Send()
  7349  }
  7350  
  7351  const opTestFailover = "TestFailover"
  7352  
  7353  // TestFailoverRequest generates a "aws/request.Request" representing the
  7354  // client's request for the TestFailover operation. The "output" return
  7355  // value will be populated with the request's response once the request completes
  7356  // successfully.
  7357  //
  7358  // Use "Send" method on the returned Request to send the API call to the service.
  7359  // the "output" return value is not valid until after Send returns without error.
  7360  //
  7361  // See TestFailover for more information on using the TestFailover
  7362  // API call, and error handling.
  7363  //
  7364  // This method is useful when you want to inject custom logic or configuration
  7365  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  7366  //
  7367  //
  7368  //    // Example sending a request using the TestFailoverRequest method.
  7369  //    req, resp := client.TestFailoverRequest(params)
  7370  //
  7371  //    err := req.Send()
  7372  //    if err == nil { // resp is now filled
  7373  //        fmt.Println(resp)
  7374  //    }
  7375  //
  7376  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/TestFailover
  7377  func (c *ElastiCache) TestFailoverRequest(input *TestFailoverInput) (req *request.Request, output *TestFailoverOutput) {
  7378  	op := &request.Operation{
  7379  		Name:       opTestFailover,
  7380  		HTTPMethod: "POST",
  7381  		HTTPPath:   "/",
  7382  	}
  7383  
  7384  	if input == nil {
  7385  		input = &TestFailoverInput{}
  7386  	}
  7387  
  7388  	output = &TestFailoverOutput{}
  7389  	req = c.newRequest(op, input, output)
  7390  	return
  7391  }
  7392  
  7393  // TestFailover API operation for Amazon ElastiCache.
  7394  //
  7395  // Represents the input of a TestFailover operation which test automatic failover
  7396  // on a specified node group (called shard in the console) in a replication
  7397  // group (called cluster in the console).
  7398  //
  7399  // Note the following
  7400  //
  7401  //    * A customer can use this operation to test automatic failover on up to
  7402  //    5 shards (called node groups in the ElastiCache API and Amazon CLI) in
  7403  //    any rolling 24-hour period.
  7404  //
  7405  //    * If calling this operation on shards in different clusters (called replication
  7406  //    groups in the API and CLI), the calls can be made concurrently.
  7407  //
  7408  //    * If calling this operation multiple times on different shards in the
  7409  //    same Redis (cluster mode enabled) replication group, the first node replacement
  7410  //    must complete before a subsequent call can be made.
  7411  //
  7412  //    * To determine whether the node replacement is complete you can check
  7413  //    Events using the Amazon ElastiCache console, the Amazon CLI, or the ElastiCache
  7414  //    API. Look for the following automatic failover related events, listed
  7415  //    here in order of occurrance: Replication group message: Test Failover
  7416  //    API called for node group <node-group-id> Cache cluster message: Failover
  7417  //    from primary node <primary-node-id> to replica node <node-id> completed
  7418  //    Replication group message: Failover from primary node <primary-node-id>
  7419  //    to replica node <node-id> completed Cache cluster message: Recovering
  7420  //    cache nodes <node-id> Cache cluster message: Finished recovery for cache
  7421  //    nodes <node-id> For more information see: Viewing ElastiCache Events (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ECEvents.Viewing.html)
  7422  //    in the ElastiCache User Guide DescribeEvents (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEvents.html)
  7423  //    in the ElastiCache API Reference
  7424  //
  7425  // Also see, Testing Multi-AZ (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html#auto-failover-test)
  7426  // in the ElastiCache User Guide.
  7427  //
  7428  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  7429  // with awserr.Error's Code and Message methods to get detailed information about
  7430  // the error.
  7431  //
  7432  // See the AWS API reference guide for Amazon ElastiCache's
  7433  // API operation TestFailover for usage and error information.
  7434  //
  7435  // Returned Error Codes:
  7436  //   * ErrCodeAPICallRateForCustomerExceededFault "APICallRateForCustomerExceeded"
  7437  //   The customer has exceeded the allowed rate of API calls.
  7438  //
  7439  //   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
  7440  //   The requested cluster is not in the available state.
  7441  //
  7442  //   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
  7443  //   The requested replication group is not in the available state.
  7444  //
  7445  //   * ErrCodeNodeGroupNotFoundFault "NodeGroupNotFoundFault"
  7446  //   The node group specified by the NodeGroupId parameter could not be found.
  7447  //   Please verify that the node group exists and that you spelled the NodeGroupId
  7448  //   value correctly.
  7449  //
  7450  //   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
  7451  //   The specified replication group does not exist.
  7452  //
  7453  //   * ErrCodeTestFailoverNotAvailableFault "TestFailoverNotAvailableFault"
  7454  //   The TestFailover action is not available.
  7455  //
  7456  //   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
  7457  //   The KMS key supplied is not valid.
  7458  //
  7459  //   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
  7460  //   The value for a parameter is invalid.
  7461  //
  7462  //   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
  7463  //   Two or more incompatible parameters were specified.
  7464  //
  7465  // See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/TestFailover
  7466  func (c *ElastiCache) TestFailover(input *TestFailoverInput) (*TestFailoverOutput, error) {
  7467  	req, out := c.TestFailoverRequest(input)
  7468  	return out, req.Send()
  7469  }
  7470  
  7471  // TestFailoverWithContext is the same as TestFailover with the addition of
  7472  // the ability to pass a context and additional request options.
  7473  //
  7474  // See TestFailover for details on how to use this API operation.
  7475  //
  7476  // The context must be non-nil and will be used for request cancellation. If
  7477  // the context is nil a panic will occur. In the future the SDK may create
  7478  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  7479  // for more information on using Contexts.
  7480  func (c *ElastiCache) TestFailoverWithContext(ctx aws.Context, input *TestFailoverInput, opts ...request.Option) (*TestFailoverOutput, error) {
  7481  	req, out := c.TestFailoverRequest(input)
  7482  	req.SetContext(ctx)
  7483  	req.ApplyOptions(opts...)
  7484  	return out, req.Send()
  7485  }
  7486  
  7487  // Represents the input of an AddTagsToResource operation.
  7488  type AddTagsToResourceInput struct {
  7489  	_ struct{} `type:"structure"`
  7490  
  7491  	// The Amazon Resource Name (ARN) of the resource to which the tags are to be
  7492  	// added, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
  7493  	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot. ElastiCache
  7494  	// resources are cluster and snapshot.
  7495  	//
  7496  	// For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon
  7497  	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
  7498  	//
  7499  	// ResourceName is a required field
  7500  	ResourceName *string `type:"string" required:"true"`
  7501  
  7502  	// A list of tags to be added to this resource. A tag is a key-value pair. A
  7503  	// tag key must be accompanied by a tag value, although null is accepted.
  7504  	//
  7505  	// Tags is a required field
  7506  	Tags []*Tag `locationNameList:"Tag" type:"list" required:"true"`
  7507  }
  7508  
  7509  // String 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 AddTagsToResourceInput) String() string {
  7515  	return awsutil.Prettify(s)
  7516  }
  7517  
  7518  // GoString returns the string representation.
  7519  //
  7520  // API parameter values that are decorated as "sensitive" in the API will not
  7521  // be included in the string output. The member name will be present, but the
  7522  // value will be replaced with "sensitive".
  7523  func (s AddTagsToResourceInput) GoString() string {
  7524  	return s.String()
  7525  }
  7526  
  7527  // Validate inspects the fields of the type to determine if they are valid.
  7528  func (s *AddTagsToResourceInput) Validate() error {
  7529  	invalidParams := request.ErrInvalidParams{Context: "AddTagsToResourceInput"}
  7530  	if s.ResourceName == nil {
  7531  		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
  7532  	}
  7533  	if s.Tags == nil {
  7534  		invalidParams.Add(request.NewErrParamRequired("Tags"))
  7535  	}
  7536  
  7537  	if invalidParams.Len() > 0 {
  7538  		return invalidParams
  7539  	}
  7540  	return nil
  7541  }
  7542  
  7543  // SetResourceName sets the ResourceName field's value.
  7544  func (s *AddTagsToResourceInput) SetResourceName(v string) *AddTagsToResourceInput {
  7545  	s.ResourceName = &v
  7546  	return s
  7547  }
  7548  
  7549  // SetTags sets the Tags field's value.
  7550  func (s *AddTagsToResourceInput) SetTags(v []*Tag) *AddTagsToResourceInput {
  7551  	s.Tags = v
  7552  	return s
  7553  }
  7554  
  7555  // Indicates whether the user requires a password to authenticate.
  7556  type Authentication struct {
  7557  	_ struct{} `type:"structure"`
  7558  
  7559  	// The number of passwords belonging to the user. The maximum is two.
  7560  	PasswordCount *int64 `type:"integer"`
  7561  
  7562  	// Indicates whether the user requires a password to authenticate.
  7563  	Type *string `type:"string" enum:"AuthenticationType"`
  7564  }
  7565  
  7566  // String returns the string representation.
  7567  //
  7568  // API parameter values that are decorated as "sensitive" in the API will not
  7569  // be included in the string output. The member name will be present, but the
  7570  // value will be replaced with "sensitive".
  7571  func (s Authentication) String() string {
  7572  	return awsutil.Prettify(s)
  7573  }
  7574  
  7575  // GoString returns the string representation.
  7576  //
  7577  // API parameter values that are decorated as "sensitive" in the API will not
  7578  // be included in the string output. The member name will be present, but the
  7579  // value will be replaced with "sensitive".
  7580  func (s Authentication) GoString() string {
  7581  	return s.String()
  7582  }
  7583  
  7584  // SetPasswordCount sets the PasswordCount field's value.
  7585  func (s *Authentication) SetPasswordCount(v int64) *Authentication {
  7586  	s.PasswordCount = &v
  7587  	return s
  7588  }
  7589  
  7590  // SetType sets the Type field's value.
  7591  func (s *Authentication) SetType(v string) *Authentication {
  7592  	s.Type = &v
  7593  	return s
  7594  }
  7595  
  7596  // Represents the input of an AuthorizeCacheSecurityGroupIngress operation.
  7597  type AuthorizeCacheSecurityGroupIngressInput struct {
  7598  	_ struct{} `type:"structure"`
  7599  
  7600  	// The cache security group that allows network ingress.
  7601  	//
  7602  	// CacheSecurityGroupName is a required field
  7603  	CacheSecurityGroupName *string `type:"string" required:"true"`
  7604  
  7605  	// The Amazon EC2 security group to be authorized for ingress to the cache security
  7606  	// group.
  7607  	//
  7608  	// EC2SecurityGroupName is a required field
  7609  	EC2SecurityGroupName *string `type:"string" required:"true"`
  7610  
  7611  	// The Amazon account number of the Amazon EC2 security group owner. Note that
  7612  	// this is not the same thing as an Amazon access key ID - you must provide
  7613  	// a valid Amazon account number for this parameter.
  7614  	//
  7615  	// EC2SecurityGroupOwnerId is a required field
  7616  	EC2SecurityGroupOwnerId *string `type:"string" required:"true"`
  7617  }
  7618  
  7619  // String returns the string representation.
  7620  //
  7621  // API parameter values that are decorated as "sensitive" in the API will not
  7622  // be included in the string output. The member name will be present, but the
  7623  // value will be replaced with "sensitive".
  7624  func (s AuthorizeCacheSecurityGroupIngressInput) String() string {
  7625  	return awsutil.Prettify(s)
  7626  }
  7627  
  7628  // GoString returns the string representation.
  7629  //
  7630  // API parameter values that are decorated as "sensitive" in the API will not
  7631  // be included in the string output. The member name will be present, but the
  7632  // value will be replaced with "sensitive".
  7633  func (s AuthorizeCacheSecurityGroupIngressInput) GoString() string {
  7634  	return s.String()
  7635  }
  7636  
  7637  // Validate inspects the fields of the type to determine if they are valid.
  7638  func (s *AuthorizeCacheSecurityGroupIngressInput) Validate() error {
  7639  	invalidParams := request.ErrInvalidParams{Context: "AuthorizeCacheSecurityGroupIngressInput"}
  7640  	if s.CacheSecurityGroupName == nil {
  7641  		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
  7642  	}
  7643  	if s.EC2SecurityGroupName == nil {
  7644  		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupName"))
  7645  	}
  7646  	if s.EC2SecurityGroupOwnerId == nil {
  7647  		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupOwnerId"))
  7648  	}
  7649  
  7650  	if invalidParams.Len() > 0 {
  7651  		return invalidParams
  7652  	}
  7653  	return nil
  7654  }
  7655  
  7656  // SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
  7657  func (s *AuthorizeCacheSecurityGroupIngressInput) SetCacheSecurityGroupName(v string) *AuthorizeCacheSecurityGroupIngressInput {
  7658  	s.CacheSecurityGroupName = &v
  7659  	return s
  7660  }
  7661  
  7662  // SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
  7663  func (s *AuthorizeCacheSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *AuthorizeCacheSecurityGroupIngressInput {
  7664  	s.EC2SecurityGroupName = &v
  7665  	return s
  7666  }
  7667  
  7668  // SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
  7669  func (s *AuthorizeCacheSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *AuthorizeCacheSecurityGroupIngressInput {
  7670  	s.EC2SecurityGroupOwnerId = &v
  7671  	return s
  7672  }
  7673  
  7674  type AuthorizeCacheSecurityGroupIngressOutput struct {
  7675  	_ struct{} `type:"structure"`
  7676  
  7677  	// Represents the output of one of the following operations:
  7678  	//
  7679  	//    * AuthorizeCacheSecurityGroupIngress
  7680  	//
  7681  	//    * CreateCacheSecurityGroup
  7682  	//
  7683  	//    * RevokeCacheSecurityGroupIngress
  7684  	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
  7685  }
  7686  
  7687  // String returns the string representation.
  7688  //
  7689  // API parameter values that are decorated as "sensitive" in the API will not
  7690  // be included in the string output. The member name will be present, but the
  7691  // value will be replaced with "sensitive".
  7692  func (s AuthorizeCacheSecurityGroupIngressOutput) String() string {
  7693  	return awsutil.Prettify(s)
  7694  }
  7695  
  7696  // GoString returns the string representation.
  7697  //
  7698  // API parameter values that are decorated as "sensitive" in the API will not
  7699  // be included in the string output. The member name will be present, but the
  7700  // value will be replaced with "sensitive".
  7701  func (s AuthorizeCacheSecurityGroupIngressOutput) GoString() string {
  7702  	return s.String()
  7703  }
  7704  
  7705  // SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
  7706  func (s *AuthorizeCacheSecurityGroupIngressOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *AuthorizeCacheSecurityGroupIngressOutput {
  7707  	s.CacheSecurityGroup = v
  7708  	return s
  7709  }
  7710  
  7711  // Describes an Availability Zone in which the cluster is launched.
  7712  type AvailabilityZone struct {
  7713  	_ struct{} `type:"structure"`
  7714  
  7715  	// The name of the Availability Zone.
  7716  	Name *string `type:"string"`
  7717  }
  7718  
  7719  // String returns the string representation.
  7720  //
  7721  // API parameter values that are decorated as "sensitive" in the API will not
  7722  // be included in the string output. The member name will be present, but the
  7723  // value will be replaced with "sensitive".
  7724  func (s AvailabilityZone) String() string {
  7725  	return awsutil.Prettify(s)
  7726  }
  7727  
  7728  // GoString 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 AvailabilityZone) GoString() string {
  7734  	return s.String()
  7735  }
  7736  
  7737  // SetName sets the Name field's value.
  7738  func (s *AvailabilityZone) SetName(v string) *AvailabilityZone {
  7739  	s.Name = &v
  7740  	return s
  7741  }
  7742  
  7743  type BatchApplyUpdateActionInput struct {
  7744  	_ struct{} `type:"structure"`
  7745  
  7746  	// The cache cluster IDs
  7747  	CacheClusterIds []*string `type:"list"`
  7748  
  7749  	// The replication group IDs
  7750  	ReplicationGroupIds []*string `type:"list"`
  7751  
  7752  	// The unique ID of the service update
  7753  	//
  7754  	// ServiceUpdateName is a required field
  7755  	ServiceUpdateName *string `type:"string" required:"true"`
  7756  }
  7757  
  7758  // String returns the string representation.
  7759  //
  7760  // API parameter values that are decorated as "sensitive" in the API will not
  7761  // be included in the string output. The member name will be present, but the
  7762  // value will be replaced with "sensitive".
  7763  func (s BatchApplyUpdateActionInput) String() string {
  7764  	return awsutil.Prettify(s)
  7765  }
  7766  
  7767  // GoString returns the string representation.
  7768  //
  7769  // API parameter values that are decorated as "sensitive" in the API will not
  7770  // be included in the string output. The member name will be present, but the
  7771  // value will be replaced with "sensitive".
  7772  func (s BatchApplyUpdateActionInput) GoString() string {
  7773  	return s.String()
  7774  }
  7775  
  7776  // Validate inspects the fields of the type to determine if they are valid.
  7777  func (s *BatchApplyUpdateActionInput) Validate() error {
  7778  	invalidParams := request.ErrInvalidParams{Context: "BatchApplyUpdateActionInput"}
  7779  	if s.ServiceUpdateName == nil {
  7780  		invalidParams.Add(request.NewErrParamRequired("ServiceUpdateName"))
  7781  	}
  7782  
  7783  	if invalidParams.Len() > 0 {
  7784  		return invalidParams
  7785  	}
  7786  	return nil
  7787  }
  7788  
  7789  // SetCacheClusterIds sets the CacheClusterIds field's value.
  7790  func (s *BatchApplyUpdateActionInput) SetCacheClusterIds(v []*string) *BatchApplyUpdateActionInput {
  7791  	s.CacheClusterIds = v
  7792  	return s
  7793  }
  7794  
  7795  // SetReplicationGroupIds sets the ReplicationGroupIds field's value.
  7796  func (s *BatchApplyUpdateActionInput) SetReplicationGroupIds(v []*string) *BatchApplyUpdateActionInput {
  7797  	s.ReplicationGroupIds = v
  7798  	return s
  7799  }
  7800  
  7801  // SetServiceUpdateName sets the ServiceUpdateName field's value.
  7802  func (s *BatchApplyUpdateActionInput) SetServiceUpdateName(v string) *BatchApplyUpdateActionInput {
  7803  	s.ServiceUpdateName = &v
  7804  	return s
  7805  }
  7806  
  7807  type BatchApplyUpdateActionOutput struct {
  7808  	_ struct{} `type:"structure"`
  7809  
  7810  	// Update actions that have been processed successfully
  7811  	ProcessedUpdateActions []*ProcessedUpdateAction `locationNameList:"ProcessedUpdateAction" type:"list"`
  7812  
  7813  	// Update actions that haven't been processed successfully
  7814  	UnprocessedUpdateActions []*UnprocessedUpdateAction `locationNameList:"UnprocessedUpdateAction" type:"list"`
  7815  }
  7816  
  7817  // String returns the string representation.
  7818  //
  7819  // API parameter values that are decorated as "sensitive" in the API will not
  7820  // be included in the string output. The member name will be present, but the
  7821  // value will be replaced with "sensitive".
  7822  func (s BatchApplyUpdateActionOutput) String() string {
  7823  	return awsutil.Prettify(s)
  7824  }
  7825  
  7826  // GoString returns the string representation.
  7827  //
  7828  // API parameter values that are decorated as "sensitive" in the API will not
  7829  // be included in the string output. The member name will be present, but the
  7830  // value will be replaced with "sensitive".
  7831  func (s BatchApplyUpdateActionOutput) GoString() string {
  7832  	return s.String()
  7833  }
  7834  
  7835  // SetProcessedUpdateActions sets the ProcessedUpdateActions field's value.
  7836  func (s *BatchApplyUpdateActionOutput) SetProcessedUpdateActions(v []*ProcessedUpdateAction) *BatchApplyUpdateActionOutput {
  7837  	s.ProcessedUpdateActions = v
  7838  	return s
  7839  }
  7840  
  7841  // SetUnprocessedUpdateActions sets the UnprocessedUpdateActions field's value.
  7842  func (s *BatchApplyUpdateActionOutput) SetUnprocessedUpdateActions(v []*UnprocessedUpdateAction) *BatchApplyUpdateActionOutput {
  7843  	s.UnprocessedUpdateActions = v
  7844  	return s
  7845  }
  7846  
  7847  type BatchStopUpdateActionInput struct {
  7848  	_ struct{} `type:"structure"`
  7849  
  7850  	// The cache cluster IDs
  7851  	CacheClusterIds []*string `type:"list"`
  7852  
  7853  	// The replication group IDs
  7854  	ReplicationGroupIds []*string `type:"list"`
  7855  
  7856  	// The unique ID of the service update
  7857  	//
  7858  	// ServiceUpdateName is a required field
  7859  	ServiceUpdateName *string `type:"string" required:"true"`
  7860  }
  7861  
  7862  // String returns the string representation.
  7863  //
  7864  // API parameter values that are decorated as "sensitive" in the API will not
  7865  // be included in the string output. The member name will be present, but the
  7866  // value will be replaced with "sensitive".
  7867  func (s BatchStopUpdateActionInput) String() string {
  7868  	return awsutil.Prettify(s)
  7869  }
  7870  
  7871  // GoString returns the string representation.
  7872  //
  7873  // API parameter values that are decorated as "sensitive" in the API will not
  7874  // be included in the string output. The member name will be present, but the
  7875  // value will be replaced with "sensitive".
  7876  func (s BatchStopUpdateActionInput) GoString() string {
  7877  	return s.String()
  7878  }
  7879  
  7880  // Validate inspects the fields of the type to determine if they are valid.
  7881  func (s *BatchStopUpdateActionInput) Validate() error {
  7882  	invalidParams := request.ErrInvalidParams{Context: "BatchStopUpdateActionInput"}
  7883  	if s.ServiceUpdateName == nil {
  7884  		invalidParams.Add(request.NewErrParamRequired("ServiceUpdateName"))
  7885  	}
  7886  
  7887  	if invalidParams.Len() > 0 {
  7888  		return invalidParams
  7889  	}
  7890  	return nil
  7891  }
  7892  
  7893  // SetCacheClusterIds sets the CacheClusterIds field's value.
  7894  func (s *BatchStopUpdateActionInput) SetCacheClusterIds(v []*string) *BatchStopUpdateActionInput {
  7895  	s.CacheClusterIds = v
  7896  	return s
  7897  }
  7898  
  7899  // SetReplicationGroupIds sets the ReplicationGroupIds field's value.
  7900  func (s *BatchStopUpdateActionInput) SetReplicationGroupIds(v []*string) *BatchStopUpdateActionInput {
  7901  	s.ReplicationGroupIds = v
  7902  	return s
  7903  }
  7904  
  7905  // SetServiceUpdateName sets the ServiceUpdateName field's value.
  7906  func (s *BatchStopUpdateActionInput) SetServiceUpdateName(v string) *BatchStopUpdateActionInput {
  7907  	s.ServiceUpdateName = &v
  7908  	return s
  7909  }
  7910  
  7911  type BatchStopUpdateActionOutput struct {
  7912  	_ struct{} `type:"structure"`
  7913  
  7914  	// Update actions that have been processed successfully
  7915  	ProcessedUpdateActions []*ProcessedUpdateAction `locationNameList:"ProcessedUpdateAction" type:"list"`
  7916  
  7917  	// Update actions that haven't been processed successfully
  7918  	UnprocessedUpdateActions []*UnprocessedUpdateAction `locationNameList:"UnprocessedUpdateAction" type:"list"`
  7919  }
  7920  
  7921  // String returns the string representation.
  7922  //
  7923  // API parameter values that are decorated as "sensitive" in the API will not
  7924  // be included in the string output. The member name will be present, but the
  7925  // value will be replaced with "sensitive".
  7926  func (s BatchStopUpdateActionOutput) String() string {
  7927  	return awsutil.Prettify(s)
  7928  }
  7929  
  7930  // GoString returns the string representation.
  7931  //
  7932  // API parameter values that are decorated as "sensitive" in the API will not
  7933  // be included in the string output. The member name will be present, but the
  7934  // value will be replaced with "sensitive".
  7935  func (s BatchStopUpdateActionOutput) GoString() string {
  7936  	return s.String()
  7937  }
  7938  
  7939  // SetProcessedUpdateActions sets the ProcessedUpdateActions field's value.
  7940  func (s *BatchStopUpdateActionOutput) SetProcessedUpdateActions(v []*ProcessedUpdateAction) *BatchStopUpdateActionOutput {
  7941  	s.ProcessedUpdateActions = v
  7942  	return s
  7943  }
  7944  
  7945  // SetUnprocessedUpdateActions sets the UnprocessedUpdateActions field's value.
  7946  func (s *BatchStopUpdateActionOutput) SetUnprocessedUpdateActions(v []*UnprocessedUpdateAction) *BatchStopUpdateActionOutput {
  7947  	s.UnprocessedUpdateActions = v
  7948  	return s
  7949  }
  7950  
  7951  // Contains all of the attributes of a specific cluster.
  7952  type CacheCluster struct {
  7953  	_ struct{} `type:"structure"`
  7954  
  7955  	// The ARN (Amazon Resource Name) of the cache cluster.
  7956  	ARN *string `type:"string"`
  7957  
  7958  	// A flag that enables encryption at-rest when set to true.
  7959  	//
  7960  	// You cannot modify the value of AtRestEncryptionEnabled after the cluster
  7961  	// is created. To enable at-rest encryption on a cluster you must set AtRestEncryptionEnabled
  7962  	// to true when you create a cluster.
  7963  	//
  7964  	// Required: Only available when creating a replication group in an Amazon VPC
  7965  	// using redis version 3.2.6, 4.x or later.
  7966  	//
  7967  	// Default: false
  7968  	AtRestEncryptionEnabled *bool `type:"boolean"`
  7969  
  7970  	// A flag that enables using an AuthToken (password) when issuing Redis commands.
  7971  	//
  7972  	// Default: false
  7973  	AuthTokenEnabled *bool `type:"boolean"`
  7974  
  7975  	// The date the auth token was last modified
  7976  	AuthTokenLastModifiedDate *time.Time `type:"timestamp"`
  7977  
  7978  	// This parameter is currently disabled.
  7979  	AutoMinorVersionUpgrade *bool `type:"boolean"`
  7980  
  7981  	// The date and time when the cluster was created.
  7982  	CacheClusterCreateTime *time.Time `type:"timestamp"`
  7983  
  7984  	// The user-supplied identifier of the cluster. This identifier is a unique
  7985  	// key that identifies a cluster.
  7986  	CacheClusterId *string `type:"string"`
  7987  
  7988  	// The current state of this cluster, one of the following values: available,
  7989  	// creating, deleted, deleting, incompatible-network, modifying, rebooting cluster
  7990  	// nodes, restore-failed, or snapshotting.
  7991  	CacheClusterStatus *string `type:"string"`
  7992  
  7993  	// The name of the compute and memory capacity node type for the cluster.
  7994  	//
  7995  	// The following node types are supported by ElastiCache. Generally speaking,
  7996  	// the current generation types provide more memory and computational power
  7997  	// at lower cost when compared to their equivalent previous generation counterparts.
  7998  	//
  7999  	//    * General purpose: Current generation: M6g node types (available only
  8000  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
  8001  	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
  8002  	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
  8003  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
  8004  	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
  8005  	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
  8006  	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
  8007  	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
  8008  	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
  8009  	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
  8010  	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
  8011  	//    cache.m3.2xlarge
  8012  	//
  8013  	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
  8014  	//    cache.c1.xlarge
  8015  	//
  8016  	//    * Memory optimized: Current generation: R6g node types (available only
  8017  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
  8018  	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
  8019  	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
  8020  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
  8021  	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
  8022  	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
  8023  	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
  8024  	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
  8025  	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
  8026  	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
  8027  	//
  8028  	// Additional node type info
  8029  	//
  8030  	//    * All current generation instance types are created in Amazon VPC by default.
  8031  	//
  8032  	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
  8033  	//
  8034  	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
  8035  	//
  8036  	//    * Redis configuration variables appendonly and appendfsync are not supported
  8037  	//    on Redis version 2.8.22 and later.
  8038  	CacheNodeType *string `type:"string"`
  8039  
  8040  	// A list of cache nodes that are members of the cluster.
  8041  	CacheNodes []*CacheNode `locationNameList:"CacheNode" type:"list"`
  8042  
  8043  	// Status of the cache parameter group.
  8044  	CacheParameterGroup *CacheParameterGroupStatus `type:"structure"`
  8045  
  8046  	// A list of cache security group elements, composed of name and status sub-elements.
  8047  	CacheSecurityGroups []*CacheSecurityGroupMembership `locationNameList:"CacheSecurityGroup" type:"list"`
  8048  
  8049  	// The name of the cache subnet group associated with the cluster.
  8050  	CacheSubnetGroupName *string `type:"string"`
  8051  
  8052  	// The URL of the web page where you can download the latest ElastiCache client
  8053  	// library.
  8054  	ClientDownloadLandingPage *string `type:"string"`
  8055  
  8056  	// Represents a Memcached cluster endpoint which can be used by an application
  8057  	// to connect to any node in the cluster. The configuration endpoint will always
  8058  	// have .cfg in it.
  8059  	//
  8060  	// Example: mem-3.9dvc4r.cfg.usw2.cache.amazonaws.com:11211
  8061  	ConfigurationEndpoint *Endpoint `type:"structure"`
  8062  
  8063  	// The name of the cache engine (memcached or redis) to be used for this cluster.
  8064  	Engine *string `type:"string"`
  8065  
  8066  	// The version of the cache engine that is used in this cluster.
  8067  	EngineVersion *string `type:"string"`
  8068  
  8069  	// Returns the destination, format and type of the logs.
  8070  	LogDeliveryConfigurations []*LogDeliveryConfiguration `locationNameList:"LogDeliveryConfiguration" type:"list"`
  8071  
  8072  	// Describes a notification topic and its status. Notification topics are used
  8073  	// for publishing ElastiCache events to subscribers using Amazon Simple Notification
  8074  	// Service (SNS).
  8075  	NotificationConfiguration *NotificationConfiguration `type:"structure"`
  8076  
  8077  	// The number of cache nodes in the cluster.
  8078  	//
  8079  	// For clusters running Redis, this value must be 1. For clusters running Memcached,
  8080  	// this value must be between 1 and 40.
  8081  	NumCacheNodes *int64 `type:"integer"`
  8082  
  8083  	// A group of settings that are applied to the cluster in the future, or that
  8084  	// are currently being applied.
  8085  	PendingModifiedValues *PendingModifiedValues `type:"structure"`
  8086  
  8087  	// The name of the Availability Zone in which the cluster is located or "Multiple"
  8088  	// if the cache nodes are located in different Availability Zones.
  8089  	PreferredAvailabilityZone *string `type:"string"`
  8090  
  8091  	// Specifies the weekly time range during which maintenance on the cluster is
  8092  	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
  8093  	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
  8094  	//
  8095  	// Valid values for ddd are:
  8096  	//
  8097  	//    * sun
  8098  	//
  8099  	//    * mon
  8100  	//
  8101  	//    * tue
  8102  	//
  8103  	//    * wed
  8104  	//
  8105  	//    * thu
  8106  	//
  8107  	//    * fri
  8108  	//
  8109  	//    * sat
  8110  	//
  8111  	// Example: sun:23:00-mon:01:30
  8112  	PreferredMaintenanceWindow *string `type:"string"`
  8113  
  8114  	// The outpost ARN in which the cache cluster is created.
  8115  	PreferredOutpostArn *string `type:"string"`
  8116  
  8117  	// The replication group to which this cluster belongs. If this field is empty,
  8118  	// the cluster is not associated with any replication group.
  8119  	ReplicationGroupId *string `type:"string"`
  8120  
  8121  	// A boolean value indicating whether log delivery is enabled for the replication
  8122  	// group.
  8123  	ReplicationGroupLogDeliveryEnabled *bool `type:"boolean"`
  8124  
  8125  	// A list of VPC Security Groups associated with the cluster.
  8126  	SecurityGroups []*SecurityGroupMembership `type:"list"`
  8127  
  8128  	// The number of days for which ElastiCache retains automatic cluster snapshots
  8129  	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
  8130  	// a snapshot that was taken today is retained for 5 days before being deleted.
  8131  	//
  8132  	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
  8133  	// off.
  8134  	SnapshotRetentionLimit *int64 `type:"integer"`
  8135  
  8136  	// The daily time range (in UTC) during which ElastiCache begins taking a daily
  8137  	// snapshot of your cluster.
  8138  	//
  8139  	// Example: 05:00-09:00
  8140  	SnapshotWindow *string `type:"string"`
  8141  
  8142  	// A flag that enables in-transit encryption when set to true.
  8143  	//
  8144  	// You cannot modify the value of TransitEncryptionEnabled after the cluster
  8145  	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
  8146  	// to true when you create a cluster.
  8147  	//
  8148  	// Required: Only available when creating a replication group in an Amazon VPC
  8149  	// using redis version 3.2.6, 4.x or later.
  8150  	//
  8151  	// Default: false
  8152  	TransitEncryptionEnabled *bool `type:"boolean"`
  8153  }
  8154  
  8155  // String returns the string representation.
  8156  //
  8157  // API parameter values that are decorated as "sensitive" in the API will not
  8158  // be included in the string output. The member name will be present, but the
  8159  // value will be replaced with "sensitive".
  8160  func (s CacheCluster) String() string {
  8161  	return awsutil.Prettify(s)
  8162  }
  8163  
  8164  // GoString returns the string representation.
  8165  //
  8166  // API parameter values that are decorated as "sensitive" in the API will not
  8167  // be included in the string output. The member name will be present, but the
  8168  // value will be replaced with "sensitive".
  8169  func (s CacheCluster) GoString() string {
  8170  	return s.String()
  8171  }
  8172  
  8173  // SetARN sets the ARN field's value.
  8174  func (s *CacheCluster) SetARN(v string) *CacheCluster {
  8175  	s.ARN = &v
  8176  	return s
  8177  }
  8178  
  8179  // SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
  8180  func (s *CacheCluster) SetAtRestEncryptionEnabled(v bool) *CacheCluster {
  8181  	s.AtRestEncryptionEnabled = &v
  8182  	return s
  8183  }
  8184  
  8185  // SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
  8186  func (s *CacheCluster) SetAuthTokenEnabled(v bool) *CacheCluster {
  8187  	s.AuthTokenEnabled = &v
  8188  	return s
  8189  }
  8190  
  8191  // SetAuthTokenLastModifiedDate sets the AuthTokenLastModifiedDate field's value.
  8192  func (s *CacheCluster) SetAuthTokenLastModifiedDate(v time.Time) *CacheCluster {
  8193  	s.AuthTokenLastModifiedDate = &v
  8194  	return s
  8195  }
  8196  
  8197  // SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
  8198  func (s *CacheCluster) SetAutoMinorVersionUpgrade(v bool) *CacheCluster {
  8199  	s.AutoMinorVersionUpgrade = &v
  8200  	return s
  8201  }
  8202  
  8203  // SetCacheClusterCreateTime sets the CacheClusterCreateTime field's value.
  8204  func (s *CacheCluster) SetCacheClusterCreateTime(v time.Time) *CacheCluster {
  8205  	s.CacheClusterCreateTime = &v
  8206  	return s
  8207  }
  8208  
  8209  // SetCacheClusterId sets the CacheClusterId field's value.
  8210  func (s *CacheCluster) SetCacheClusterId(v string) *CacheCluster {
  8211  	s.CacheClusterId = &v
  8212  	return s
  8213  }
  8214  
  8215  // SetCacheClusterStatus sets the CacheClusterStatus field's value.
  8216  func (s *CacheCluster) SetCacheClusterStatus(v string) *CacheCluster {
  8217  	s.CacheClusterStatus = &v
  8218  	return s
  8219  }
  8220  
  8221  // SetCacheNodeType sets the CacheNodeType field's value.
  8222  func (s *CacheCluster) SetCacheNodeType(v string) *CacheCluster {
  8223  	s.CacheNodeType = &v
  8224  	return s
  8225  }
  8226  
  8227  // SetCacheNodes sets the CacheNodes field's value.
  8228  func (s *CacheCluster) SetCacheNodes(v []*CacheNode) *CacheCluster {
  8229  	s.CacheNodes = v
  8230  	return s
  8231  }
  8232  
  8233  // SetCacheParameterGroup sets the CacheParameterGroup field's value.
  8234  func (s *CacheCluster) SetCacheParameterGroup(v *CacheParameterGroupStatus) *CacheCluster {
  8235  	s.CacheParameterGroup = v
  8236  	return s
  8237  }
  8238  
  8239  // SetCacheSecurityGroups sets the CacheSecurityGroups field's value.
  8240  func (s *CacheCluster) SetCacheSecurityGroups(v []*CacheSecurityGroupMembership) *CacheCluster {
  8241  	s.CacheSecurityGroups = v
  8242  	return s
  8243  }
  8244  
  8245  // SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
  8246  func (s *CacheCluster) SetCacheSubnetGroupName(v string) *CacheCluster {
  8247  	s.CacheSubnetGroupName = &v
  8248  	return s
  8249  }
  8250  
  8251  // SetClientDownloadLandingPage sets the ClientDownloadLandingPage field's value.
  8252  func (s *CacheCluster) SetClientDownloadLandingPage(v string) *CacheCluster {
  8253  	s.ClientDownloadLandingPage = &v
  8254  	return s
  8255  }
  8256  
  8257  // SetConfigurationEndpoint sets the ConfigurationEndpoint field's value.
  8258  func (s *CacheCluster) SetConfigurationEndpoint(v *Endpoint) *CacheCluster {
  8259  	s.ConfigurationEndpoint = v
  8260  	return s
  8261  }
  8262  
  8263  // SetEngine sets the Engine field's value.
  8264  func (s *CacheCluster) SetEngine(v string) *CacheCluster {
  8265  	s.Engine = &v
  8266  	return s
  8267  }
  8268  
  8269  // SetEngineVersion sets the EngineVersion field's value.
  8270  func (s *CacheCluster) SetEngineVersion(v string) *CacheCluster {
  8271  	s.EngineVersion = &v
  8272  	return s
  8273  }
  8274  
  8275  // SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
  8276  func (s *CacheCluster) SetLogDeliveryConfigurations(v []*LogDeliveryConfiguration) *CacheCluster {
  8277  	s.LogDeliveryConfigurations = v
  8278  	return s
  8279  }
  8280  
  8281  // SetNotificationConfiguration sets the NotificationConfiguration field's value.
  8282  func (s *CacheCluster) SetNotificationConfiguration(v *NotificationConfiguration) *CacheCluster {
  8283  	s.NotificationConfiguration = v
  8284  	return s
  8285  }
  8286  
  8287  // SetNumCacheNodes sets the NumCacheNodes field's value.
  8288  func (s *CacheCluster) SetNumCacheNodes(v int64) *CacheCluster {
  8289  	s.NumCacheNodes = &v
  8290  	return s
  8291  }
  8292  
  8293  // SetPendingModifiedValues sets the PendingModifiedValues field's value.
  8294  func (s *CacheCluster) SetPendingModifiedValues(v *PendingModifiedValues) *CacheCluster {
  8295  	s.PendingModifiedValues = v
  8296  	return s
  8297  }
  8298  
  8299  // SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
  8300  func (s *CacheCluster) SetPreferredAvailabilityZone(v string) *CacheCluster {
  8301  	s.PreferredAvailabilityZone = &v
  8302  	return s
  8303  }
  8304  
  8305  // SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
  8306  func (s *CacheCluster) SetPreferredMaintenanceWindow(v string) *CacheCluster {
  8307  	s.PreferredMaintenanceWindow = &v
  8308  	return s
  8309  }
  8310  
  8311  // SetPreferredOutpostArn sets the PreferredOutpostArn field's value.
  8312  func (s *CacheCluster) SetPreferredOutpostArn(v string) *CacheCluster {
  8313  	s.PreferredOutpostArn = &v
  8314  	return s
  8315  }
  8316  
  8317  // SetReplicationGroupId sets the ReplicationGroupId field's value.
  8318  func (s *CacheCluster) SetReplicationGroupId(v string) *CacheCluster {
  8319  	s.ReplicationGroupId = &v
  8320  	return s
  8321  }
  8322  
  8323  // SetReplicationGroupLogDeliveryEnabled sets the ReplicationGroupLogDeliveryEnabled field's value.
  8324  func (s *CacheCluster) SetReplicationGroupLogDeliveryEnabled(v bool) *CacheCluster {
  8325  	s.ReplicationGroupLogDeliveryEnabled = &v
  8326  	return s
  8327  }
  8328  
  8329  // SetSecurityGroups sets the SecurityGroups field's value.
  8330  func (s *CacheCluster) SetSecurityGroups(v []*SecurityGroupMembership) *CacheCluster {
  8331  	s.SecurityGroups = v
  8332  	return s
  8333  }
  8334  
  8335  // SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
  8336  func (s *CacheCluster) SetSnapshotRetentionLimit(v int64) *CacheCluster {
  8337  	s.SnapshotRetentionLimit = &v
  8338  	return s
  8339  }
  8340  
  8341  // SetSnapshotWindow sets the SnapshotWindow field's value.
  8342  func (s *CacheCluster) SetSnapshotWindow(v string) *CacheCluster {
  8343  	s.SnapshotWindow = &v
  8344  	return s
  8345  }
  8346  
  8347  // SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
  8348  func (s *CacheCluster) SetTransitEncryptionEnabled(v bool) *CacheCluster {
  8349  	s.TransitEncryptionEnabled = &v
  8350  	return s
  8351  }
  8352  
  8353  // Provides all of the details about a particular cache engine version.
  8354  type CacheEngineVersion struct {
  8355  	_ struct{} `type:"structure"`
  8356  
  8357  	// The description of the cache engine.
  8358  	CacheEngineDescription *string `type:"string"`
  8359  
  8360  	// The description of the cache engine version.
  8361  	CacheEngineVersionDescription *string `type:"string"`
  8362  
  8363  	// The name of the cache parameter group family associated with this cache engine.
  8364  	//
  8365  	// Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 |
  8366  	// redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |
  8367  	CacheParameterGroupFamily *string `type:"string"`
  8368  
  8369  	// The name of the cache engine.
  8370  	Engine *string `type:"string"`
  8371  
  8372  	// The version number of the cache engine.
  8373  	EngineVersion *string `type:"string"`
  8374  }
  8375  
  8376  // String returns the string representation.
  8377  //
  8378  // API parameter values that are decorated as "sensitive" in the API will not
  8379  // be included in the string output. The member name will be present, but the
  8380  // value will be replaced with "sensitive".
  8381  func (s CacheEngineVersion) String() string {
  8382  	return awsutil.Prettify(s)
  8383  }
  8384  
  8385  // GoString returns the string representation.
  8386  //
  8387  // API parameter values that are decorated as "sensitive" in the API will not
  8388  // be included in the string output. The member name will be present, but the
  8389  // value will be replaced with "sensitive".
  8390  func (s CacheEngineVersion) GoString() string {
  8391  	return s.String()
  8392  }
  8393  
  8394  // SetCacheEngineDescription sets the CacheEngineDescription field's value.
  8395  func (s *CacheEngineVersion) SetCacheEngineDescription(v string) *CacheEngineVersion {
  8396  	s.CacheEngineDescription = &v
  8397  	return s
  8398  }
  8399  
  8400  // SetCacheEngineVersionDescription sets the CacheEngineVersionDescription field's value.
  8401  func (s *CacheEngineVersion) SetCacheEngineVersionDescription(v string) *CacheEngineVersion {
  8402  	s.CacheEngineVersionDescription = &v
  8403  	return s
  8404  }
  8405  
  8406  // SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
  8407  func (s *CacheEngineVersion) SetCacheParameterGroupFamily(v string) *CacheEngineVersion {
  8408  	s.CacheParameterGroupFamily = &v
  8409  	return s
  8410  }
  8411  
  8412  // SetEngine sets the Engine field's value.
  8413  func (s *CacheEngineVersion) SetEngine(v string) *CacheEngineVersion {
  8414  	s.Engine = &v
  8415  	return s
  8416  }
  8417  
  8418  // SetEngineVersion sets the EngineVersion field's value.
  8419  func (s *CacheEngineVersion) SetEngineVersion(v string) *CacheEngineVersion {
  8420  	s.EngineVersion = &v
  8421  	return s
  8422  }
  8423  
  8424  // Represents an individual cache node within a cluster. Each cache node runs
  8425  // its own instance of the cluster's protocol-compliant caching software - either
  8426  // Memcached or Redis.
  8427  //
  8428  // The following node types are supported by ElastiCache. Generally speaking,
  8429  // the current generation types provide more memory and computational power
  8430  // at lower cost when compared to their equivalent previous generation counterparts.
  8431  //
  8432  //    * General purpose: Current generation: M6g node types (available only
  8433  //    for Redis engine version 5.0.6 onward and for Memcached engine version
  8434  //    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
  8435  //    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
  8436  //    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
  8437  //    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
  8438  //    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
  8439  //    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
  8440  //    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
  8441  //    cache.t2.medium Previous generation: (not recommended) T1 node types:
  8442  //    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
  8443  //    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
  8444  //    cache.m3.2xlarge
  8445  //
  8446  //    * Compute optimized: Previous generation: (not recommended) C1 node types:
  8447  //    cache.c1.xlarge
  8448  //
  8449  //    * Memory optimized: Current generation: R6g node types (available only
  8450  //    for Redis engine version 5.0.6 onward and for Memcached engine version
  8451  //    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
  8452  //    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
  8453  //    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
  8454  //    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
  8455  //    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
  8456  //    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
  8457  //    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
  8458  //    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
  8459  //    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
  8460  //
  8461  // Additional node type info
  8462  //
  8463  //    * All current generation instance types are created in Amazon VPC by default.
  8464  //
  8465  //    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
  8466  //
  8467  //    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
  8468  //
  8469  //    * Redis configuration variables appendonly and appendfsync are not supported
  8470  //    on Redis version 2.8.22 and later.
  8471  type CacheNode struct {
  8472  	_ struct{} `type:"structure"`
  8473  
  8474  	// The date and time when the cache node was created.
  8475  	CacheNodeCreateTime *time.Time `type:"timestamp"`
  8476  
  8477  	// The cache node identifier. A node ID is a numeric identifier (0001, 0002,
  8478  	// etc.). The combination of cluster ID and node ID uniquely identifies every
  8479  	// cache node used in a customer's Amazon account.
  8480  	CacheNodeId *string `type:"string"`
  8481  
  8482  	// The current state of this cache node, one of the following values: available,
  8483  	// creating, rebooting, or deleting.
  8484  	CacheNodeStatus *string `type:"string"`
  8485  
  8486  	// The Availability Zone where this node was created and now resides.
  8487  	CustomerAvailabilityZone *string `type:"string"`
  8488  
  8489  	// The customer outpost ARN of the cache node.
  8490  	CustomerOutpostArn *string `type:"string"`
  8491  
  8492  	// The hostname for connecting to this cache node.
  8493  	Endpoint *Endpoint `type:"structure"`
  8494  
  8495  	// The status of the parameter group applied to this cache node.
  8496  	ParameterGroupStatus *string `type:"string"`
  8497  
  8498  	// The ID of the primary node to which this read replica node is synchronized.
  8499  	// If this field is empty, this node is not associated with a primary cluster.
  8500  	SourceCacheNodeId *string `type:"string"`
  8501  }
  8502  
  8503  // String 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 CacheNode) String() string {
  8509  	return awsutil.Prettify(s)
  8510  }
  8511  
  8512  // GoString returns the string representation.
  8513  //
  8514  // API parameter values that are decorated as "sensitive" in the API will not
  8515  // be included in the string output. The member name will be present, but the
  8516  // value will be replaced with "sensitive".
  8517  func (s CacheNode) GoString() string {
  8518  	return s.String()
  8519  }
  8520  
  8521  // SetCacheNodeCreateTime sets the CacheNodeCreateTime field's value.
  8522  func (s *CacheNode) SetCacheNodeCreateTime(v time.Time) *CacheNode {
  8523  	s.CacheNodeCreateTime = &v
  8524  	return s
  8525  }
  8526  
  8527  // SetCacheNodeId sets the CacheNodeId field's value.
  8528  func (s *CacheNode) SetCacheNodeId(v string) *CacheNode {
  8529  	s.CacheNodeId = &v
  8530  	return s
  8531  }
  8532  
  8533  // SetCacheNodeStatus sets the CacheNodeStatus field's value.
  8534  func (s *CacheNode) SetCacheNodeStatus(v string) *CacheNode {
  8535  	s.CacheNodeStatus = &v
  8536  	return s
  8537  }
  8538  
  8539  // SetCustomerAvailabilityZone sets the CustomerAvailabilityZone field's value.
  8540  func (s *CacheNode) SetCustomerAvailabilityZone(v string) *CacheNode {
  8541  	s.CustomerAvailabilityZone = &v
  8542  	return s
  8543  }
  8544  
  8545  // SetCustomerOutpostArn sets the CustomerOutpostArn field's value.
  8546  func (s *CacheNode) SetCustomerOutpostArn(v string) *CacheNode {
  8547  	s.CustomerOutpostArn = &v
  8548  	return s
  8549  }
  8550  
  8551  // SetEndpoint sets the Endpoint field's value.
  8552  func (s *CacheNode) SetEndpoint(v *Endpoint) *CacheNode {
  8553  	s.Endpoint = v
  8554  	return s
  8555  }
  8556  
  8557  // SetParameterGroupStatus sets the ParameterGroupStatus field's value.
  8558  func (s *CacheNode) SetParameterGroupStatus(v string) *CacheNode {
  8559  	s.ParameterGroupStatus = &v
  8560  	return s
  8561  }
  8562  
  8563  // SetSourceCacheNodeId sets the SourceCacheNodeId field's value.
  8564  func (s *CacheNode) SetSourceCacheNodeId(v string) *CacheNode {
  8565  	s.SourceCacheNodeId = &v
  8566  	return s
  8567  }
  8568  
  8569  // A parameter that has a different value for each cache node type it is applied
  8570  // to. For example, in a Redis cluster, a cache.m1.large cache node type would
  8571  // have a larger maxmemory value than a cache.m1.small type.
  8572  type CacheNodeTypeSpecificParameter struct {
  8573  	_ struct{} `type:"structure"`
  8574  
  8575  	// The valid range of values for the parameter.
  8576  	AllowedValues *string `type:"string"`
  8577  
  8578  	// A list of cache node types and their corresponding values for this parameter.
  8579  	CacheNodeTypeSpecificValues []*CacheNodeTypeSpecificValue `locationNameList:"CacheNodeTypeSpecificValue" type:"list"`
  8580  
  8581  	// Indicates whether a change to the parameter is applied immediately or requires
  8582  	// a reboot for the change to be applied. You can force a reboot or wait until
  8583  	// the next maintenance window's reboot. For more information, see Rebooting
  8584  	// a Cluster (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html).
  8585  	ChangeType *string `type:"string" enum:"ChangeType"`
  8586  
  8587  	// The valid data type for the parameter.
  8588  	DataType *string `type:"string"`
  8589  
  8590  	// A description of the parameter.
  8591  	Description *string `type:"string"`
  8592  
  8593  	// Indicates whether (true) or not (false) the parameter can be modified. Some
  8594  	// parameters have security or operational implications that prevent them from
  8595  	// being changed.
  8596  	IsModifiable *bool `type:"boolean"`
  8597  
  8598  	// The earliest cache engine version to which the parameter can apply.
  8599  	MinimumEngineVersion *string `type:"string"`
  8600  
  8601  	// The name of the parameter.
  8602  	ParameterName *string `type:"string"`
  8603  
  8604  	// The source of the parameter value.
  8605  	Source *string `type:"string"`
  8606  }
  8607  
  8608  // String returns the string representation.
  8609  //
  8610  // API parameter values that are decorated as "sensitive" in the API will not
  8611  // be included in the string output. The member name will be present, but the
  8612  // value will be replaced with "sensitive".
  8613  func (s CacheNodeTypeSpecificParameter) String() string {
  8614  	return awsutil.Prettify(s)
  8615  }
  8616  
  8617  // GoString returns the string representation.
  8618  //
  8619  // API parameter values that are decorated as "sensitive" in the API will not
  8620  // be included in the string output. The member name will be present, but the
  8621  // value will be replaced with "sensitive".
  8622  func (s CacheNodeTypeSpecificParameter) GoString() string {
  8623  	return s.String()
  8624  }
  8625  
  8626  // SetAllowedValues sets the AllowedValues field's value.
  8627  func (s *CacheNodeTypeSpecificParameter) SetAllowedValues(v string) *CacheNodeTypeSpecificParameter {
  8628  	s.AllowedValues = &v
  8629  	return s
  8630  }
  8631  
  8632  // SetCacheNodeTypeSpecificValues sets the CacheNodeTypeSpecificValues field's value.
  8633  func (s *CacheNodeTypeSpecificParameter) SetCacheNodeTypeSpecificValues(v []*CacheNodeTypeSpecificValue) *CacheNodeTypeSpecificParameter {
  8634  	s.CacheNodeTypeSpecificValues = v
  8635  	return s
  8636  }
  8637  
  8638  // SetChangeType sets the ChangeType field's value.
  8639  func (s *CacheNodeTypeSpecificParameter) SetChangeType(v string) *CacheNodeTypeSpecificParameter {
  8640  	s.ChangeType = &v
  8641  	return s
  8642  }
  8643  
  8644  // SetDataType sets the DataType field's value.
  8645  func (s *CacheNodeTypeSpecificParameter) SetDataType(v string) *CacheNodeTypeSpecificParameter {
  8646  	s.DataType = &v
  8647  	return s
  8648  }
  8649  
  8650  // SetDescription sets the Description field's value.
  8651  func (s *CacheNodeTypeSpecificParameter) SetDescription(v string) *CacheNodeTypeSpecificParameter {
  8652  	s.Description = &v
  8653  	return s
  8654  }
  8655  
  8656  // SetIsModifiable sets the IsModifiable field's value.
  8657  func (s *CacheNodeTypeSpecificParameter) SetIsModifiable(v bool) *CacheNodeTypeSpecificParameter {
  8658  	s.IsModifiable = &v
  8659  	return s
  8660  }
  8661  
  8662  // SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
  8663  func (s *CacheNodeTypeSpecificParameter) SetMinimumEngineVersion(v string) *CacheNodeTypeSpecificParameter {
  8664  	s.MinimumEngineVersion = &v
  8665  	return s
  8666  }
  8667  
  8668  // SetParameterName sets the ParameterName field's value.
  8669  func (s *CacheNodeTypeSpecificParameter) SetParameterName(v string) *CacheNodeTypeSpecificParameter {
  8670  	s.ParameterName = &v
  8671  	return s
  8672  }
  8673  
  8674  // SetSource sets the Source field's value.
  8675  func (s *CacheNodeTypeSpecificParameter) SetSource(v string) *CacheNodeTypeSpecificParameter {
  8676  	s.Source = &v
  8677  	return s
  8678  }
  8679  
  8680  // A value that applies only to a certain cache node type.
  8681  type CacheNodeTypeSpecificValue struct {
  8682  	_ struct{} `type:"structure"`
  8683  
  8684  	// The cache node type for which this value applies.
  8685  	CacheNodeType *string `type:"string"`
  8686  
  8687  	// The value for the cache node type.
  8688  	Value *string `type:"string"`
  8689  }
  8690  
  8691  // String returns the string representation.
  8692  //
  8693  // API parameter values that are decorated as "sensitive" in the API will not
  8694  // be included in the string output. The member name will be present, but the
  8695  // value will be replaced with "sensitive".
  8696  func (s CacheNodeTypeSpecificValue) String() string {
  8697  	return awsutil.Prettify(s)
  8698  }
  8699  
  8700  // GoString returns the string representation.
  8701  //
  8702  // API parameter values that are decorated as "sensitive" in the API will not
  8703  // be included in the string output. The member name will be present, but the
  8704  // value will be replaced with "sensitive".
  8705  func (s CacheNodeTypeSpecificValue) GoString() string {
  8706  	return s.String()
  8707  }
  8708  
  8709  // SetCacheNodeType sets the CacheNodeType field's value.
  8710  func (s *CacheNodeTypeSpecificValue) SetCacheNodeType(v string) *CacheNodeTypeSpecificValue {
  8711  	s.CacheNodeType = &v
  8712  	return s
  8713  }
  8714  
  8715  // SetValue sets the Value field's value.
  8716  func (s *CacheNodeTypeSpecificValue) SetValue(v string) *CacheNodeTypeSpecificValue {
  8717  	s.Value = &v
  8718  	return s
  8719  }
  8720  
  8721  // The status of the service update on the cache node
  8722  type CacheNodeUpdateStatus struct {
  8723  	_ struct{} `type:"structure"`
  8724  
  8725  	// The node ID of the cache cluster
  8726  	CacheNodeId *string `type:"string"`
  8727  
  8728  	// The deletion date of the node
  8729  	NodeDeletionDate *time.Time `type:"timestamp"`
  8730  
  8731  	// The end date of the update for a node
  8732  	NodeUpdateEndDate *time.Time `type:"timestamp"`
  8733  
  8734  	// Reflects whether the update was initiated by the customer or automatically
  8735  	// applied
  8736  	NodeUpdateInitiatedBy *string `type:"string" enum:"NodeUpdateInitiatedBy"`
  8737  
  8738  	// The date when the update is triggered
  8739  	NodeUpdateInitiatedDate *time.Time `type:"timestamp"`
  8740  
  8741  	// The start date of the update for a node
  8742  	NodeUpdateStartDate *time.Time `type:"timestamp"`
  8743  
  8744  	// The update status of the node
  8745  	NodeUpdateStatus *string `type:"string" enum:"NodeUpdateStatus"`
  8746  
  8747  	// The date when the NodeUpdateStatus was last modified>
  8748  	NodeUpdateStatusModifiedDate *time.Time `type:"timestamp"`
  8749  }
  8750  
  8751  // String returns the string representation.
  8752  //
  8753  // API parameter values that are decorated as "sensitive" in the API will not
  8754  // be included in the string output. The member name will be present, but the
  8755  // value will be replaced with "sensitive".
  8756  func (s CacheNodeUpdateStatus) String() string {
  8757  	return awsutil.Prettify(s)
  8758  }
  8759  
  8760  // GoString returns the string representation.
  8761  //
  8762  // API parameter values that are decorated as "sensitive" in the API will not
  8763  // be included in the string output. The member name will be present, but the
  8764  // value will be replaced with "sensitive".
  8765  func (s CacheNodeUpdateStatus) GoString() string {
  8766  	return s.String()
  8767  }
  8768  
  8769  // SetCacheNodeId sets the CacheNodeId field's value.
  8770  func (s *CacheNodeUpdateStatus) SetCacheNodeId(v string) *CacheNodeUpdateStatus {
  8771  	s.CacheNodeId = &v
  8772  	return s
  8773  }
  8774  
  8775  // SetNodeDeletionDate sets the NodeDeletionDate field's value.
  8776  func (s *CacheNodeUpdateStatus) SetNodeDeletionDate(v time.Time) *CacheNodeUpdateStatus {
  8777  	s.NodeDeletionDate = &v
  8778  	return s
  8779  }
  8780  
  8781  // SetNodeUpdateEndDate sets the NodeUpdateEndDate field's value.
  8782  func (s *CacheNodeUpdateStatus) SetNodeUpdateEndDate(v time.Time) *CacheNodeUpdateStatus {
  8783  	s.NodeUpdateEndDate = &v
  8784  	return s
  8785  }
  8786  
  8787  // SetNodeUpdateInitiatedBy sets the NodeUpdateInitiatedBy field's value.
  8788  func (s *CacheNodeUpdateStatus) SetNodeUpdateInitiatedBy(v string) *CacheNodeUpdateStatus {
  8789  	s.NodeUpdateInitiatedBy = &v
  8790  	return s
  8791  }
  8792  
  8793  // SetNodeUpdateInitiatedDate sets the NodeUpdateInitiatedDate field's value.
  8794  func (s *CacheNodeUpdateStatus) SetNodeUpdateInitiatedDate(v time.Time) *CacheNodeUpdateStatus {
  8795  	s.NodeUpdateInitiatedDate = &v
  8796  	return s
  8797  }
  8798  
  8799  // SetNodeUpdateStartDate sets the NodeUpdateStartDate field's value.
  8800  func (s *CacheNodeUpdateStatus) SetNodeUpdateStartDate(v time.Time) *CacheNodeUpdateStatus {
  8801  	s.NodeUpdateStartDate = &v
  8802  	return s
  8803  }
  8804  
  8805  // SetNodeUpdateStatus sets the NodeUpdateStatus field's value.
  8806  func (s *CacheNodeUpdateStatus) SetNodeUpdateStatus(v string) *CacheNodeUpdateStatus {
  8807  	s.NodeUpdateStatus = &v
  8808  	return s
  8809  }
  8810  
  8811  // SetNodeUpdateStatusModifiedDate sets the NodeUpdateStatusModifiedDate field's value.
  8812  func (s *CacheNodeUpdateStatus) SetNodeUpdateStatusModifiedDate(v time.Time) *CacheNodeUpdateStatus {
  8813  	s.NodeUpdateStatusModifiedDate = &v
  8814  	return s
  8815  }
  8816  
  8817  // Represents the output of a CreateCacheParameterGroup operation.
  8818  type CacheParameterGroup struct {
  8819  	_ struct{} `type:"structure"`
  8820  
  8821  	// The ARN (Amazon Resource Name) of the cache parameter group.
  8822  	ARN *string `type:"string"`
  8823  
  8824  	// The name of the cache parameter group family that this cache parameter group
  8825  	// is compatible with.
  8826  	//
  8827  	// Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 |
  8828  	// redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |
  8829  	CacheParameterGroupFamily *string `type:"string"`
  8830  
  8831  	// The name of the cache parameter group.
  8832  	CacheParameterGroupName *string `type:"string"`
  8833  
  8834  	// The description for this cache parameter group.
  8835  	Description *string `type:"string"`
  8836  
  8837  	// Indicates whether the parameter group is associated with a Global datastore
  8838  	IsGlobal *bool `type:"boolean"`
  8839  }
  8840  
  8841  // String returns the string representation.
  8842  //
  8843  // API parameter values that are decorated as "sensitive" in the API will not
  8844  // be included in the string output. The member name will be present, but the
  8845  // value will be replaced with "sensitive".
  8846  func (s CacheParameterGroup) String() string {
  8847  	return awsutil.Prettify(s)
  8848  }
  8849  
  8850  // GoString returns the string representation.
  8851  //
  8852  // API parameter values that are decorated as "sensitive" in the API will not
  8853  // be included in the string output. The member name will be present, but the
  8854  // value will be replaced with "sensitive".
  8855  func (s CacheParameterGroup) GoString() string {
  8856  	return s.String()
  8857  }
  8858  
  8859  // SetARN sets the ARN field's value.
  8860  func (s *CacheParameterGroup) SetARN(v string) *CacheParameterGroup {
  8861  	s.ARN = &v
  8862  	return s
  8863  }
  8864  
  8865  // SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
  8866  func (s *CacheParameterGroup) SetCacheParameterGroupFamily(v string) *CacheParameterGroup {
  8867  	s.CacheParameterGroupFamily = &v
  8868  	return s
  8869  }
  8870  
  8871  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
  8872  func (s *CacheParameterGroup) SetCacheParameterGroupName(v string) *CacheParameterGroup {
  8873  	s.CacheParameterGroupName = &v
  8874  	return s
  8875  }
  8876  
  8877  // SetDescription sets the Description field's value.
  8878  func (s *CacheParameterGroup) SetDescription(v string) *CacheParameterGroup {
  8879  	s.Description = &v
  8880  	return s
  8881  }
  8882  
  8883  // SetIsGlobal sets the IsGlobal field's value.
  8884  func (s *CacheParameterGroup) SetIsGlobal(v bool) *CacheParameterGroup {
  8885  	s.IsGlobal = &v
  8886  	return s
  8887  }
  8888  
  8889  // Represents the output of one of the following operations:
  8890  //
  8891  //    * ModifyCacheParameterGroup
  8892  //
  8893  //    * ResetCacheParameterGroup
  8894  type CacheParameterGroupNameMessage struct {
  8895  	_ struct{} `type:"structure"`
  8896  
  8897  	// The name of the cache parameter group.
  8898  	CacheParameterGroupName *string `type:"string"`
  8899  }
  8900  
  8901  // String returns the string representation.
  8902  //
  8903  // API parameter values that are decorated as "sensitive" in the API will not
  8904  // be included in the string output. The member name will be present, but the
  8905  // value will be replaced with "sensitive".
  8906  func (s CacheParameterGroupNameMessage) String() string {
  8907  	return awsutil.Prettify(s)
  8908  }
  8909  
  8910  // GoString returns the string representation.
  8911  //
  8912  // API parameter values that are decorated as "sensitive" in the API will not
  8913  // be included in the string output. The member name will be present, but the
  8914  // value will be replaced with "sensitive".
  8915  func (s CacheParameterGroupNameMessage) GoString() string {
  8916  	return s.String()
  8917  }
  8918  
  8919  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
  8920  func (s *CacheParameterGroupNameMessage) SetCacheParameterGroupName(v string) *CacheParameterGroupNameMessage {
  8921  	s.CacheParameterGroupName = &v
  8922  	return s
  8923  }
  8924  
  8925  // Status of the cache parameter group.
  8926  type CacheParameterGroupStatus struct {
  8927  	_ struct{} `type:"structure"`
  8928  
  8929  	// A list of the cache node IDs which need to be rebooted for parameter changes
  8930  	// to be applied. A node ID is a numeric identifier (0001, 0002, etc.).
  8931  	CacheNodeIdsToReboot []*string `locationNameList:"CacheNodeId" type:"list"`
  8932  
  8933  	// The name of the cache parameter group.
  8934  	CacheParameterGroupName *string `type:"string"`
  8935  
  8936  	// The status of parameter updates.
  8937  	ParameterApplyStatus *string `type:"string"`
  8938  }
  8939  
  8940  // String returns the string representation.
  8941  //
  8942  // API parameter values that are decorated as "sensitive" in the API will not
  8943  // be included in the string output. The member name will be present, but the
  8944  // value will be replaced with "sensitive".
  8945  func (s CacheParameterGroupStatus) String() string {
  8946  	return awsutil.Prettify(s)
  8947  }
  8948  
  8949  // GoString returns the string representation.
  8950  //
  8951  // API parameter values that are decorated as "sensitive" in the API will not
  8952  // be included in the string output. The member name will be present, but the
  8953  // value will be replaced with "sensitive".
  8954  func (s CacheParameterGroupStatus) GoString() string {
  8955  	return s.String()
  8956  }
  8957  
  8958  // SetCacheNodeIdsToReboot sets the CacheNodeIdsToReboot field's value.
  8959  func (s *CacheParameterGroupStatus) SetCacheNodeIdsToReboot(v []*string) *CacheParameterGroupStatus {
  8960  	s.CacheNodeIdsToReboot = v
  8961  	return s
  8962  }
  8963  
  8964  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
  8965  func (s *CacheParameterGroupStatus) SetCacheParameterGroupName(v string) *CacheParameterGroupStatus {
  8966  	s.CacheParameterGroupName = &v
  8967  	return s
  8968  }
  8969  
  8970  // SetParameterApplyStatus sets the ParameterApplyStatus field's value.
  8971  func (s *CacheParameterGroupStatus) SetParameterApplyStatus(v string) *CacheParameterGroupStatus {
  8972  	s.ParameterApplyStatus = &v
  8973  	return s
  8974  }
  8975  
  8976  // Represents the output of one of the following operations:
  8977  //
  8978  //    * AuthorizeCacheSecurityGroupIngress
  8979  //
  8980  //    * CreateCacheSecurityGroup
  8981  //
  8982  //    * RevokeCacheSecurityGroupIngress
  8983  type CacheSecurityGroup struct {
  8984  	_ struct{} `type:"structure"`
  8985  
  8986  	// The ARN of the cache security group,
  8987  	ARN *string `type:"string"`
  8988  
  8989  	// The name of the cache security group.
  8990  	CacheSecurityGroupName *string `type:"string"`
  8991  
  8992  	// The description of the cache security group.
  8993  	Description *string `type:"string"`
  8994  
  8995  	// A list of Amazon EC2 security groups that are associated with this cache
  8996  	// security group.
  8997  	EC2SecurityGroups []*EC2SecurityGroup `locationNameList:"EC2SecurityGroup" type:"list"`
  8998  
  8999  	// The Amazon account ID of the cache security group owner.
  9000  	OwnerId *string `type:"string"`
  9001  }
  9002  
  9003  // String returns the string representation.
  9004  //
  9005  // API parameter values that are decorated as "sensitive" in the API will not
  9006  // be included in the string output. The member name will be present, but the
  9007  // value will be replaced with "sensitive".
  9008  func (s CacheSecurityGroup) String() string {
  9009  	return awsutil.Prettify(s)
  9010  }
  9011  
  9012  // GoString returns the string representation.
  9013  //
  9014  // API parameter values that are decorated as "sensitive" in the API will not
  9015  // be included in the string output. The member name will be present, but the
  9016  // value will be replaced with "sensitive".
  9017  func (s CacheSecurityGroup) GoString() string {
  9018  	return s.String()
  9019  }
  9020  
  9021  // SetARN sets the ARN field's value.
  9022  func (s *CacheSecurityGroup) SetARN(v string) *CacheSecurityGroup {
  9023  	s.ARN = &v
  9024  	return s
  9025  }
  9026  
  9027  // SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
  9028  func (s *CacheSecurityGroup) SetCacheSecurityGroupName(v string) *CacheSecurityGroup {
  9029  	s.CacheSecurityGroupName = &v
  9030  	return s
  9031  }
  9032  
  9033  // SetDescription sets the Description field's value.
  9034  func (s *CacheSecurityGroup) SetDescription(v string) *CacheSecurityGroup {
  9035  	s.Description = &v
  9036  	return s
  9037  }
  9038  
  9039  // SetEC2SecurityGroups sets the EC2SecurityGroups field's value.
  9040  func (s *CacheSecurityGroup) SetEC2SecurityGroups(v []*EC2SecurityGroup) *CacheSecurityGroup {
  9041  	s.EC2SecurityGroups = v
  9042  	return s
  9043  }
  9044  
  9045  // SetOwnerId sets the OwnerId field's value.
  9046  func (s *CacheSecurityGroup) SetOwnerId(v string) *CacheSecurityGroup {
  9047  	s.OwnerId = &v
  9048  	return s
  9049  }
  9050  
  9051  // Represents a cluster's status within a particular cache security group.
  9052  type CacheSecurityGroupMembership struct {
  9053  	_ struct{} `type:"structure"`
  9054  
  9055  	// The name of the cache security group.
  9056  	CacheSecurityGroupName *string `type:"string"`
  9057  
  9058  	// The membership status in the cache security group. The status changes when
  9059  	// a cache security group is modified, or when the cache security groups assigned
  9060  	// to a cluster are modified.
  9061  	Status *string `type:"string"`
  9062  }
  9063  
  9064  // String returns the string representation.
  9065  //
  9066  // API parameter values that are decorated as "sensitive" in the API will not
  9067  // be included in the string output. The member name will be present, but the
  9068  // value will be replaced with "sensitive".
  9069  func (s CacheSecurityGroupMembership) String() string {
  9070  	return awsutil.Prettify(s)
  9071  }
  9072  
  9073  // GoString returns the string representation.
  9074  //
  9075  // API parameter values that are decorated as "sensitive" in the API will not
  9076  // be included in the string output. The member name will be present, but the
  9077  // value will be replaced with "sensitive".
  9078  func (s CacheSecurityGroupMembership) GoString() string {
  9079  	return s.String()
  9080  }
  9081  
  9082  // SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
  9083  func (s *CacheSecurityGroupMembership) SetCacheSecurityGroupName(v string) *CacheSecurityGroupMembership {
  9084  	s.CacheSecurityGroupName = &v
  9085  	return s
  9086  }
  9087  
  9088  // SetStatus sets the Status field's value.
  9089  func (s *CacheSecurityGroupMembership) SetStatus(v string) *CacheSecurityGroupMembership {
  9090  	s.Status = &v
  9091  	return s
  9092  }
  9093  
  9094  // Represents the output of one of the following operations:
  9095  //
  9096  //    * CreateCacheSubnetGroup
  9097  //
  9098  //    * ModifyCacheSubnetGroup
  9099  type CacheSubnetGroup struct {
  9100  	_ struct{} `type:"structure"`
  9101  
  9102  	// The ARN (Amazon Resource Name) of the cache subnet group.
  9103  	ARN *string `type:"string"`
  9104  
  9105  	// The description of the cache subnet group.
  9106  	CacheSubnetGroupDescription *string `type:"string"`
  9107  
  9108  	// The name of the cache subnet group.
  9109  	CacheSubnetGroupName *string `type:"string"`
  9110  
  9111  	// A list of subnets associated with the cache subnet group.
  9112  	Subnets []*Subnet `locationNameList:"Subnet" type:"list"`
  9113  
  9114  	// The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet
  9115  	// group.
  9116  	VpcId *string `type:"string"`
  9117  }
  9118  
  9119  // String returns the string representation.
  9120  //
  9121  // API parameter values that are decorated as "sensitive" in the API will not
  9122  // be included in the string output. The member name will be present, but the
  9123  // value will be replaced with "sensitive".
  9124  func (s CacheSubnetGroup) String() string {
  9125  	return awsutil.Prettify(s)
  9126  }
  9127  
  9128  // GoString returns the string representation.
  9129  //
  9130  // API parameter values that are decorated as "sensitive" in the API will not
  9131  // be included in the string output. The member name will be present, but the
  9132  // value will be replaced with "sensitive".
  9133  func (s CacheSubnetGroup) GoString() string {
  9134  	return s.String()
  9135  }
  9136  
  9137  // SetARN sets the ARN field's value.
  9138  func (s *CacheSubnetGroup) SetARN(v string) *CacheSubnetGroup {
  9139  	s.ARN = &v
  9140  	return s
  9141  }
  9142  
  9143  // SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
  9144  func (s *CacheSubnetGroup) SetCacheSubnetGroupDescription(v string) *CacheSubnetGroup {
  9145  	s.CacheSubnetGroupDescription = &v
  9146  	return s
  9147  }
  9148  
  9149  // SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
  9150  func (s *CacheSubnetGroup) SetCacheSubnetGroupName(v string) *CacheSubnetGroup {
  9151  	s.CacheSubnetGroupName = &v
  9152  	return s
  9153  }
  9154  
  9155  // SetSubnets sets the Subnets field's value.
  9156  func (s *CacheSubnetGroup) SetSubnets(v []*Subnet) *CacheSubnetGroup {
  9157  	s.Subnets = v
  9158  	return s
  9159  }
  9160  
  9161  // SetVpcId sets the VpcId field's value.
  9162  func (s *CacheSubnetGroup) SetVpcId(v string) *CacheSubnetGroup {
  9163  	s.VpcId = &v
  9164  	return s
  9165  }
  9166  
  9167  // The configuration details of the CloudWatch Logs destination.
  9168  type CloudWatchLogsDestinationDetails struct {
  9169  	_ struct{} `type:"structure"`
  9170  
  9171  	// The name of the CloudWatch Logs log group.
  9172  	LogGroup *string `type:"string"`
  9173  }
  9174  
  9175  // String returns the string representation.
  9176  //
  9177  // API parameter values that are decorated as "sensitive" in the API will not
  9178  // be included in the string output. The member name will be present, but the
  9179  // value will be replaced with "sensitive".
  9180  func (s CloudWatchLogsDestinationDetails) String() string {
  9181  	return awsutil.Prettify(s)
  9182  }
  9183  
  9184  // GoString returns the string representation.
  9185  //
  9186  // API parameter values that are decorated as "sensitive" in the API will not
  9187  // be included in the string output. The member name will be present, but the
  9188  // value will be replaced with "sensitive".
  9189  func (s CloudWatchLogsDestinationDetails) GoString() string {
  9190  	return s.String()
  9191  }
  9192  
  9193  // SetLogGroup sets the LogGroup field's value.
  9194  func (s *CloudWatchLogsDestinationDetails) SetLogGroup(v string) *CloudWatchLogsDestinationDetails {
  9195  	s.LogGroup = &v
  9196  	return s
  9197  }
  9198  
  9199  type CompleteMigrationInput struct {
  9200  	_ struct{} `type:"structure"`
  9201  
  9202  	// Forces the migration to stop without ensuring that data is in sync. It is
  9203  	// recommended to use this option only to abort the migration and not recommended
  9204  	// when application wants to continue migration to ElastiCache.
  9205  	Force *bool `type:"boolean"`
  9206  
  9207  	// The ID of the replication group to which data is being migrated.
  9208  	//
  9209  	// ReplicationGroupId is a required field
  9210  	ReplicationGroupId *string `type:"string" required:"true"`
  9211  }
  9212  
  9213  // String returns the string representation.
  9214  //
  9215  // API parameter values that are decorated as "sensitive" in the API will not
  9216  // be included in the string output. The member name will be present, but the
  9217  // value will be replaced with "sensitive".
  9218  func (s CompleteMigrationInput) String() string {
  9219  	return awsutil.Prettify(s)
  9220  }
  9221  
  9222  // GoString returns the string representation.
  9223  //
  9224  // API parameter values that are decorated as "sensitive" in the API will not
  9225  // be included in the string output. The member name will be present, but the
  9226  // value will be replaced with "sensitive".
  9227  func (s CompleteMigrationInput) GoString() string {
  9228  	return s.String()
  9229  }
  9230  
  9231  // Validate inspects the fields of the type to determine if they are valid.
  9232  func (s *CompleteMigrationInput) Validate() error {
  9233  	invalidParams := request.ErrInvalidParams{Context: "CompleteMigrationInput"}
  9234  	if s.ReplicationGroupId == nil {
  9235  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
  9236  	}
  9237  
  9238  	if invalidParams.Len() > 0 {
  9239  		return invalidParams
  9240  	}
  9241  	return nil
  9242  }
  9243  
  9244  // SetForce sets the Force field's value.
  9245  func (s *CompleteMigrationInput) SetForce(v bool) *CompleteMigrationInput {
  9246  	s.Force = &v
  9247  	return s
  9248  }
  9249  
  9250  // SetReplicationGroupId sets the ReplicationGroupId field's value.
  9251  func (s *CompleteMigrationInput) SetReplicationGroupId(v string) *CompleteMigrationInput {
  9252  	s.ReplicationGroupId = &v
  9253  	return s
  9254  }
  9255  
  9256  type CompleteMigrationOutput struct {
  9257  	_ struct{} `type:"structure"`
  9258  
  9259  	// Contains all of the attributes of a specific Redis replication group.
  9260  	ReplicationGroup *ReplicationGroup `type:"structure"`
  9261  }
  9262  
  9263  // String returns the string representation.
  9264  //
  9265  // API parameter values that are decorated as "sensitive" in the API will not
  9266  // be included in the string output. The member name will be present, but the
  9267  // value will be replaced with "sensitive".
  9268  func (s CompleteMigrationOutput) String() string {
  9269  	return awsutil.Prettify(s)
  9270  }
  9271  
  9272  // GoString returns the string representation.
  9273  //
  9274  // API parameter values that are decorated as "sensitive" in the API will not
  9275  // be included in the string output. The member name will be present, but the
  9276  // value will be replaced with "sensitive".
  9277  func (s CompleteMigrationOutput) GoString() string {
  9278  	return s.String()
  9279  }
  9280  
  9281  // SetReplicationGroup sets the ReplicationGroup field's value.
  9282  func (s *CompleteMigrationOutput) SetReplicationGroup(v *ReplicationGroup) *CompleteMigrationOutput {
  9283  	s.ReplicationGroup = v
  9284  	return s
  9285  }
  9286  
  9287  // Node group (shard) configuration options when adding or removing replicas.
  9288  // Each node group (shard) configuration has the following members: NodeGroupId,
  9289  // NewReplicaCount, and PreferredAvailabilityZones.
  9290  type ConfigureShard struct {
  9291  	_ struct{} `type:"structure"`
  9292  
  9293  	// The number of replicas you want in this node group at the end of this operation.
  9294  	// The maximum value for NewReplicaCount is 5. The minimum value depends upon
  9295  	// the type of Redis replication group you are working with.
  9296  	//
  9297  	// The minimum number of replicas in a shard or replication group is:
  9298  	//
  9299  	//    * Redis (cluster mode disabled) If Multi-AZ: 1 If Multi-AZ: 0
  9300  	//
  9301  	//    * Redis (cluster mode enabled): 0 (though you will not be able to failover
  9302  	//    to a replica if your primary node fails)
  9303  	//
  9304  	// NewReplicaCount is a required field
  9305  	NewReplicaCount *int64 `type:"integer" required:"true"`
  9306  
  9307  	// The 4-digit id for the node group you are configuring. For Redis (cluster
  9308  	// mode disabled) replication groups, the node group id is always 0001. To find
  9309  	// a Redis (cluster mode enabled)'s node group's (shard's) id, see Finding a
  9310  	// Shard's Id (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/shard-find-id.html).
  9311  	//
  9312  	// NodeGroupId is a required field
  9313  	NodeGroupId *string `min:"1" type:"string" required:"true"`
  9314  
  9315  	// A list of PreferredAvailabilityZone strings that specify which availability
  9316  	// zones the replication group's nodes are to be in. The nummber of PreferredAvailabilityZone
  9317  	// values must equal the value of NewReplicaCount plus 1 to account for the
  9318  	// primary node. If this member of ReplicaConfiguration is omitted, ElastiCache
  9319  	// for Redis selects the availability zone for each of the replicas.
  9320  	PreferredAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
  9321  
  9322  	// The outpost ARNs in which the cache cluster is created.
  9323  	PreferredOutpostArns []*string `locationNameList:"PreferredOutpostArn" type:"list"`
  9324  }
  9325  
  9326  // String 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 ConfigureShard) String() string {
  9332  	return awsutil.Prettify(s)
  9333  }
  9334  
  9335  // GoString returns the string representation.
  9336  //
  9337  // API parameter values that are decorated as "sensitive" in the API will not
  9338  // be included in the string output. The member name will be present, but the
  9339  // value will be replaced with "sensitive".
  9340  func (s ConfigureShard) GoString() string {
  9341  	return s.String()
  9342  }
  9343  
  9344  // Validate inspects the fields of the type to determine if they are valid.
  9345  func (s *ConfigureShard) Validate() error {
  9346  	invalidParams := request.ErrInvalidParams{Context: "ConfigureShard"}
  9347  	if s.NewReplicaCount == nil {
  9348  		invalidParams.Add(request.NewErrParamRequired("NewReplicaCount"))
  9349  	}
  9350  	if s.NodeGroupId == nil {
  9351  		invalidParams.Add(request.NewErrParamRequired("NodeGroupId"))
  9352  	}
  9353  	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
  9354  		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
  9355  	}
  9356  
  9357  	if invalidParams.Len() > 0 {
  9358  		return invalidParams
  9359  	}
  9360  	return nil
  9361  }
  9362  
  9363  // SetNewReplicaCount sets the NewReplicaCount field's value.
  9364  func (s *ConfigureShard) SetNewReplicaCount(v int64) *ConfigureShard {
  9365  	s.NewReplicaCount = &v
  9366  	return s
  9367  }
  9368  
  9369  // SetNodeGroupId sets the NodeGroupId field's value.
  9370  func (s *ConfigureShard) SetNodeGroupId(v string) *ConfigureShard {
  9371  	s.NodeGroupId = &v
  9372  	return s
  9373  }
  9374  
  9375  // SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
  9376  func (s *ConfigureShard) SetPreferredAvailabilityZones(v []*string) *ConfigureShard {
  9377  	s.PreferredAvailabilityZones = v
  9378  	return s
  9379  }
  9380  
  9381  // SetPreferredOutpostArns sets the PreferredOutpostArns field's value.
  9382  func (s *ConfigureShard) SetPreferredOutpostArns(v []*string) *ConfigureShard {
  9383  	s.PreferredOutpostArns = v
  9384  	return s
  9385  }
  9386  
  9387  // Represents the input of a CopySnapshotMessage operation.
  9388  type CopySnapshotInput struct {
  9389  	_ struct{} `type:"structure"`
  9390  
  9391  	// The ID of the KMS key used to encrypt the target snapshot.
  9392  	KmsKeyId *string `type:"string"`
  9393  
  9394  	// The name of an existing snapshot from which to make a copy.
  9395  	//
  9396  	// SourceSnapshotName is a required field
  9397  	SourceSnapshotName *string `type:"string" required:"true"`
  9398  
  9399  	// A list of tags to be added to this resource. A tag is a key-value pair. A
  9400  	// tag key must be accompanied by a tag value, although null is accepted.
  9401  	Tags []*Tag `locationNameList:"Tag" type:"list"`
  9402  
  9403  	// The Amazon S3 bucket to which the snapshot is exported. This parameter is
  9404  	// used only when exporting a snapshot for external access.
  9405  	//
  9406  	// When using this parameter to export a snapshot, be sure Amazon ElastiCache
  9407  	// has the needed permissions to this S3 bucket. For more information, see Step
  9408  	// 2: Grant ElastiCache Access to Your Amazon S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access)
  9409  	// in the Amazon ElastiCache User Guide.
  9410  	//
  9411  	// For more information, see Exporting a Snapshot (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html)
  9412  	// in the Amazon ElastiCache User Guide.
  9413  	TargetBucket *string `type:"string"`
  9414  
  9415  	// A name for the snapshot copy. ElastiCache does not permit overwriting a snapshot,
  9416  	// therefore this name must be unique within its context - ElastiCache or an
  9417  	// Amazon S3 bucket if exporting.
  9418  	//
  9419  	// TargetSnapshotName is a required field
  9420  	TargetSnapshotName *string `type:"string" required:"true"`
  9421  }
  9422  
  9423  // String returns the string representation.
  9424  //
  9425  // API parameter values that are decorated as "sensitive" in the API will not
  9426  // be included in the string output. The member name will be present, but the
  9427  // value will be replaced with "sensitive".
  9428  func (s CopySnapshotInput) String() string {
  9429  	return awsutil.Prettify(s)
  9430  }
  9431  
  9432  // GoString returns the string representation.
  9433  //
  9434  // API parameter values that are decorated as "sensitive" in the API will not
  9435  // be included in the string output. The member name will be present, but the
  9436  // value will be replaced with "sensitive".
  9437  func (s CopySnapshotInput) GoString() string {
  9438  	return s.String()
  9439  }
  9440  
  9441  // Validate inspects the fields of the type to determine if they are valid.
  9442  func (s *CopySnapshotInput) Validate() error {
  9443  	invalidParams := request.ErrInvalidParams{Context: "CopySnapshotInput"}
  9444  	if s.SourceSnapshotName == nil {
  9445  		invalidParams.Add(request.NewErrParamRequired("SourceSnapshotName"))
  9446  	}
  9447  	if s.TargetSnapshotName == nil {
  9448  		invalidParams.Add(request.NewErrParamRequired("TargetSnapshotName"))
  9449  	}
  9450  
  9451  	if invalidParams.Len() > 0 {
  9452  		return invalidParams
  9453  	}
  9454  	return nil
  9455  }
  9456  
  9457  // SetKmsKeyId sets the KmsKeyId field's value.
  9458  func (s *CopySnapshotInput) SetKmsKeyId(v string) *CopySnapshotInput {
  9459  	s.KmsKeyId = &v
  9460  	return s
  9461  }
  9462  
  9463  // SetSourceSnapshotName sets the SourceSnapshotName field's value.
  9464  func (s *CopySnapshotInput) SetSourceSnapshotName(v string) *CopySnapshotInput {
  9465  	s.SourceSnapshotName = &v
  9466  	return s
  9467  }
  9468  
  9469  // SetTags sets the Tags field's value.
  9470  func (s *CopySnapshotInput) SetTags(v []*Tag) *CopySnapshotInput {
  9471  	s.Tags = v
  9472  	return s
  9473  }
  9474  
  9475  // SetTargetBucket sets the TargetBucket field's value.
  9476  func (s *CopySnapshotInput) SetTargetBucket(v string) *CopySnapshotInput {
  9477  	s.TargetBucket = &v
  9478  	return s
  9479  }
  9480  
  9481  // SetTargetSnapshotName sets the TargetSnapshotName field's value.
  9482  func (s *CopySnapshotInput) SetTargetSnapshotName(v string) *CopySnapshotInput {
  9483  	s.TargetSnapshotName = &v
  9484  	return s
  9485  }
  9486  
  9487  type CopySnapshotOutput struct {
  9488  	_ struct{} `type:"structure"`
  9489  
  9490  	// Represents a copy of an entire Redis cluster as of the time when the snapshot
  9491  	// was taken.
  9492  	Snapshot *Snapshot `type:"structure"`
  9493  }
  9494  
  9495  // String returns the string representation.
  9496  //
  9497  // API parameter values that are decorated as "sensitive" in the API will not
  9498  // be included in the string output. The member name will be present, but the
  9499  // value will be replaced with "sensitive".
  9500  func (s CopySnapshotOutput) String() string {
  9501  	return awsutil.Prettify(s)
  9502  }
  9503  
  9504  // GoString returns the string representation.
  9505  //
  9506  // API parameter values that are decorated as "sensitive" in the API will not
  9507  // be included in the string output. The member name will be present, but the
  9508  // value will be replaced with "sensitive".
  9509  func (s CopySnapshotOutput) GoString() string {
  9510  	return s.String()
  9511  }
  9512  
  9513  // SetSnapshot sets the Snapshot field's value.
  9514  func (s *CopySnapshotOutput) SetSnapshot(v *Snapshot) *CopySnapshotOutput {
  9515  	s.Snapshot = v
  9516  	return s
  9517  }
  9518  
  9519  // Represents the input of a CreateCacheCluster operation.
  9520  type CreateCacheClusterInput struct {
  9521  	_ struct{} `type:"structure"`
  9522  
  9523  	// Specifies whether the nodes in this Memcached cluster are created in a single
  9524  	// Availability Zone or created across multiple Availability Zones in the cluster's
  9525  	// region.
  9526  	//
  9527  	// This parameter is only supported for Memcached clusters.
  9528  	//
  9529  	// If the AZMode and PreferredAvailabilityZones are not specified, ElastiCache
  9530  	// assumes single-az mode.
  9531  	AZMode *string `type:"string" enum:"AZMode"`
  9532  
  9533  	// Reserved parameter. The password used to access a password protected server.
  9534  	//
  9535  	// Password constraints:
  9536  	//
  9537  	//    * Must be only printable ASCII characters.
  9538  	//
  9539  	//    * Must be at least 16 characters and no more than 128 characters in length.
  9540  	//
  9541  	//    * The only permitted printable special characters are !, &, #, $, ^, <,
  9542  	//    >, and -. Other printable special characters cannot be used in the AUTH
  9543  	//    token.
  9544  	//
  9545  	// For more information, see AUTH password (http://redis.io/commands/AUTH) at
  9546  	// http://redis.io/commands/AUTH.
  9547  	AuthToken *string `type:"string"`
  9548  
  9549  	// This parameter is currently disabled.
  9550  	AutoMinorVersionUpgrade *bool `type:"boolean"`
  9551  
  9552  	// The node group (shard) identifier. This parameter is stored as a lowercase
  9553  	// string.
  9554  	//
  9555  	// Constraints:
  9556  	//
  9557  	//    * A name must contain from 1 to 50 alphanumeric characters or hyphens.
  9558  	//
  9559  	//    * The first character must be a letter.
  9560  	//
  9561  	//    * A name cannot end with a hyphen or contain two consecutive hyphens.
  9562  	//
  9563  	// CacheClusterId is a required field
  9564  	CacheClusterId *string `type:"string" required:"true"`
  9565  
  9566  	// The compute and memory capacity of the nodes in the node group (shard).
  9567  	//
  9568  	// The following node types are supported by ElastiCache. Generally speaking,
  9569  	// the current generation types provide more memory and computational power
  9570  	// at lower cost when compared to their equivalent previous generation counterparts.
  9571  	//
  9572  	//    * General purpose: Current generation: M6g node types (available only
  9573  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
  9574  	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
  9575  	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
  9576  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
  9577  	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
  9578  	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
  9579  	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
  9580  	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
  9581  	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
  9582  	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
  9583  	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
  9584  	//    cache.m3.2xlarge
  9585  	//
  9586  	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
  9587  	//    cache.c1.xlarge
  9588  	//
  9589  	//    * Memory optimized: Current generation: R6g node types (available only
  9590  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
  9591  	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
  9592  	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
  9593  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
  9594  	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
  9595  	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
  9596  	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
  9597  	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
  9598  	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
  9599  	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
  9600  	//
  9601  	// Additional node type info
  9602  	//
  9603  	//    * All current generation instance types are created in Amazon VPC by default.
  9604  	//
  9605  	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
  9606  	//
  9607  	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
  9608  	//
  9609  	//    * Redis configuration variables appendonly and appendfsync are not supported
  9610  	//    on Redis version 2.8.22 and later.
  9611  	CacheNodeType *string `type:"string"`
  9612  
  9613  	// The name of the parameter group to associate with this cluster. If this argument
  9614  	// is omitted, the default parameter group for the specified engine is used.
  9615  	// You cannot use any parameter group which has cluster-enabled='yes' when creating
  9616  	// a cluster.
  9617  	CacheParameterGroupName *string `type:"string"`
  9618  
  9619  	// A list of security group names to associate with this cluster.
  9620  	//
  9621  	// Use this parameter only when you are creating a cluster outside of an Amazon
  9622  	// Virtual Private Cloud (Amazon VPC).
  9623  	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
  9624  
  9625  	// The name of the subnet group to be used for the cluster.
  9626  	//
  9627  	// Use this parameter only when you are creating a cluster in an Amazon Virtual
  9628  	// Private Cloud (Amazon VPC).
  9629  	//
  9630  	// If you're going to launch your cluster in an Amazon VPC, you need to create
  9631  	// a subnet group before you start creating a cluster. For more information,
  9632  	// see Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.html).
  9633  	CacheSubnetGroupName *string `type:"string"`
  9634  
  9635  	// The name of the cache engine to be used for this cluster.
  9636  	//
  9637  	// Valid values for this parameter are: memcached | redis
  9638  	Engine *string `type:"string"`
  9639  
  9640  	// The version number of the cache engine to be used for this cluster. To view
  9641  	// the supported cache engine versions, use the DescribeCacheEngineVersions
  9642  	// operation.
  9643  	//
  9644  	// Important: You can upgrade to a newer engine version (see Selecting a Cache
  9645  	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
  9646  	// but you cannot downgrade to an earlier engine version. If you want to use
  9647  	// an earlier engine version, you must delete the existing cluster or replication
  9648  	// group and create it anew with the earlier engine version.
  9649  	EngineVersion *string `type:"string"`
  9650  
  9651  	// Specifies the destination, format and type of the logs.
  9652  	LogDeliveryConfigurations []*LogDeliveryConfigurationRequest `locationNameList:"LogDeliveryConfigurationRequest" type:"list"`
  9653  
  9654  	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
  9655  	// (SNS) topic to which notifications are sent.
  9656  	//
  9657  	// The Amazon SNS topic owner must be the same as the cluster owner.
  9658  	NotificationTopicArn *string `type:"string"`
  9659  
  9660  	// The initial number of cache nodes that the cluster has.
  9661  	//
  9662  	// For clusters running Redis, this value must be 1. For clusters running Memcached,
  9663  	// this value must be between 1 and 40.
  9664  	//
  9665  	// If you need more than 40 nodes for your Memcached cluster, please fill out
  9666  	// the ElastiCache Limit Increase Request form at http://aws.amazon.com/contact-us/elasticache-node-limit-request/
  9667  	// (http://aws.amazon.com/contact-us/elasticache-node-limit-request/).
  9668  	NumCacheNodes *int64 `type:"integer"`
  9669  
  9670  	// Specifies whether the nodes in the cluster are created in a single outpost
  9671  	// or across multiple outposts.
  9672  	OutpostMode *string `type:"string" enum:"OutpostMode"`
  9673  
  9674  	// The port number on which each of the cache nodes accepts connections.
  9675  	Port *int64 `type:"integer"`
  9676  
  9677  	// The EC2 Availability Zone in which the cluster is created.
  9678  	//
  9679  	// All nodes belonging to this cluster are placed in the preferred Availability
  9680  	// Zone. If you want to create your nodes across multiple Availability Zones,
  9681  	// use PreferredAvailabilityZones.
  9682  	//
  9683  	// Default: System chosen Availability Zone.
  9684  	PreferredAvailabilityZone *string `type:"string"`
  9685  
  9686  	// A list of the Availability Zones in which cache nodes are created. The order
  9687  	// of the zones in the list is not important.
  9688  	//
  9689  	// This option is only supported on Memcached.
  9690  	//
  9691  	// If you are creating your cluster in an Amazon VPC (recommended) you can only
  9692  	// locate nodes in Availability Zones that are associated with the subnets in
  9693  	// the selected subnet group.
  9694  	//
  9695  	// The number of Availability Zones listed must equal the value of NumCacheNodes.
  9696  	//
  9697  	// If you want all the nodes in the same Availability Zone, use PreferredAvailabilityZone
  9698  	// instead, or repeat the Availability Zone multiple times in the list.
  9699  	//
  9700  	// Default: System chosen Availability Zones.
  9701  	PreferredAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
  9702  
  9703  	// Specifies the weekly time range during which maintenance on the cluster is
  9704  	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
  9705  	// (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid
  9706  	// values for ddd are:
  9707  	PreferredMaintenanceWindow *string `type:"string"`
  9708  
  9709  	// The outpost ARN in which the cache cluster is created.
  9710  	PreferredOutpostArn *string `type:"string"`
  9711  
  9712  	// The outpost ARNs in which the cache cluster is created.
  9713  	PreferredOutpostArns []*string `locationNameList:"PreferredOutpostArn" type:"list"`
  9714  
  9715  	// The ID of the replication group to which this cluster should belong. If this
  9716  	// parameter is specified, the cluster is added to the specified replication
  9717  	// group as a read replica; otherwise, the cluster is a standalone primary that
  9718  	// is not part of any replication group.
  9719  	//
  9720  	// If the specified replication group is Multi-AZ enabled and the Availability
  9721  	// Zone is not specified, the cluster is created in Availability Zones that
  9722  	// provide the best spread of read replicas across Availability Zones.
  9723  	//
  9724  	// This parameter is only valid if the Engine parameter is redis.
  9725  	ReplicationGroupId *string `type:"string"`
  9726  
  9727  	// One or more VPC security groups associated with the cluster.
  9728  	//
  9729  	// Use this parameter only when you are creating a cluster in an Amazon Virtual
  9730  	// Private Cloud (Amazon VPC).
  9731  	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
  9732  
  9733  	// A single-element string list containing an Amazon Resource Name (ARN) that
  9734  	// uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot
  9735  	// file is used to populate the node group (shard). The Amazon S3 object name
  9736  	// in the ARN cannot contain any commas.
  9737  	//
  9738  	// This parameter is only valid if the Engine parameter is redis.
  9739  	//
  9740  	// Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
  9741  	SnapshotArns []*string `locationNameList:"SnapshotArn" type:"list"`
  9742  
  9743  	// The name of a Redis snapshot from which to restore data into the new node
  9744  	// group (shard). The snapshot status changes to restoring while the new node
  9745  	// group (shard) is being created.
  9746  	//
  9747  	// This parameter is only valid if the Engine parameter is redis.
  9748  	SnapshotName *string `type:"string"`
  9749  
  9750  	// The number of days for which ElastiCache retains automatic snapshots before
  9751  	// deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot
  9752  	// taken today is retained for 5 days before being deleted.
  9753  	//
  9754  	// This parameter is only valid if the Engine parameter is redis.
  9755  	//
  9756  	// Default: 0 (i.e., automatic backups are disabled for this cache cluster).
  9757  	SnapshotRetentionLimit *int64 `type:"integer"`
  9758  
  9759  	// The daily time range (in UTC) during which ElastiCache begins taking a daily
  9760  	// snapshot of your node group (shard).
  9761  	//
  9762  	// Example: 05:00-09:00
  9763  	//
  9764  	// If you do not specify this parameter, ElastiCache automatically chooses an
  9765  	// appropriate time range.
  9766  	//
  9767  	// This parameter is only valid if the Engine parameter is redis.
  9768  	SnapshotWindow *string `type:"string"`
  9769  
  9770  	// A list of tags to be added to this resource.
  9771  	Tags []*Tag `locationNameList:"Tag" type:"list"`
  9772  }
  9773  
  9774  // String returns the string representation.
  9775  //
  9776  // API parameter values that are decorated as "sensitive" in the API will not
  9777  // be included in the string output. The member name will be present, but the
  9778  // value will be replaced with "sensitive".
  9779  func (s CreateCacheClusterInput) String() string {
  9780  	return awsutil.Prettify(s)
  9781  }
  9782  
  9783  // GoString returns the string representation.
  9784  //
  9785  // API parameter values that are decorated as "sensitive" in the API will not
  9786  // be included in the string output. The member name will be present, but the
  9787  // value will be replaced with "sensitive".
  9788  func (s CreateCacheClusterInput) GoString() string {
  9789  	return s.String()
  9790  }
  9791  
  9792  // Validate inspects the fields of the type to determine if they are valid.
  9793  func (s *CreateCacheClusterInput) Validate() error {
  9794  	invalidParams := request.ErrInvalidParams{Context: "CreateCacheClusterInput"}
  9795  	if s.CacheClusterId == nil {
  9796  		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
  9797  	}
  9798  
  9799  	if invalidParams.Len() > 0 {
  9800  		return invalidParams
  9801  	}
  9802  	return nil
  9803  }
  9804  
  9805  // SetAZMode sets the AZMode field's value.
  9806  func (s *CreateCacheClusterInput) SetAZMode(v string) *CreateCacheClusterInput {
  9807  	s.AZMode = &v
  9808  	return s
  9809  }
  9810  
  9811  // SetAuthToken sets the AuthToken field's value.
  9812  func (s *CreateCacheClusterInput) SetAuthToken(v string) *CreateCacheClusterInput {
  9813  	s.AuthToken = &v
  9814  	return s
  9815  }
  9816  
  9817  // SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
  9818  func (s *CreateCacheClusterInput) SetAutoMinorVersionUpgrade(v bool) *CreateCacheClusterInput {
  9819  	s.AutoMinorVersionUpgrade = &v
  9820  	return s
  9821  }
  9822  
  9823  // SetCacheClusterId sets the CacheClusterId field's value.
  9824  func (s *CreateCacheClusterInput) SetCacheClusterId(v string) *CreateCacheClusterInput {
  9825  	s.CacheClusterId = &v
  9826  	return s
  9827  }
  9828  
  9829  // SetCacheNodeType sets the CacheNodeType field's value.
  9830  func (s *CreateCacheClusterInput) SetCacheNodeType(v string) *CreateCacheClusterInput {
  9831  	s.CacheNodeType = &v
  9832  	return s
  9833  }
  9834  
  9835  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
  9836  func (s *CreateCacheClusterInput) SetCacheParameterGroupName(v string) *CreateCacheClusterInput {
  9837  	s.CacheParameterGroupName = &v
  9838  	return s
  9839  }
  9840  
  9841  // SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
  9842  func (s *CreateCacheClusterInput) SetCacheSecurityGroupNames(v []*string) *CreateCacheClusterInput {
  9843  	s.CacheSecurityGroupNames = v
  9844  	return s
  9845  }
  9846  
  9847  // SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
  9848  func (s *CreateCacheClusterInput) SetCacheSubnetGroupName(v string) *CreateCacheClusterInput {
  9849  	s.CacheSubnetGroupName = &v
  9850  	return s
  9851  }
  9852  
  9853  // SetEngine sets the Engine field's value.
  9854  func (s *CreateCacheClusterInput) SetEngine(v string) *CreateCacheClusterInput {
  9855  	s.Engine = &v
  9856  	return s
  9857  }
  9858  
  9859  // SetEngineVersion sets the EngineVersion field's value.
  9860  func (s *CreateCacheClusterInput) SetEngineVersion(v string) *CreateCacheClusterInput {
  9861  	s.EngineVersion = &v
  9862  	return s
  9863  }
  9864  
  9865  // SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
  9866  func (s *CreateCacheClusterInput) SetLogDeliveryConfigurations(v []*LogDeliveryConfigurationRequest) *CreateCacheClusterInput {
  9867  	s.LogDeliveryConfigurations = v
  9868  	return s
  9869  }
  9870  
  9871  // SetNotificationTopicArn sets the NotificationTopicArn field's value.
  9872  func (s *CreateCacheClusterInput) SetNotificationTopicArn(v string) *CreateCacheClusterInput {
  9873  	s.NotificationTopicArn = &v
  9874  	return s
  9875  }
  9876  
  9877  // SetNumCacheNodes sets the NumCacheNodes field's value.
  9878  func (s *CreateCacheClusterInput) SetNumCacheNodes(v int64) *CreateCacheClusterInput {
  9879  	s.NumCacheNodes = &v
  9880  	return s
  9881  }
  9882  
  9883  // SetOutpostMode sets the OutpostMode field's value.
  9884  func (s *CreateCacheClusterInput) SetOutpostMode(v string) *CreateCacheClusterInput {
  9885  	s.OutpostMode = &v
  9886  	return s
  9887  }
  9888  
  9889  // SetPort sets the Port field's value.
  9890  func (s *CreateCacheClusterInput) SetPort(v int64) *CreateCacheClusterInput {
  9891  	s.Port = &v
  9892  	return s
  9893  }
  9894  
  9895  // SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
  9896  func (s *CreateCacheClusterInput) SetPreferredAvailabilityZone(v string) *CreateCacheClusterInput {
  9897  	s.PreferredAvailabilityZone = &v
  9898  	return s
  9899  }
  9900  
  9901  // SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
  9902  func (s *CreateCacheClusterInput) SetPreferredAvailabilityZones(v []*string) *CreateCacheClusterInput {
  9903  	s.PreferredAvailabilityZones = v
  9904  	return s
  9905  }
  9906  
  9907  // SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
  9908  func (s *CreateCacheClusterInput) SetPreferredMaintenanceWindow(v string) *CreateCacheClusterInput {
  9909  	s.PreferredMaintenanceWindow = &v
  9910  	return s
  9911  }
  9912  
  9913  // SetPreferredOutpostArn sets the PreferredOutpostArn field's value.
  9914  func (s *CreateCacheClusterInput) SetPreferredOutpostArn(v string) *CreateCacheClusterInput {
  9915  	s.PreferredOutpostArn = &v
  9916  	return s
  9917  }
  9918  
  9919  // SetPreferredOutpostArns sets the PreferredOutpostArns field's value.
  9920  func (s *CreateCacheClusterInput) SetPreferredOutpostArns(v []*string) *CreateCacheClusterInput {
  9921  	s.PreferredOutpostArns = v
  9922  	return s
  9923  }
  9924  
  9925  // SetReplicationGroupId sets the ReplicationGroupId field's value.
  9926  func (s *CreateCacheClusterInput) SetReplicationGroupId(v string) *CreateCacheClusterInput {
  9927  	s.ReplicationGroupId = &v
  9928  	return s
  9929  }
  9930  
  9931  // SetSecurityGroupIds sets the SecurityGroupIds field's value.
  9932  func (s *CreateCacheClusterInput) SetSecurityGroupIds(v []*string) *CreateCacheClusterInput {
  9933  	s.SecurityGroupIds = v
  9934  	return s
  9935  }
  9936  
  9937  // SetSnapshotArns sets the SnapshotArns field's value.
  9938  func (s *CreateCacheClusterInput) SetSnapshotArns(v []*string) *CreateCacheClusterInput {
  9939  	s.SnapshotArns = v
  9940  	return s
  9941  }
  9942  
  9943  // SetSnapshotName sets the SnapshotName field's value.
  9944  func (s *CreateCacheClusterInput) SetSnapshotName(v string) *CreateCacheClusterInput {
  9945  	s.SnapshotName = &v
  9946  	return s
  9947  }
  9948  
  9949  // SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
  9950  func (s *CreateCacheClusterInput) SetSnapshotRetentionLimit(v int64) *CreateCacheClusterInput {
  9951  	s.SnapshotRetentionLimit = &v
  9952  	return s
  9953  }
  9954  
  9955  // SetSnapshotWindow sets the SnapshotWindow field's value.
  9956  func (s *CreateCacheClusterInput) SetSnapshotWindow(v string) *CreateCacheClusterInput {
  9957  	s.SnapshotWindow = &v
  9958  	return s
  9959  }
  9960  
  9961  // SetTags sets the Tags field's value.
  9962  func (s *CreateCacheClusterInput) SetTags(v []*Tag) *CreateCacheClusterInput {
  9963  	s.Tags = v
  9964  	return s
  9965  }
  9966  
  9967  type CreateCacheClusterOutput struct {
  9968  	_ struct{} `type:"structure"`
  9969  
  9970  	// Contains all of the attributes of a specific cluster.
  9971  	CacheCluster *CacheCluster `type:"structure"`
  9972  }
  9973  
  9974  // String returns the string representation.
  9975  //
  9976  // API parameter values that are decorated as "sensitive" in the API will not
  9977  // be included in the string output. The member name will be present, but the
  9978  // value will be replaced with "sensitive".
  9979  func (s CreateCacheClusterOutput) String() string {
  9980  	return awsutil.Prettify(s)
  9981  }
  9982  
  9983  // GoString returns the string representation.
  9984  //
  9985  // API parameter values that are decorated as "sensitive" in the API will not
  9986  // be included in the string output. The member name will be present, but the
  9987  // value will be replaced with "sensitive".
  9988  func (s CreateCacheClusterOutput) GoString() string {
  9989  	return s.String()
  9990  }
  9991  
  9992  // SetCacheCluster sets the CacheCluster field's value.
  9993  func (s *CreateCacheClusterOutput) SetCacheCluster(v *CacheCluster) *CreateCacheClusterOutput {
  9994  	s.CacheCluster = v
  9995  	return s
  9996  }
  9997  
  9998  // Represents the input of a CreateCacheParameterGroup operation.
  9999  type CreateCacheParameterGroupInput struct {
 10000  	_ struct{} `type:"structure"`
 10001  
 10002  	// The name of the cache parameter group family that the cache parameter group
 10003  	// can be used with.
 10004  	//
 10005  	// Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 |
 10006  	// redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |
 10007  	//
 10008  	// CacheParameterGroupFamily is a required field
 10009  	CacheParameterGroupFamily *string `type:"string" required:"true"`
 10010  
 10011  	// A user-specified name for the cache parameter group.
 10012  	//
 10013  	// CacheParameterGroupName is a required field
 10014  	CacheParameterGroupName *string `type:"string" required:"true"`
 10015  
 10016  	// A user-specified description for the cache parameter group.
 10017  	//
 10018  	// Description is a required field
 10019  	Description *string `type:"string" required:"true"`
 10020  
 10021  	// A list of tags to be added to this resource. A tag is a key-value pair. A
 10022  	// tag key must be accompanied by a tag value, although null is accepted.
 10023  	Tags []*Tag `locationNameList:"Tag" type:"list"`
 10024  }
 10025  
 10026  // String returns the string representation.
 10027  //
 10028  // API parameter values that are decorated as "sensitive" in the API will not
 10029  // be included in the string output. The member name will be present, but the
 10030  // value will be replaced with "sensitive".
 10031  func (s CreateCacheParameterGroupInput) String() string {
 10032  	return awsutil.Prettify(s)
 10033  }
 10034  
 10035  // GoString returns the string representation.
 10036  //
 10037  // API parameter values that are decorated as "sensitive" in the API will not
 10038  // be included in the string output. The member name will be present, but the
 10039  // value will be replaced with "sensitive".
 10040  func (s CreateCacheParameterGroupInput) GoString() string {
 10041  	return s.String()
 10042  }
 10043  
 10044  // Validate inspects the fields of the type to determine if they are valid.
 10045  func (s *CreateCacheParameterGroupInput) Validate() error {
 10046  	invalidParams := request.ErrInvalidParams{Context: "CreateCacheParameterGroupInput"}
 10047  	if s.CacheParameterGroupFamily == nil {
 10048  		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupFamily"))
 10049  	}
 10050  	if s.CacheParameterGroupName == nil {
 10051  		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
 10052  	}
 10053  	if s.Description == nil {
 10054  		invalidParams.Add(request.NewErrParamRequired("Description"))
 10055  	}
 10056  
 10057  	if invalidParams.Len() > 0 {
 10058  		return invalidParams
 10059  	}
 10060  	return nil
 10061  }
 10062  
 10063  // SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
 10064  func (s *CreateCacheParameterGroupInput) SetCacheParameterGroupFamily(v string) *CreateCacheParameterGroupInput {
 10065  	s.CacheParameterGroupFamily = &v
 10066  	return s
 10067  }
 10068  
 10069  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
 10070  func (s *CreateCacheParameterGroupInput) SetCacheParameterGroupName(v string) *CreateCacheParameterGroupInput {
 10071  	s.CacheParameterGroupName = &v
 10072  	return s
 10073  }
 10074  
 10075  // SetDescription sets the Description field's value.
 10076  func (s *CreateCacheParameterGroupInput) SetDescription(v string) *CreateCacheParameterGroupInput {
 10077  	s.Description = &v
 10078  	return s
 10079  }
 10080  
 10081  // SetTags sets the Tags field's value.
 10082  func (s *CreateCacheParameterGroupInput) SetTags(v []*Tag) *CreateCacheParameterGroupInput {
 10083  	s.Tags = v
 10084  	return s
 10085  }
 10086  
 10087  type CreateCacheParameterGroupOutput struct {
 10088  	_ struct{} `type:"structure"`
 10089  
 10090  	// Represents the output of a CreateCacheParameterGroup operation.
 10091  	CacheParameterGroup *CacheParameterGroup `type:"structure"`
 10092  }
 10093  
 10094  // String returns the string representation.
 10095  //
 10096  // API parameter values that are decorated as "sensitive" in the API will not
 10097  // be included in the string output. The member name will be present, but the
 10098  // value will be replaced with "sensitive".
 10099  func (s CreateCacheParameterGroupOutput) String() string {
 10100  	return awsutil.Prettify(s)
 10101  }
 10102  
 10103  // GoString returns the string representation.
 10104  //
 10105  // API parameter values that are decorated as "sensitive" in the API will not
 10106  // be included in the string output. The member name will be present, but the
 10107  // value will be replaced with "sensitive".
 10108  func (s CreateCacheParameterGroupOutput) GoString() string {
 10109  	return s.String()
 10110  }
 10111  
 10112  // SetCacheParameterGroup sets the CacheParameterGroup field's value.
 10113  func (s *CreateCacheParameterGroupOutput) SetCacheParameterGroup(v *CacheParameterGroup) *CreateCacheParameterGroupOutput {
 10114  	s.CacheParameterGroup = v
 10115  	return s
 10116  }
 10117  
 10118  // Represents the input of a CreateCacheSecurityGroup operation.
 10119  type CreateCacheSecurityGroupInput struct {
 10120  	_ struct{} `type:"structure"`
 10121  
 10122  	// A name for the cache security group. This value is stored as a lowercase
 10123  	// string.
 10124  	//
 10125  	// Constraints: Must contain no more than 255 alphanumeric characters. Cannot
 10126  	// be the word "Default".
 10127  	//
 10128  	// Example: mysecuritygroup
 10129  	//
 10130  	// CacheSecurityGroupName is a required field
 10131  	CacheSecurityGroupName *string `type:"string" required:"true"`
 10132  
 10133  	// A description for the cache security group.
 10134  	//
 10135  	// Description is a required field
 10136  	Description *string `type:"string" required:"true"`
 10137  
 10138  	// A list of tags to be added to this resource. A tag is a key-value pair. A
 10139  	// tag key must be accompanied by a tag value, although null is accepted.
 10140  	Tags []*Tag `locationNameList:"Tag" type:"list"`
 10141  }
 10142  
 10143  // String returns the string representation.
 10144  //
 10145  // API parameter values that are decorated as "sensitive" in the API will not
 10146  // be included in the string output. The member name will be present, but the
 10147  // value will be replaced with "sensitive".
 10148  func (s CreateCacheSecurityGroupInput) String() string {
 10149  	return awsutil.Prettify(s)
 10150  }
 10151  
 10152  // GoString returns the string representation.
 10153  //
 10154  // API parameter values that are decorated as "sensitive" in the API will not
 10155  // be included in the string output. The member name will be present, but the
 10156  // value will be replaced with "sensitive".
 10157  func (s CreateCacheSecurityGroupInput) GoString() string {
 10158  	return s.String()
 10159  }
 10160  
 10161  // Validate inspects the fields of the type to determine if they are valid.
 10162  func (s *CreateCacheSecurityGroupInput) Validate() error {
 10163  	invalidParams := request.ErrInvalidParams{Context: "CreateCacheSecurityGroupInput"}
 10164  	if s.CacheSecurityGroupName == nil {
 10165  		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
 10166  	}
 10167  	if s.Description == nil {
 10168  		invalidParams.Add(request.NewErrParamRequired("Description"))
 10169  	}
 10170  
 10171  	if invalidParams.Len() > 0 {
 10172  		return invalidParams
 10173  	}
 10174  	return nil
 10175  }
 10176  
 10177  // SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
 10178  func (s *CreateCacheSecurityGroupInput) SetCacheSecurityGroupName(v string) *CreateCacheSecurityGroupInput {
 10179  	s.CacheSecurityGroupName = &v
 10180  	return s
 10181  }
 10182  
 10183  // SetDescription sets the Description field's value.
 10184  func (s *CreateCacheSecurityGroupInput) SetDescription(v string) *CreateCacheSecurityGroupInput {
 10185  	s.Description = &v
 10186  	return s
 10187  }
 10188  
 10189  // SetTags sets the Tags field's value.
 10190  func (s *CreateCacheSecurityGroupInput) SetTags(v []*Tag) *CreateCacheSecurityGroupInput {
 10191  	s.Tags = v
 10192  	return s
 10193  }
 10194  
 10195  type CreateCacheSecurityGroupOutput struct {
 10196  	_ struct{} `type:"structure"`
 10197  
 10198  	// Represents the output of one of the following operations:
 10199  	//
 10200  	//    * AuthorizeCacheSecurityGroupIngress
 10201  	//
 10202  	//    * CreateCacheSecurityGroup
 10203  	//
 10204  	//    * RevokeCacheSecurityGroupIngress
 10205  	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
 10206  }
 10207  
 10208  // String returns the string representation.
 10209  //
 10210  // API parameter values that are decorated as "sensitive" in the API will not
 10211  // be included in the string output. The member name will be present, but the
 10212  // value will be replaced with "sensitive".
 10213  func (s CreateCacheSecurityGroupOutput) String() string {
 10214  	return awsutil.Prettify(s)
 10215  }
 10216  
 10217  // GoString returns the string representation.
 10218  //
 10219  // API parameter values that are decorated as "sensitive" in the API will not
 10220  // be included in the string output. The member name will be present, but the
 10221  // value will be replaced with "sensitive".
 10222  func (s CreateCacheSecurityGroupOutput) GoString() string {
 10223  	return s.String()
 10224  }
 10225  
 10226  // SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
 10227  func (s *CreateCacheSecurityGroupOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *CreateCacheSecurityGroupOutput {
 10228  	s.CacheSecurityGroup = v
 10229  	return s
 10230  }
 10231  
 10232  // Represents the input of a CreateCacheSubnetGroup operation.
 10233  type CreateCacheSubnetGroupInput struct {
 10234  	_ struct{} `type:"structure"`
 10235  
 10236  	// A description for the cache subnet group.
 10237  	//
 10238  	// CacheSubnetGroupDescription is a required field
 10239  	CacheSubnetGroupDescription *string `type:"string" required:"true"`
 10240  
 10241  	// A name for the cache subnet group. This value is stored as a lowercase string.
 10242  	//
 10243  	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
 10244  	//
 10245  	// Example: mysubnetgroup
 10246  	//
 10247  	// CacheSubnetGroupName is a required field
 10248  	CacheSubnetGroupName *string `type:"string" required:"true"`
 10249  
 10250  	// A list of VPC subnet IDs for the cache subnet group.
 10251  	//
 10252  	// SubnetIds is a required field
 10253  	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list" required:"true"`
 10254  
 10255  	// A list of tags to be added to this resource. A tag is a key-value pair. A
 10256  	// tag key must be accompanied by a tag value, although null is accepted.
 10257  	Tags []*Tag `locationNameList:"Tag" type:"list"`
 10258  }
 10259  
 10260  // String returns the string representation.
 10261  //
 10262  // API parameter values that are decorated as "sensitive" in the API will not
 10263  // be included in the string output. The member name will be present, but the
 10264  // value will be replaced with "sensitive".
 10265  func (s CreateCacheSubnetGroupInput) String() string {
 10266  	return awsutil.Prettify(s)
 10267  }
 10268  
 10269  // GoString returns the string representation.
 10270  //
 10271  // API parameter values that are decorated as "sensitive" in the API will not
 10272  // be included in the string output. The member name will be present, but the
 10273  // value will be replaced with "sensitive".
 10274  func (s CreateCacheSubnetGroupInput) GoString() string {
 10275  	return s.String()
 10276  }
 10277  
 10278  // Validate inspects the fields of the type to determine if they are valid.
 10279  func (s *CreateCacheSubnetGroupInput) Validate() error {
 10280  	invalidParams := request.ErrInvalidParams{Context: "CreateCacheSubnetGroupInput"}
 10281  	if s.CacheSubnetGroupDescription == nil {
 10282  		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupDescription"))
 10283  	}
 10284  	if s.CacheSubnetGroupName == nil {
 10285  		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
 10286  	}
 10287  	if s.SubnetIds == nil {
 10288  		invalidParams.Add(request.NewErrParamRequired("SubnetIds"))
 10289  	}
 10290  
 10291  	if invalidParams.Len() > 0 {
 10292  		return invalidParams
 10293  	}
 10294  	return nil
 10295  }
 10296  
 10297  // SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
 10298  func (s *CreateCacheSubnetGroupInput) SetCacheSubnetGroupDescription(v string) *CreateCacheSubnetGroupInput {
 10299  	s.CacheSubnetGroupDescription = &v
 10300  	return s
 10301  }
 10302  
 10303  // SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
 10304  func (s *CreateCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *CreateCacheSubnetGroupInput {
 10305  	s.CacheSubnetGroupName = &v
 10306  	return s
 10307  }
 10308  
 10309  // SetSubnetIds sets the SubnetIds field's value.
 10310  func (s *CreateCacheSubnetGroupInput) SetSubnetIds(v []*string) *CreateCacheSubnetGroupInput {
 10311  	s.SubnetIds = v
 10312  	return s
 10313  }
 10314  
 10315  // SetTags sets the Tags field's value.
 10316  func (s *CreateCacheSubnetGroupInput) SetTags(v []*Tag) *CreateCacheSubnetGroupInput {
 10317  	s.Tags = v
 10318  	return s
 10319  }
 10320  
 10321  type CreateCacheSubnetGroupOutput struct {
 10322  	_ struct{} `type:"structure"`
 10323  
 10324  	// Represents the output of one of the following operations:
 10325  	//
 10326  	//    * CreateCacheSubnetGroup
 10327  	//
 10328  	//    * ModifyCacheSubnetGroup
 10329  	CacheSubnetGroup *CacheSubnetGroup `type:"structure"`
 10330  }
 10331  
 10332  // String returns the string representation.
 10333  //
 10334  // API parameter values that are decorated as "sensitive" in the API will not
 10335  // be included in the string output. The member name will be present, but the
 10336  // value will be replaced with "sensitive".
 10337  func (s CreateCacheSubnetGroupOutput) String() string {
 10338  	return awsutil.Prettify(s)
 10339  }
 10340  
 10341  // GoString returns the string representation.
 10342  //
 10343  // API parameter values that are decorated as "sensitive" in the API will not
 10344  // be included in the string output. The member name will be present, but the
 10345  // value will be replaced with "sensitive".
 10346  func (s CreateCacheSubnetGroupOutput) GoString() string {
 10347  	return s.String()
 10348  }
 10349  
 10350  // SetCacheSubnetGroup sets the CacheSubnetGroup field's value.
 10351  func (s *CreateCacheSubnetGroupOutput) SetCacheSubnetGroup(v *CacheSubnetGroup) *CreateCacheSubnetGroupOutput {
 10352  	s.CacheSubnetGroup = v
 10353  	return s
 10354  }
 10355  
 10356  type CreateGlobalReplicationGroupInput struct {
 10357  	_ struct{} `type:"structure"`
 10358  
 10359  	// Provides details of the Global datastore
 10360  	GlobalReplicationGroupDescription *string `type:"string"`
 10361  
 10362  	// The suffix name of a Global datastore. Amazon ElastiCache automatically applies
 10363  	// a prefix to the Global datastore ID when it is created. Each Amazon Region
 10364  	// has its own prefix. For instance, a Global datastore ID created in the US-West-1
 10365  	// region will begin with "dsdfu" along with the suffix name you provide. The
 10366  	// suffix, combined with the auto-generated prefix, guarantees uniqueness of
 10367  	// the Global datastore name across multiple regions.
 10368  	//
 10369  	// For a full list of Amazon Regions and their respective Global datastore iD
 10370  	// prefixes, see Using the Amazon CLI with Global datastores (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Redis-Global-Datastores-CLI.html).
 10371  	//
 10372  	// GlobalReplicationGroupIdSuffix is a required field
 10373  	GlobalReplicationGroupIdSuffix *string `type:"string" required:"true"`
 10374  
 10375  	// The name of the primary cluster that accepts writes and will replicate updates
 10376  	// to the secondary cluster.
 10377  	//
 10378  	// PrimaryReplicationGroupId is a required field
 10379  	PrimaryReplicationGroupId *string `type:"string" required:"true"`
 10380  }
 10381  
 10382  // String returns the string representation.
 10383  //
 10384  // API parameter values that are decorated as "sensitive" in the API will not
 10385  // be included in the string output. The member name will be present, but the
 10386  // value will be replaced with "sensitive".
 10387  func (s CreateGlobalReplicationGroupInput) String() string {
 10388  	return awsutil.Prettify(s)
 10389  }
 10390  
 10391  // GoString returns the string representation.
 10392  //
 10393  // API parameter values that are decorated as "sensitive" in the API will not
 10394  // be included in the string output. The member name will be present, but the
 10395  // value will be replaced with "sensitive".
 10396  func (s CreateGlobalReplicationGroupInput) GoString() string {
 10397  	return s.String()
 10398  }
 10399  
 10400  // Validate inspects the fields of the type to determine if they are valid.
 10401  func (s *CreateGlobalReplicationGroupInput) Validate() error {
 10402  	invalidParams := request.ErrInvalidParams{Context: "CreateGlobalReplicationGroupInput"}
 10403  	if s.GlobalReplicationGroupIdSuffix == nil {
 10404  		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupIdSuffix"))
 10405  	}
 10406  	if s.PrimaryReplicationGroupId == nil {
 10407  		invalidParams.Add(request.NewErrParamRequired("PrimaryReplicationGroupId"))
 10408  	}
 10409  
 10410  	if invalidParams.Len() > 0 {
 10411  		return invalidParams
 10412  	}
 10413  	return nil
 10414  }
 10415  
 10416  // SetGlobalReplicationGroupDescription sets the GlobalReplicationGroupDescription field's value.
 10417  func (s *CreateGlobalReplicationGroupInput) SetGlobalReplicationGroupDescription(v string) *CreateGlobalReplicationGroupInput {
 10418  	s.GlobalReplicationGroupDescription = &v
 10419  	return s
 10420  }
 10421  
 10422  // SetGlobalReplicationGroupIdSuffix sets the GlobalReplicationGroupIdSuffix field's value.
 10423  func (s *CreateGlobalReplicationGroupInput) SetGlobalReplicationGroupIdSuffix(v string) *CreateGlobalReplicationGroupInput {
 10424  	s.GlobalReplicationGroupIdSuffix = &v
 10425  	return s
 10426  }
 10427  
 10428  // SetPrimaryReplicationGroupId sets the PrimaryReplicationGroupId field's value.
 10429  func (s *CreateGlobalReplicationGroupInput) SetPrimaryReplicationGroupId(v string) *CreateGlobalReplicationGroupInput {
 10430  	s.PrimaryReplicationGroupId = &v
 10431  	return s
 10432  }
 10433  
 10434  type CreateGlobalReplicationGroupOutput struct {
 10435  	_ struct{} `type:"structure"`
 10436  
 10437  	// Consists of a primary cluster that accepts writes and an associated secondary
 10438  	// cluster that resides in a different Amazon region. The secondary cluster
 10439  	// accepts only reads. The primary cluster automatically replicates updates
 10440  	// to the secondary cluster.
 10441  	//
 10442  	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
 10443  	//    datastore, which is what you use to associate a secondary cluster.
 10444  	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
 10445  }
 10446  
 10447  // String returns the string representation.
 10448  //
 10449  // API parameter values that are decorated as "sensitive" in the API will not
 10450  // be included in the string output. The member name will be present, but the
 10451  // value will be replaced with "sensitive".
 10452  func (s CreateGlobalReplicationGroupOutput) String() string {
 10453  	return awsutil.Prettify(s)
 10454  }
 10455  
 10456  // GoString returns the string representation.
 10457  //
 10458  // API parameter values that are decorated as "sensitive" in the API will not
 10459  // be included in the string output. The member name will be present, but the
 10460  // value will be replaced with "sensitive".
 10461  func (s CreateGlobalReplicationGroupOutput) GoString() string {
 10462  	return s.String()
 10463  }
 10464  
 10465  // SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
 10466  func (s *CreateGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *CreateGlobalReplicationGroupOutput {
 10467  	s.GlobalReplicationGroup = v
 10468  	return s
 10469  }
 10470  
 10471  // Represents the input of a CreateReplicationGroup operation.
 10472  type CreateReplicationGroupInput struct {
 10473  	_ struct{} `type:"structure"`
 10474  
 10475  	// A flag that enables encryption at rest when set to true.
 10476  	//
 10477  	// You cannot modify the value of AtRestEncryptionEnabled after the replication
 10478  	// group is created. To enable encryption at rest on a replication group you
 10479  	// must set AtRestEncryptionEnabled to true when you create the replication
 10480  	// group.
 10481  	//
 10482  	// Required: Only available when creating a replication group in an Amazon VPC
 10483  	// using redis version 3.2.6, 4.x or later.
 10484  	//
 10485  	// Default: false
 10486  	AtRestEncryptionEnabled *bool `type:"boolean"`
 10487  
 10488  	// Reserved parameter. The password used to access a password protected server.
 10489  	//
 10490  	// AuthToken can be specified only on replication groups where TransitEncryptionEnabled
 10491  	// is true.
 10492  	//
 10493  	// For HIPAA compliance, you must specify TransitEncryptionEnabled as true,
 10494  	// an AuthToken, and a CacheSubnetGroup.
 10495  	//
 10496  	// Password constraints:
 10497  	//
 10498  	//    * Must be only printable ASCII characters.
 10499  	//
 10500  	//    * Must be at least 16 characters and no more than 128 characters in length.
 10501  	//
 10502  	//    * The only permitted printable special characters are !, &, #, $, ^, <,
 10503  	//    >, and -. Other printable special characters cannot be used in the AUTH
 10504  	//    token.
 10505  	//
 10506  	// For more information, see AUTH password (http://redis.io/commands/AUTH) at
 10507  	// http://redis.io/commands/AUTH.
 10508  	AuthToken *string `type:"string"`
 10509  
 10510  	// This parameter is currently disabled.
 10511  	AutoMinorVersionUpgrade *bool `type:"boolean"`
 10512  
 10513  	// Specifies whether a read-only replica is automatically promoted to read/write
 10514  	// primary if the existing primary fails.
 10515  	//
 10516  	// AutomaticFailoverEnabled must be enabled for Redis (cluster mode enabled)
 10517  	// replication groups.
 10518  	//
 10519  	// Default: false
 10520  	AutomaticFailoverEnabled *bool `type:"boolean"`
 10521  
 10522  	// The compute and memory capacity of the nodes in the node group (shard).
 10523  	//
 10524  	// The following node types are supported by ElastiCache. Generally speaking,
 10525  	// the current generation types provide more memory and computational power
 10526  	// at lower cost when compared to their equivalent previous generation counterparts.
 10527  	//
 10528  	//    * General purpose: Current generation: M6g node types (available only
 10529  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
 10530  	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
 10531  	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
 10532  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
 10533  	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
 10534  	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
 10535  	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
 10536  	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
 10537  	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
 10538  	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
 10539  	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
 10540  	//    cache.m3.2xlarge
 10541  	//
 10542  	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
 10543  	//    cache.c1.xlarge
 10544  	//
 10545  	//    * Memory optimized: Current generation: R6g node types (available only
 10546  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
 10547  	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
 10548  	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
 10549  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
 10550  	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
 10551  	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
 10552  	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
 10553  	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
 10554  	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
 10555  	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
 10556  	//
 10557  	// Additional node type info
 10558  	//
 10559  	//    * All current generation instance types are created in Amazon VPC by default.
 10560  	//
 10561  	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
 10562  	//
 10563  	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
 10564  	//
 10565  	//    * Redis configuration variables appendonly and appendfsync are not supported
 10566  	//    on Redis version 2.8.22 and later.
 10567  	CacheNodeType *string `type:"string"`
 10568  
 10569  	// The name of the parameter group to associate with this replication group.
 10570  	// If this argument is omitted, the default cache parameter group for the specified
 10571  	// engine is used.
 10572  	//
 10573  	// If you are running Redis version 3.2.4 or later, only one node group (shard),
 10574  	// and want to use a default parameter group, we recommend that you specify
 10575  	// the parameter group by name.
 10576  	//
 10577  	//    * To create a Redis (cluster mode disabled) replication group, use CacheParameterGroupName=default.redis3.2.
 10578  	//
 10579  	//    * To create a Redis (cluster mode enabled) replication group, use CacheParameterGroupName=default.redis3.2.cluster.on.
 10580  	CacheParameterGroupName *string `type:"string"`
 10581  
 10582  	// A list of cache security group names to associate with this replication group.
 10583  	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
 10584  
 10585  	// The name of the cache subnet group to be used for the replication group.
 10586  	//
 10587  	// If you're going to launch your cluster in an Amazon VPC, you need to create
 10588  	// a subnet group before you start creating a cluster. For more information,
 10589  	// see Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.html).
 10590  	CacheSubnetGroupName *string `type:"string"`
 10591  
 10592  	// The name of the cache engine to be used for the clusters in this replication
 10593  	// group. Must be Redis.
 10594  	Engine *string `type:"string"`
 10595  
 10596  	// The version number of the cache engine to be used for the clusters in this
 10597  	// replication group. To view the supported cache engine versions, use the DescribeCacheEngineVersions
 10598  	// operation.
 10599  	//
 10600  	// Important: You can upgrade to a newer engine version (see Selecting a Cache
 10601  	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement))
 10602  	// in the ElastiCache User Guide, but you cannot downgrade to an earlier engine
 10603  	// version. If you want to use an earlier engine version, you must delete the
 10604  	// existing cluster or replication group and create it anew with the earlier
 10605  	// engine version.
 10606  	EngineVersion *string `type:"string"`
 10607  
 10608  	// The name of the Global datastore
 10609  	GlobalReplicationGroupId *string `type:"string"`
 10610  
 10611  	// The ID of the KMS key used to encrypt the disk in the cluster.
 10612  	KmsKeyId *string `type:"string"`
 10613  
 10614  	// Specifies the destination, format and type of the logs.
 10615  	LogDeliveryConfigurations []*LogDeliveryConfigurationRequest `locationNameList:"LogDeliveryConfigurationRequest" type:"list"`
 10616  
 10617  	// A flag indicating if you have Multi-AZ enabled to enhance fault tolerance.
 10618  	// For more information, see Minimizing Downtime: Multi-AZ (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html).
 10619  	MultiAZEnabled *bool `type:"boolean"`
 10620  
 10621  	// A list of node group (shard) configuration options. Each node group (shard)
 10622  	// configuration has the following members: PrimaryAvailabilityZone, ReplicaAvailabilityZones,
 10623  	// ReplicaCount, and Slots.
 10624  	//
 10625  	// If you're creating a Redis (cluster mode disabled) or a Redis (cluster mode
 10626  	// enabled) replication group, you can use this parameter to individually configure
 10627  	// each node group (shard), or you can omit this parameter. However, it is required
 10628  	// when seeding a Redis (cluster mode enabled) cluster from a S3 rdb file. You
 10629  	// must configure each node group (shard) using this parameter because you must
 10630  	// specify the slots for each node group.
 10631  	NodeGroupConfiguration []*NodeGroupConfiguration `locationNameList:"NodeGroupConfiguration" type:"list"`
 10632  
 10633  	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
 10634  	// (SNS) topic to which notifications are sent.
 10635  	//
 10636  	// The Amazon SNS topic owner must be the same as the cluster owner.
 10637  	NotificationTopicArn *string `type:"string"`
 10638  
 10639  	// The number of clusters this replication group initially has.
 10640  	//
 10641  	// This parameter is not used if there is more than one node group (shard).
 10642  	// You should use ReplicasPerNodeGroup instead.
 10643  	//
 10644  	// If AutomaticFailoverEnabled is true, the value of this parameter must be
 10645  	// at least 2. If AutomaticFailoverEnabled is false you can omit this parameter
 10646  	// (it will default to 1), or you can explicitly set it to a value between 2
 10647  	// and 6.
 10648  	//
 10649  	// The maximum permitted value for NumCacheClusters is 6 (1 primary plus 5 replicas).
 10650  	NumCacheClusters *int64 `type:"integer"`
 10651  
 10652  	// An optional parameter that specifies the number of node groups (shards) for
 10653  	// this Redis (cluster mode enabled) replication group. For Redis (cluster mode
 10654  	// disabled) either omit this parameter or set it to 1.
 10655  	//
 10656  	// Default: 1
 10657  	NumNodeGroups *int64 `type:"integer"`
 10658  
 10659  	// The port number on which each member of the replication group accepts connections.
 10660  	Port *int64 `type:"integer"`
 10661  
 10662  	// A list of EC2 Availability Zones in which the replication group's clusters
 10663  	// are created. The order of the Availability Zones in the list is the order
 10664  	// in which clusters are allocated. The primary cluster is created in the first
 10665  	// AZ in the list.
 10666  	//
 10667  	// This parameter is not used if there is more than one node group (shard).
 10668  	// You should use NodeGroupConfiguration instead.
 10669  	//
 10670  	// If you are creating your replication group in an Amazon VPC (recommended),
 10671  	// you can only locate clusters in Availability Zones associated with the subnets
 10672  	// in the selected subnet group.
 10673  	//
 10674  	// The number of Availability Zones listed must equal the value of NumCacheClusters.
 10675  	//
 10676  	// Default: system chosen Availability Zones.
 10677  	PreferredCacheClusterAZs []*string `locationNameList:"AvailabilityZone" type:"list"`
 10678  
 10679  	// Specifies the weekly time range during which maintenance on the cluster is
 10680  	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
 10681  	// (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid
 10682  	// values for ddd are:
 10683  	//
 10684  	// Specifies the weekly time range during which maintenance on the cluster is
 10685  	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
 10686  	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
 10687  	//
 10688  	// Valid values for ddd are:
 10689  	//
 10690  	//    * sun
 10691  	//
 10692  	//    * mon
 10693  	//
 10694  	//    * tue
 10695  	//
 10696  	//    * wed
 10697  	//
 10698  	//    * thu
 10699  	//
 10700  	//    * fri
 10701  	//
 10702  	//    * sat
 10703  	//
 10704  	// Example: sun:23:00-mon:01:30
 10705  	PreferredMaintenanceWindow *string `type:"string"`
 10706  
 10707  	// The identifier of the cluster that serves as the primary for this replication
 10708  	// group. This cluster must already exist and have a status of available.
 10709  	//
 10710  	// This parameter is not required if NumCacheClusters, NumNodeGroups, or ReplicasPerNodeGroup
 10711  	// is specified.
 10712  	PrimaryClusterId *string `type:"string"`
 10713  
 10714  	// An optional parameter that specifies the number of replica nodes in each
 10715  	// node group (shard). Valid values are 0 to 5.
 10716  	ReplicasPerNodeGroup *int64 `type:"integer"`
 10717  
 10718  	// A user-created description for the replication group.
 10719  	//
 10720  	// ReplicationGroupDescription is a required field
 10721  	ReplicationGroupDescription *string `type:"string" required:"true"`
 10722  
 10723  	// The replication group identifier. This parameter is stored as a lowercase
 10724  	// string.
 10725  	//
 10726  	// Constraints:
 10727  	//
 10728  	//    * A name must contain from 1 to 40 alphanumeric characters or hyphens.
 10729  	//
 10730  	//    * The first character must be a letter.
 10731  	//
 10732  	//    * A name cannot end with a hyphen or contain two consecutive hyphens.
 10733  	//
 10734  	// ReplicationGroupId is a required field
 10735  	ReplicationGroupId *string `type:"string" required:"true"`
 10736  
 10737  	// One or more Amazon VPC security groups associated with this replication group.
 10738  	//
 10739  	// Use this parameter only when you are creating a replication group in an Amazon
 10740  	// Virtual Private Cloud (Amazon VPC).
 10741  	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
 10742  
 10743  	// A list of Amazon Resource Names (ARN) that uniquely identify the Redis RDB
 10744  	// snapshot files stored in Amazon S3. The snapshot files are used to populate
 10745  	// the new replication group. The Amazon S3 object name in the ARN cannot contain
 10746  	// any commas. The new replication group will have the number of node groups
 10747  	// (console: shards) specified by the parameter NumNodeGroups or the number
 10748  	// of node groups configured by NodeGroupConfiguration regardless of the number
 10749  	// of ARNs specified here.
 10750  	//
 10751  	// Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
 10752  	SnapshotArns []*string `locationNameList:"SnapshotArn" type:"list"`
 10753  
 10754  	// The name of a snapshot from which to restore data into the new replication
 10755  	// group. The snapshot status changes to restoring while the new replication
 10756  	// group is being created.
 10757  	SnapshotName *string `type:"string"`
 10758  
 10759  	// The number of days for which ElastiCache retains automatic snapshots before
 10760  	// deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot
 10761  	// that was taken today is retained for 5 days before being deleted.
 10762  	//
 10763  	// Default: 0 (i.e., automatic backups are disabled for this cluster).
 10764  	SnapshotRetentionLimit *int64 `type:"integer"`
 10765  
 10766  	// The daily time range (in UTC) during which ElastiCache begins taking a daily
 10767  	// snapshot of your node group (shard).
 10768  	//
 10769  	// Example: 05:00-09:00
 10770  	//
 10771  	// If you do not specify this parameter, ElastiCache automatically chooses an
 10772  	// appropriate time range.
 10773  	SnapshotWindow *string `type:"string"`
 10774  
 10775  	// A list of tags to be added to this resource. Tags are comma-separated key,value
 10776  	// pairs (e.g. Key=myKey, Value=myKeyValue. You can include multiple tags as
 10777  	// shown following: Key=myKey, Value=myKeyValue Key=mySecondKey, Value=mySecondKeyValue.
 10778  	// Tags on replication groups will be replicated to all nodes.
 10779  	Tags []*Tag `locationNameList:"Tag" type:"list"`
 10780  
 10781  	// A flag that enables in-transit encryption when set to true.
 10782  	//
 10783  	// You cannot modify the value of TransitEncryptionEnabled after the cluster
 10784  	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
 10785  	// to true when you create a cluster.
 10786  	//
 10787  	// This parameter is valid only if the Engine parameter is redis, the EngineVersion
 10788  	// parameter is 3.2.6, 4.x or later, and the cluster is being created in an
 10789  	// Amazon VPC.
 10790  	//
 10791  	// If you enable in-transit encryption, you must also specify a value for CacheSubnetGroup.
 10792  	//
 10793  	// Required: Only available when creating a replication group in an Amazon VPC
 10794  	// using redis version 3.2.6, 4.x or later.
 10795  	//
 10796  	// Default: false
 10797  	//
 10798  	// For HIPAA compliance, you must specify TransitEncryptionEnabled as true,
 10799  	// an AuthToken, and a CacheSubnetGroup.
 10800  	TransitEncryptionEnabled *bool `type:"boolean"`
 10801  
 10802  	// The user group to associate with the replication group.
 10803  	UserGroupIds []*string `min:"1" type:"list"`
 10804  }
 10805  
 10806  // String returns the string representation.
 10807  //
 10808  // API parameter values that are decorated as "sensitive" in the API will not
 10809  // be included in the string output. The member name will be present, but the
 10810  // value will be replaced with "sensitive".
 10811  func (s CreateReplicationGroupInput) String() string {
 10812  	return awsutil.Prettify(s)
 10813  }
 10814  
 10815  // GoString returns the string representation.
 10816  //
 10817  // API parameter values that are decorated as "sensitive" in the API will not
 10818  // be included in the string output. The member name will be present, but the
 10819  // value will be replaced with "sensitive".
 10820  func (s CreateReplicationGroupInput) GoString() string {
 10821  	return s.String()
 10822  }
 10823  
 10824  // Validate inspects the fields of the type to determine if they are valid.
 10825  func (s *CreateReplicationGroupInput) Validate() error {
 10826  	invalidParams := request.ErrInvalidParams{Context: "CreateReplicationGroupInput"}
 10827  	if s.ReplicationGroupDescription == nil {
 10828  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupDescription"))
 10829  	}
 10830  	if s.ReplicationGroupId == nil {
 10831  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
 10832  	}
 10833  	if s.UserGroupIds != nil && len(s.UserGroupIds) < 1 {
 10834  		invalidParams.Add(request.NewErrParamMinLen("UserGroupIds", 1))
 10835  	}
 10836  	if s.NodeGroupConfiguration != nil {
 10837  		for i, v := range s.NodeGroupConfiguration {
 10838  			if v == nil {
 10839  				continue
 10840  			}
 10841  			if err := v.Validate(); err != nil {
 10842  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "NodeGroupConfiguration", i), err.(request.ErrInvalidParams))
 10843  			}
 10844  		}
 10845  	}
 10846  
 10847  	if invalidParams.Len() > 0 {
 10848  		return invalidParams
 10849  	}
 10850  	return nil
 10851  }
 10852  
 10853  // SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
 10854  func (s *CreateReplicationGroupInput) SetAtRestEncryptionEnabled(v bool) *CreateReplicationGroupInput {
 10855  	s.AtRestEncryptionEnabled = &v
 10856  	return s
 10857  }
 10858  
 10859  // SetAuthToken sets the AuthToken field's value.
 10860  func (s *CreateReplicationGroupInput) SetAuthToken(v string) *CreateReplicationGroupInput {
 10861  	s.AuthToken = &v
 10862  	return s
 10863  }
 10864  
 10865  // SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
 10866  func (s *CreateReplicationGroupInput) SetAutoMinorVersionUpgrade(v bool) *CreateReplicationGroupInput {
 10867  	s.AutoMinorVersionUpgrade = &v
 10868  	return s
 10869  }
 10870  
 10871  // SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
 10872  func (s *CreateReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *CreateReplicationGroupInput {
 10873  	s.AutomaticFailoverEnabled = &v
 10874  	return s
 10875  }
 10876  
 10877  // SetCacheNodeType sets the CacheNodeType field's value.
 10878  func (s *CreateReplicationGroupInput) SetCacheNodeType(v string) *CreateReplicationGroupInput {
 10879  	s.CacheNodeType = &v
 10880  	return s
 10881  }
 10882  
 10883  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
 10884  func (s *CreateReplicationGroupInput) SetCacheParameterGroupName(v string) *CreateReplicationGroupInput {
 10885  	s.CacheParameterGroupName = &v
 10886  	return s
 10887  }
 10888  
 10889  // SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
 10890  func (s *CreateReplicationGroupInput) SetCacheSecurityGroupNames(v []*string) *CreateReplicationGroupInput {
 10891  	s.CacheSecurityGroupNames = v
 10892  	return s
 10893  }
 10894  
 10895  // SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
 10896  func (s *CreateReplicationGroupInput) SetCacheSubnetGroupName(v string) *CreateReplicationGroupInput {
 10897  	s.CacheSubnetGroupName = &v
 10898  	return s
 10899  }
 10900  
 10901  // SetEngine sets the Engine field's value.
 10902  func (s *CreateReplicationGroupInput) SetEngine(v string) *CreateReplicationGroupInput {
 10903  	s.Engine = &v
 10904  	return s
 10905  }
 10906  
 10907  // SetEngineVersion sets the EngineVersion field's value.
 10908  func (s *CreateReplicationGroupInput) SetEngineVersion(v string) *CreateReplicationGroupInput {
 10909  	s.EngineVersion = &v
 10910  	return s
 10911  }
 10912  
 10913  // SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
 10914  func (s *CreateReplicationGroupInput) SetGlobalReplicationGroupId(v string) *CreateReplicationGroupInput {
 10915  	s.GlobalReplicationGroupId = &v
 10916  	return s
 10917  }
 10918  
 10919  // SetKmsKeyId sets the KmsKeyId field's value.
 10920  func (s *CreateReplicationGroupInput) SetKmsKeyId(v string) *CreateReplicationGroupInput {
 10921  	s.KmsKeyId = &v
 10922  	return s
 10923  }
 10924  
 10925  // SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
 10926  func (s *CreateReplicationGroupInput) SetLogDeliveryConfigurations(v []*LogDeliveryConfigurationRequest) *CreateReplicationGroupInput {
 10927  	s.LogDeliveryConfigurations = v
 10928  	return s
 10929  }
 10930  
 10931  // SetMultiAZEnabled sets the MultiAZEnabled field's value.
 10932  func (s *CreateReplicationGroupInput) SetMultiAZEnabled(v bool) *CreateReplicationGroupInput {
 10933  	s.MultiAZEnabled = &v
 10934  	return s
 10935  }
 10936  
 10937  // SetNodeGroupConfiguration sets the NodeGroupConfiguration field's value.
 10938  func (s *CreateReplicationGroupInput) SetNodeGroupConfiguration(v []*NodeGroupConfiguration) *CreateReplicationGroupInput {
 10939  	s.NodeGroupConfiguration = v
 10940  	return s
 10941  }
 10942  
 10943  // SetNotificationTopicArn sets the NotificationTopicArn field's value.
 10944  func (s *CreateReplicationGroupInput) SetNotificationTopicArn(v string) *CreateReplicationGroupInput {
 10945  	s.NotificationTopicArn = &v
 10946  	return s
 10947  }
 10948  
 10949  // SetNumCacheClusters sets the NumCacheClusters field's value.
 10950  func (s *CreateReplicationGroupInput) SetNumCacheClusters(v int64) *CreateReplicationGroupInput {
 10951  	s.NumCacheClusters = &v
 10952  	return s
 10953  }
 10954  
 10955  // SetNumNodeGroups sets the NumNodeGroups field's value.
 10956  func (s *CreateReplicationGroupInput) SetNumNodeGroups(v int64) *CreateReplicationGroupInput {
 10957  	s.NumNodeGroups = &v
 10958  	return s
 10959  }
 10960  
 10961  // SetPort sets the Port field's value.
 10962  func (s *CreateReplicationGroupInput) SetPort(v int64) *CreateReplicationGroupInput {
 10963  	s.Port = &v
 10964  	return s
 10965  }
 10966  
 10967  // SetPreferredCacheClusterAZs sets the PreferredCacheClusterAZs field's value.
 10968  func (s *CreateReplicationGroupInput) SetPreferredCacheClusterAZs(v []*string) *CreateReplicationGroupInput {
 10969  	s.PreferredCacheClusterAZs = v
 10970  	return s
 10971  }
 10972  
 10973  // SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
 10974  func (s *CreateReplicationGroupInput) SetPreferredMaintenanceWindow(v string) *CreateReplicationGroupInput {
 10975  	s.PreferredMaintenanceWindow = &v
 10976  	return s
 10977  }
 10978  
 10979  // SetPrimaryClusterId sets the PrimaryClusterId field's value.
 10980  func (s *CreateReplicationGroupInput) SetPrimaryClusterId(v string) *CreateReplicationGroupInput {
 10981  	s.PrimaryClusterId = &v
 10982  	return s
 10983  }
 10984  
 10985  // SetReplicasPerNodeGroup sets the ReplicasPerNodeGroup field's value.
 10986  func (s *CreateReplicationGroupInput) SetReplicasPerNodeGroup(v int64) *CreateReplicationGroupInput {
 10987  	s.ReplicasPerNodeGroup = &v
 10988  	return s
 10989  }
 10990  
 10991  // SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
 10992  func (s *CreateReplicationGroupInput) SetReplicationGroupDescription(v string) *CreateReplicationGroupInput {
 10993  	s.ReplicationGroupDescription = &v
 10994  	return s
 10995  }
 10996  
 10997  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 10998  func (s *CreateReplicationGroupInput) SetReplicationGroupId(v string) *CreateReplicationGroupInput {
 10999  	s.ReplicationGroupId = &v
 11000  	return s
 11001  }
 11002  
 11003  // SetSecurityGroupIds sets the SecurityGroupIds field's value.
 11004  func (s *CreateReplicationGroupInput) SetSecurityGroupIds(v []*string) *CreateReplicationGroupInput {
 11005  	s.SecurityGroupIds = v
 11006  	return s
 11007  }
 11008  
 11009  // SetSnapshotArns sets the SnapshotArns field's value.
 11010  func (s *CreateReplicationGroupInput) SetSnapshotArns(v []*string) *CreateReplicationGroupInput {
 11011  	s.SnapshotArns = v
 11012  	return s
 11013  }
 11014  
 11015  // SetSnapshotName sets the SnapshotName field's value.
 11016  func (s *CreateReplicationGroupInput) SetSnapshotName(v string) *CreateReplicationGroupInput {
 11017  	s.SnapshotName = &v
 11018  	return s
 11019  }
 11020  
 11021  // SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
 11022  func (s *CreateReplicationGroupInput) SetSnapshotRetentionLimit(v int64) *CreateReplicationGroupInput {
 11023  	s.SnapshotRetentionLimit = &v
 11024  	return s
 11025  }
 11026  
 11027  // SetSnapshotWindow sets the SnapshotWindow field's value.
 11028  func (s *CreateReplicationGroupInput) SetSnapshotWindow(v string) *CreateReplicationGroupInput {
 11029  	s.SnapshotWindow = &v
 11030  	return s
 11031  }
 11032  
 11033  // SetTags sets the Tags field's value.
 11034  func (s *CreateReplicationGroupInput) SetTags(v []*Tag) *CreateReplicationGroupInput {
 11035  	s.Tags = v
 11036  	return s
 11037  }
 11038  
 11039  // SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
 11040  func (s *CreateReplicationGroupInput) SetTransitEncryptionEnabled(v bool) *CreateReplicationGroupInput {
 11041  	s.TransitEncryptionEnabled = &v
 11042  	return s
 11043  }
 11044  
 11045  // SetUserGroupIds sets the UserGroupIds field's value.
 11046  func (s *CreateReplicationGroupInput) SetUserGroupIds(v []*string) *CreateReplicationGroupInput {
 11047  	s.UserGroupIds = v
 11048  	return s
 11049  }
 11050  
 11051  type CreateReplicationGroupOutput struct {
 11052  	_ struct{} `type:"structure"`
 11053  
 11054  	// Contains all of the attributes of a specific Redis replication group.
 11055  	ReplicationGroup *ReplicationGroup `type:"structure"`
 11056  }
 11057  
 11058  // String returns the string representation.
 11059  //
 11060  // API parameter values that are decorated as "sensitive" in the API will not
 11061  // be included in the string output. The member name will be present, but the
 11062  // value will be replaced with "sensitive".
 11063  func (s CreateReplicationGroupOutput) String() string {
 11064  	return awsutil.Prettify(s)
 11065  }
 11066  
 11067  // GoString returns the string representation.
 11068  //
 11069  // API parameter values that are decorated as "sensitive" in the API will not
 11070  // be included in the string output. The member name will be present, but the
 11071  // value will be replaced with "sensitive".
 11072  func (s CreateReplicationGroupOutput) GoString() string {
 11073  	return s.String()
 11074  }
 11075  
 11076  // SetReplicationGroup sets the ReplicationGroup field's value.
 11077  func (s *CreateReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *CreateReplicationGroupOutput {
 11078  	s.ReplicationGroup = v
 11079  	return s
 11080  }
 11081  
 11082  // Represents the input of a CreateSnapshot operation.
 11083  type CreateSnapshotInput struct {
 11084  	_ struct{} `type:"structure"`
 11085  
 11086  	// The identifier of an existing cluster. The snapshot is created from this
 11087  	// cluster.
 11088  	CacheClusterId *string `type:"string"`
 11089  
 11090  	// The ID of the KMS key used to encrypt the snapshot.
 11091  	KmsKeyId *string `type:"string"`
 11092  
 11093  	// The identifier of an existing replication group. The snapshot is created
 11094  	// from this replication group.
 11095  	ReplicationGroupId *string `type:"string"`
 11096  
 11097  	// A name for the snapshot being created.
 11098  	//
 11099  	// SnapshotName is a required field
 11100  	SnapshotName *string `type:"string" required:"true"`
 11101  
 11102  	// A list of tags to be added to this resource. A tag is a key-value pair. A
 11103  	// tag key must be accompanied by a tag value, although null is accepted.
 11104  	Tags []*Tag `locationNameList:"Tag" type:"list"`
 11105  }
 11106  
 11107  // String returns the string representation.
 11108  //
 11109  // API parameter values that are decorated as "sensitive" in the API will not
 11110  // be included in the string output. The member name will be present, but the
 11111  // value will be replaced with "sensitive".
 11112  func (s CreateSnapshotInput) String() string {
 11113  	return awsutil.Prettify(s)
 11114  }
 11115  
 11116  // GoString returns the string representation.
 11117  //
 11118  // API parameter values that are decorated as "sensitive" in the API will not
 11119  // be included in the string output. The member name will be present, but the
 11120  // value will be replaced with "sensitive".
 11121  func (s CreateSnapshotInput) GoString() string {
 11122  	return s.String()
 11123  }
 11124  
 11125  // Validate inspects the fields of the type to determine if they are valid.
 11126  func (s *CreateSnapshotInput) Validate() error {
 11127  	invalidParams := request.ErrInvalidParams{Context: "CreateSnapshotInput"}
 11128  	if s.SnapshotName == nil {
 11129  		invalidParams.Add(request.NewErrParamRequired("SnapshotName"))
 11130  	}
 11131  
 11132  	if invalidParams.Len() > 0 {
 11133  		return invalidParams
 11134  	}
 11135  	return nil
 11136  }
 11137  
 11138  // SetCacheClusterId sets the CacheClusterId field's value.
 11139  func (s *CreateSnapshotInput) SetCacheClusterId(v string) *CreateSnapshotInput {
 11140  	s.CacheClusterId = &v
 11141  	return s
 11142  }
 11143  
 11144  // SetKmsKeyId sets the KmsKeyId field's value.
 11145  func (s *CreateSnapshotInput) SetKmsKeyId(v string) *CreateSnapshotInput {
 11146  	s.KmsKeyId = &v
 11147  	return s
 11148  }
 11149  
 11150  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 11151  func (s *CreateSnapshotInput) SetReplicationGroupId(v string) *CreateSnapshotInput {
 11152  	s.ReplicationGroupId = &v
 11153  	return s
 11154  }
 11155  
 11156  // SetSnapshotName sets the SnapshotName field's value.
 11157  func (s *CreateSnapshotInput) SetSnapshotName(v string) *CreateSnapshotInput {
 11158  	s.SnapshotName = &v
 11159  	return s
 11160  }
 11161  
 11162  // SetTags sets the Tags field's value.
 11163  func (s *CreateSnapshotInput) SetTags(v []*Tag) *CreateSnapshotInput {
 11164  	s.Tags = v
 11165  	return s
 11166  }
 11167  
 11168  type CreateSnapshotOutput struct {
 11169  	_ struct{} `type:"structure"`
 11170  
 11171  	// Represents a copy of an entire Redis cluster as of the time when the snapshot
 11172  	// was taken.
 11173  	Snapshot *Snapshot `type:"structure"`
 11174  }
 11175  
 11176  // String returns the string representation.
 11177  //
 11178  // API parameter values that are decorated as "sensitive" in the API will not
 11179  // be included in the string output. The member name will be present, but the
 11180  // value will be replaced with "sensitive".
 11181  func (s CreateSnapshotOutput) String() string {
 11182  	return awsutil.Prettify(s)
 11183  }
 11184  
 11185  // GoString returns the string representation.
 11186  //
 11187  // API parameter values that are decorated as "sensitive" in the API will not
 11188  // be included in the string output. The member name will be present, but the
 11189  // value will be replaced with "sensitive".
 11190  func (s CreateSnapshotOutput) GoString() string {
 11191  	return s.String()
 11192  }
 11193  
 11194  // SetSnapshot sets the Snapshot field's value.
 11195  func (s *CreateSnapshotOutput) SetSnapshot(v *Snapshot) *CreateSnapshotOutput {
 11196  	s.Snapshot = v
 11197  	return s
 11198  }
 11199  
 11200  type CreateUserGroupInput struct {
 11201  	_ struct{} `type:"structure"`
 11202  
 11203  	// The current supported value is Redis.
 11204  	//
 11205  	// Engine is a required field
 11206  	Engine *string `type:"string" required:"true"`
 11207  
 11208  	// A list of tags to be added to this resource. A tag is a key-value pair. A
 11209  	// tag key must be accompanied by a tag value, although null is accepted.
 11210  	Tags []*Tag `locationNameList:"Tag" type:"list"`
 11211  
 11212  	// The ID of the user group.
 11213  	//
 11214  	// UserGroupId is a required field
 11215  	UserGroupId *string `type:"string" required:"true"`
 11216  
 11217  	// The list of user IDs that belong to the user group.
 11218  	UserIds []*string `min:"1" type:"list"`
 11219  }
 11220  
 11221  // String returns the string representation.
 11222  //
 11223  // API parameter values that are decorated as "sensitive" in the API will not
 11224  // be included in the string output. The member name will be present, but the
 11225  // value will be replaced with "sensitive".
 11226  func (s CreateUserGroupInput) String() string {
 11227  	return awsutil.Prettify(s)
 11228  }
 11229  
 11230  // GoString returns the string representation.
 11231  //
 11232  // API parameter values that are decorated as "sensitive" in the API will not
 11233  // be included in the string output. The member name will be present, but the
 11234  // value will be replaced with "sensitive".
 11235  func (s CreateUserGroupInput) GoString() string {
 11236  	return s.String()
 11237  }
 11238  
 11239  // Validate inspects the fields of the type to determine if they are valid.
 11240  func (s *CreateUserGroupInput) Validate() error {
 11241  	invalidParams := request.ErrInvalidParams{Context: "CreateUserGroupInput"}
 11242  	if s.Engine == nil {
 11243  		invalidParams.Add(request.NewErrParamRequired("Engine"))
 11244  	}
 11245  	if s.UserGroupId == nil {
 11246  		invalidParams.Add(request.NewErrParamRequired("UserGroupId"))
 11247  	}
 11248  	if s.UserIds != nil && len(s.UserIds) < 1 {
 11249  		invalidParams.Add(request.NewErrParamMinLen("UserIds", 1))
 11250  	}
 11251  
 11252  	if invalidParams.Len() > 0 {
 11253  		return invalidParams
 11254  	}
 11255  	return nil
 11256  }
 11257  
 11258  // SetEngine sets the Engine field's value.
 11259  func (s *CreateUserGroupInput) SetEngine(v string) *CreateUserGroupInput {
 11260  	s.Engine = &v
 11261  	return s
 11262  }
 11263  
 11264  // SetTags sets the Tags field's value.
 11265  func (s *CreateUserGroupInput) SetTags(v []*Tag) *CreateUserGroupInput {
 11266  	s.Tags = v
 11267  	return s
 11268  }
 11269  
 11270  // SetUserGroupId sets the UserGroupId field's value.
 11271  func (s *CreateUserGroupInput) SetUserGroupId(v string) *CreateUserGroupInput {
 11272  	s.UserGroupId = &v
 11273  	return s
 11274  }
 11275  
 11276  // SetUserIds sets the UserIds field's value.
 11277  func (s *CreateUserGroupInput) SetUserIds(v []*string) *CreateUserGroupInput {
 11278  	s.UserIds = v
 11279  	return s
 11280  }
 11281  
 11282  type CreateUserGroupOutput struct {
 11283  	_ struct{} `type:"structure"`
 11284  
 11285  	// The Amazon Resource Name (ARN) of the user group.
 11286  	ARN *string `type:"string"`
 11287  
 11288  	// The current supported value is Redis.
 11289  	Engine *string `type:"string"`
 11290  
 11291  	// A list of updates being applied to the user group.
 11292  	PendingChanges *UserGroupPendingChanges `type:"structure"`
 11293  
 11294  	// A list of replication groups that the user group can access.
 11295  	ReplicationGroups []*string `type:"list"`
 11296  
 11297  	// Indicates user group status. Can be "creating", "active", "modifying", "deleting".
 11298  	Status *string `type:"string"`
 11299  
 11300  	// The ID of the user group.
 11301  	UserGroupId *string `type:"string"`
 11302  
 11303  	// The list of user IDs that belong to the user group.
 11304  	UserIds []*string `type:"list"`
 11305  }
 11306  
 11307  // String returns the string representation.
 11308  //
 11309  // API parameter values that are decorated as "sensitive" in the API will not
 11310  // be included in the string output. The member name will be present, but the
 11311  // value will be replaced with "sensitive".
 11312  func (s CreateUserGroupOutput) String() string {
 11313  	return awsutil.Prettify(s)
 11314  }
 11315  
 11316  // GoString returns the string representation.
 11317  //
 11318  // API parameter values that are decorated as "sensitive" in the API will not
 11319  // be included in the string output. The member name will be present, but the
 11320  // value will be replaced with "sensitive".
 11321  func (s CreateUserGroupOutput) GoString() string {
 11322  	return s.String()
 11323  }
 11324  
 11325  // SetARN sets the ARN field's value.
 11326  func (s *CreateUserGroupOutput) SetARN(v string) *CreateUserGroupOutput {
 11327  	s.ARN = &v
 11328  	return s
 11329  }
 11330  
 11331  // SetEngine sets the Engine field's value.
 11332  func (s *CreateUserGroupOutput) SetEngine(v string) *CreateUserGroupOutput {
 11333  	s.Engine = &v
 11334  	return s
 11335  }
 11336  
 11337  // SetPendingChanges sets the PendingChanges field's value.
 11338  func (s *CreateUserGroupOutput) SetPendingChanges(v *UserGroupPendingChanges) *CreateUserGroupOutput {
 11339  	s.PendingChanges = v
 11340  	return s
 11341  }
 11342  
 11343  // SetReplicationGroups sets the ReplicationGroups field's value.
 11344  func (s *CreateUserGroupOutput) SetReplicationGroups(v []*string) *CreateUserGroupOutput {
 11345  	s.ReplicationGroups = v
 11346  	return s
 11347  }
 11348  
 11349  // SetStatus sets the Status field's value.
 11350  func (s *CreateUserGroupOutput) SetStatus(v string) *CreateUserGroupOutput {
 11351  	s.Status = &v
 11352  	return s
 11353  }
 11354  
 11355  // SetUserGroupId sets the UserGroupId field's value.
 11356  func (s *CreateUserGroupOutput) SetUserGroupId(v string) *CreateUserGroupOutput {
 11357  	s.UserGroupId = &v
 11358  	return s
 11359  }
 11360  
 11361  // SetUserIds sets the UserIds field's value.
 11362  func (s *CreateUserGroupOutput) SetUserIds(v []*string) *CreateUserGroupOutput {
 11363  	s.UserIds = v
 11364  	return s
 11365  }
 11366  
 11367  type CreateUserInput struct {
 11368  	_ struct{} `type:"structure"`
 11369  
 11370  	// Access permissions string used for this user.
 11371  	//
 11372  	// AccessString is a required field
 11373  	AccessString *string `type:"string" required:"true"`
 11374  
 11375  	// The current supported value is Redis.
 11376  	//
 11377  	// Engine is a required field
 11378  	Engine *string `type:"string" required:"true"`
 11379  
 11380  	// Indicates a password is not required for this user.
 11381  	NoPasswordRequired *bool `type:"boolean"`
 11382  
 11383  	// Passwords used for this user. You can create up to two passwords for each
 11384  	// user.
 11385  	Passwords []*string `min:"1" type:"list"`
 11386  
 11387  	// A list of tags to be added to this resource. A tag is a key-value pair. A
 11388  	// tag key must be accompanied by a tag value, although null is accepted.
 11389  	Tags []*Tag `locationNameList:"Tag" type:"list"`
 11390  
 11391  	// The ID of the user.
 11392  	//
 11393  	// UserId is a required field
 11394  	UserId *string `min:"1" type:"string" required:"true"`
 11395  
 11396  	// The username of the user.
 11397  	//
 11398  	// UserName is a required field
 11399  	UserName *string `min:"1" type:"string" required:"true"`
 11400  }
 11401  
 11402  // String returns the string representation.
 11403  //
 11404  // API parameter values that are decorated as "sensitive" in the API will not
 11405  // be included in the string output. The member name will be present, but the
 11406  // value will be replaced with "sensitive".
 11407  func (s CreateUserInput) String() string {
 11408  	return awsutil.Prettify(s)
 11409  }
 11410  
 11411  // GoString returns the string representation.
 11412  //
 11413  // API parameter values that are decorated as "sensitive" in the API will not
 11414  // be included in the string output. The member name will be present, but the
 11415  // value will be replaced with "sensitive".
 11416  func (s CreateUserInput) GoString() string {
 11417  	return s.String()
 11418  }
 11419  
 11420  // Validate inspects the fields of the type to determine if they are valid.
 11421  func (s *CreateUserInput) Validate() error {
 11422  	invalidParams := request.ErrInvalidParams{Context: "CreateUserInput"}
 11423  	if s.AccessString == nil {
 11424  		invalidParams.Add(request.NewErrParamRequired("AccessString"))
 11425  	}
 11426  	if s.Engine == nil {
 11427  		invalidParams.Add(request.NewErrParamRequired("Engine"))
 11428  	}
 11429  	if s.Passwords != nil && len(s.Passwords) < 1 {
 11430  		invalidParams.Add(request.NewErrParamMinLen("Passwords", 1))
 11431  	}
 11432  	if s.UserId == nil {
 11433  		invalidParams.Add(request.NewErrParamRequired("UserId"))
 11434  	}
 11435  	if s.UserId != nil && len(*s.UserId) < 1 {
 11436  		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
 11437  	}
 11438  	if s.UserName == nil {
 11439  		invalidParams.Add(request.NewErrParamRequired("UserName"))
 11440  	}
 11441  	if s.UserName != nil && len(*s.UserName) < 1 {
 11442  		invalidParams.Add(request.NewErrParamMinLen("UserName", 1))
 11443  	}
 11444  
 11445  	if invalidParams.Len() > 0 {
 11446  		return invalidParams
 11447  	}
 11448  	return nil
 11449  }
 11450  
 11451  // SetAccessString sets the AccessString field's value.
 11452  func (s *CreateUserInput) SetAccessString(v string) *CreateUserInput {
 11453  	s.AccessString = &v
 11454  	return s
 11455  }
 11456  
 11457  // SetEngine sets the Engine field's value.
 11458  func (s *CreateUserInput) SetEngine(v string) *CreateUserInput {
 11459  	s.Engine = &v
 11460  	return s
 11461  }
 11462  
 11463  // SetNoPasswordRequired sets the NoPasswordRequired field's value.
 11464  func (s *CreateUserInput) SetNoPasswordRequired(v bool) *CreateUserInput {
 11465  	s.NoPasswordRequired = &v
 11466  	return s
 11467  }
 11468  
 11469  // SetPasswords sets the Passwords field's value.
 11470  func (s *CreateUserInput) SetPasswords(v []*string) *CreateUserInput {
 11471  	s.Passwords = v
 11472  	return s
 11473  }
 11474  
 11475  // SetTags sets the Tags field's value.
 11476  func (s *CreateUserInput) SetTags(v []*Tag) *CreateUserInput {
 11477  	s.Tags = v
 11478  	return s
 11479  }
 11480  
 11481  // SetUserId sets the UserId field's value.
 11482  func (s *CreateUserInput) SetUserId(v string) *CreateUserInput {
 11483  	s.UserId = &v
 11484  	return s
 11485  }
 11486  
 11487  // SetUserName sets the UserName field's value.
 11488  func (s *CreateUserInput) SetUserName(v string) *CreateUserInput {
 11489  	s.UserName = &v
 11490  	return s
 11491  }
 11492  
 11493  type CreateUserOutput struct {
 11494  	_ struct{} `type:"structure"`
 11495  
 11496  	// The Amazon Resource Name (ARN) of the user.
 11497  	ARN *string `type:"string"`
 11498  
 11499  	// Access permissions string used for this user.
 11500  	AccessString *string `type:"string"`
 11501  
 11502  	// Denotes whether the user requires a password to authenticate.
 11503  	Authentication *Authentication `type:"structure"`
 11504  
 11505  	// The current supported value is Redis.
 11506  	Engine *string `type:"string"`
 11507  
 11508  	// Indicates the user status. Can be "active", "modifying" or "deleting".
 11509  	Status *string `type:"string"`
 11510  
 11511  	// Returns a list of the user group IDs the user belongs to.
 11512  	UserGroupIds []*string `type:"list"`
 11513  
 11514  	// The ID of the user.
 11515  	UserId *string `type:"string"`
 11516  
 11517  	// The username of the user.
 11518  	UserName *string `type:"string"`
 11519  }
 11520  
 11521  // String returns the string representation.
 11522  //
 11523  // API parameter values that are decorated as "sensitive" in the API will not
 11524  // be included in the string output. The member name will be present, but the
 11525  // value will be replaced with "sensitive".
 11526  func (s CreateUserOutput) String() string {
 11527  	return awsutil.Prettify(s)
 11528  }
 11529  
 11530  // GoString returns the string representation.
 11531  //
 11532  // API parameter values that are decorated as "sensitive" in the API will not
 11533  // be included in the string output. The member name will be present, but the
 11534  // value will be replaced with "sensitive".
 11535  func (s CreateUserOutput) GoString() string {
 11536  	return s.String()
 11537  }
 11538  
 11539  // SetARN sets the ARN field's value.
 11540  func (s *CreateUserOutput) SetARN(v string) *CreateUserOutput {
 11541  	s.ARN = &v
 11542  	return s
 11543  }
 11544  
 11545  // SetAccessString sets the AccessString field's value.
 11546  func (s *CreateUserOutput) SetAccessString(v string) *CreateUserOutput {
 11547  	s.AccessString = &v
 11548  	return s
 11549  }
 11550  
 11551  // SetAuthentication sets the Authentication field's value.
 11552  func (s *CreateUserOutput) SetAuthentication(v *Authentication) *CreateUserOutput {
 11553  	s.Authentication = v
 11554  	return s
 11555  }
 11556  
 11557  // SetEngine sets the Engine field's value.
 11558  func (s *CreateUserOutput) SetEngine(v string) *CreateUserOutput {
 11559  	s.Engine = &v
 11560  	return s
 11561  }
 11562  
 11563  // SetStatus sets the Status field's value.
 11564  func (s *CreateUserOutput) SetStatus(v string) *CreateUserOutput {
 11565  	s.Status = &v
 11566  	return s
 11567  }
 11568  
 11569  // SetUserGroupIds sets the UserGroupIds field's value.
 11570  func (s *CreateUserOutput) SetUserGroupIds(v []*string) *CreateUserOutput {
 11571  	s.UserGroupIds = v
 11572  	return s
 11573  }
 11574  
 11575  // SetUserId sets the UserId field's value.
 11576  func (s *CreateUserOutput) SetUserId(v string) *CreateUserOutput {
 11577  	s.UserId = &v
 11578  	return s
 11579  }
 11580  
 11581  // SetUserName sets the UserName field's value.
 11582  func (s *CreateUserOutput) SetUserName(v string) *CreateUserOutput {
 11583  	s.UserName = &v
 11584  	return s
 11585  }
 11586  
 11587  // The endpoint from which data should be migrated.
 11588  type CustomerNodeEndpoint struct {
 11589  	_ struct{} `type:"structure"`
 11590  
 11591  	// The address of the node endpoint
 11592  	Address *string `type:"string"`
 11593  
 11594  	// The port of the node endpoint
 11595  	Port *int64 `type:"integer"`
 11596  }
 11597  
 11598  // String returns the string representation.
 11599  //
 11600  // API parameter values that are decorated as "sensitive" in the API will not
 11601  // be included in the string output. The member name will be present, but the
 11602  // value will be replaced with "sensitive".
 11603  func (s CustomerNodeEndpoint) String() string {
 11604  	return awsutil.Prettify(s)
 11605  }
 11606  
 11607  // GoString returns the string representation.
 11608  //
 11609  // API parameter values that are decorated as "sensitive" in the API will not
 11610  // be included in the string output. The member name will be present, but the
 11611  // value will be replaced with "sensitive".
 11612  func (s CustomerNodeEndpoint) GoString() string {
 11613  	return s.String()
 11614  }
 11615  
 11616  // SetAddress sets the Address field's value.
 11617  func (s *CustomerNodeEndpoint) SetAddress(v string) *CustomerNodeEndpoint {
 11618  	s.Address = &v
 11619  	return s
 11620  }
 11621  
 11622  // SetPort sets the Port field's value.
 11623  func (s *CustomerNodeEndpoint) SetPort(v int64) *CustomerNodeEndpoint {
 11624  	s.Port = &v
 11625  	return s
 11626  }
 11627  
 11628  type DecreaseNodeGroupsInGlobalReplicationGroupInput struct {
 11629  	_ struct{} `type:"structure"`
 11630  
 11631  	// Indicates that the shard reconfiguration process begins immediately. At present,
 11632  	// the only permitted value for this parameter is true.
 11633  	//
 11634  	// ApplyImmediately is a required field
 11635  	ApplyImmediately *bool `type:"boolean" required:"true"`
 11636  
 11637  	// If the value of NodeGroupCount is less than the current number of node groups
 11638  	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
 11639  	// GlobalNodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster.
 11640  	// ElastiCache for Redis will attempt to remove all node groups listed by GlobalNodeGroupsToRemove
 11641  	// from the cluster.
 11642  	GlobalNodeGroupsToRemove []*string `locationNameList:"GlobalNodeGroupId" type:"list"`
 11643  
 11644  	// If the value of NodeGroupCount is less than the current number of node groups
 11645  	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
 11646  	// GlobalNodeGroupsToRetain is a list of NodeGroupIds to retain from the cluster.
 11647  	// ElastiCache for Redis will attempt to retain all node groups listed by GlobalNodeGroupsToRetain
 11648  	// from the cluster.
 11649  	GlobalNodeGroupsToRetain []*string `locationNameList:"GlobalNodeGroupId" type:"list"`
 11650  
 11651  	// The name of the Global datastore
 11652  	//
 11653  	// GlobalReplicationGroupId is a required field
 11654  	GlobalReplicationGroupId *string `type:"string" required:"true"`
 11655  
 11656  	// The number of node groups (shards) that results from the modification of
 11657  	// the shard configuration
 11658  	//
 11659  	// NodeGroupCount is a required field
 11660  	NodeGroupCount *int64 `type:"integer" required:"true"`
 11661  }
 11662  
 11663  // String returns the string representation.
 11664  //
 11665  // API parameter values that are decorated as "sensitive" in the API will not
 11666  // be included in the string output. The member name will be present, but the
 11667  // value will be replaced with "sensitive".
 11668  func (s DecreaseNodeGroupsInGlobalReplicationGroupInput) String() string {
 11669  	return awsutil.Prettify(s)
 11670  }
 11671  
 11672  // GoString returns the string representation.
 11673  //
 11674  // API parameter values that are decorated as "sensitive" in the API will not
 11675  // be included in the string output. The member name will be present, but the
 11676  // value will be replaced with "sensitive".
 11677  func (s DecreaseNodeGroupsInGlobalReplicationGroupInput) GoString() string {
 11678  	return s.String()
 11679  }
 11680  
 11681  // Validate inspects the fields of the type to determine if they are valid.
 11682  func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) Validate() error {
 11683  	invalidParams := request.ErrInvalidParams{Context: "DecreaseNodeGroupsInGlobalReplicationGroupInput"}
 11684  	if s.ApplyImmediately == nil {
 11685  		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
 11686  	}
 11687  	if s.GlobalReplicationGroupId == nil {
 11688  		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
 11689  	}
 11690  	if s.NodeGroupCount == nil {
 11691  		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
 11692  	}
 11693  
 11694  	if invalidParams.Len() > 0 {
 11695  		return invalidParams
 11696  	}
 11697  	return nil
 11698  }
 11699  
 11700  // SetApplyImmediately sets the ApplyImmediately field's value.
 11701  func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetApplyImmediately(v bool) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
 11702  	s.ApplyImmediately = &v
 11703  	return s
 11704  }
 11705  
 11706  // SetGlobalNodeGroupsToRemove sets the GlobalNodeGroupsToRemove field's value.
 11707  func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalNodeGroupsToRemove(v []*string) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
 11708  	s.GlobalNodeGroupsToRemove = v
 11709  	return s
 11710  }
 11711  
 11712  // SetGlobalNodeGroupsToRetain sets the GlobalNodeGroupsToRetain field's value.
 11713  func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalNodeGroupsToRetain(v []*string) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
 11714  	s.GlobalNodeGroupsToRetain = v
 11715  	return s
 11716  }
 11717  
 11718  // SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
 11719  func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
 11720  	s.GlobalReplicationGroupId = &v
 11721  	return s
 11722  }
 11723  
 11724  // SetNodeGroupCount sets the NodeGroupCount field's value.
 11725  func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetNodeGroupCount(v int64) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
 11726  	s.NodeGroupCount = &v
 11727  	return s
 11728  }
 11729  
 11730  type DecreaseNodeGroupsInGlobalReplicationGroupOutput struct {
 11731  	_ struct{} `type:"structure"`
 11732  
 11733  	// Consists of a primary cluster that accepts writes and an associated secondary
 11734  	// cluster that resides in a different Amazon region. The secondary cluster
 11735  	// accepts only reads. The primary cluster automatically replicates updates
 11736  	// to the secondary cluster.
 11737  	//
 11738  	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
 11739  	//    datastore, which is what you use to associate a secondary cluster.
 11740  	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
 11741  }
 11742  
 11743  // String returns the string representation.
 11744  //
 11745  // API parameter values that are decorated as "sensitive" in the API will not
 11746  // be included in the string output. The member name will be present, but the
 11747  // value will be replaced with "sensitive".
 11748  func (s DecreaseNodeGroupsInGlobalReplicationGroupOutput) String() string {
 11749  	return awsutil.Prettify(s)
 11750  }
 11751  
 11752  // GoString returns the string representation.
 11753  //
 11754  // API parameter values that are decorated as "sensitive" in the API will not
 11755  // be included in the string output. The member name will be present, but the
 11756  // value will be replaced with "sensitive".
 11757  func (s DecreaseNodeGroupsInGlobalReplicationGroupOutput) GoString() string {
 11758  	return s.String()
 11759  }
 11760  
 11761  // SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
 11762  func (s *DecreaseNodeGroupsInGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *DecreaseNodeGroupsInGlobalReplicationGroupOutput {
 11763  	s.GlobalReplicationGroup = v
 11764  	return s
 11765  }
 11766  
 11767  type DecreaseReplicaCountInput struct {
 11768  	_ struct{} `type:"structure"`
 11769  
 11770  	// If True, the number of replica nodes is decreased immediately. ApplyImmediately=False
 11771  	// is not currently supported.
 11772  	//
 11773  	// ApplyImmediately is a required field
 11774  	ApplyImmediately *bool `type:"boolean" required:"true"`
 11775  
 11776  	// The number of read replica nodes you want at the completion of this operation.
 11777  	// For Redis (cluster mode disabled) replication groups, this is the number
 11778  	// of replica nodes in the replication group. For Redis (cluster mode enabled)
 11779  	// replication groups, this is the number of replica nodes in each of the replication
 11780  	// group's node groups.
 11781  	//
 11782  	// The minimum number of replicas in a shard or replication group is:
 11783  	//
 11784  	//    * Redis (cluster mode disabled) If Multi-AZ is enabled: 1 If Multi-AZ
 11785  	//    is not enabled: 0
 11786  	//
 11787  	//    * Redis (cluster mode enabled): 0 (though you will not be able to failover
 11788  	//    to a replica if your primary node fails)
 11789  	NewReplicaCount *int64 `type:"integer"`
 11790  
 11791  	// A list of ConfigureShard objects that can be used to configure each shard
 11792  	// in a Redis (cluster mode enabled) replication group. The ConfigureShard has
 11793  	// three members: NewReplicaCount, NodeGroupId, and PreferredAvailabilityZones.
 11794  	ReplicaConfiguration []*ConfigureShard `locationNameList:"ConfigureShard" type:"list"`
 11795  
 11796  	// A list of the node ids to remove from the replication group or node group
 11797  	// (shard).
 11798  	ReplicasToRemove []*string `type:"list"`
 11799  
 11800  	// The id of the replication group from which you want to remove replica nodes.
 11801  	//
 11802  	// ReplicationGroupId is a required field
 11803  	ReplicationGroupId *string `type:"string" required:"true"`
 11804  }
 11805  
 11806  // String returns the string representation.
 11807  //
 11808  // API parameter values that are decorated as "sensitive" in the API will not
 11809  // be included in the string output. The member name will be present, but the
 11810  // value will be replaced with "sensitive".
 11811  func (s DecreaseReplicaCountInput) String() string {
 11812  	return awsutil.Prettify(s)
 11813  }
 11814  
 11815  // GoString returns the string representation.
 11816  //
 11817  // API parameter values that are decorated as "sensitive" in the API will not
 11818  // be included in the string output. The member name will be present, but the
 11819  // value will be replaced with "sensitive".
 11820  func (s DecreaseReplicaCountInput) GoString() string {
 11821  	return s.String()
 11822  }
 11823  
 11824  // Validate inspects the fields of the type to determine if they are valid.
 11825  func (s *DecreaseReplicaCountInput) Validate() error {
 11826  	invalidParams := request.ErrInvalidParams{Context: "DecreaseReplicaCountInput"}
 11827  	if s.ApplyImmediately == nil {
 11828  		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
 11829  	}
 11830  	if s.ReplicationGroupId == nil {
 11831  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
 11832  	}
 11833  	if s.ReplicaConfiguration != nil {
 11834  		for i, v := range s.ReplicaConfiguration {
 11835  			if v == nil {
 11836  				continue
 11837  			}
 11838  			if err := v.Validate(); err != nil {
 11839  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaConfiguration", i), err.(request.ErrInvalidParams))
 11840  			}
 11841  		}
 11842  	}
 11843  
 11844  	if invalidParams.Len() > 0 {
 11845  		return invalidParams
 11846  	}
 11847  	return nil
 11848  }
 11849  
 11850  // SetApplyImmediately sets the ApplyImmediately field's value.
 11851  func (s *DecreaseReplicaCountInput) SetApplyImmediately(v bool) *DecreaseReplicaCountInput {
 11852  	s.ApplyImmediately = &v
 11853  	return s
 11854  }
 11855  
 11856  // SetNewReplicaCount sets the NewReplicaCount field's value.
 11857  func (s *DecreaseReplicaCountInput) SetNewReplicaCount(v int64) *DecreaseReplicaCountInput {
 11858  	s.NewReplicaCount = &v
 11859  	return s
 11860  }
 11861  
 11862  // SetReplicaConfiguration sets the ReplicaConfiguration field's value.
 11863  func (s *DecreaseReplicaCountInput) SetReplicaConfiguration(v []*ConfigureShard) *DecreaseReplicaCountInput {
 11864  	s.ReplicaConfiguration = v
 11865  	return s
 11866  }
 11867  
 11868  // SetReplicasToRemove sets the ReplicasToRemove field's value.
 11869  func (s *DecreaseReplicaCountInput) SetReplicasToRemove(v []*string) *DecreaseReplicaCountInput {
 11870  	s.ReplicasToRemove = v
 11871  	return s
 11872  }
 11873  
 11874  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 11875  func (s *DecreaseReplicaCountInput) SetReplicationGroupId(v string) *DecreaseReplicaCountInput {
 11876  	s.ReplicationGroupId = &v
 11877  	return s
 11878  }
 11879  
 11880  type DecreaseReplicaCountOutput struct {
 11881  	_ struct{} `type:"structure"`
 11882  
 11883  	// Contains all of the attributes of a specific Redis replication group.
 11884  	ReplicationGroup *ReplicationGroup `type:"structure"`
 11885  }
 11886  
 11887  // String returns the string representation.
 11888  //
 11889  // API parameter values that are decorated as "sensitive" in the API will not
 11890  // be included in the string output. The member name will be present, but the
 11891  // value will be replaced with "sensitive".
 11892  func (s DecreaseReplicaCountOutput) String() string {
 11893  	return awsutil.Prettify(s)
 11894  }
 11895  
 11896  // GoString returns the string representation.
 11897  //
 11898  // API parameter values that are decorated as "sensitive" in the API will not
 11899  // be included in the string output. The member name will be present, but the
 11900  // value will be replaced with "sensitive".
 11901  func (s DecreaseReplicaCountOutput) GoString() string {
 11902  	return s.String()
 11903  }
 11904  
 11905  // SetReplicationGroup sets the ReplicationGroup field's value.
 11906  func (s *DecreaseReplicaCountOutput) SetReplicationGroup(v *ReplicationGroup) *DecreaseReplicaCountOutput {
 11907  	s.ReplicationGroup = v
 11908  	return s
 11909  }
 11910  
 11911  // Represents the input of a DeleteCacheCluster operation.
 11912  type DeleteCacheClusterInput struct {
 11913  	_ struct{} `type:"structure"`
 11914  
 11915  	// The cluster identifier for the cluster to be deleted. This parameter is not
 11916  	// case sensitive.
 11917  	//
 11918  	// CacheClusterId is a required field
 11919  	CacheClusterId *string `type:"string" required:"true"`
 11920  
 11921  	// The user-supplied name of a final cluster snapshot. This is the unique name
 11922  	// that identifies the snapshot. ElastiCache creates the snapshot, and then
 11923  	// deletes the cluster immediately afterward.
 11924  	FinalSnapshotIdentifier *string `type:"string"`
 11925  }
 11926  
 11927  // String returns the string representation.
 11928  //
 11929  // API parameter values that are decorated as "sensitive" in the API will not
 11930  // be included in the string output. The member name will be present, but the
 11931  // value will be replaced with "sensitive".
 11932  func (s DeleteCacheClusterInput) String() string {
 11933  	return awsutil.Prettify(s)
 11934  }
 11935  
 11936  // GoString returns the string representation.
 11937  //
 11938  // API parameter values that are decorated as "sensitive" in the API will not
 11939  // be included in the string output. The member name will be present, but the
 11940  // value will be replaced with "sensitive".
 11941  func (s DeleteCacheClusterInput) GoString() string {
 11942  	return s.String()
 11943  }
 11944  
 11945  // Validate inspects the fields of the type to determine if they are valid.
 11946  func (s *DeleteCacheClusterInput) Validate() error {
 11947  	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheClusterInput"}
 11948  	if s.CacheClusterId == nil {
 11949  		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
 11950  	}
 11951  
 11952  	if invalidParams.Len() > 0 {
 11953  		return invalidParams
 11954  	}
 11955  	return nil
 11956  }
 11957  
 11958  // SetCacheClusterId sets the CacheClusterId field's value.
 11959  func (s *DeleteCacheClusterInput) SetCacheClusterId(v string) *DeleteCacheClusterInput {
 11960  	s.CacheClusterId = &v
 11961  	return s
 11962  }
 11963  
 11964  // SetFinalSnapshotIdentifier sets the FinalSnapshotIdentifier field's value.
 11965  func (s *DeleteCacheClusterInput) SetFinalSnapshotIdentifier(v string) *DeleteCacheClusterInput {
 11966  	s.FinalSnapshotIdentifier = &v
 11967  	return s
 11968  }
 11969  
 11970  type DeleteCacheClusterOutput struct {
 11971  	_ struct{} `type:"structure"`
 11972  
 11973  	// Contains all of the attributes of a specific cluster.
 11974  	CacheCluster *CacheCluster `type:"structure"`
 11975  }
 11976  
 11977  // String returns the string representation.
 11978  //
 11979  // API parameter values that are decorated as "sensitive" in the API will not
 11980  // be included in the string output. The member name will be present, but the
 11981  // value will be replaced with "sensitive".
 11982  func (s DeleteCacheClusterOutput) String() string {
 11983  	return awsutil.Prettify(s)
 11984  }
 11985  
 11986  // GoString returns the string representation.
 11987  //
 11988  // API parameter values that are decorated as "sensitive" in the API will not
 11989  // be included in the string output. The member name will be present, but the
 11990  // value will be replaced with "sensitive".
 11991  func (s DeleteCacheClusterOutput) GoString() string {
 11992  	return s.String()
 11993  }
 11994  
 11995  // SetCacheCluster sets the CacheCluster field's value.
 11996  func (s *DeleteCacheClusterOutput) SetCacheCluster(v *CacheCluster) *DeleteCacheClusterOutput {
 11997  	s.CacheCluster = v
 11998  	return s
 11999  }
 12000  
 12001  // Represents the input of a DeleteCacheParameterGroup operation.
 12002  type DeleteCacheParameterGroupInput struct {
 12003  	_ struct{} `type:"structure"`
 12004  
 12005  	// The name of the cache parameter group to delete.
 12006  	//
 12007  	// The specified cache security group must not be associated with any clusters.
 12008  	//
 12009  	// CacheParameterGroupName is a required field
 12010  	CacheParameterGroupName *string `type:"string" required:"true"`
 12011  }
 12012  
 12013  // String returns the string representation.
 12014  //
 12015  // API parameter values that are decorated as "sensitive" in the API will not
 12016  // be included in the string output. The member name will be present, but the
 12017  // value will be replaced with "sensitive".
 12018  func (s DeleteCacheParameterGroupInput) String() string {
 12019  	return awsutil.Prettify(s)
 12020  }
 12021  
 12022  // GoString returns the string representation.
 12023  //
 12024  // API parameter values that are decorated as "sensitive" in the API will not
 12025  // be included in the string output. The member name will be present, but the
 12026  // value will be replaced with "sensitive".
 12027  func (s DeleteCacheParameterGroupInput) GoString() string {
 12028  	return s.String()
 12029  }
 12030  
 12031  // Validate inspects the fields of the type to determine if they are valid.
 12032  func (s *DeleteCacheParameterGroupInput) Validate() error {
 12033  	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheParameterGroupInput"}
 12034  	if s.CacheParameterGroupName == nil {
 12035  		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
 12036  	}
 12037  
 12038  	if invalidParams.Len() > 0 {
 12039  		return invalidParams
 12040  	}
 12041  	return nil
 12042  }
 12043  
 12044  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
 12045  func (s *DeleteCacheParameterGroupInput) SetCacheParameterGroupName(v string) *DeleteCacheParameterGroupInput {
 12046  	s.CacheParameterGroupName = &v
 12047  	return s
 12048  }
 12049  
 12050  type DeleteCacheParameterGroupOutput struct {
 12051  	_ struct{} `type:"structure"`
 12052  }
 12053  
 12054  // String returns the string representation.
 12055  //
 12056  // API parameter values that are decorated as "sensitive" in the API will not
 12057  // be included in the string output. The member name will be present, but the
 12058  // value will be replaced with "sensitive".
 12059  func (s DeleteCacheParameterGroupOutput) String() string {
 12060  	return awsutil.Prettify(s)
 12061  }
 12062  
 12063  // GoString returns the string representation.
 12064  //
 12065  // API parameter values that are decorated as "sensitive" in the API will not
 12066  // be included in the string output. The member name will be present, but the
 12067  // value will be replaced with "sensitive".
 12068  func (s DeleteCacheParameterGroupOutput) GoString() string {
 12069  	return s.String()
 12070  }
 12071  
 12072  // Represents the input of a DeleteCacheSecurityGroup operation.
 12073  type DeleteCacheSecurityGroupInput struct {
 12074  	_ struct{} `type:"structure"`
 12075  
 12076  	// The name of the cache security group to delete.
 12077  	//
 12078  	// You cannot delete the default security group.
 12079  	//
 12080  	// CacheSecurityGroupName is a required field
 12081  	CacheSecurityGroupName *string `type:"string" required:"true"`
 12082  }
 12083  
 12084  // String returns the string representation.
 12085  //
 12086  // API parameter values that are decorated as "sensitive" in the API will not
 12087  // be included in the string output. The member name will be present, but the
 12088  // value will be replaced with "sensitive".
 12089  func (s DeleteCacheSecurityGroupInput) String() string {
 12090  	return awsutil.Prettify(s)
 12091  }
 12092  
 12093  // GoString returns the string representation.
 12094  //
 12095  // API parameter values that are decorated as "sensitive" in the API will not
 12096  // be included in the string output. The member name will be present, but the
 12097  // value will be replaced with "sensitive".
 12098  func (s DeleteCacheSecurityGroupInput) GoString() string {
 12099  	return s.String()
 12100  }
 12101  
 12102  // Validate inspects the fields of the type to determine if they are valid.
 12103  func (s *DeleteCacheSecurityGroupInput) Validate() error {
 12104  	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheSecurityGroupInput"}
 12105  	if s.CacheSecurityGroupName == nil {
 12106  		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
 12107  	}
 12108  
 12109  	if invalidParams.Len() > 0 {
 12110  		return invalidParams
 12111  	}
 12112  	return nil
 12113  }
 12114  
 12115  // SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
 12116  func (s *DeleteCacheSecurityGroupInput) SetCacheSecurityGroupName(v string) *DeleteCacheSecurityGroupInput {
 12117  	s.CacheSecurityGroupName = &v
 12118  	return s
 12119  }
 12120  
 12121  type DeleteCacheSecurityGroupOutput struct {
 12122  	_ struct{} `type:"structure"`
 12123  }
 12124  
 12125  // String returns the string representation.
 12126  //
 12127  // API parameter values that are decorated as "sensitive" in the API will not
 12128  // be included in the string output. The member name will be present, but the
 12129  // value will be replaced with "sensitive".
 12130  func (s DeleteCacheSecurityGroupOutput) String() string {
 12131  	return awsutil.Prettify(s)
 12132  }
 12133  
 12134  // GoString returns the string representation.
 12135  //
 12136  // API parameter values that are decorated as "sensitive" in the API will not
 12137  // be included in the string output. The member name will be present, but the
 12138  // value will be replaced with "sensitive".
 12139  func (s DeleteCacheSecurityGroupOutput) GoString() string {
 12140  	return s.String()
 12141  }
 12142  
 12143  // Represents the input of a DeleteCacheSubnetGroup operation.
 12144  type DeleteCacheSubnetGroupInput struct {
 12145  	_ struct{} `type:"structure"`
 12146  
 12147  	// The name of the cache subnet group to delete.
 12148  	//
 12149  	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
 12150  	//
 12151  	// CacheSubnetGroupName is a required field
 12152  	CacheSubnetGroupName *string `type:"string" required:"true"`
 12153  }
 12154  
 12155  // String returns the string representation.
 12156  //
 12157  // API parameter values that are decorated as "sensitive" in the API will not
 12158  // be included in the string output. The member name will be present, but the
 12159  // value will be replaced with "sensitive".
 12160  func (s DeleteCacheSubnetGroupInput) String() string {
 12161  	return awsutil.Prettify(s)
 12162  }
 12163  
 12164  // GoString returns the string representation.
 12165  //
 12166  // API parameter values that are decorated as "sensitive" in the API will not
 12167  // be included in the string output. The member name will be present, but the
 12168  // value will be replaced with "sensitive".
 12169  func (s DeleteCacheSubnetGroupInput) GoString() string {
 12170  	return s.String()
 12171  }
 12172  
 12173  // Validate inspects the fields of the type to determine if they are valid.
 12174  func (s *DeleteCacheSubnetGroupInput) Validate() error {
 12175  	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheSubnetGroupInput"}
 12176  	if s.CacheSubnetGroupName == nil {
 12177  		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
 12178  	}
 12179  
 12180  	if invalidParams.Len() > 0 {
 12181  		return invalidParams
 12182  	}
 12183  	return nil
 12184  }
 12185  
 12186  // SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
 12187  func (s *DeleteCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *DeleteCacheSubnetGroupInput {
 12188  	s.CacheSubnetGroupName = &v
 12189  	return s
 12190  }
 12191  
 12192  type DeleteCacheSubnetGroupOutput struct {
 12193  	_ struct{} `type:"structure"`
 12194  }
 12195  
 12196  // String returns the string representation.
 12197  //
 12198  // API parameter values that are decorated as "sensitive" in the API will not
 12199  // be included in the string output. The member name will be present, but the
 12200  // value will be replaced with "sensitive".
 12201  func (s DeleteCacheSubnetGroupOutput) String() string {
 12202  	return awsutil.Prettify(s)
 12203  }
 12204  
 12205  // GoString returns the string representation.
 12206  //
 12207  // API parameter values that are decorated as "sensitive" in the API will not
 12208  // be included in the string output. The member name will be present, but the
 12209  // value will be replaced with "sensitive".
 12210  func (s DeleteCacheSubnetGroupOutput) GoString() string {
 12211  	return s.String()
 12212  }
 12213  
 12214  type DeleteGlobalReplicationGroupInput struct {
 12215  	_ struct{} `type:"structure"`
 12216  
 12217  	// The name of the Global datastore
 12218  	//
 12219  	// GlobalReplicationGroupId is a required field
 12220  	GlobalReplicationGroupId *string `type:"string" required:"true"`
 12221  
 12222  	// The primary replication group is retained as a standalone replication group.
 12223  	//
 12224  	// RetainPrimaryReplicationGroup is a required field
 12225  	RetainPrimaryReplicationGroup *bool `type:"boolean" required:"true"`
 12226  }
 12227  
 12228  // String returns the string representation.
 12229  //
 12230  // API parameter values that are decorated as "sensitive" in the API will not
 12231  // be included in the string output. The member name will be present, but the
 12232  // value will be replaced with "sensitive".
 12233  func (s DeleteGlobalReplicationGroupInput) String() string {
 12234  	return awsutil.Prettify(s)
 12235  }
 12236  
 12237  // GoString returns the string representation.
 12238  //
 12239  // API parameter values that are decorated as "sensitive" in the API will not
 12240  // be included in the string output. The member name will be present, but the
 12241  // value will be replaced with "sensitive".
 12242  func (s DeleteGlobalReplicationGroupInput) GoString() string {
 12243  	return s.String()
 12244  }
 12245  
 12246  // Validate inspects the fields of the type to determine if they are valid.
 12247  func (s *DeleteGlobalReplicationGroupInput) Validate() error {
 12248  	invalidParams := request.ErrInvalidParams{Context: "DeleteGlobalReplicationGroupInput"}
 12249  	if s.GlobalReplicationGroupId == nil {
 12250  		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
 12251  	}
 12252  	if s.RetainPrimaryReplicationGroup == nil {
 12253  		invalidParams.Add(request.NewErrParamRequired("RetainPrimaryReplicationGroup"))
 12254  	}
 12255  
 12256  	if invalidParams.Len() > 0 {
 12257  		return invalidParams
 12258  	}
 12259  	return nil
 12260  }
 12261  
 12262  // SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
 12263  func (s *DeleteGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *DeleteGlobalReplicationGroupInput {
 12264  	s.GlobalReplicationGroupId = &v
 12265  	return s
 12266  }
 12267  
 12268  // SetRetainPrimaryReplicationGroup sets the RetainPrimaryReplicationGroup field's value.
 12269  func (s *DeleteGlobalReplicationGroupInput) SetRetainPrimaryReplicationGroup(v bool) *DeleteGlobalReplicationGroupInput {
 12270  	s.RetainPrimaryReplicationGroup = &v
 12271  	return s
 12272  }
 12273  
 12274  type DeleteGlobalReplicationGroupOutput struct {
 12275  	_ struct{} `type:"structure"`
 12276  
 12277  	// Consists of a primary cluster that accepts writes and an associated secondary
 12278  	// cluster that resides in a different Amazon region. The secondary cluster
 12279  	// accepts only reads. The primary cluster automatically replicates updates
 12280  	// to the secondary cluster.
 12281  	//
 12282  	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
 12283  	//    datastore, which is what you use to associate a secondary cluster.
 12284  	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
 12285  }
 12286  
 12287  // String returns the string representation.
 12288  //
 12289  // API parameter values that are decorated as "sensitive" in the API will not
 12290  // be included in the string output. The member name will be present, but the
 12291  // value will be replaced with "sensitive".
 12292  func (s DeleteGlobalReplicationGroupOutput) String() string {
 12293  	return awsutil.Prettify(s)
 12294  }
 12295  
 12296  // GoString returns the string representation.
 12297  //
 12298  // API parameter values that are decorated as "sensitive" in the API will not
 12299  // be included in the string output. The member name will be present, but the
 12300  // value will be replaced with "sensitive".
 12301  func (s DeleteGlobalReplicationGroupOutput) GoString() string {
 12302  	return s.String()
 12303  }
 12304  
 12305  // SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
 12306  func (s *DeleteGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *DeleteGlobalReplicationGroupOutput {
 12307  	s.GlobalReplicationGroup = v
 12308  	return s
 12309  }
 12310  
 12311  // Represents the input of a DeleteReplicationGroup operation.
 12312  type DeleteReplicationGroupInput struct {
 12313  	_ struct{} `type:"structure"`
 12314  
 12315  	// The name of a final node group (shard) snapshot. ElastiCache creates the
 12316  	// snapshot from the primary node in the cluster, rather than one of the replicas;
 12317  	// this is to ensure that it captures the freshest data. After the final snapshot
 12318  	// is taken, the replication group is immediately deleted.
 12319  	FinalSnapshotIdentifier *string `type:"string"`
 12320  
 12321  	// The identifier for the cluster to be deleted. This parameter is not case
 12322  	// sensitive.
 12323  	//
 12324  	// ReplicationGroupId is a required field
 12325  	ReplicationGroupId *string `type:"string" required:"true"`
 12326  
 12327  	// If set to true, all of the read replicas are deleted, but the primary node
 12328  	// is retained.
 12329  	RetainPrimaryCluster *bool `type:"boolean"`
 12330  }
 12331  
 12332  // String 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 DeleteReplicationGroupInput) String() string {
 12338  	return awsutil.Prettify(s)
 12339  }
 12340  
 12341  // GoString returns the string representation.
 12342  //
 12343  // API parameter values that are decorated as "sensitive" in the API will not
 12344  // be included in the string output. The member name will be present, but the
 12345  // value will be replaced with "sensitive".
 12346  func (s DeleteReplicationGroupInput) GoString() string {
 12347  	return s.String()
 12348  }
 12349  
 12350  // Validate inspects the fields of the type to determine if they are valid.
 12351  func (s *DeleteReplicationGroupInput) Validate() error {
 12352  	invalidParams := request.ErrInvalidParams{Context: "DeleteReplicationGroupInput"}
 12353  	if s.ReplicationGroupId == nil {
 12354  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
 12355  	}
 12356  
 12357  	if invalidParams.Len() > 0 {
 12358  		return invalidParams
 12359  	}
 12360  	return nil
 12361  }
 12362  
 12363  // SetFinalSnapshotIdentifier sets the FinalSnapshotIdentifier field's value.
 12364  func (s *DeleteReplicationGroupInput) SetFinalSnapshotIdentifier(v string) *DeleteReplicationGroupInput {
 12365  	s.FinalSnapshotIdentifier = &v
 12366  	return s
 12367  }
 12368  
 12369  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 12370  func (s *DeleteReplicationGroupInput) SetReplicationGroupId(v string) *DeleteReplicationGroupInput {
 12371  	s.ReplicationGroupId = &v
 12372  	return s
 12373  }
 12374  
 12375  // SetRetainPrimaryCluster sets the RetainPrimaryCluster field's value.
 12376  func (s *DeleteReplicationGroupInput) SetRetainPrimaryCluster(v bool) *DeleteReplicationGroupInput {
 12377  	s.RetainPrimaryCluster = &v
 12378  	return s
 12379  }
 12380  
 12381  type DeleteReplicationGroupOutput struct {
 12382  	_ struct{} `type:"structure"`
 12383  
 12384  	// Contains all of the attributes of a specific Redis replication group.
 12385  	ReplicationGroup *ReplicationGroup `type:"structure"`
 12386  }
 12387  
 12388  // String returns the string representation.
 12389  //
 12390  // API parameter values that are decorated as "sensitive" in the API will not
 12391  // be included in the string output. The member name will be present, but the
 12392  // value will be replaced with "sensitive".
 12393  func (s DeleteReplicationGroupOutput) String() string {
 12394  	return awsutil.Prettify(s)
 12395  }
 12396  
 12397  // GoString returns the string representation.
 12398  //
 12399  // API parameter values that are decorated as "sensitive" in the API will not
 12400  // be included in the string output. The member name will be present, but the
 12401  // value will be replaced with "sensitive".
 12402  func (s DeleteReplicationGroupOutput) GoString() string {
 12403  	return s.String()
 12404  }
 12405  
 12406  // SetReplicationGroup sets the ReplicationGroup field's value.
 12407  func (s *DeleteReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *DeleteReplicationGroupOutput {
 12408  	s.ReplicationGroup = v
 12409  	return s
 12410  }
 12411  
 12412  // Represents the input of a DeleteSnapshot operation.
 12413  type DeleteSnapshotInput struct {
 12414  	_ struct{} `type:"structure"`
 12415  
 12416  	// The name of the snapshot to be deleted.
 12417  	//
 12418  	// SnapshotName is a required field
 12419  	SnapshotName *string `type:"string" required:"true"`
 12420  }
 12421  
 12422  // String returns the string representation.
 12423  //
 12424  // API parameter values that are decorated as "sensitive" in the API will not
 12425  // be included in the string output. The member name will be present, but the
 12426  // value will be replaced with "sensitive".
 12427  func (s DeleteSnapshotInput) String() string {
 12428  	return awsutil.Prettify(s)
 12429  }
 12430  
 12431  // GoString returns the string representation.
 12432  //
 12433  // API parameter values that are decorated as "sensitive" in the API will not
 12434  // be included in the string output. The member name will be present, but the
 12435  // value will be replaced with "sensitive".
 12436  func (s DeleteSnapshotInput) GoString() string {
 12437  	return s.String()
 12438  }
 12439  
 12440  // Validate inspects the fields of the type to determine if they are valid.
 12441  func (s *DeleteSnapshotInput) Validate() error {
 12442  	invalidParams := request.ErrInvalidParams{Context: "DeleteSnapshotInput"}
 12443  	if s.SnapshotName == nil {
 12444  		invalidParams.Add(request.NewErrParamRequired("SnapshotName"))
 12445  	}
 12446  
 12447  	if invalidParams.Len() > 0 {
 12448  		return invalidParams
 12449  	}
 12450  	return nil
 12451  }
 12452  
 12453  // SetSnapshotName sets the SnapshotName field's value.
 12454  func (s *DeleteSnapshotInput) SetSnapshotName(v string) *DeleteSnapshotInput {
 12455  	s.SnapshotName = &v
 12456  	return s
 12457  }
 12458  
 12459  type DeleteSnapshotOutput struct {
 12460  	_ struct{} `type:"structure"`
 12461  
 12462  	// Represents a copy of an entire Redis cluster as of the time when the snapshot
 12463  	// was taken.
 12464  	Snapshot *Snapshot `type:"structure"`
 12465  }
 12466  
 12467  // String returns the string representation.
 12468  //
 12469  // API parameter values that are decorated as "sensitive" in the API will not
 12470  // be included in the string output. The member name will be present, but the
 12471  // value will be replaced with "sensitive".
 12472  func (s DeleteSnapshotOutput) String() string {
 12473  	return awsutil.Prettify(s)
 12474  }
 12475  
 12476  // GoString returns the string representation.
 12477  //
 12478  // API parameter values that are decorated as "sensitive" in the API will not
 12479  // be included in the string output. The member name will be present, but the
 12480  // value will be replaced with "sensitive".
 12481  func (s DeleteSnapshotOutput) GoString() string {
 12482  	return s.String()
 12483  }
 12484  
 12485  // SetSnapshot sets the Snapshot field's value.
 12486  func (s *DeleteSnapshotOutput) SetSnapshot(v *Snapshot) *DeleteSnapshotOutput {
 12487  	s.Snapshot = v
 12488  	return s
 12489  }
 12490  
 12491  type DeleteUserGroupInput struct {
 12492  	_ struct{} `type:"structure"`
 12493  
 12494  	// The ID of the user group.
 12495  	//
 12496  	// UserGroupId is a required field
 12497  	UserGroupId *string `type:"string" required:"true"`
 12498  }
 12499  
 12500  // String returns the string representation.
 12501  //
 12502  // API parameter values that are decorated as "sensitive" in the API will not
 12503  // be included in the string output. The member name will be present, but the
 12504  // value will be replaced with "sensitive".
 12505  func (s DeleteUserGroupInput) String() string {
 12506  	return awsutil.Prettify(s)
 12507  }
 12508  
 12509  // GoString returns the string representation.
 12510  //
 12511  // API parameter values that are decorated as "sensitive" in the API will not
 12512  // be included in the string output. The member name will be present, but the
 12513  // value will be replaced with "sensitive".
 12514  func (s DeleteUserGroupInput) GoString() string {
 12515  	return s.String()
 12516  }
 12517  
 12518  // Validate inspects the fields of the type to determine if they are valid.
 12519  func (s *DeleteUserGroupInput) Validate() error {
 12520  	invalidParams := request.ErrInvalidParams{Context: "DeleteUserGroupInput"}
 12521  	if s.UserGroupId == nil {
 12522  		invalidParams.Add(request.NewErrParamRequired("UserGroupId"))
 12523  	}
 12524  
 12525  	if invalidParams.Len() > 0 {
 12526  		return invalidParams
 12527  	}
 12528  	return nil
 12529  }
 12530  
 12531  // SetUserGroupId sets the UserGroupId field's value.
 12532  func (s *DeleteUserGroupInput) SetUserGroupId(v string) *DeleteUserGroupInput {
 12533  	s.UserGroupId = &v
 12534  	return s
 12535  }
 12536  
 12537  type DeleteUserGroupOutput struct {
 12538  	_ struct{} `type:"structure"`
 12539  
 12540  	// The Amazon Resource Name (ARN) of the user group.
 12541  	ARN *string `type:"string"`
 12542  
 12543  	// The current supported value is Redis.
 12544  	Engine *string `type:"string"`
 12545  
 12546  	// A list of updates being applied to the user group.
 12547  	PendingChanges *UserGroupPendingChanges `type:"structure"`
 12548  
 12549  	// A list of replication groups that the user group can access.
 12550  	ReplicationGroups []*string `type:"list"`
 12551  
 12552  	// Indicates user group status. Can be "creating", "active", "modifying", "deleting".
 12553  	Status *string `type:"string"`
 12554  
 12555  	// The ID of the user group.
 12556  	UserGroupId *string `type:"string"`
 12557  
 12558  	// The list of user IDs that belong to the user group.
 12559  	UserIds []*string `type:"list"`
 12560  }
 12561  
 12562  // String returns the string representation.
 12563  //
 12564  // API parameter values that are decorated as "sensitive" in the API will not
 12565  // be included in the string output. The member name will be present, but the
 12566  // value will be replaced with "sensitive".
 12567  func (s DeleteUserGroupOutput) String() string {
 12568  	return awsutil.Prettify(s)
 12569  }
 12570  
 12571  // GoString returns the string representation.
 12572  //
 12573  // API parameter values that are decorated as "sensitive" in the API will not
 12574  // be included in the string output. The member name will be present, but the
 12575  // value will be replaced with "sensitive".
 12576  func (s DeleteUserGroupOutput) GoString() string {
 12577  	return s.String()
 12578  }
 12579  
 12580  // SetARN sets the ARN field's value.
 12581  func (s *DeleteUserGroupOutput) SetARN(v string) *DeleteUserGroupOutput {
 12582  	s.ARN = &v
 12583  	return s
 12584  }
 12585  
 12586  // SetEngine sets the Engine field's value.
 12587  func (s *DeleteUserGroupOutput) SetEngine(v string) *DeleteUserGroupOutput {
 12588  	s.Engine = &v
 12589  	return s
 12590  }
 12591  
 12592  // SetPendingChanges sets the PendingChanges field's value.
 12593  func (s *DeleteUserGroupOutput) SetPendingChanges(v *UserGroupPendingChanges) *DeleteUserGroupOutput {
 12594  	s.PendingChanges = v
 12595  	return s
 12596  }
 12597  
 12598  // SetReplicationGroups sets the ReplicationGroups field's value.
 12599  func (s *DeleteUserGroupOutput) SetReplicationGroups(v []*string) *DeleteUserGroupOutput {
 12600  	s.ReplicationGroups = v
 12601  	return s
 12602  }
 12603  
 12604  // SetStatus sets the Status field's value.
 12605  func (s *DeleteUserGroupOutput) SetStatus(v string) *DeleteUserGroupOutput {
 12606  	s.Status = &v
 12607  	return s
 12608  }
 12609  
 12610  // SetUserGroupId sets the UserGroupId field's value.
 12611  func (s *DeleteUserGroupOutput) SetUserGroupId(v string) *DeleteUserGroupOutput {
 12612  	s.UserGroupId = &v
 12613  	return s
 12614  }
 12615  
 12616  // SetUserIds sets the UserIds field's value.
 12617  func (s *DeleteUserGroupOutput) SetUserIds(v []*string) *DeleteUserGroupOutput {
 12618  	s.UserIds = v
 12619  	return s
 12620  }
 12621  
 12622  type DeleteUserInput struct {
 12623  	_ struct{} `type:"structure"`
 12624  
 12625  	// The ID of the user.
 12626  	//
 12627  	// UserId is a required field
 12628  	UserId *string `min:"1" type:"string" required:"true"`
 12629  }
 12630  
 12631  // String returns the string representation.
 12632  //
 12633  // API parameter values that are decorated as "sensitive" in the API will not
 12634  // be included in the string output. The member name will be present, but the
 12635  // value will be replaced with "sensitive".
 12636  func (s DeleteUserInput) String() string {
 12637  	return awsutil.Prettify(s)
 12638  }
 12639  
 12640  // GoString returns the string representation.
 12641  //
 12642  // API parameter values that are decorated as "sensitive" in the API will not
 12643  // be included in the string output. The member name will be present, but the
 12644  // value will be replaced with "sensitive".
 12645  func (s DeleteUserInput) GoString() string {
 12646  	return s.String()
 12647  }
 12648  
 12649  // Validate inspects the fields of the type to determine if they are valid.
 12650  func (s *DeleteUserInput) Validate() error {
 12651  	invalidParams := request.ErrInvalidParams{Context: "DeleteUserInput"}
 12652  	if s.UserId == nil {
 12653  		invalidParams.Add(request.NewErrParamRequired("UserId"))
 12654  	}
 12655  	if s.UserId != nil && len(*s.UserId) < 1 {
 12656  		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
 12657  	}
 12658  
 12659  	if invalidParams.Len() > 0 {
 12660  		return invalidParams
 12661  	}
 12662  	return nil
 12663  }
 12664  
 12665  // SetUserId sets the UserId field's value.
 12666  func (s *DeleteUserInput) SetUserId(v string) *DeleteUserInput {
 12667  	s.UserId = &v
 12668  	return s
 12669  }
 12670  
 12671  type DeleteUserOutput struct {
 12672  	_ struct{} `type:"structure"`
 12673  
 12674  	// The Amazon Resource Name (ARN) of the user.
 12675  	ARN *string `type:"string"`
 12676  
 12677  	// Access permissions string used for this user.
 12678  	AccessString *string `type:"string"`
 12679  
 12680  	// Denotes whether the user requires a password to authenticate.
 12681  	Authentication *Authentication `type:"structure"`
 12682  
 12683  	// The current supported value is Redis.
 12684  	Engine *string `type:"string"`
 12685  
 12686  	// Indicates the user status. Can be "active", "modifying" or "deleting".
 12687  	Status *string `type:"string"`
 12688  
 12689  	// Returns a list of the user group IDs the user belongs to.
 12690  	UserGroupIds []*string `type:"list"`
 12691  
 12692  	// The ID of the user.
 12693  	UserId *string `type:"string"`
 12694  
 12695  	// The username of the user.
 12696  	UserName *string `type:"string"`
 12697  }
 12698  
 12699  // String returns the string representation.
 12700  //
 12701  // API parameter values that are decorated as "sensitive" in the API will not
 12702  // be included in the string output. The member name will be present, but the
 12703  // value will be replaced with "sensitive".
 12704  func (s DeleteUserOutput) String() string {
 12705  	return awsutil.Prettify(s)
 12706  }
 12707  
 12708  // GoString returns the string representation.
 12709  //
 12710  // API parameter values that are decorated as "sensitive" in the API will not
 12711  // be included in the string output. The member name will be present, but the
 12712  // value will be replaced with "sensitive".
 12713  func (s DeleteUserOutput) GoString() string {
 12714  	return s.String()
 12715  }
 12716  
 12717  // SetARN sets the ARN field's value.
 12718  func (s *DeleteUserOutput) SetARN(v string) *DeleteUserOutput {
 12719  	s.ARN = &v
 12720  	return s
 12721  }
 12722  
 12723  // SetAccessString sets the AccessString field's value.
 12724  func (s *DeleteUserOutput) SetAccessString(v string) *DeleteUserOutput {
 12725  	s.AccessString = &v
 12726  	return s
 12727  }
 12728  
 12729  // SetAuthentication sets the Authentication field's value.
 12730  func (s *DeleteUserOutput) SetAuthentication(v *Authentication) *DeleteUserOutput {
 12731  	s.Authentication = v
 12732  	return s
 12733  }
 12734  
 12735  // SetEngine sets the Engine field's value.
 12736  func (s *DeleteUserOutput) SetEngine(v string) *DeleteUserOutput {
 12737  	s.Engine = &v
 12738  	return s
 12739  }
 12740  
 12741  // SetStatus sets the Status field's value.
 12742  func (s *DeleteUserOutput) SetStatus(v string) *DeleteUserOutput {
 12743  	s.Status = &v
 12744  	return s
 12745  }
 12746  
 12747  // SetUserGroupIds sets the UserGroupIds field's value.
 12748  func (s *DeleteUserOutput) SetUserGroupIds(v []*string) *DeleteUserOutput {
 12749  	s.UserGroupIds = v
 12750  	return s
 12751  }
 12752  
 12753  // SetUserId sets the UserId field's value.
 12754  func (s *DeleteUserOutput) SetUserId(v string) *DeleteUserOutput {
 12755  	s.UserId = &v
 12756  	return s
 12757  }
 12758  
 12759  // SetUserName sets the UserName field's value.
 12760  func (s *DeleteUserOutput) SetUserName(v string) *DeleteUserOutput {
 12761  	s.UserName = &v
 12762  	return s
 12763  }
 12764  
 12765  // Represents the input of a DescribeCacheClusters operation.
 12766  type DescribeCacheClustersInput struct {
 12767  	_ struct{} `type:"structure"`
 12768  
 12769  	// The user-supplied cluster identifier. If this parameter is specified, only
 12770  	// information about that specific cluster is returned. This parameter isn't
 12771  	// case sensitive.
 12772  	CacheClusterId *string `type:"string"`
 12773  
 12774  	// An optional marker returned from a prior request. Use this marker for pagination
 12775  	// of results from this operation. If this parameter is specified, the response
 12776  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 12777  	Marker *string `type:"string"`
 12778  
 12779  	// The maximum number of records to include in the response. If more records
 12780  	// exist than the specified MaxRecords value, a marker is included in the response
 12781  	// so that the remaining results can be retrieved.
 12782  	//
 12783  	// Default: 100
 12784  	//
 12785  	// Constraints: minimum 20; maximum 100.
 12786  	MaxRecords *int64 `type:"integer"`
 12787  
 12788  	// An optional flag that can be included in the DescribeCacheCluster request
 12789  	// to show only nodes (API/CLI: clusters) that are not members of a replication
 12790  	// group. In practice, this mean Memcached and single node Redis clusters.
 12791  	ShowCacheClustersNotInReplicationGroups *bool `type:"boolean"`
 12792  
 12793  	// An optional flag that can be included in the DescribeCacheCluster request
 12794  	// to retrieve information about the individual cache nodes.
 12795  	ShowCacheNodeInfo *bool `type:"boolean"`
 12796  }
 12797  
 12798  // String returns the string representation.
 12799  //
 12800  // API parameter values that are decorated as "sensitive" in the API will not
 12801  // be included in the string output. The member name will be present, but the
 12802  // value will be replaced with "sensitive".
 12803  func (s DescribeCacheClustersInput) String() string {
 12804  	return awsutil.Prettify(s)
 12805  }
 12806  
 12807  // GoString returns the string representation.
 12808  //
 12809  // API parameter values that are decorated as "sensitive" in the API will not
 12810  // be included in the string output. The member name will be present, but the
 12811  // value will be replaced with "sensitive".
 12812  func (s DescribeCacheClustersInput) GoString() string {
 12813  	return s.String()
 12814  }
 12815  
 12816  // SetCacheClusterId sets the CacheClusterId field's value.
 12817  func (s *DescribeCacheClustersInput) SetCacheClusterId(v string) *DescribeCacheClustersInput {
 12818  	s.CacheClusterId = &v
 12819  	return s
 12820  }
 12821  
 12822  // SetMarker sets the Marker field's value.
 12823  func (s *DescribeCacheClustersInput) SetMarker(v string) *DescribeCacheClustersInput {
 12824  	s.Marker = &v
 12825  	return s
 12826  }
 12827  
 12828  // SetMaxRecords sets the MaxRecords field's value.
 12829  func (s *DescribeCacheClustersInput) SetMaxRecords(v int64) *DescribeCacheClustersInput {
 12830  	s.MaxRecords = &v
 12831  	return s
 12832  }
 12833  
 12834  // SetShowCacheClustersNotInReplicationGroups sets the ShowCacheClustersNotInReplicationGroups field's value.
 12835  func (s *DescribeCacheClustersInput) SetShowCacheClustersNotInReplicationGroups(v bool) *DescribeCacheClustersInput {
 12836  	s.ShowCacheClustersNotInReplicationGroups = &v
 12837  	return s
 12838  }
 12839  
 12840  // SetShowCacheNodeInfo sets the ShowCacheNodeInfo field's value.
 12841  func (s *DescribeCacheClustersInput) SetShowCacheNodeInfo(v bool) *DescribeCacheClustersInput {
 12842  	s.ShowCacheNodeInfo = &v
 12843  	return s
 12844  }
 12845  
 12846  // Represents the output of a DescribeCacheClusters operation.
 12847  type DescribeCacheClustersOutput struct {
 12848  	_ struct{} `type:"structure"`
 12849  
 12850  	// A list of clusters. Each item in the list contains detailed information about
 12851  	// one cluster.
 12852  	CacheClusters []*CacheCluster `locationNameList:"CacheCluster" type:"list"`
 12853  
 12854  	// Provides an identifier to allow retrieval of paginated results.
 12855  	Marker *string `type:"string"`
 12856  }
 12857  
 12858  // String returns the string representation.
 12859  //
 12860  // API parameter values that are decorated as "sensitive" in the API will not
 12861  // be included in the string output. The member name will be present, but the
 12862  // value will be replaced with "sensitive".
 12863  func (s DescribeCacheClustersOutput) String() string {
 12864  	return awsutil.Prettify(s)
 12865  }
 12866  
 12867  // GoString returns the string representation.
 12868  //
 12869  // API parameter values that are decorated as "sensitive" in the API will not
 12870  // be included in the string output. The member name will be present, but the
 12871  // value will be replaced with "sensitive".
 12872  func (s DescribeCacheClustersOutput) GoString() string {
 12873  	return s.String()
 12874  }
 12875  
 12876  // SetCacheClusters sets the CacheClusters field's value.
 12877  func (s *DescribeCacheClustersOutput) SetCacheClusters(v []*CacheCluster) *DescribeCacheClustersOutput {
 12878  	s.CacheClusters = v
 12879  	return s
 12880  }
 12881  
 12882  // SetMarker sets the Marker field's value.
 12883  func (s *DescribeCacheClustersOutput) SetMarker(v string) *DescribeCacheClustersOutput {
 12884  	s.Marker = &v
 12885  	return s
 12886  }
 12887  
 12888  // Represents the input of a DescribeCacheEngineVersions operation.
 12889  type DescribeCacheEngineVersionsInput struct {
 12890  	_ struct{} `type:"structure"`
 12891  
 12892  	// The name of a specific cache parameter group family to return details for.
 12893  	//
 12894  	// Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 |
 12895  	// redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |
 12896  	//
 12897  	// Constraints:
 12898  	//
 12899  	//    * Must be 1 to 255 alphanumeric characters
 12900  	//
 12901  	//    * First character must be a letter
 12902  	//
 12903  	//    * Cannot end with a hyphen or contain two consecutive hyphens
 12904  	CacheParameterGroupFamily *string `type:"string"`
 12905  
 12906  	// If true, specifies that only the default version of the specified engine
 12907  	// or engine and major version combination is to be returned.
 12908  	DefaultOnly *bool `type:"boolean"`
 12909  
 12910  	// The cache engine to return. Valid values: memcached | redis
 12911  	Engine *string `type:"string"`
 12912  
 12913  	// The cache engine version to return.
 12914  	//
 12915  	// Example: 1.4.14
 12916  	EngineVersion *string `type:"string"`
 12917  
 12918  	// An optional marker returned from a prior request. Use this marker for pagination
 12919  	// of results from this operation. If this parameter is specified, the response
 12920  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 12921  	Marker *string `type:"string"`
 12922  
 12923  	// The maximum number of records to include in the response. If more records
 12924  	// exist than the specified MaxRecords value, a marker is included in the response
 12925  	// so that the remaining results can be retrieved.
 12926  	//
 12927  	// Default: 100
 12928  	//
 12929  	// Constraints: minimum 20; maximum 100.
 12930  	MaxRecords *int64 `type:"integer"`
 12931  }
 12932  
 12933  // String returns the string representation.
 12934  //
 12935  // API parameter values that are decorated as "sensitive" in the API will not
 12936  // be included in the string output. The member name will be present, but the
 12937  // value will be replaced with "sensitive".
 12938  func (s DescribeCacheEngineVersionsInput) String() string {
 12939  	return awsutil.Prettify(s)
 12940  }
 12941  
 12942  // GoString returns the string representation.
 12943  //
 12944  // API parameter values that are decorated as "sensitive" in the API will not
 12945  // be included in the string output. The member name will be present, but the
 12946  // value will be replaced with "sensitive".
 12947  func (s DescribeCacheEngineVersionsInput) GoString() string {
 12948  	return s.String()
 12949  }
 12950  
 12951  // SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
 12952  func (s *DescribeCacheEngineVersionsInput) SetCacheParameterGroupFamily(v string) *DescribeCacheEngineVersionsInput {
 12953  	s.CacheParameterGroupFamily = &v
 12954  	return s
 12955  }
 12956  
 12957  // SetDefaultOnly sets the DefaultOnly field's value.
 12958  func (s *DescribeCacheEngineVersionsInput) SetDefaultOnly(v bool) *DescribeCacheEngineVersionsInput {
 12959  	s.DefaultOnly = &v
 12960  	return s
 12961  }
 12962  
 12963  // SetEngine sets the Engine field's value.
 12964  func (s *DescribeCacheEngineVersionsInput) SetEngine(v string) *DescribeCacheEngineVersionsInput {
 12965  	s.Engine = &v
 12966  	return s
 12967  }
 12968  
 12969  // SetEngineVersion sets the EngineVersion field's value.
 12970  func (s *DescribeCacheEngineVersionsInput) SetEngineVersion(v string) *DescribeCacheEngineVersionsInput {
 12971  	s.EngineVersion = &v
 12972  	return s
 12973  }
 12974  
 12975  // SetMarker sets the Marker field's value.
 12976  func (s *DescribeCacheEngineVersionsInput) SetMarker(v string) *DescribeCacheEngineVersionsInput {
 12977  	s.Marker = &v
 12978  	return s
 12979  }
 12980  
 12981  // SetMaxRecords sets the MaxRecords field's value.
 12982  func (s *DescribeCacheEngineVersionsInput) SetMaxRecords(v int64) *DescribeCacheEngineVersionsInput {
 12983  	s.MaxRecords = &v
 12984  	return s
 12985  }
 12986  
 12987  // Represents the output of a DescribeCacheEngineVersions operation.
 12988  type DescribeCacheEngineVersionsOutput struct {
 12989  	_ struct{} `type:"structure"`
 12990  
 12991  	// A list of cache engine version details. Each element in the list contains
 12992  	// detailed information about one cache engine version.
 12993  	CacheEngineVersions []*CacheEngineVersion `locationNameList:"CacheEngineVersion" type:"list"`
 12994  
 12995  	// Provides an identifier to allow retrieval of paginated results.
 12996  	Marker *string `type:"string"`
 12997  }
 12998  
 12999  // String returns the string representation.
 13000  //
 13001  // API parameter values that are decorated as "sensitive" in the API will not
 13002  // be included in the string output. The member name will be present, but the
 13003  // value will be replaced with "sensitive".
 13004  func (s DescribeCacheEngineVersionsOutput) String() string {
 13005  	return awsutil.Prettify(s)
 13006  }
 13007  
 13008  // GoString returns the string representation.
 13009  //
 13010  // API parameter values that are decorated as "sensitive" in the API will not
 13011  // be included in the string output. The member name will be present, but the
 13012  // value will be replaced with "sensitive".
 13013  func (s DescribeCacheEngineVersionsOutput) GoString() string {
 13014  	return s.String()
 13015  }
 13016  
 13017  // SetCacheEngineVersions sets the CacheEngineVersions field's value.
 13018  func (s *DescribeCacheEngineVersionsOutput) SetCacheEngineVersions(v []*CacheEngineVersion) *DescribeCacheEngineVersionsOutput {
 13019  	s.CacheEngineVersions = v
 13020  	return s
 13021  }
 13022  
 13023  // SetMarker sets the Marker field's value.
 13024  func (s *DescribeCacheEngineVersionsOutput) SetMarker(v string) *DescribeCacheEngineVersionsOutput {
 13025  	s.Marker = &v
 13026  	return s
 13027  }
 13028  
 13029  // Represents the input of a DescribeCacheParameterGroups operation.
 13030  type DescribeCacheParameterGroupsInput struct {
 13031  	_ struct{} `type:"structure"`
 13032  
 13033  	// The name of a specific cache parameter group to return details for.
 13034  	CacheParameterGroupName *string `type:"string"`
 13035  
 13036  	// An optional marker returned from a prior request. Use this marker for pagination
 13037  	// of results from this operation. If this parameter is specified, the response
 13038  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 13039  	Marker *string `type:"string"`
 13040  
 13041  	// The maximum number of records to include in the response. If more records
 13042  	// exist than the specified MaxRecords value, a marker is included in the response
 13043  	// so that the remaining results can be retrieved.
 13044  	//
 13045  	// Default: 100
 13046  	//
 13047  	// Constraints: minimum 20; maximum 100.
 13048  	MaxRecords *int64 `type:"integer"`
 13049  }
 13050  
 13051  // String returns the string representation.
 13052  //
 13053  // API parameter values that are decorated as "sensitive" in the API will not
 13054  // be included in the string output. The member name will be present, but the
 13055  // value will be replaced with "sensitive".
 13056  func (s DescribeCacheParameterGroupsInput) String() string {
 13057  	return awsutil.Prettify(s)
 13058  }
 13059  
 13060  // GoString returns the string representation.
 13061  //
 13062  // API parameter values that are decorated as "sensitive" in the API will not
 13063  // be included in the string output. The member name will be present, but the
 13064  // value will be replaced with "sensitive".
 13065  func (s DescribeCacheParameterGroupsInput) GoString() string {
 13066  	return s.String()
 13067  }
 13068  
 13069  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
 13070  func (s *DescribeCacheParameterGroupsInput) SetCacheParameterGroupName(v string) *DescribeCacheParameterGroupsInput {
 13071  	s.CacheParameterGroupName = &v
 13072  	return s
 13073  }
 13074  
 13075  // SetMarker sets the Marker field's value.
 13076  func (s *DescribeCacheParameterGroupsInput) SetMarker(v string) *DescribeCacheParameterGroupsInput {
 13077  	s.Marker = &v
 13078  	return s
 13079  }
 13080  
 13081  // SetMaxRecords sets the MaxRecords field's value.
 13082  func (s *DescribeCacheParameterGroupsInput) SetMaxRecords(v int64) *DescribeCacheParameterGroupsInput {
 13083  	s.MaxRecords = &v
 13084  	return s
 13085  }
 13086  
 13087  // Represents the output of a DescribeCacheParameterGroups operation.
 13088  type DescribeCacheParameterGroupsOutput struct {
 13089  	_ struct{} `type:"structure"`
 13090  
 13091  	// A list of cache parameter groups. Each element in the list contains detailed
 13092  	// information about one cache parameter group.
 13093  	CacheParameterGroups []*CacheParameterGroup `locationNameList:"CacheParameterGroup" type:"list"`
 13094  
 13095  	// Provides an identifier to allow retrieval of paginated results.
 13096  	Marker *string `type:"string"`
 13097  }
 13098  
 13099  // String returns the string representation.
 13100  //
 13101  // API parameter values that are decorated as "sensitive" in the API will not
 13102  // be included in the string output. The member name will be present, but the
 13103  // value will be replaced with "sensitive".
 13104  func (s DescribeCacheParameterGroupsOutput) String() string {
 13105  	return awsutil.Prettify(s)
 13106  }
 13107  
 13108  // GoString returns the string representation.
 13109  //
 13110  // API parameter values that are decorated as "sensitive" in the API will not
 13111  // be included in the string output. The member name will be present, but the
 13112  // value will be replaced with "sensitive".
 13113  func (s DescribeCacheParameterGroupsOutput) GoString() string {
 13114  	return s.String()
 13115  }
 13116  
 13117  // SetCacheParameterGroups sets the CacheParameterGroups field's value.
 13118  func (s *DescribeCacheParameterGroupsOutput) SetCacheParameterGroups(v []*CacheParameterGroup) *DescribeCacheParameterGroupsOutput {
 13119  	s.CacheParameterGroups = v
 13120  	return s
 13121  }
 13122  
 13123  // SetMarker sets the Marker field's value.
 13124  func (s *DescribeCacheParameterGroupsOutput) SetMarker(v string) *DescribeCacheParameterGroupsOutput {
 13125  	s.Marker = &v
 13126  	return s
 13127  }
 13128  
 13129  // Represents the input of a DescribeCacheParameters operation.
 13130  type DescribeCacheParametersInput struct {
 13131  	_ struct{} `type:"structure"`
 13132  
 13133  	// The name of a specific cache parameter group to return details for.
 13134  	//
 13135  	// CacheParameterGroupName is a required field
 13136  	CacheParameterGroupName *string `type:"string" required:"true"`
 13137  
 13138  	// An optional marker returned from a prior request. Use this marker for pagination
 13139  	// of results from this operation. If this parameter is specified, the response
 13140  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 13141  	Marker *string `type:"string"`
 13142  
 13143  	// The maximum number of records to include in the response. If more records
 13144  	// exist than the specified MaxRecords value, a marker is included in the response
 13145  	// so that the remaining results can be retrieved.
 13146  	//
 13147  	// Default: 100
 13148  	//
 13149  	// Constraints: minimum 20; maximum 100.
 13150  	MaxRecords *int64 `type:"integer"`
 13151  
 13152  	// The parameter types to return.
 13153  	//
 13154  	// Valid values: user | system | engine-default
 13155  	Source *string `type:"string"`
 13156  }
 13157  
 13158  // String returns the string representation.
 13159  //
 13160  // API parameter values that are decorated as "sensitive" in the API will not
 13161  // be included in the string output. The member name will be present, but the
 13162  // value will be replaced with "sensitive".
 13163  func (s DescribeCacheParametersInput) String() string {
 13164  	return awsutil.Prettify(s)
 13165  }
 13166  
 13167  // GoString returns the string representation.
 13168  //
 13169  // API parameter values that are decorated as "sensitive" in the API will not
 13170  // be included in the string output. The member name will be present, but the
 13171  // value will be replaced with "sensitive".
 13172  func (s DescribeCacheParametersInput) GoString() string {
 13173  	return s.String()
 13174  }
 13175  
 13176  // Validate inspects the fields of the type to determine if they are valid.
 13177  func (s *DescribeCacheParametersInput) Validate() error {
 13178  	invalidParams := request.ErrInvalidParams{Context: "DescribeCacheParametersInput"}
 13179  	if s.CacheParameterGroupName == nil {
 13180  		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
 13181  	}
 13182  
 13183  	if invalidParams.Len() > 0 {
 13184  		return invalidParams
 13185  	}
 13186  	return nil
 13187  }
 13188  
 13189  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
 13190  func (s *DescribeCacheParametersInput) SetCacheParameterGroupName(v string) *DescribeCacheParametersInput {
 13191  	s.CacheParameterGroupName = &v
 13192  	return s
 13193  }
 13194  
 13195  // SetMarker sets the Marker field's value.
 13196  func (s *DescribeCacheParametersInput) SetMarker(v string) *DescribeCacheParametersInput {
 13197  	s.Marker = &v
 13198  	return s
 13199  }
 13200  
 13201  // SetMaxRecords sets the MaxRecords field's value.
 13202  func (s *DescribeCacheParametersInput) SetMaxRecords(v int64) *DescribeCacheParametersInput {
 13203  	s.MaxRecords = &v
 13204  	return s
 13205  }
 13206  
 13207  // SetSource sets the Source field's value.
 13208  func (s *DescribeCacheParametersInput) SetSource(v string) *DescribeCacheParametersInput {
 13209  	s.Source = &v
 13210  	return s
 13211  }
 13212  
 13213  // Represents the output of a DescribeCacheParameters operation.
 13214  type DescribeCacheParametersOutput struct {
 13215  	_ struct{} `type:"structure"`
 13216  
 13217  	// A list of parameters specific to a particular cache node type. Each element
 13218  	// in the list contains detailed information about one parameter.
 13219  	CacheNodeTypeSpecificParameters []*CacheNodeTypeSpecificParameter `locationNameList:"CacheNodeTypeSpecificParameter" type:"list"`
 13220  
 13221  	// Provides an identifier to allow retrieval of paginated results.
 13222  	Marker *string `type:"string"`
 13223  
 13224  	// A list of Parameter instances.
 13225  	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`
 13226  }
 13227  
 13228  // String returns the string representation.
 13229  //
 13230  // API parameter values that are decorated as "sensitive" in the API will not
 13231  // be included in the string output. The member name will be present, but the
 13232  // value will be replaced with "sensitive".
 13233  func (s DescribeCacheParametersOutput) String() string {
 13234  	return awsutil.Prettify(s)
 13235  }
 13236  
 13237  // GoString returns the string representation.
 13238  //
 13239  // API parameter values that are decorated as "sensitive" in the API will not
 13240  // be included in the string output. The member name will be present, but the
 13241  // value will be replaced with "sensitive".
 13242  func (s DescribeCacheParametersOutput) GoString() string {
 13243  	return s.String()
 13244  }
 13245  
 13246  // SetCacheNodeTypeSpecificParameters sets the CacheNodeTypeSpecificParameters field's value.
 13247  func (s *DescribeCacheParametersOutput) SetCacheNodeTypeSpecificParameters(v []*CacheNodeTypeSpecificParameter) *DescribeCacheParametersOutput {
 13248  	s.CacheNodeTypeSpecificParameters = v
 13249  	return s
 13250  }
 13251  
 13252  // SetMarker sets the Marker field's value.
 13253  func (s *DescribeCacheParametersOutput) SetMarker(v string) *DescribeCacheParametersOutput {
 13254  	s.Marker = &v
 13255  	return s
 13256  }
 13257  
 13258  // SetParameters sets the Parameters field's value.
 13259  func (s *DescribeCacheParametersOutput) SetParameters(v []*Parameter) *DescribeCacheParametersOutput {
 13260  	s.Parameters = v
 13261  	return s
 13262  }
 13263  
 13264  // Represents the input of a DescribeCacheSecurityGroups operation.
 13265  type DescribeCacheSecurityGroupsInput struct {
 13266  	_ struct{} `type:"structure"`
 13267  
 13268  	// The name of the cache security group to return details for.
 13269  	CacheSecurityGroupName *string `type:"string"`
 13270  
 13271  	// An optional marker returned from a prior request. Use this marker for pagination
 13272  	// of results from this operation. If this parameter is specified, the response
 13273  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 13274  	Marker *string `type:"string"`
 13275  
 13276  	// The maximum number of records to include in the response. If more records
 13277  	// exist than the specified MaxRecords value, a marker is included in the response
 13278  	// so that the remaining results can be retrieved.
 13279  	//
 13280  	// Default: 100
 13281  	//
 13282  	// Constraints: minimum 20; maximum 100.
 13283  	MaxRecords *int64 `type:"integer"`
 13284  }
 13285  
 13286  // String returns the string representation.
 13287  //
 13288  // API parameter values that are decorated as "sensitive" in the API will not
 13289  // be included in the string output. The member name will be present, but the
 13290  // value will be replaced with "sensitive".
 13291  func (s DescribeCacheSecurityGroupsInput) String() string {
 13292  	return awsutil.Prettify(s)
 13293  }
 13294  
 13295  // GoString returns the string representation.
 13296  //
 13297  // API parameter values that are decorated as "sensitive" in the API will not
 13298  // be included in the string output. The member name will be present, but the
 13299  // value will be replaced with "sensitive".
 13300  func (s DescribeCacheSecurityGroupsInput) GoString() string {
 13301  	return s.String()
 13302  }
 13303  
 13304  // SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
 13305  func (s *DescribeCacheSecurityGroupsInput) SetCacheSecurityGroupName(v string) *DescribeCacheSecurityGroupsInput {
 13306  	s.CacheSecurityGroupName = &v
 13307  	return s
 13308  }
 13309  
 13310  // SetMarker sets the Marker field's value.
 13311  func (s *DescribeCacheSecurityGroupsInput) SetMarker(v string) *DescribeCacheSecurityGroupsInput {
 13312  	s.Marker = &v
 13313  	return s
 13314  }
 13315  
 13316  // SetMaxRecords sets the MaxRecords field's value.
 13317  func (s *DescribeCacheSecurityGroupsInput) SetMaxRecords(v int64) *DescribeCacheSecurityGroupsInput {
 13318  	s.MaxRecords = &v
 13319  	return s
 13320  }
 13321  
 13322  // Represents the output of a DescribeCacheSecurityGroups operation.
 13323  type DescribeCacheSecurityGroupsOutput struct {
 13324  	_ struct{} `type:"structure"`
 13325  
 13326  	// A list of cache security groups. Each element in the list contains detailed
 13327  	// information about one group.
 13328  	CacheSecurityGroups []*CacheSecurityGroup `locationNameList:"CacheSecurityGroup" type:"list"`
 13329  
 13330  	// Provides an identifier to allow retrieval of paginated results.
 13331  	Marker *string `type:"string"`
 13332  }
 13333  
 13334  // String returns the string representation.
 13335  //
 13336  // API parameter values that are decorated as "sensitive" in the API will not
 13337  // be included in the string output. The member name will be present, but the
 13338  // value will be replaced with "sensitive".
 13339  func (s DescribeCacheSecurityGroupsOutput) String() string {
 13340  	return awsutil.Prettify(s)
 13341  }
 13342  
 13343  // GoString returns the string representation.
 13344  //
 13345  // API parameter values that are decorated as "sensitive" in the API will not
 13346  // be included in the string output. The member name will be present, but the
 13347  // value will be replaced with "sensitive".
 13348  func (s DescribeCacheSecurityGroupsOutput) GoString() string {
 13349  	return s.String()
 13350  }
 13351  
 13352  // SetCacheSecurityGroups sets the CacheSecurityGroups field's value.
 13353  func (s *DescribeCacheSecurityGroupsOutput) SetCacheSecurityGroups(v []*CacheSecurityGroup) *DescribeCacheSecurityGroupsOutput {
 13354  	s.CacheSecurityGroups = v
 13355  	return s
 13356  }
 13357  
 13358  // SetMarker sets the Marker field's value.
 13359  func (s *DescribeCacheSecurityGroupsOutput) SetMarker(v string) *DescribeCacheSecurityGroupsOutput {
 13360  	s.Marker = &v
 13361  	return s
 13362  }
 13363  
 13364  // Represents the input of a DescribeCacheSubnetGroups operation.
 13365  type DescribeCacheSubnetGroupsInput struct {
 13366  	_ struct{} `type:"structure"`
 13367  
 13368  	// The name of the cache subnet group to return details for.
 13369  	CacheSubnetGroupName *string `type:"string"`
 13370  
 13371  	// An optional marker returned from a prior request. Use this marker for pagination
 13372  	// of results from this operation. If this parameter is specified, the response
 13373  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 13374  	Marker *string `type:"string"`
 13375  
 13376  	// The maximum number of records to include in the response. If more records
 13377  	// exist than the specified MaxRecords value, a marker is included in the response
 13378  	// so that the remaining results can be retrieved.
 13379  	//
 13380  	// Default: 100
 13381  	//
 13382  	// Constraints: minimum 20; maximum 100.
 13383  	MaxRecords *int64 `type:"integer"`
 13384  }
 13385  
 13386  // String returns the string representation.
 13387  //
 13388  // API parameter values that are decorated as "sensitive" in the API will not
 13389  // be included in the string output. The member name will be present, but the
 13390  // value will be replaced with "sensitive".
 13391  func (s DescribeCacheSubnetGroupsInput) String() string {
 13392  	return awsutil.Prettify(s)
 13393  }
 13394  
 13395  // GoString returns the string representation.
 13396  //
 13397  // API parameter values that are decorated as "sensitive" in the API will not
 13398  // be included in the string output. The member name will be present, but the
 13399  // value will be replaced with "sensitive".
 13400  func (s DescribeCacheSubnetGroupsInput) GoString() string {
 13401  	return s.String()
 13402  }
 13403  
 13404  // SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
 13405  func (s *DescribeCacheSubnetGroupsInput) SetCacheSubnetGroupName(v string) *DescribeCacheSubnetGroupsInput {
 13406  	s.CacheSubnetGroupName = &v
 13407  	return s
 13408  }
 13409  
 13410  // SetMarker sets the Marker field's value.
 13411  func (s *DescribeCacheSubnetGroupsInput) SetMarker(v string) *DescribeCacheSubnetGroupsInput {
 13412  	s.Marker = &v
 13413  	return s
 13414  }
 13415  
 13416  // SetMaxRecords sets the MaxRecords field's value.
 13417  func (s *DescribeCacheSubnetGroupsInput) SetMaxRecords(v int64) *DescribeCacheSubnetGroupsInput {
 13418  	s.MaxRecords = &v
 13419  	return s
 13420  }
 13421  
 13422  // Represents the output of a DescribeCacheSubnetGroups operation.
 13423  type DescribeCacheSubnetGroupsOutput struct {
 13424  	_ struct{} `type:"structure"`
 13425  
 13426  	// A list of cache subnet groups. Each element in the list contains detailed
 13427  	// information about one group.
 13428  	CacheSubnetGroups []*CacheSubnetGroup `locationNameList:"CacheSubnetGroup" type:"list"`
 13429  
 13430  	// Provides an identifier to allow retrieval of paginated results.
 13431  	Marker *string `type:"string"`
 13432  }
 13433  
 13434  // String returns the string representation.
 13435  //
 13436  // API parameter values that are decorated as "sensitive" in the API will not
 13437  // be included in the string output. The member name will be present, but the
 13438  // value will be replaced with "sensitive".
 13439  func (s DescribeCacheSubnetGroupsOutput) String() string {
 13440  	return awsutil.Prettify(s)
 13441  }
 13442  
 13443  // GoString returns the string representation.
 13444  //
 13445  // API parameter values that are decorated as "sensitive" in the API will not
 13446  // be included in the string output. The member name will be present, but the
 13447  // value will be replaced with "sensitive".
 13448  func (s DescribeCacheSubnetGroupsOutput) GoString() string {
 13449  	return s.String()
 13450  }
 13451  
 13452  // SetCacheSubnetGroups sets the CacheSubnetGroups field's value.
 13453  func (s *DescribeCacheSubnetGroupsOutput) SetCacheSubnetGroups(v []*CacheSubnetGroup) *DescribeCacheSubnetGroupsOutput {
 13454  	s.CacheSubnetGroups = v
 13455  	return s
 13456  }
 13457  
 13458  // SetMarker sets the Marker field's value.
 13459  func (s *DescribeCacheSubnetGroupsOutput) SetMarker(v string) *DescribeCacheSubnetGroupsOutput {
 13460  	s.Marker = &v
 13461  	return s
 13462  }
 13463  
 13464  // Represents the input of a DescribeEngineDefaultParameters operation.
 13465  type DescribeEngineDefaultParametersInput struct {
 13466  	_ struct{} `type:"structure"`
 13467  
 13468  	// The name of the cache parameter group family.
 13469  	//
 13470  	// Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 |
 13471  	// redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |
 13472  	//
 13473  	// CacheParameterGroupFamily is a required field
 13474  	CacheParameterGroupFamily *string `type:"string" required:"true"`
 13475  
 13476  	// An optional marker returned from a prior request. Use this marker for pagination
 13477  	// of results from this operation. If this parameter is specified, the response
 13478  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 13479  	Marker *string `type:"string"`
 13480  
 13481  	// The maximum number of records to include in the response. If more records
 13482  	// exist than the specified MaxRecords value, a marker is included in the response
 13483  	// so that the remaining results can be retrieved.
 13484  	//
 13485  	// Default: 100
 13486  	//
 13487  	// Constraints: minimum 20; maximum 100.
 13488  	MaxRecords *int64 `type:"integer"`
 13489  }
 13490  
 13491  // String returns the string representation.
 13492  //
 13493  // API parameter values that are decorated as "sensitive" in the API will not
 13494  // be included in the string output. The member name will be present, but the
 13495  // value will be replaced with "sensitive".
 13496  func (s DescribeEngineDefaultParametersInput) String() string {
 13497  	return awsutil.Prettify(s)
 13498  }
 13499  
 13500  // GoString returns the string representation.
 13501  //
 13502  // API parameter values that are decorated as "sensitive" in the API will not
 13503  // be included in the string output. The member name will be present, but the
 13504  // value will be replaced with "sensitive".
 13505  func (s DescribeEngineDefaultParametersInput) GoString() string {
 13506  	return s.String()
 13507  }
 13508  
 13509  // Validate inspects the fields of the type to determine if they are valid.
 13510  func (s *DescribeEngineDefaultParametersInput) Validate() error {
 13511  	invalidParams := request.ErrInvalidParams{Context: "DescribeEngineDefaultParametersInput"}
 13512  	if s.CacheParameterGroupFamily == nil {
 13513  		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupFamily"))
 13514  	}
 13515  
 13516  	if invalidParams.Len() > 0 {
 13517  		return invalidParams
 13518  	}
 13519  	return nil
 13520  }
 13521  
 13522  // SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
 13523  func (s *DescribeEngineDefaultParametersInput) SetCacheParameterGroupFamily(v string) *DescribeEngineDefaultParametersInput {
 13524  	s.CacheParameterGroupFamily = &v
 13525  	return s
 13526  }
 13527  
 13528  // SetMarker sets the Marker field's value.
 13529  func (s *DescribeEngineDefaultParametersInput) SetMarker(v string) *DescribeEngineDefaultParametersInput {
 13530  	s.Marker = &v
 13531  	return s
 13532  }
 13533  
 13534  // SetMaxRecords sets the MaxRecords field's value.
 13535  func (s *DescribeEngineDefaultParametersInput) SetMaxRecords(v int64) *DescribeEngineDefaultParametersInput {
 13536  	s.MaxRecords = &v
 13537  	return s
 13538  }
 13539  
 13540  type DescribeEngineDefaultParametersOutput struct {
 13541  	_ struct{} `type:"structure"`
 13542  
 13543  	// Represents the output of a DescribeEngineDefaultParameters operation.
 13544  	EngineDefaults *EngineDefaults `type:"structure"`
 13545  }
 13546  
 13547  // String returns the string representation.
 13548  //
 13549  // API parameter values that are decorated as "sensitive" in the API will not
 13550  // be included in the string output. The member name will be present, but the
 13551  // value will be replaced with "sensitive".
 13552  func (s DescribeEngineDefaultParametersOutput) String() string {
 13553  	return awsutil.Prettify(s)
 13554  }
 13555  
 13556  // GoString returns the string representation.
 13557  //
 13558  // API parameter values that are decorated as "sensitive" in the API will not
 13559  // be included in the string output. The member name will be present, but the
 13560  // value will be replaced with "sensitive".
 13561  func (s DescribeEngineDefaultParametersOutput) GoString() string {
 13562  	return s.String()
 13563  }
 13564  
 13565  // SetEngineDefaults sets the EngineDefaults field's value.
 13566  func (s *DescribeEngineDefaultParametersOutput) SetEngineDefaults(v *EngineDefaults) *DescribeEngineDefaultParametersOutput {
 13567  	s.EngineDefaults = v
 13568  	return s
 13569  }
 13570  
 13571  // Represents the input of a DescribeEvents operation.
 13572  type DescribeEventsInput struct {
 13573  	_ struct{} `type:"structure"`
 13574  
 13575  	// The number of minutes worth of events to retrieve.
 13576  	Duration *int64 `type:"integer"`
 13577  
 13578  	// The end of the time interval for which to retrieve events, specified in ISO
 13579  	// 8601 format.
 13580  	//
 13581  	// Example: 2017-03-30T07:03:49.555Z
 13582  	EndTime *time.Time `type:"timestamp"`
 13583  
 13584  	// An optional marker returned from a prior request. Use this marker for pagination
 13585  	// of results from this operation. If this parameter is specified, the response
 13586  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 13587  	Marker *string `type:"string"`
 13588  
 13589  	// The maximum number of records to include in the response. If more records
 13590  	// exist than the specified MaxRecords value, a marker is included in the response
 13591  	// so that the remaining results can be retrieved.
 13592  	//
 13593  	// Default: 100
 13594  	//
 13595  	// Constraints: minimum 20; maximum 100.
 13596  	MaxRecords *int64 `type:"integer"`
 13597  
 13598  	// The identifier of the event source for which events are returned. If not
 13599  	// specified, all sources are included in the response.
 13600  	SourceIdentifier *string `type:"string"`
 13601  
 13602  	// The event source to retrieve events for. If no value is specified, all events
 13603  	// are returned.
 13604  	SourceType *string `type:"string" enum:"SourceType"`
 13605  
 13606  	// The beginning of the time interval to retrieve events for, specified in ISO
 13607  	// 8601 format.
 13608  	//
 13609  	// Example: 2017-03-30T07:03:49.555Z
 13610  	StartTime *time.Time `type:"timestamp"`
 13611  }
 13612  
 13613  // String returns the string representation.
 13614  //
 13615  // API parameter values that are decorated as "sensitive" in the API will not
 13616  // be included in the string output. The member name will be present, but the
 13617  // value will be replaced with "sensitive".
 13618  func (s DescribeEventsInput) String() string {
 13619  	return awsutil.Prettify(s)
 13620  }
 13621  
 13622  // GoString returns the string representation.
 13623  //
 13624  // API parameter values that are decorated as "sensitive" in the API will not
 13625  // be included in the string output. The member name will be present, but the
 13626  // value will be replaced with "sensitive".
 13627  func (s DescribeEventsInput) GoString() string {
 13628  	return s.String()
 13629  }
 13630  
 13631  // SetDuration sets the Duration field's value.
 13632  func (s *DescribeEventsInput) SetDuration(v int64) *DescribeEventsInput {
 13633  	s.Duration = &v
 13634  	return s
 13635  }
 13636  
 13637  // SetEndTime sets the EndTime field's value.
 13638  func (s *DescribeEventsInput) SetEndTime(v time.Time) *DescribeEventsInput {
 13639  	s.EndTime = &v
 13640  	return s
 13641  }
 13642  
 13643  // SetMarker sets the Marker field's value.
 13644  func (s *DescribeEventsInput) SetMarker(v string) *DescribeEventsInput {
 13645  	s.Marker = &v
 13646  	return s
 13647  }
 13648  
 13649  // SetMaxRecords sets the MaxRecords field's value.
 13650  func (s *DescribeEventsInput) SetMaxRecords(v int64) *DescribeEventsInput {
 13651  	s.MaxRecords = &v
 13652  	return s
 13653  }
 13654  
 13655  // SetSourceIdentifier sets the SourceIdentifier field's value.
 13656  func (s *DescribeEventsInput) SetSourceIdentifier(v string) *DescribeEventsInput {
 13657  	s.SourceIdentifier = &v
 13658  	return s
 13659  }
 13660  
 13661  // SetSourceType sets the SourceType field's value.
 13662  func (s *DescribeEventsInput) SetSourceType(v string) *DescribeEventsInput {
 13663  	s.SourceType = &v
 13664  	return s
 13665  }
 13666  
 13667  // SetStartTime sets the StartTime field's value.
 13668  func (s *DescribeEventsInput) SetStartTime(v time.Time) *DescribeEventsInput {
 13669  	s.StartTime = &v
 13670  	return s
 13671  }
 13672  
 13673  // Represents the output of a DescribeEvents operation.
 13674  type DescribeEventsOutput struct {
 13675  	_ struct{} `type:"structure"`
 13676  
 13677  	// A list of events. Each element in the list contains detailed information
 13678  	// about one event.
 13679  	Events []*Event `locationNameList:"Event" type:"list"`
 13680  
 13681  	// Provides an identifier to allow retrieval of paginated results.
 13682  	Marker *string `type:"string"`
 13683  }
 13684  
 13685  // String returns the string representation.
 13686  //
 13687  // API parameter values that are decorated as "sensitive" in the API will not
 13688  // be included in the string output. The member name will be present, but the
 13689  // value will be replaced with "sensitive".
 13690  func (s DescribeEventsOutput) String() string {
 13691  	return awsutil.Prettify(s)
 13692  }
 13693  
 13694  // GoString returns the string representation.
 13695  //
 13696  // API parameter values that are decorated as "sensitive" in the API will not
 13697  // be included in the string output. The member name will be present, but the
 13698  // value will be replaced with "sensitive".
 13699  func (s DescribeEventsOutput) GoString() string {
 13700  	return s.String()
 13701  }
 13702  
 13703  // SetEvents sets the Events field's value.
 13704  func (s *DescribeEventsOutput) SetEvents(v []*Event) *DescribeEventsOutput {
 13705  	s.Events = v
 13706  	return s
 13707  }
 13708  
 13709  // SetMarker sets the Marker field's value.
 13710  func (s *DescribeEventsOutput) SetMarker(v string) *DescribeEventsOutput {
 13711  	s.Marker = &v
 13712  	return s
 13713  }
 13714  
 13715  type DescribeGlobalReplicationGroupsInput struct {
 13716  	_ struct{} `type:"structure"`
 13717  
 13718  	// The name of the Global datastore
 13719  	GlobalReplicationGroupId *string `type:"string"`
 13720  
 13721  	// An optional marker returned from a prior request. Use this marker for pagination
 13722  	// of results from this operation. If this parameter is specified, the response
 13723  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 13724  	Marker *string `type:"string"`
 13725  
 13726  	// The maximum number of records to include in the response. If more records
 13727  	// exist than the specified MaxRecords value, a marker is included in the response
 13728  	// so that the remaining results can be retrieved.
 13729  	MaxRecords *int64 `type:"integer"`
 13730  
 13731  	// Returns the list of members that comprise the Global datastore.
 13732  	ShowMemberInfo *bool `type:"boolean"`
 13733  }
 13734  
 13735  // String returns the string representation.
 13736  //
 13737  // API parameter values that are decorated as "sensitive" in the API will not
 13738  // be included in the string output. The member name will be present, but the
 13739  // value will be replaced with "sensitive".
 13740  func (s DescribeGlobalReplicationGroupsInput) String() string {
 13741  	return awsutil.Prettify(s)
 13742  }
 13743  
 13744  // GoString returns the string representation.
 13745  //
 13746  // API parameter values that are decorated as "sensitive" in the API will not
 13747  // be included in the string output. The member name will be present, but the
 13748  // value will be replaced with "sensitive".
 13749  func (s DescribeGlobalReplicationGroupsInput) GoString() string {
 13750  	return s.String()
 13751  }
 13752  
 13753  // SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
 13754  func (s *DescribeGlobalReplicationGroupsInput) SetGlobalReplicationGroupId(v string) *DescribeGlobalReplicationGroupsInput {
 13755  	s.GlobalReplicationGroupId = &v
 13756  	return s
 13757  }
 13758  
 13759  // SetMarker sets the Marker field's value.
 13760  func (s *DescribeGlobalReplicationGroupsInput) SetMarker(v string) *DescribeGlobalReplicationGroupsInput {
 13761  	s.Marker = &v
 13762  	return s
 13763  }
 13764  
 13765  // SetMaxRecords sets the MaxRecords field's value.
 13766  func (s *DescribeGlobalReplicationGroupsInput) SetMaxRecords(v int64) *DescribeGlobalReplicationGroupsInput {
 13767  	s.MaxRecords = &v
 13768  	return s
 13769  }
 13770  
 13771  // SetShowMemberInfo sets the ShowMemberInfo field's value.
 13772  func (s *DescribeGlobalReplicationGroupsInput) SetShowMemberInfo(v bool) *DescribeGlobalReplicationGroupsInput {
 13773  	s.ShowMemberInfo = &v
 13774  	return s
 13775  }
 13776  
 13777  type DescribeGlobalReplicationGroupsOutput struct {
 13778  	_ struct{} `type:"structure"`
 13779  
 13780  	// Indicates the slot configuration and global identifier for each slice group.
 13781  	GlobalReplicationGroups []*GlobalReplicationGroup `locationNameList:"GlobalReplicationGroup" type:"list"`
 13782  
 13783  	// An optional marker returned from a prior request. Use this marker for pagination
 13784  	// of results from this operation. If this parameter is specified, the response
 13785  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 13786  	// >
 13787  	Marker *string `type:"string"`
 13788  }
 13789  
 13790  // String returns the string representation.
 13791  //
 13792  // API parameter values that are decorated as "sensitive" in the API will not
 13793  // be included in the string output. The member name will be present, but the
 13794  // value will be replaced with "sensitive".
 13795  func (s DescribeGlobalReplicationGroupsOutput) String() string {
 13796  	return awsutil.Prettify(s)
 13797  }
 13798  
 13799  // GoString returns the string representation.
 13800  //
 13801  // API parameter values that are decorated as "sensitive" in the API will not
 13802  // be included in the string output. The member name will be present, but the
 13803  // value will be replaced with "sensitive".
 13804  func (s DescribeGlobalReplicationGroupsOutput) GoString() string {
 13805  	return s.String()
 13806  }
 13807  
 13808  // SetGlobalReplicationGroups sets the GlobalReplicationGroups field's value.
 13809  func (s *DescribeGlobalReplicationGroupsOutput) SetGlobalReplicationGroups(v []*GlobalReplicationGroup) *DescribeGlobalReplicationGroupsOutput {
 13810  	s.GlobalReplicationGroups = v
 13811  	return s
 13812  }
 13813  
 13814  // SetMarker sets the Marker field's value.
 13815  func (s *DescribeGlobalReplicationGroupsOutput) SetMarker(v string) *DescribeGlobalReplicationGroupsOutput {
 13816  	s.Marker = &v
 13817  	return s
 13818  }
 13819  
 13820  // Represents the input of a DescribeReplicationGroups operation.
 13821  type DescribeReplicationGroupsInput struct {
 13822  	_ struct{} `type:"structure"`
 13823  
 13824  	// An optional marker returned from a prior request. Use this marker for pagination
 13825  	// of results from this operation. If this parameter is specified, the response
 13826  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 13827  	Marker *string `type:"string"`
 13828  
 13829  	// The maximum number of records to include in the response. If more records
 13830  	// exist than the specified MaxRecords value, a marker is included in the response
 13831  	// so that the remaining results can be retrieved.
 13832  	//
 13833  	// Default: 100
 13834  	//
 13835  	// Constraints: minimum 20; maximum 100.
 13836  	MaxRecords *int64 `type:"integer"`
 13837  
 13838  	// The identifier for the replication group to be described. This parameter
 13839  	// is not case sensitive.
 13840  	//
 13841  	// If you do not specify this parameter, information about all replication groups
 13842  	// is returned.
 13843  	ReplicationGroupId *string `type:"string"`
 13844  }
 13845  
 13846  // String returns the string representation.
 13847  //
 13848  // API parameter values that are decorated as "sensitive" in the API will not
 13849  // be included in the string output. The member name will be present, but the
 13850  // value will be replaced with "sensitive".
 13851  func (s DescribeReplicationGroupsInput) String() string {
 13852  	return awsutil.Prettify(s)
 13853  }
 13854  
 13855  // GoString returns the string representation.
 13856  //
 13857  // API parameter values that are decorated as "sensitive" in the API will not
 13858  // be included in the string output. The member name will be present, but the
 13859  // value will be replaced with "sensitive".
 13860  func (s DescribeReplicationGroupsInput) GoString() string {
 13861  	return s.String()
 13862  }
 13863  
 13864  // SetMarker sets the Marker field's value.
 13865  func (s *DescribeReplicationGroupsInput) SetMarker(v string) *DescribeReplicationGroupsInput {
 13866  	s.Marker = &v
 13867  	return s
 13868  }
 13869  
 13870  // SetMaxRecords sets the MaxRecords field's value.
 13871  func (s *DescribeReplicationGroupsInput) SetMaxRecords(v int64) *DescribeReplicationGroupsInput {
 13872  	s.MaxRecords = &v
 13873  	return s
 13874  }
 13875  
 13876  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 13877  func (s *DescribeReplicationGroupsInput) SetReplicationGroupId(v string) *DescribeReplicationGroupsInput {
 13878  	s.ReplicationGroupId = &v
 13879  	return s
 13880  }
 13881  
 13882  // Represents the output of a DescribeReplicationGroups operation.
 13883  type DescribeReplicationGroupsOutput struct {
 13884  	_ struct{} `type:"structure"`
 13885  
 13886  	// Provides an identifier to allow retrieval of paginated results.
 13887  	Marker *string `type:"string"`
 13888  
 13889  	// A list of replication groups. Each item in the list contains detailed information
 13890  	// about one replication group.
 13891  	ReplicationGroups []*ReplicationGroup `locationNameList:"ReplicationGroup" type:"list"`
 13892  }
 13893  
 13894  // String returns the string representation.
 13895  //
 13896  // API parameter values that are decorated as "sensitive" in the API will not
 13897  // be included in the string output. The member name will be present, but the
 13898  // value will be replaced with "sensitive".
 13899  func (s DescribeReplicationGroupsOutput) String() string {
 13900  	return awsutil.Prettify(s)
 13901  }
 13902  
 13903  // GoString returns the string representation.
 13904  //
 13905  // API parameter values that are decorated as "sensitive" in the API will not
 13906  // be included in the string output. The member name will be present, but the
 13907  // value will be replaced with "sensitive".
 13908  func (s DescribeReplicationGroupsOutput) GoString() string {
 13909  	return s.String()
 13910  }
 13911  
 13912  // SetMarker sets the Marker field's value.
 13913  func (s *DescribeReplicationGroupsOutput) SetMarker(v string) *DescribeReplicationGroupsOutput {
 13914  	s.Marker = &v
 13915  	return s
 13916  }
 13917  
 13918  // SetReplicationGroups sets the ReplicationGroups field's value.
 13919  func (s *DescribeReplicationGroupsOutput) SetReplicationGroups(v []*ReplicationGroup) *DescribeReplicationGroupsOutput {
 13920  	s.ReplicationGroups = v
 13921  	return s
 13922  }
 13923  
 13924  // Represents the input of a DescribeReservedCacheNodes operation.
 13925  type DescribeReservedCacheNodesInput struct {
 13926  	_ struct{} `type:"structure"`
 13927  
 13928  	// The cache node type filter value. Use this parameter to show only those reservations
 13929  	// matching the specified cache node type.
 13930  	//
 13931  	// The following node types are supported by ElastiCache. Generally speaking,
 13932  	// the current generation types provide more memory and computational power
 13933  	// at lower cost when compared to their equivalent previous generation counterparts.
 13934  	//
 13935  	//    * General purpose: Current generation: M6g node types (available only
 13936  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
 13937  	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
 13938  	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
 13939  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
 13940  	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
 13941  	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
 13942  	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
 13943  	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
 13944  	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
 13945  	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
 13946  	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
 13947  	//    cache.m3.2xlarge
 13948  	//
 13949  	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
 13950  	//    cache.c1.xlarge
 13951  	//
 13952  	//    * Memory optimized: Current generation: R6g node types (available only
 13953  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
 13954  	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
 13955  	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
 13956  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
 13957  	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
 13958  	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
 13959  	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
 13960  	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
 13961  	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
 13962  	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
 13963  	//
 13964  	// Additional node type info
 13965  	//
 13966  	//    * All current generation instance types are created in Amazon VPC by default.
 13967  	//
 13968  	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
 13969  	//
 13970  	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
 13971  	//
 13972  	//    * Redis configuration variables appendonly and appendfsync are not supported
 13973  	//    on Redis version 2.8.22 and later.
 13974  	CacheNodeType *string `type:"string"`
 13975  
 13976  	// The duration filter value, specified in years or seconds. Use this parameter
 13977  	// to show only reservations for this duration.
 13978  	//
 13979  	// Valid Values: 1 | 3 | 31536000 | 94608000
 13980  	Duration *string `type:"string"`
 13981  
 13982  	// An optional marker returned from a prior request. Use this marker for pagination
 13983  	// of results from this operation. If this parameter is specified, the response
 13984  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 13985  	Marker *string `type:"string"`
 13986  
 13987  	// The maximum number of records to include in the response. If more records
 13988  	// exist than the specified MaxRecords value, a marker is included in the response
 13989  	// so that the remaining results can be retrieved.
 13990  	//
 13991  	// Default: 100
 13992  	//
 13993  	// Constraints: minimum 20; maximum 100.
 13994  	MaxRecords *int64 `type:"integer"`
 13995  
 13996  	// The offering type filter value. Use this parameter to show only the available
 13997  	// offerings matching the specified offering type.
 13998  	//
 13999  	// Valid values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization"|"All
 14000  	// Upfront"|"Partial Upfront"| "No Upfront"
 14001  	OfferingType *string `type:"string"`
 14002  
 14003  	// The product description filter value. Use this parameter to show only those
 14004  	// reservations matching the specified product description.
 14005  	ProductDescription *string `type:"string"`
 14006  
 14007  	// The reserved cache node identifier filter value. Use this parameter to show
 14008  	// only the reservation that matches the specified reservation ID.
 14009  	ReservedCacheNodeId *string `type:"string"`
 14010  
 14011  	// The offering identifier filter value. Use this parameter to show only purchased
 14012  	// reservations matching the specified offering identifier.
 14013  	ReservedCacheNodesOfferingId *string `type:"string"`
 14014  }
 14015  
 14016  // String returns the string representation.
 14017  //
 14018  // API parameter values that are decorated as "sensitive" in the API will not
 14019  // be included in the string output. The member name will be present, but the
 14020  // value will be replaced with "sensitive".
 14021  func (s DescribeReservedCacheNodesInput) String() string {
 14022  	return awsutil.Prettify(s)
 14023  }
 14024  
 14025  // GoString returns the string representation.
 14026  //
 14027  // API parameter values that are decorated as "sensitive" in the API will not
 14028  // be included in the string output. The member name will be present, but the
 14029  // value will be replaced with "sensitive".
 14030  func (s DescribeReservedCacheNodesInput) GoString() string {
 14031  	return s.String()
 14032  }
 14033  
 14034  // SetCacheNodeType sets the CacheNodeType field's value.
 14035  func (s *DescribeReservedCacheNodesInput) SetCacheNodeType(v string) *DescribeReservedCacheNodesInput {
 14036  	s.CacheNodeType = &v
 14037  	return s
 14038  }
 14039  
 14040  // SetDuration sets the Duration field's value.
 14041  func (s *DescribeReservedCacheNodesInput) SetDuration(v string) *DescribeReservedCacheNodesInput {
 14042  	s.Duration = &v
 14043  	return s
 14044  }
 14045  
 14046  // SetMarker sets the Marker field's value.
 14047  func (s *DescribeReservedCacheNodesInput) SetMarker(v string) *DescribeReservedCacheNodesInput {
 14048  	s.Marker = &v
 14049  	return s
 14050  }
 14051  
 14052  // SetMaxRecords sets the MaxRecords field's value.
 14053  func (s *DescribeReservedCacheNodesInput) SetMaxRecords(v int64) *DescribeReservedCacheNodesInput {
 14054  	s.MaxRecords = &v
 14055  	return s
 14056  }
 14057  
 14058  // SetOfferingType sets the OfferingType field's value.
 14059  func (s *DescribeReservedCacheNodesInput) SetOfferingType(v string) *DescribeReservedCacheNodesInput {
 14060  	s.OfferingType = &v
 14061  	return s
 14062  }
 14063  
 14064  // SetProductDescription sets the ProductDescription field's value.
 14065  func (s *DescribeReservedCacheNodesInput) SetProductDescription(v string) *DescribeReservedCacheNodesInput {
 14066  	s.ProductDescription = &v
 14067  	return s
 14068  }
 14069  
 14070  // SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
 14071  func (s *DescribeReservedCacheNodesInput) SetReservedCacheNodeId(v string) *DescribeReservedCacheNodesInput {
 14072  	s.ReservedCacheNodeId = &v
 14073  	return s
 14074  }
 14075  
 14076  // SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
 14077  func (s *DescribeReservedCacheNodesInput) SetReservedCacheNodesOfferingId(v string) *DescribeReservedCacheNodesInput {
 14078  	s.ReservedCacheNodesOfferingId = &v
 14079  	return s
 14080  }
 14081  
 14082  // Represents the input of a DescribeReservedCacheNodesOfferings operation.
 14083  type DescribeReservedCacheNodesOfferingsInput struct {
 14084  	_ struct{} `type:"structure"`
 14085  
 14086  	// The cache node type filter value. Use this parameter to show only the available
 14087  	// offerings matching the specified cache node type.
 14088  	//
 14089  	// The following node types are supported by ElastiCache. Generally speaking,
 14090  	// the current generation types provide more memory and computational power
 14091  	// at lower cost when compared to their equivalent previous generation counterparts.
 14092  	//
 14093  	//    * General purpose: Current generation: M6g node types (available only
 14094  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
 14095  	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
 14096  	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
 14097  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
 14098  	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
 14099  	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
 14100  	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
 14101  	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
 14102  	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
 14103  	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
 14104  	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
 14105  	//    cache.m3.2xlarge
 14106  	//
 14107  	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
 14108  	//    cache.c1.xlarge
 14109  	//
 14110  	//    * Memory optimized: Current generation: R6g node types (available only
 14111  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
 14112  	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
 14113  	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
 14114  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
 14115  	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
 14116  	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
 14117  	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
 14118  	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
 14119  	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
 14120  	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
 14121  	//
 14122  	// Additional node type info
 14123  	//
 14124  	//    * All current generation instance types are created in Amazon VPC by default.
 14125  	//
 14126  	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
 14127  	//
 14128  	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
 14129  	//
 14130  	//    * Redis configuration variables appendonly and appendfsync are not supported
 14131  	//    on Redis version 2.8.22 and later.
 14132  	CacheNodeType *string `type:"string"`
 14133  
 14134  	// Duration filter value, specified in years or seconds. Use this parameter
 14135  	// to show only reservations for a given duration.
 14136  	//
 14137  	// Valid Values: 1 | 3 | 31536000 | 94608000
 14138  	Duration *string `type:"string"`
 14139  
 14140  	// An optional marker returned from a prior request. Use this marker for pagination
 14141  	// of results from this operation. If this parameter is specified, the response
 14142  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 14143  	Marker *string `type:"string"`
 14144  
 14145  	// The maximum number of records to include in the response. If more records
 14146  	// exist than the specified MaxRecords value, a marker is included in the response
 14147  	// so that the remaining results can be retrieved.
 14148  	//
 14149  	// Default: 100
 14150  	//
 14151  	// Constraints: minimum 20; maximum 100.
 14152  	MaxRecords *int64 `type:"integer"`
 14153  
 14154  	// The offering type filter value. Use this parameter to show only the available
 14155  	// offerings matching the specified offering type.
 14156  	//
 14157  	// Valid Values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization"
 14158  	// |"All Upfront"|"Partial Upfront"| "No Upfront"
 14159  	OfferingType *string `type:"string"`
 14160  
 14161  	// The product description filter value. Use this parameter to show only the
 14162  	// available offerings matching the specified product description.
 14163  	ProductDescription *string `type:"string"`
 14164  
 14165  	// The offering identifier filter value. Use this parameter to show only the
 14166  	// available offering that matches the specified reservation identifier.
 14167  	//
 14168  	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
 14169  	ReservedCacheNodesOfferingId *string `type:"string"`
 14170  }
 14171  
 14172  // String returns the string representation.
 14173  //
 14174  // API parameter values that are decorated as "sensitive" in the API will not
 14175  // be included in the string output. The member name will be present, but the
 14176  // value will be replaced with "sensitive".
 14177  func (s DescribeReservedCacheNodesOfferingsInput) String() string {
 14178  	return awsutil.Prettify(s)
 14179  }
 14180  
 14181  // GoString returns the string representation.
 14182  //
 14183  // API parameter values that are decorated as "sensitive" in the API will not
 14184  // be included in the string output. The member name will be present, but the
 14185  // value will be replaced with "sensitive".
 14186  func (s DescribeReservedCacheNodesOfferingsInput) GoString() string {
 14187  	return s.String()
 14188  }
 14189  
 14190  // SetCacheNodeType sets the CacheNodeType field's value.
 14191  func (s *DescribeReservedCacheNodesOfferingsInput) SetCacheNodeType(v string) *DescribeReservedCacheNodesOfferingsInput {
 14192  	s.CacheNodeType = &v
 14193  	return s
 14194  }
 14195  
 14196  // SetDuration sets the Duration field's value.
 14197  func (s *DescribeReservedCacheNodesOfferingsInput) SetDuration(v string) *DescribeReservedCacheNodesOfferingsInput {
 14198  	s.Duration = &v
 14199  	return s
 14200  }
 14201  
 14202  // SetMarker sets the Marker field's value.
 14203  func (s *DescribeReservedCacheNodesOfferingsInput) SetMarker(v string) *DescribeReservedCacheNodesOfferingsInput {
 14204  	s.Marker = &v
 14205  	return s
 14206  }
 14207  
 14208  // SetMaxRecords sets the MaxRecords field's value.
 14209  func (s *DescribeReservedCacheNodesOfferingsInput) SetMaxRecords(v int64) *DescribeReservedCacheNodesOfferingsInput {
 14210  	s.MaxRecords = &v
 14211  	return s
 14212  }
 14213  
 14214  // SetOfferingType sets the OfferingType field's value.
 14215  func (s *DescribeReservedCacheNodesOfferingsInput) SetOfferingType(v string) *DescribeReservedCacheNodesOfferingsInput {
 14216  	s.OfferingType = &v
 14217  	return s
 14218  }
 14219  
 14220  // SetProductDescription sets the ProductDescription field's value.
 14221  func (s *DescribeReservedCacheNodesOfferingsInput) SetProductDescription(v string) *DescribeReservedCacheNodesOfferingsInput {
 14222  	s.ProductDescription = &v
 14223  	return s
 14224  }
 14225  
 14226  // SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
 14227  func (s *DescribeReservedCacheNodesOfferingsInput) SetReservedCacheNodesOfferingId(v string) *DescribeReservedCacheNodesOfferingsInput {
 14228  	s.ReservedCacheNodesOfferingId = &v
 14229  	return s
 14230  }
 14231  
 14232  // Represents the output of a DescribeReservedCacheNodesOfferings operation.
 14233  type DescribeReservedCacheNodesOfferingsOutput struct {
 14234  	_ struct{} `type:"structure"`
 14235  
 14236  	// Provides an identifier to allow retrieval of paginated results.
 14237  	Marker *string `type:"string"`
 14238  
 14239  	// A list of reserved cache node offerings. Each element in the list contains
 14240  	// detailed information about one offering.
 14241  	ReservedCacheNodesOfferings []*ReservedCacheNodesOffering `locationNameList:"ReservedCacheNodesOffering" type:"list"`
 14242  }
 14243  
 14244  // String returns the string representation.
 14245  //
 14246  // API parameter values that are decorated as "sensitive" in the API will not
 14247  // be included in the string output. The member name will be present, but the
 14248  // value will be replaced with "sensitive".
 14249  func (s DescribeReservedCacheNodesOfferingsOutput) String() string {
 14250  	return awsutil.Prettify(s)
 14251  }
 14252  
 14253  // GoString returns the string representation.
 14254  //
 14255  // API parameter values that are decorated as "sensitive" in the API will not
 14256  // be included in the string output. The member name will be present, but the
 14257  // value will be replaced with "sensitive".
 14258  func (s DescribeReservedCacheNodesOfferingsOutput) GoString() string {
 14259  	return s.String()
 14260  }
 14261  
 14262  // SetMarker sets the Marker field's value.
 14263  func (s *DescribeReservedCacheNodesOfferingsOutput) SetMarker(v string) *DescribeReservedCacheNodesOfferingsOutput {
 14264  	s.Marker = &v
 14265  	return s
 14266  }
 14267  
 14268  // SetReservedCacheNodesOfferings sets the ReservedCacheNodesOfferings field's value.
 14269  func (s *DescribeReservedCacheNodesOfferingsOutput) SetReservedCacheNodesOfferings(v []*ReservedCacheNodesOffering) *DescribeReservedCacheNodesOfferingsOutput {
 14270  	s.ReservedCacheNodesOfferings = v
 14271  	return s
 14272  }
 14273  
 14274  // Represents the output of a DescribeReservedCacheNodes operation.
 14275  type DescribeReservedCacheNodesOutput struct {
 14276  	_ struct{} `type:"structure"`
 14277  
 14278  	// Provides an identifier to allow retrieval of paginated results.
 14279  	Marker *string `type:"string"`
 14280  
 14281  	// A list of reserved cache nodes. Each element in the list contains detailed
 14282  	// information about one node.
 14283  	ReservedCacheNodes []*ReservedCacheNode `locationNameList:"ReservedCacheNode" type:"list"`
 14284  }
 14285  
 14286  // String returns the string representation.
 14287  //
 14288  // API parameter values that are decorated as "sensitive" in the API will not
 14289  // be included in the string output. The member name will be present, but the
 14290  // value will be replaced with "sensitive".
 14291  func (s DescribeReservedCacheNodesOutput) String() string {
 14292  	return awsutil.Prettify(s)
 14293  }
 14294  
 14295  // GoString returns the string representation.
 14296  //
 14297  // API parameter values that are decorated as "sensitive" in the API will not
 14298  // be included in the string output. The member name will be present, but the
 14299  // value will be replaced with "sensitive".
 14300  func (s DescribeReservedCacheNodesOutput) GoString() string {
 14301  	return s.String()
 14302  }
 14303  
 14304  // SetMarker sets the Marker field's value.
 14305  func (s *DescribeReservedCacheNodesOutput) SetMarker(v string) *DescribeReservedCacheNodesOutput {
 14306  	s.Marker = &v
 14307  	return s
 14308  }
 14309  
 14310  // SetReservedCacheNodes sets the ReservedCacheNodes field's value.
 14311  func (s *DescribeReservedCacheNodesOutput) SetReservedCacheNodes(v []*ReservedCacheNode) *DescribeReservedCacheNodesOutput {
 14312  	s.ReservedCacheNodes = v
 14313  	return s
 14314  }
 14315  
 14316  type DescribeServiceUpdatesInput struct {
 14317  	_ struct{} `type:"structure"`
 14318  
 14319  	// An optional marker returned from a prior request. Use this marker for pagination
 14320  	// of results from this operation. If this parameter is specified, the response
 14321  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 14322  	Marker *string `type:"string"`
 14323  
 14324  	// The maximum number of records to include in the response
 14325  	MaxRecords *int64 `type:"integer"`
 14326  
 14327  	// The unique ID of the service update
 14328  	ServiceUpdateName *string `type:"string"`
 14329  
 14330  	// The status of the service update
 14331  	ServiceUpdateStatus []*string `type:"list"`
 14332  }
 14333  
 14334  // String returns the string representation.
 14335  //
 14336  // API parameter values that are decorated as "sensitive" in the API will not
 14337  // be included in the string output. The member name will be present, but the
 14338  // value will be replaced with "sensitive".
 14339  func (s DescribeServiceUpdatesInput) String() string {
 14340  	return awsutil.Prettify(s)
 14341  }
 14342  
 14343  // GoString returns the string representation.
 14344  //
 14345  // API parameter values that are decorated as "sensitive" in the API will not
 14346  // be included in the string output. The member name will be present, but the
 14347  // value will be replaced with "sensitive".
 14348  func (s DescribeServiceUpdatesInput) GoString() string {
 14349  	return s.String()
 14350  }
 14351  
 14352  // SetMarker sets the Marker field's value.
 14353  func (s *DescribeServiceUpdatesInput) SetMarker(v string) *DescribeServiceUpdatesInput {
 14354  	s.Marker = &v
 14355  	return s
 14356  }
 14357  
 14358  // SetMaxRecords sets the MaxRecords field's value.
 14359  func (s *DescribeServiceUpdatesInput) SetMaxRecords(v int64) *DescribeServiceUpdatesInput {
 14360  	s.MaxRecords = &v
 14361  	return s
 14362  }
 14363  
 14364  // SetServiceUpdateName sets the ServiceUpdateName field's value.
 14365  func (s *DescribeServiceUpdatesInput) SetServiceUpdateName(v string) *DescribeServiceUpdatesInput {
 14366  	s.ServiceUpdateName = &v
 14367  	return s
 14368  }
 14369  
 14370  // SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
 14371  func (s *DescribeServiceUpdatesInput) SetServiceUpdateStatus(v []*string) *DescribeServiceUpdatesInput {
 14372  	s.ServiceUpdateStatus = v
 14373  	return s
 14374  }
 14375  
 14376  type DescribeServiceUpdatesOutput struct {
 14377  	_ struct{} `type:"structure"`
 14378  
 14379  	// An optional marker returned from a prior request. Use this marker for pagination
 14380  	// of results from this operation. If this parameter is specified, the response
 14381  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 14382  	Marker *string `type:"string"`
 14383  
 14384  	// A list of service updates
 14385  	ServiceUpdates []*ServiceUpdate `locationNameList:"ServiceUpdate" type:"list"`
 14386  }
 14387  
 14388  // String returns the string representation.
 14389  //
 14390  // API parameter values that are decorated as "sensitive" in the API will not
 14391  // be included in the string output. The member name will be present, but the
 14392  // value will be replaced with "sensitive".
 14393  func (s DescribeServiceUpdatesOutput) String() string {
 14394  	return awsutil.Prettify(s)
 14395  }
 14396  
 14397  // GoString returns the string representation.
 14398  //
 14399  // API parameter values that are decorated as "sensitive" in the API will not
 14400  // be included in the string output. The member name will be present, but the
 14401  // value will be replaced with "sensitive".
 14402  func (s DescribeServiceUpdatesOutput) GoString() string {
 14403  	return s.String()
 14404  }
 14405  
 14406  // SetMarker sets the Marker field's value.
 14407  func (s *DescribeServiceUpdatesOutput) SetMarker(v string) *DescribeServiceUpdatesOutput {
 14408  	s.Marker = &v
 14409  	return s
 14410  }
 14411  
 14412  // SetServiceUpdates sets the ServiceUpdates field's value.
 14413  func (s *DescribeServiceUpdatesOutput) SetServiceUpdates(v []*ServiceUpdate) *DescribeServiceUpdatesOutput {
 14414  	s.ServiceUpdates = v
 14415  	return s
 14416  }
 14417  
 14418  // Represents the input of a DescribeSnapshotsMessage operation.
 14419  type DescribeSnapshotsInput struct {
 14420  	_ struct{} `type:"structure"`
 14421  
 14422  	// A user-supplied cluster identifier. If this parameter is specified, only
 14423  	// snapshots associated with that specific cluster are described.
 14424  	CacheClusterId *string `type:"string"`
 14425  
 14426  	// An optional marker returned from a prior request. Use this marker for pagination
 14427  	// of results from this operation. If this parameter is specified, the response
 14428  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 14429  	Marker *string `type:"string"`
 14430  
 14431  	// The maximum number of records to include in the response. If more records
 14432  	// exist than the specified MaxRecords value, a marker is included in the response
 14433  	// so that the remaining results can be retrieved.
 14434  	//
 14435  	// Default: 50
 14436  	//
 14437  	// Constraints: minimum 20; maximum 50.
 14438  	MaxRecords *int64 `type:"integer"`
 14439  
 14440  	// A user-supplied replication group identifier. If this parameter is specified,
 14441  	// only snapshots associated with that specific replication group are described.
 14442  	ReplicationGroupId *string `type:"string"`
 14443  
 14444  	// A Boolean value which if true, the node group (shard) configuration is included
 14445  	// in the snapshot description.
 14446  	ShowNodeGroupConfig *bool `type:"boolean"`
 14447  
 14448  	// A user-supplied name of the snapshot. If this parameter is specified, only
 14449  	// this snapshot are described.
 14450  	SnapshotName *string `type:"string"`
 14451  
 14452  	// If set to system, the output shows snapshots that were automatically created
 14453  	// by ElastiCache. If set to user the output shows snapshots that were manually
 14454  	// created. If omitted, the output shows both automatically and manually created
 14455  	// snapshots.
 14456  	SnapshotSource *string `type:"string"`
 14457  }
 14458  
 14459  // String returns the string representation.
 14460  //
 14461  // API parameter values that are decorated as "sensitive" in the API will not
 14462  // be included in the string output. The member name will be present, but the
 14463  // value will be replaced with "sensitive".
 14464  func (s DescribeSnapshotsInput) String() string {
 14465  	return awsutil.Prettify(s)
 14466  }
 14467  
 14468  // GoString returns the string representation.
 14469  //
 14470  // API parameter values that are decorated as "sensitive" in the API will not
 14471  // be included in the string output. The member name will be present, but the
 14472  // value will be replaced with "sensitive".
 14473  func (s DescribeSnapshotsInput) GoString() string {
 14474  	return s.String()
 14475  }
 14476  
 14477  // SetCacheClusterId sets the CacheClusterId field's value.
 14478  func (s *DescribeSnapshotsInput) SetCacheClusterId(v string) *DescribeSnapshotsInput {
 14479  	s.CacheClusterId = &v
 14480  	return s
 14481  }
 14482  
 14483  // SetMarker sets the Marker field's value.
 14484  func (s *DescribeSnapshotsInput) SetMarker(v string) *DescribeSnapshotsInput {
 14485  	s.Marker = &v
 14486  	return s
 14487  }
 14488  
 14489  // SetMaxRecords sets the MaxRecords field's value.
 14490  func (s *DescribeSnapshotsInput) SetMaxRecords(v int64) *DescribeSnapshotsInput {
 14491  	s.MaxRecords = &v
 14492  	return s
 14493  }
 14494  
 14495  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 14496  func (s *DescribeSnapshotsInput) SetReplicationGroupId(v string) *DescribeSnapshotsInput {
 14497  	s.ReplicationGroupId = &v
 14498  	return s
 14499  }
 14500  
 14501  // SetShowNodeGroupConfig sets the ShowNodeGroupConfig field's value.
 14502  func (s *DescribeSnapshotsInput) SetShowNodeGroupConfig(v bool) *DescribeSnapshotsInput {
 14503  	s.ShowNodeGroupConfig = &v
 14504  	return s
 14505  }
 14506  
 14507  // SetSnapshotName sets the SnapshotName field's value.
 14508  func (s *DescribeSnapshotsInput) SetSnapshotName(v string) *DescribeSnapshotsInput {
 14509  	s.SnapshotName = &v
 14510  	return s
 14511  }
 14512  
 14513  // SetSnapshotSource sets the SnapshotSource field's value.
 14514  func (s *DescribeSnapshotsInput) SetSnapshotSource(v string) *DescribeSnapshotsInput {
 14515  	s.SnapshotSource = &v
 14516  	return s
 14517  }
 14518  
 14519  // Represents the output of a DescribeSnapshots operation.
 14520  type DescribeSnapshotsOutput struct {
 14521  	_ struct{} `type:"structure"`
 14522  
 14523  	// An optional marker returned from a prior request. Use this marker for pagination
 14524  	// of results from this operation. If this parameter is specified, the response
 14525  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 14526  	Marker *string `type:"string"`
 14527  
 14528  	// A list of snapshots. Each item in the list contains detailed information
 14529  	// about one snapshot.
 14530  	Snapshots []*Snapshot `locationNameList:"Snapshot" type:"list"`
 14531  }
 14532  
 14533  // String returns the string representation.
 14534  //
 14535  // API parameter values that are decorated as "sensitive" in the API will not
 14536  // be included in the string output. The member name will be present, but the
 14537  // value will be replaced with "sensitive".
 14538  func (s DescribeSnapshotsOutput) String() string {
 14539  	return awsutil.Prettify(s)
 14540  }
 14541  
 14542  // GoString returns the string representation.
 14543  //
 14544  // API parameter values that are decorated as "sensitive" in the API will not
 14545  // be included in the string output. The member name will be present, but the
 14546  // value will be replaced with "sensitive".
 14547  func (s DescribeSnapshotsOutput) GoString() string {
 14548  	return s.String()
 14549  }
 14550  
 14551  // SetMarker sets the Marker field's value.
 14552  func (s *DescribeSnapshotsOutput) SetMarker(v string) *DescribeSnapshotsOutput {
 14553  	s.Marker = &v
 14554  	return s
 14555  }
 14556  
 14557  // SetSnapshots sets the Snapshots field's value.
 14558  func (s *DescribeSnapshotsOutput) SetSnapshots(v []*Snapshot) *DescribeSnapshotsOutput {
 14559  	s.Snapshots = v
 14560  	return s
 14561  }
 14562  
 14563  type DescribeUpdateActionsInput struct {
 14564  	_ struct{} `type:"structure"`
 14565  
 14566  	// The cache cluster IDs
 14567  	CacheClusterIds []*string `type:"list"`
 14568  
 14569  	// The Elasticache engine to which the update applies. Either Redis or Memcached
 14570  	Engine *string `type:"string"`
 14571  
 14572  	// An optional marker returned from a prior request. Use this marker for pagination
 14573  	// of results from this operation. If this parameter is specified, the response
 14574  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 14575  	Marker *string `type:"string"`
 14576  
 14577  	// The maximum number of records to include in the response
 14578  	MaxRecords *int64 `type:"integer"`
 14579  
 14580  	// The replication group IDs
 14581  	ReplicationGroupIds []*string `type:"list"`
 14582  
 14583  	// The unique ID of the service update
 14584  	ServiceUpdateName *string `type:"string"`
 14585  
 14586  	// The status of the service update
 14587  	ServiceUpdateStatus []*string `type:"list"`
 14588  
 14589  	// The range of time specified to search for service updates that are in available
 14590  	// status
 14591  	ServiceUpdateTimeRange *TimeRangeFilter `type:"structure"`
 14592  
 14593  	// Dictates whether to include node level update status in the response
 14594  	ShowNodeLevelUpdateStatus *bool `type:"boolean"`
 14595  
 14596  	// The status of the update action.
 14597  	UpdateActionStatus []*string `type:"list"`
 14598  }
 14599  
 14600  // String returns the string representation.
 14601  //
 14602  // API parameter values that are decorated as "sensitive" in the API will not
 14603  // be included in the string output. The member name will be present, but the
 14604  // value will be replaced with "sensitive".
 14605  func (s DescribeUpdateActionsInput) String() string {
 14606  	return awsutil.Prettify(s)
 14607  }
 14608  
 14609  // GoString returns the string representation.
 14610  //
 14611  // API parameter values that are decorated as "sensitive" in the API will not
 14612  // be included in the string output. The member name will be present, but the
 14613  // value will be replaced with "sensitive".
 14614  func (s DescribeUpdateActionsInput) GoString() string {
 14615  	return s.String()
 14616  }
 14617  
 14618  // SetCacheClusterIds sets the CacheClusterIds field's value.
 14619  func (s *DescribeUpdateActionsInput) SetCacheClusterIds(v []*string) *DescribeUpdateActionsInput {
 14620  	s.CacheClusterIds = v
 14621  	return s
 14622  }
 14623  
 14624  // SetEngine sets the Engine field's value.
 14625  func (s *DescribeUpdateActionsInput) SetEngine(v string) *DescribeUpdateActionsInput {
 14626  	s.Engine = &v
 14627  	return s
 14628  }
 14629  
 14630  // SetMarker sets the Marker field's value.
 14631  func (s *DescribeUpdateActionsInput) SetMarker(v string) *DescribeUpdateActionsInput {
 14632  	s.Marker = &v
 14633  	return s
 14634  }
 14635  
 14636  // SetMaxRecords sets the MaxRecords field's value.
 14637  func (s *DescribeUpdateActionsInput) SetMaxRecords(v int64) *DescribeUpdateActionsInput {
 14638  	s.MaxRecords = &v
 14639  	return s
 14640  }
 14641  
 14642  // SetReplicationGroupIds sets the ReplicationGroupIds field's value.
 14643  func (s *DescribeUpdateActionsInput) SetReplicationGroupIds(v []*string) *DescribeUpdateActionsInput {
 14644  	s.ReplicationGroupIds = v
 14645  	return s
 14646  }
 14647  
 14648  // SetServiceUpdateName sets the ServiceUpdateName field's value.
 14649  func (s *DescribeUpdateActionsInput) SetServiceUpdateName(v string) *DescribeUpdateActionsInput {
 14650  	s.ServiceUpdateName = &v
 14651  	return s
 14652  }
 14653  
 14654  // SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
 14655  func (s *DescribeUpdateActionsInput) SetServiceUpdateStatus(v []*string) *DescribeUpdateActionsInput {
 14656  	s.ServiceUpdateStatus = v
 14657  	return s
 14658  }
 14659  
 14660  // SetServiceUpdateTimeRange sets the ServiceUpdateTimeRange field's value.
 14661  func (s *DescribeUpdateActionsInput) SetServiceUpdateTimeRange(v *TimeRangeFilter) *DescribeUpdateActionsInput {
 14662  	s.ServiceUpdateTimeRange = v
 14663  	return s
 14664  }
 14665  
 14666  // SetShowNodeLevelUpdateStatus sets the ShowNodeLevelUpdateStatus field's value.
 14667  func (s *DescribeUpdateActionsInput) SetShowNodeLevelUpdateStatus(v bool) *DescribeUpdateActionsInput {
 14668  	s.ShowNodeLevelUpdateStatus = &v
 14669  	return s
 14670  }
 14671  
 14672  // SetUpdateActionStatus sets the UpdateActionStatus field's value.
 14673  func (s *DescribeUpdateActionsInput) SetUpdateActionStatus(v []*string) *DescribeUpdateActionsInput {
 14674  	s.UpdateActionStatus = v
 14675  	return s
 14676  }
 14677  
 14678  type DescribeUpdateActionsOutput struct {
 14679  	_ struct{} `type:"structure"`
 14680  
 14681  	// An optional marker returned from a prior request. Use this marker for pagination
 14682  	// of results from this operation. If this parameter is specified, the response
 14683  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 14684  	Marker *string `type:"string"`
 14685  
 14686  	// Returns a list of update actions
 14687  	UpdateActions []*UpdateAction `locationNameList:"UpdateAction" type:"list"`
 14688  }
 14689  
 14690  // String returns the string representation.
 14691  //
 14692  // API parameter values that are decorated as "sensitive" in the API will not
 14693  // be included in the string output. The member name will be present, but the
 14694  // value will be replaced with "sensitive".
 14695  func (s DescribeUpdateActionsOutput) String() string {
 14696  	return awsutil.Prettify(s)
 14697  }
 14698  
 14699  // GoString returns the string representation.
 14700  //
 14701  // API parameter values that are decorated as "sensitive" in the API will not
 14702  // be included in the string output. The member name will be present, but the
 14703  // value will be replaced with "sensitive".
 14704  func (s DescribeUpdateActionsOutput) GoString() string {
 14705  	return s.String()
 14706  }
 14707  
 14708  // SetMarker sets the Marker field's value.
 14709  func (s *DescribeUpdateActionsOutput) SetMarker(v string) *DescribeUpdateActionsOutput {
 14710  	s.Marker = &v
 14711  	return s
 14712  }
 14713  
 14714  // SetUpdateActions sets the UpdateActions field's value.
 14715  func (s *DescribeUpdateActionsOutput) SetUpdateActions(v []*UpdateAction) *DescribeUpdateActionsOutput {
 14716  	s.UpdateActions = v
 14717  	return s
 14718  }
 14719  
 14720  type DescribeUserGroupsInput struct {
 14721  	_ struct{} `type:"structure"`
 14722  
 14723  	// An optional marker returned from a prior request. Use this marker for pagination
 14724  	// of results from this operation. If this parameter is specified, the response
 14725  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 14726  	// >
 14727  	Marker *string `type:"string"`
 14728  
 14729  	// The maximum number of records to include in the response. If more records
 14730  	// exist than the specified MaxRecords value, a marker is included in the response
 14731  	// so that the remaining results can be retrieved.
 14732  	MaxRecords *int64 `type:"integer"`
 14733  
 14734  	// The ID of the user group.
 14735  	UserGroupId *string `type:"string"`
 14736  }
 14737  
 14738  // String returns the string representation.
 14739  //
 14740  // API parameter values that are decorated as "sensitive" in the API will not
 14741  // be included in the string output. The member name will be present, but the
 14742  // value will be replaced with "sensitive".
 14743  func (s DescribeUserGroupsInput) String() string {
 14744  	return awsutil.Prettify(s)
 14745  }
 14746  
 14747  // GoString returns the string representation.
 14748  //
 14749  // API parameter values that are decorated as "sensitive" in the API will not
 14750  // be included in the string output. The member name will be present, but the
 14751  // value will be replaced with "sensitive".
 14752  func (s DescribeUserGroupsInput) GoString() string {
 14753  	return s.String()
 14754  }
 14755  
 14756  // SetMarker sets the Marker field's value.
 14757  func (s *DescribeUserGroupsInput) SetMarker(v string) *DescribeUserGroupsInput {
 14758  	s.Marker = &v
 14759  	return s
 14760  }
 14761  
 14762  // SetMaxRecords sets the MaxRecords field's value.
 14763  func (s *DescribeUserGroupsInput) SetMaxRecords(v int64) *DescribeUserGroupsInput {
 14764  	s.MaxRecords = &v
 14765  	return s
 14766  }
 14767  
 14768  // SetUserGroupId sets the UserGroupId field's value.
 14769  func (s *DescribeUserGroupsInput) SetUserGroupId(v string) *DescribeUserGroupsInput {
 14770  	s.UserGroupId = &v
 14771  	return s
 14772  }
 14773  
 14774  type DescribeUserGroupsOutput struct {
 14775  	_ struct{} `type:"structure"`
 14776  
 14777  	// An optional marker returned from a prior request. Use this marker for pagination
 14778  	// of results from this operation. If this parameter is specified, the response
 14779  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 14780  	// >
 14781  	Marker *string `type:"string"`
 14782  
 14783  	// Returns a list of user groups.
 14784  	UserGroups []*UserGroup `type:"list"`
 14785  }
 14786  
 14787  // String returns the string representation.
 14788  //
 14789  // API parameter values that are decorated as "sensitive" in the API will not
 14790  // be included in the string output. The member name will be present, but the
 14791  // value will be replaced with "sensitive".
 14792  func (s DescribeUserGroupsOutput) String() string {
 14793  	return awsutil.Prettify(s)
 14794  }
 14795  
 14796  // GoString returns the string representation.
 14797  //
 14798  // API parameter values that are decorated as "sensitive" in the API will not
 14799  // be included in the string output. The member name will be present, but the
 14800  // value will be replaced with "sensitive".
 14801  func (s DescribeUserGroupsOutput) GoString() string {
 14802  	return s.String()
 14803  }
 14804  
 14805  // SetMarker sets the Marker field's value.
 14806  func (s *DescribeUserGroupsOutput) SetMarker(v string) *DescribeUserGroupsOutput {
 14807  	s.Marker = &v
 14808  	return s
 14809  }
 14810  
 14811  // SetUserGroups sets the UserGroups field's value.
 14812  func (s *DescribeUserGroupsOutput) SetUserGroups(v []*UserGroup) *DescribeUserGroupsOutput {
 14813  	s.UserGroups = v
 14814  	return s
 14815  }
 14816  
 14817  type DescribeUsersInput struct {
 14818  	_ struct{} `type:"structure"`
 14819  
 14820  	// The Redis engine.
 14821  	Engine *string `type:"string"`
 14822  
 14823  	// Filter to determine the list of User IDs to return.
 14824  	Filters []*Filter `type:"list"`
 14825  
 14826  	// An optional marker returned from a prior request. Use this marker for pagination
 14827  	// of results from this operation. If this parameter is specified, the response
 14828  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 14829  	// >
 14830  	Marker *string `type:"string"`
 14831  
 14832  	// The maximum number of records to include in the response. If more records
 14833  	// exist than the specified MaxRecords value, a marker is included in the response
 14834  	// so that the remaining results can be retrieved.
 14835  	MaxRecords *int64 `type:"integer"`
 14836  
 14837  	// The ID of the user.
 14838  	UserId *string `min:"1" type:"string"`
 14839  }
 14840  
 14841  // String returns the string representation.
 14842  //
 14843  // API parameter values that are decorated as "sensitive" in the API will not
 14844  // be included in the string output. The member name will be present, but the
 14845  // value will be replaced with "sensitive".
 14846  func (s DescribeUsersInput) String() string {
 14847  	return awsutil.Prettify(s)
 14848  }
 14849  
 14850  // GoString returns the string representation.
 14851  //
 14852  // API parameter values that are decorated as "sensitive" in the API will not
 14853  // be included in the string output. The member name will be present, but the
 14854  // value will be replaced with "sensitive".
 14855  func (s DescribeUsersInput) GoString() string {
 14856  	return s.String()
 14857  }
 14858  
 14859  // Validate inspects the fields of the type to determine if they are valid.
 14860  func (s *DescribeUsersInput) Validate() error {
 14861  	invalidParams := request.ErrInvalidParams{Context: "DescribeUsersInput"}
 14862  	if s.UserId != nil && len(*s.UserId) < 1 {
 14863  		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
 14864  	}
 14865  	if s.Filters != nil {
 14866  		for i, v := range s.Filters {
 14867  			if v == nil {
 14868  				continue
 14869  			}
 14870  			if err := v.Validate(); err != nil {
 14871  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
 14872  			}
 14873  		}
 14874  	}
 14875  
 14876  	if invalidParams.Len() > 0 {
 14877  		return invalidParams
 14878  	}
 14879  	return nil
 14880  }
 14881  
 14882  // SetEngine sets the Engine field's value.
 14883  func (s *DescribeUsersInput) SetEngine(v string) *DescribeUsersInput {
 14884  	s.Engine = &v
 14885  	return s
 14886  }
 14887  
 14888  // SetFilters sets the Filters field's value.
 14889  func (s *DescribeUsersInput) SetFilters(v []*Filter) *DescribeUsersInput {
 14890  	s.Filters = v
 14891  	return s
 14892  }
 14893  
 14894  // SetMarker sets the Marker field's value.
 14895  func (s *DescribeUsersInput) SetMarker(v string) *DescribeUsersInput {
 14896  	s.Marker = &v
 14897  	return s
 14898  }
 14899  
 14900  // SetMaxRecords sets the MaxRecords field's value.
 14901  func (s *DescribeUsersInput) SetMaxRecords(v int64) *DescribeUsersInput {
 14902  	s.MaxRecords = &v
 14903  	return s
 14904  }
 14905  
 14906  // SetUserId sets the UserId field's value.
 14907  func (s *DescribeUsersInput) SetUserId(v string) *DescribeUsersInput {
 14908  	s.UserId = &v
 14909  	return s
 14910  }
 14911  
 14912  type DescribeUsersOutput struct {
 14913  	_ struct{} `type:"structure"`
 14914  
 14915  	// An optional marker returned from a prior request. Use this marker for pagination
 14916  	// of results from this operation. If this parameter is specified, the response
 14917  	// includes only records beyond the marker, up to the value specified by MaxRecords.
 14918  	// >
 14919  	Marker *string `type:"string"`
 14920  
 14921  	// A list of users.
 14922  	Users []*User `type:"list"`
 14923  }
 14924  
 14925  // String returns the string representation.
 14926  //
 14927  // API parameter values that are decorated as "sensitive" in the API will not
 14928  // be included in the string output. The member name will be present, but the
 14929  // value will be replaced with "sensitive".
 14930  func (s DescribeUsersOutput) String() string {
 14931  	return awsutil.Prettify(s)
 14932  }
 14933  
 14934  // GoString returns the string representation.
 14935  //
 14936  // API parameter values that are decorated as "sensitive" in the API will not
 14937  // be included in the string output. The member name will be present, but the
 14938  // value will be replaced with "sensitive".
 14939  func (s DescribeUsersOutput) GoString() string {
 14940  	return s.String()
 14941  }
 14942  
 14943  // SetMarker sets the Marker field's value.
 14944  func (s *DescribeUsersOutput) SetMarker(v string) *DescribeUsersOutput {
 14945  	s.Marker = &v
 14946  	return s
 14947  }
 14948  
 14949  // SetUsers sets the Users field's value.
 14950  func (s *DescribeUsersOutput) SetUsers(v []*User) *DescribeUsersOutput {
 14951  	s.Users = v
 14952  	return s
 14953  }
 14954  
 14955  // Configuration details of either a CloudWatch Logs destination or Kinesis
 14956  // Data Firehose destination.
 14957  type DestinationDetails struct {
 14958  	_ struct{} `type:"structure"`
 14959  
 14960  	// The configuration details of the CloudWatch Logs destination.
 14961  	CloudWatchLogsDetails *CloudWatchLogsDestinationDetails `type:"structure"`
 14962  
 14963  	// The configuration details of the Kinesis Data Firehose destination.
 14964  	KinesisFirehoseDetails *KinesisFirehoseDestinationDetails `type:"structure"`
 14965  }
 14966  
 14967  // String returns the string representation.
 14968  //
 14969  // API parameter values that are decorated as "sensitive" in the API will not
 14970  // be included in the string output. The member name will be present, but the
 14971  // value will be replaced with "sensitive".
 14972  func (s DestinationDetails) String() string {
 14973  	return awsutil.Prettify(s)
 14974  }
 14975  
 14976  // GoString returns the string representation.
 14977  //
 14978  // API parameter values that are decorated as "sensitive" in the API will not
 14979  // be included in the string output. The member name will be present, but the
 14980  // value will be replaced with "sensitive".
 14981  func (s DestinationDetails) GoString() string {
 14982  	return s.String()
 14983  }
 14984  
 14985  // SetCloudWatchLogsDetails sets the CloudWatchLogsDetails field's value.
 14986  func (s *DestinationDetails) SetCloudWatchLogsDetails(v *CloudWatchLogsDestinationDetails) *DestinationDetails {
 14987  	s.CloudWatchLogsDetails = v
 14988  	return s
 14989  }
 14990  
 14991  // SetKinesisFirehoseDetails sets the KinesisFirehoseDetails field's value.
 14992  func (s *DestinationDetails) SetKinesisFirehoseDetails(v *KinesisFirehoseDestinationDetails) *DestinationDetails {
 14993  	s.KinesisFirehoseDetails = v
 14994  	return s
 14995  }
 14996  
 14997  type DisassociateGlobalReplicationGroupInput struct {
 14998  	_ struct{} `type:"structure"`
 14999  
 15000  	// The name of the Global datastore
 15001  	//
 15002  	// GlobalReplicationGroupId is a required field
 15003  	GlobalReplicationGroupId *string `type:"string" required:"true"`
 15004  
 15005  	// The name of the secondary cluster you wish to remove from the Global datastore
 15006  	//
 15007  	// ReplicationGroupId is a required field
 15008  	ReplicationGroupId *string `type:"string" required:"true"`
 15009  
 15010  	// The Amazon region of secondary cluster you wish to remove from the Global
 15011  	// datastore
 15012  	//
 15013  	// ReplicationGroupRegion is a required field
 15014  	ReplicationGroupRegion *string `type:"string" required:"true"`
 15015  }
 15016  
 15017  // String returns the string representation.
 15018  //
 15019  // API parameter values that are decorated as "sensitive" in the API will not
 15020  // be included in the string output. The member name will be present, but the
 15021  // value will be replaced with "sensitive".
 15022  func (s DisassociateGlobalReplicationGroupInput) String() string {
 15023  	return awsutil.Prettify(s)
 15024  }
 15025  
 15026  // GoString returns the string representation.
 15027  //
 15028  // API parameter values that are decorated as "sensitive" in the API will not
 15029  // be included in the string output. The member name will be present, but the
 15030  // value will be replaced with "sensitive".
 15031  func (s DisassociateGlobalReplicationGroupInput) GoString() string {
 15032  	return s.String()
 15033  }
 15034  
 15035  // Validate inspects the fields of the type to determine if they are valid.
 15036  func (s *DisassociateGlobalReplicationGroupInput) Validate() error {
 15037  	invalidParams := request.ErrInvalidParams{Context: "DisassociateGlobalReplicationGroupInput"}
 15038  	if s.GlobalReplicationGroupId == nil {
 15039  		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
 15040  	}
 15041  	if s.ReplicationGroupId == nil {
 15042  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
 15043  	}
 15044  	if s.ReplicationGroupRegion == nil {
 15045  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupRegion"))
 15046  	}
 15047  
 15048  	if invalidParams.Len() > 0 {
 15049  		return invalidParams
 15050  	}
 15051  	return nil
 15052  }
 15053  
 15054  // SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
 15055  func (s *DisassociateGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *DisassociateGlobalReplicationGroupInput {
 15056  	s.GlobalReplicationGroupId = &v
 15057  	return s
 15058  }
 15059  
 15060  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 15061  func (s *DisassociateGlobalReplicationGroupInput) SetReplicationGroupId(v string) *DisassociateGlobalReplicationGroupInput {
 15062  	s.ReplicationGroupId = &v
 15063  	return s
 15064  }
 15065  
 15066  // SetReplicationGroupRegion sets the ReplicationGroupRegion field's value.
 15067  func (s *DisassociateGlobalReplicationGroupInput) SetReplicationGroupRegion(v string) *DisassociateGlobalReplicationGroupInput {
 15068  	s.ReplicationGroupRegion = &v
 15069  	return s
 15070  }
 15071  
 15072  type DisassociateGlobalReplicationGroupOutput struct {
 15073  	_ struct{} `type:"structure"`
 15074  
 15075  	// Consists of a primary cluster that accepts writes and an associated secondary
 15076  	// cluster that resides in a different Amazon region. The secondary cluster
 15077  	// accepts only reads. The primary cluster automatically replicates updates
 15078  	// to the secondary cluster.
 15079  	//
 15080  	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
 15081  	//    datastore, which is what you use to associate a secondary cluster.
 15082  	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
 15083  }
 15084  
 15085  // String returns the string representation.
 15086  //
 15087  // API parameter values that are decorated as "sensitive" in the API will not
 15088  // be included in the string output. The member name will be present, but the
 15089  // value will be replaced with "sensitive".
 15090  func (s DisassociateGlobalReplicationGroupOutput) String() string {
 15091  	return awsutil.Prettify(s)
 15092  }
 15093  
 15094  // GoString returns the string representation.
 15095  //
 15096  // API parameter values that are decorated as "sensitive" in the API will not
 15097  // be included in the string output. The member name will be present, but the
 15098  // value will be replaced with "sensitive".
 15099  func (s DisassociateGlobalReplicationGroupOutput) GoString() string {
 15100  	return s.String()
 15101  }
 15102  
 15103  // SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
 15104  func (s *DisassociateGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *DisassociateGlobalReplicationGroupOutput {
 15105  	s.GlobalReplicationGroup = v
 15106  	return s
 15107  }
 15108  
 15109  // Provides ownership and status information for an Amazon EC2 security group.
 15110  type EC2SecurityGroup struct {
 15111  	_ struct{} `type:"structure"`
 15112  
 15113  	// The name of the Amazon EC2 security group.
 15114  	EC2SecurityGroupName *string `type:"string"`
 15115  
 15116  	// The Amazon account ID of the Amazon EC2 security group owner.
 15117  	EC2SecurityGroupOwnerId *string `type:"string"`
 15118  
 15119  	// The status of the Amazon EC2 security group.
 15120  	Status *string `type:"string"`
 15121  }
 15122  
 15123  // String returns the string representation.
 15124  //
 15125  // API parameter values that are decorated as "sensitive" in the API will not
 15126  // be included in the string output. The member name will be present, but the
 15127  // value will be replaced with "sensitive".
 15128  func (s EC2SecurityGroup) String() string {
 15129  	return awsutil.Prettify(s)
 15130  }
 15131  
 15132  // GoString returns the string representation.
 15133  //
 15134  // API parameter values that are decorated as "sensitive" in the API will not
 15135  // be included in the string output. The member name will be present, but the
 15136  // value will be replaced with "sensitive".
 15137  func (s EC2SecurityGroup) GoString() string {
 15138  	return s.String()
 15139  }
 15140  
 15141  // SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
 15142  func (s *EC2SecurityGroup) SetEC2SecurityGroupName(v string) *EC2SecurityGroup {
 15143  	s.EC2SecurityGroupName = &v
 15144  	return s
 15145  }
 15146  
 15147  // SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
 15148  func (s *EC2SecurityGroup) SetEC2SecurityGroupOwnerId(v string) *EC2SecurityGroup {
 15149  	s.EC2SecurityGroupOwnerId = &v
 15150  	return s
 15151  }
 15152  
 15153  // SetStatus sets the Status field's value.
 15154  func (s *EC2SecurityGroup) SetStatus(v string) *EC2SecurityGroup {
 15155  	s.Status = &v
 15156  	return s
 15157  }
 15158  
 15159  // Represents the information required for client programs to connect to a cache
 15160  // node.
 15161  type Endpoint struct {
 15162  	_ struct{} `type:"structure"`
 15163  
 15164  	// The DNS hostname of the cache node.
 15165  	Address *string `type:"string"`
 15166  
 15167  	// The port number that the cache engine is listening on.
 15168  	Port *int64 `type:"integer"`
 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 Endpoint) 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 Endpoint) GoString() string {
 15186  	return s.String()
 15187  }
 15188  
 15189  // SetAddress sets the Address field's value.
 15190  func (s *Endpoint) SetAddress(v string) *Endpoint {
 15191  	s.Address = &v
 15192  	return s
 15193  }
 15194  
 15195  // SetPort sets the Port field's value.
 15196  func (s *Endpoint) SetPort(v int64) *Endpoint {
 15197  	s.Port = &v
 15198  	return s
 15199  }
 15200  
 15201  // Represents the output of a DescribeEngineDefaultParameters operation.
 15202  type EngineDefaults struct {
 15203  	_ struct{} `type:"structure"`
 15204  
 15205  	// A list of parameters specific to a particular cache node type. Each element
 15206  	// in the list contains detailed information about one parameter.
 15207  	CacheNodeTypeSpecificParameters []*CacheNodeTypeSpecificParameter `locationNameList:"CacheNodeTypeSpecificParameter" type:"list"`
 15208  
 15209  	// Specifies the name of the cache parameter group family to which the engine
 15210  	// default parameters apply.
 15211  	//
 15212  	// Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 |
 15213  	// redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |
 15214  	CacheParameterGroupFamily *string `type:"string"`
 15215  
 15216  	// Provides an identifier to allow retrieval of paginated results.
 15217  	Marker *string `type:"string"`
 15218  
 15219  	// Contains a list of engine default parameters.
 15220  	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`
 15221  }
 15222  
 15223  // String returns the string representation.
 15224  //
 15225  // API parameter values that are decorated as "sensitive" in the API will not
 15226  // be included in the string output. The member name will be present, but the
 15227  // value will be replaced with "sensitive".
 15228  func (s EngineDefaults) String() string {
 15229  	return awsutil.Prettify(s)
 15230  }
 15231  
 15232  // GoString returns the string representation.
 15233  //
 15234  // API parameter values that are decorated as "sensitive" in the API will not
 15235  // be included in the string output. The member name will be present, but the
 15236  // value will be replaced with "sensitive".
 15237  func (s EngineDefaults) GoString() string {
 15238  	return s.String()
 15239  }
 15240  
 15241  // SetCacheNodeTypeSpecificParameters sets the CacheNodeTypeSpecificParameters field's value.
 15242  func (s *EngineDefaults) SetCacheNodeTypeSpecificParameters(v []*CacheNodeTypeSpecificParameter) *EngineDefaults {
 15243  	s.CacheNodeTypeSpecificParameters = v
 15244  	return s
 15245  }
 15246  
 15247  // SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
 15248  func (s *EngineDefaults) SetCacheParameterGroupFamily(v string) *EngineDefaults {
 15249  	s.CacheParameterGroupFamily = &v
 15250  	return s
 15251  }
 15252  
 15253  // SetMarker sets the Marker field's value.
 15254  func (s *EngineDefaults) SetMarker(v string) *EngineDefaults {
 15255  	s.Marker = &v
 15256  	return s
 15257  }
 15258  
 15259  // SetParameters sets the Parameters field's value.
 15260  func (s *EngineDefaults) SetParameters(v []*Parameter) *EngineDefaults {
 15261  	s.Parameters = v
 15262  	return s
 15263  }
 15264  
 15265  // Represents a single occurrence of something interesting within the system.
 15266  // Some examples of events are creating a cluster, adding or removing a cache
 15267  // node, or rebooting a node.
 15268  type Event struct {
 15269  	_ struct{} `type:"structure"`
 15270  
 15271  	// The date and time when the event occurred.
 15272  	Date *time.Time `type:"timestamp"`
 15273  
 15274  	// The text of the event.
 15275  	Message *string `type:"string"`
 15276  
 15277  	// The identifier for the source of the event. For example, if the event occurred
 15278  	// at the cluster level, the identifier would be the name of the cluster.
 15279  	SourceIdentifier *string `type:"string"`
 15280  
 15281  	// Specifies the origin of this event - a cluster, a parameter group, a security
 15282  	// group, etc.
 15283  	SourceType *string `type:"string" enum:"SourceType"`
 15284  }
 15285  
 15286  // String 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 Event) String() string {
 15292  	return awsutil.Prettify(s)
 15293  }
 15294  
 15295  // GoString returns the string representation.
 15296  //
 15297  // API parameter values that are decorated as "sensitive" in the API will not
 15298  // be included in the string output. The member name will be present, but the
 15299  // value will be replaced with "sensitive".
 15300  func (s Event) GoString() string {
 15301  	return s.String()
 15302  }
 15303  
 15304  // SetDate sets the Date field's value.
 15305  func (s *Event) SetDate(v time.Time) *Event {
 15306  	s.Date = &v
 15307  	return s
 15308  }
 15309  
 15310  // SetMessage sets the Message field's value.
 15311  func (s *Event) SetMessage(v string) *Event {
 15312  	s.Message = &v
 15313  	return s
 15314  }
 15315  
 15316  // SetSourceIdentifier sets the SourceIdentifier field's value.
 15317  func (s *Event) SetSourceIdentifier(v string) *Event {
 15318  	s.SourceIdentifier = &v
 15319  	return s
 15320  }
 15321  
 15322  // SetSourceType sets the SourceType field's value.
 15323  func (s *Event) SetSourceType(v string) *Event {
 15324  	s.SourceType = &v
 15325  	return s
 15326  }
 15327  
 15328  type FailoverGlobalReplicationGroupInput struct {
 15329  	_ struct{} `type:"structure"`
 15330  
 15331  	// The name of the Global datastore
 15332  	//
 15333  	// GlobalReplicationGroupId is a required field
 15334  	GlobalReplicationGroupId *string `type:"string" required:"true"`
 15335  
 15336  	// The Amazon region of the primary cluster of the Global datastore
 15337  	//
 15338  	// PrimaryRegion is a required field
 15339  	PrimaryRegion *string `type:"string" required:"true"`
 15340  
 15341  	// The name of the primary replication group
 15342  	//
 15343  	// PrimaryReplicationGroupId is a required field
 15344  	PrimaryReplicationGroupId *string `type:"string" required:"true"`
 15345  }
 15346  
 15347  // String returns the string representation.
 15348  //
 15349  // API parameter values that are decorated as "sensitive" in the API will not
 15350  // be included in the string output. The member name will be present, but the
 15351  // value will be replaced with "sensitive".
 15352  func (s FailoverGlobalReplicationGroupInput) String() string {
 15353  	return awsutil.Prettify(s)
 15354  }
 15355  
 15356  // GoString returns the string representation.
 15357  //
 15358  // API parameter values that are decorated as "sensitive" in the API will not
 15359  // be included in the string output. The member name will be present, but the
 15360  // value will be replaced with "sensitive".
 15361  func (s FailoverGlobalReplicationGroupInput) GoString() string {
 15362  	return s.String()
 15363  }
 15364  
 15365  // Validate inspects the fields of the type to determine if they are valid.
 15366  func (s *FailoverGlobalReplicationGroupInput) Validate() error {
 15367  	invalidParams := request.ErrInvalidParams{Context: "FailoverGlobalReplicationGroupInput"}
 15368  	if s.GlobalReplicationGroupId == nil {
 15369  		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
 15370  	}
 15371  	if s.PrimaryRegion == nil {
 15372  		invalidParams.Add(request.NewErrParamRequired("PrimaryRegion"))
 15373  	}
 15374  	if s.PrimaryReplicationGroupId == nil {
 15375  		invalidParams.Add(request.NewErrParamRequired("PrimaryReplicationGroupId"))
 15376  	}
 15377  
 15378  	if invalidParams.Len() > 0 {
 15379  		return invalidParams
 15380  	}
 15381  	return nil
 15382  }
 15383  
 15384  // SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
 15385  func (s *FailoverGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *FailoverGlobalReplicationGroupInput {
 15386  	s.GlobalReplicationGroupId = &v
 15387  	return s
 15388  }
 15389  
 15390  // SetPrimaryRegion sets the PrimaryRegion field's value.
 15391  func (s *FailoverGlobalReplicationGroupInput) SetPrimaryRegion(v string) *FailoverGlobalReplicationGroupInput {
 15392  	s.PrimaryRegion = &v
 15393  	return s
 15394  }
 15395  
 15396  // SetPrimaryReplicationGroupId sets the PrimaryReplicationGroupId field's value.
 15397  func (s *FailoverGlobalReplicationGroupInput) SetPrimaryReplicationGroupId(v string) *FailoverGlobalReplicationGroupInput {
 15398  	s.PrimaryReplicationGroupId = &v
 15399  	return s
 15400  }
 15401  
 15402  type FailoverGlobalReplicationGroupOutput struct {
 15403  	_ struct{} `type:"structure"`
 15404  
 15405  	// Consists of a primary cluster that accepts writes and an associated secondary
 15406  	// cluster that resides in a different Amazon region. The secondary cluster
 15407  	// accepts only reads. The primary cluster automatically replicates updates
 15408  	// to the secondary cluster.
 15409  	//
 15410  	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
 15411  	//    datastore, which is what you use to associate a secondary cluster.
 15412  	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
 15413  }
 15414  
 15415  // String returns the string representation.
 15416  //
 15417  // API parameter values that are decorated as "sensitive" in the API will not
 15418  // be included in the string output. The member name will be present, but the
 15419  // value will be replaced with "sensitive".
 15420  func (s FailoverGlobalReplicationGroupOutput) String() string {
 15421  	return awsutil.Prettify(s)
 15422  }
 15423  
 15424  // GoString returns the string representation.
 15425  //
 15426  // API parameter values that are decorated as "sensitive" in the API will not
 15427  // be included in the string output. The member name will be present, but the
 15428  // value will be replaced with "sensitive".
 15429  func (s FailoverGlobalReplicationGroupOutput) GoString() string {
 15430  	return s.String()
 15431  }
 15432  
 15433  // SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
 15434  func (s *FailoverGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *FailoverGlobalReplicationGroupOutput {
 15435  	s.GlobalReplicationGroup = v
 15436  	return s
 15437  }
 15438  
 15439  // Used to streamline results of a search based on the property being filtered.
 15440  type Filter struct {
 15441  	_ struct{} `type:"structure"`
 15442  
 15443  	// The property being filtered. For example, UserId.
 15444  	//
 15445  	// Name is a required field
 15446  	Name *string `type:"string" required:"true"`
 15447  
 15448  	// The property values to filter on. For example, "user-123".
 15449  	//
 15450  	// Values is a required field
 15451  	Values []*string `min:"1" type:"list" required:"true"`
 15452  }
 15453  
 15454  // String returns the string representation.
 15455  //
 15456  // API parameter values that are decorated as "sensitive" in the API will not
 15457  // be included in the string output. The member name will be present, but the
 15458  // value will be replaced with "sensitive".
 15459  func (s Filter) String() string {
 15460  	return awsutil.Prettify(s)
 15461  }
 15462  
 15463  // GoString returns the string representation.
 15464  //
 15465  // API parameter values that are decorated as "sensitive" in the API will not
 15466  // be included in the string output. The member name will be present, but the
 15467  // value will be replaced with "sensitive".
 15468  func (s Filter) GoString() string {
 15469  	return s.String()
 15470  }
 15471  
 15472  // Validate inspects the fields of the type to determine if they are valid.
 15473  func (s *Filter) Validate() error {
 15474  	invalidParams := request.ErrInvalidParams{Context: "Filter"}
 15475  	if s.Name == nil {
 15476  		invalidParams.Add(request.NewErrParamRequired("Name"))
 15477  	}
 15478  	if s.Values == nil {
 15479  		invalidParams.Add(request.NewErrParamRequired("Values"))
 15480  	}
 15481  	if s.Values != nil && len(s.Values) < 1 {
 15482  		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
 15483  	}
 15484  
 15485  	if invalidParams.Len() > 0 {
 15486  		return invalidParams
 15487  	}
 15488  	return nil
 15489  }
 15490  
 15491  // SetName sets the Name field's value.
 15492  func (s *Filter) SetName(v string) *Filter {
 15493  	s.Name = &v
 15494  	return s
 15495  }
 15496  
 15497  // SetValues sets the Values field's value.
 15498  func (s *Filter) SetValues(v []*string) *Filter {
 15499  	s.Values = v
 15500  	return s
 15501  }
 15502  
 15503  // Indicates the slot configuration and global identifier for a slice group.
 15504  type GlobalNodeGroup struct {
 15505  	_ struct{} `type:"structure"`
 15506  
 15507  	// The name of the global node group
 15508  	GlobalNodeGroupId *string `type:"string"`
 15509  
 15510  	// The keyspace for this node group
 15511  	Slots *string `type:"string"`
 15512  }
 15513  
 15514  // String returns the string representation.
 15515  //
 15516  // API parameter values that are decorated as "sensitive" in the API will not
 15517  // be included in the string output. The member name will be present, but the
 15518  // value will be replaced with "sensitive".
 15519  func (s GlobalNodeGroup) String() string {
 15520  	return awsutil.Prettify(s)
 15521  }
 15522  
 15523  // GoString returns the string representation.
 15524  //
 15525  // API parameter values that are decorated as "sensitive" in the API will not
 15526  // be included in the string output. The member name will be present, but the
 15527  // value will be replaced with "sensitive".
 15528  func (s GlobalNodeGroup) GoString() string {
 15529  	return s.String()
 15530  }
 15531  
 15532  // SetGlobalNodeGroupId sets the GlobalNodeGroupId field's value.
 15533  func (s *GlobalNodeGroup) SetGlobalNodeGroupId(v string) *GlobalNodeGroup {
 15534  	s.GlobalNodeGroupId = &v
 15535  	return s
 15536  }
 15537  
 15538  // SetSlots sets the Slots field's value.
 15539  func (s *GlobalNodeGroup) SetSlots(v string) *GlobalNodeGroup {
 15540  	s.Slots = &v
 15541  	return s
 15542  }
 15543  
 15544  // Consists of a primary cluster that accepts writes and an associated secondary
 15545  // cluster that resides in a different Amazon region. The secondary cluster
 15546  // accepts only reads. The primary cluster automatically replicates updates
 15547  // to the secondary cluster.
 15548  //
 15549  //    * The GlobalReplicationGroupIdSuffix represents the name of the Global
 15550  //    datastore, which is what you use to associate a secondary cluster.
 15551  type GlobalReplicationGroup struct {
 15552  	_ struct{} `type:"structure"`
 15553  
 15554  	// The ARN (Amazon Resource Name) of the global replication group.
 15555  	ARN *string `type:"string"`
 15556  
 15557  	// A flag that enables encryption at rest when set to true.
 15558  	//
 15559  	// You cannot modify the value of AtRestEncryptionEnabled after the replication
 15560  	// group is created. To enable encryption at rest on a replication group you
 15561  	// must set AtRestEncryptionEnabled to true when you create the replication
 15562  	// group.
 15563  	//
 15564  	// Required: Only available when creating a replication group in an Amazon VPC
 15565  	// using redis version 3.2.6, 4.x or later.
 15566  	AtRestEncryptionEnabled *bool `type:"boolean"`
 15567  
 15568  	// A flag that enables using an AuthToken (password) when issuing Redis commands.
 15569  	//
 15570  	// Default: false
 15571  	AuthTokenEnabled *bool `type:"boolean"`
 15572  
 15573  	// The cache node type of the Global datastore
 15574  	CacheNodeType *string `type:"string"`
 15575  
 15576  	// A flag that indicates whether the Global datastore is cluster enabled.
 15577  	ClusterEnabled *bool `type:"boolean"`
 15578  
 15579  	// The Elasticache engine. For Redis only.
 15580  	Engine *string `type:"string"`
 15581  
 15582  	// The Elasticache Redis engine version.
 15583  	EngineVersion *string `type:"string"`
 15584  
 15585  	// Indicates the slot configuration and global identifier for each slice group.
 15586  	GlobalNodeGroups []*GlobalNodeGroup `locationNameList:"GlobalNodeGroup" type:"list"`
 15587  
 15588  	// The optional description of the Global datastore
 15589  	GlobalReplicationGroupDescription *string `type:"string"`
 15590  
 15591  	// The name of the Global datastore
 15592  	GlobalReplicationGroupId *string `type:"string"`
 15593  
 15594  	// The replication groups that comprise the Global datastore.
 15595  	Members []*GlobalReplicationGroupMember `locationNameList:"GlobalReplicationGroupMember" type:"list"`
 15596  
 15597  	// The status of the Global datastore
 15598  	Status *string `type:"string"`
 15599  
 15600  	// A flag that enables in-transit encryption when set to true. You cannot modify
 15601  	// the value of TransitEncryptionEnabled after the cluster is created. To enable
 15602  	// in-transit encryption on a cluster you must set TransitEncryptionEnabled
 15603  	// to true when you create a cluster.
 15604  	//
 15605  	// Required: Only available when creating a replication group in an Amazon VPC
 15606  	// using redis version 3.2.6, 4.x or later.
 15607  	TransitEncryptionEnabled *bool `type:"boolean"`
 15608  }
 15609  
 15610  // String returns the string representation.
 15611  //
 15612  // API parameter values that are decorated as "sensitive" in the API will not
 15613  // be included in the string output. The member name will be present, but the
 15614  // value will be replaced with "sensitive".
 15615  func (s GlobalReplicationGroup) String() string {
 15616  	return awsutil.Prettify(s)
 15617  }
 15618  
 15619  // GoString returns the string representation.
 15620  //
 15621  // API parameter values that are decorated as "sensitive" in the API will not
 15622  // be included in the string output. The member name will be present, but the
 15623  // value will be replaced with "sensitive".
 15624  func (s GlobalReplicationGroup) GoString() string {
 15625  	return s.String()
 15626  }
 15627  
 15628  // SetARN sets the ARN field's value.
 15629  func (s *GlobalReplicationGroup) SetARN(v string) *GlobalReplicationGroup {
 15630  	s.ARN = &v
 15631  	return s
 15632  }
 15633  
 15634  // SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
 15635  func (s *GlobalReplicationGroup) SetAtRestEncryptionEnabled(v bool) *GlobalReplicationGroup {
 15636  	s.AtRestEncryptionEnabled = &v
 15637  	return s
 15638  }
 15639  
 15640  // SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
 15641  func (s *GlobalReplicationGroup) SetAuthTokenEnabled(v bool) *GlobalReplicationGroup {
 15642  	s.AuthTokenEnabled = &v
 15643  	return s
 15644  }
 15645  
 15646  // SetCacheNodeType sets the CacheNodeType field's value.
 15647  func (s *GlobalReplicationGroup) SetCacheNodeType(v string) *GlobalReplicationGroup {
 15648  	s.CacheNodeType = &v
 15649  	return s
 15650  }
 15651  
 15652  // SetClusterEnabled sets the ClusterEnabled field's value.
 15653  func (s *GlobalReplicationGroup) SetClusterEnabled(v bool) *GlobalReplicationGroup {
 15654  	s.ClusterEnabled = &v
 15655  	return s
 15656  }
 15657  
 15658  // SetEngine sets the Engine field's value.
 15659  func (s *GlobalReplicationGroup) SetEngine(v string) *GlobalReplicationGroup {
 15660  	s.Engine = &v
 15661  	return s
 15662  }
 15663  
 15664  // SetEngineVersion sets the EngineVersion field's value.
 15665  func (s *GlobalReplicationGroup) SetEngineVersion(v string) *GlobalReplicationGroup {
 15666  	s.EngineVersion = &v
 15667  	return s
 15668  }
 15669  
 15670  // SetGlobalNodeGroups sets the GlobalNodeGroups field's value.
 15671  func (s *GlobalReplicationGroup) SetGlobalNodeGroups(v []*GlobalNodeGroup) *GlobalReplicationGroup {
 15672  	s.GlobalNodeGroups = v
 15673  	return s
 15674  }
 15675  
 15676  // SetGlobalReplicationGroupDescription sets the GlobalReplicationGroupDescription field's value.
 15677  func (s *GlobalReplicationGroup) SetGlobalReplicationGroupDescription(v string) *GlobalReplicationGroup {
 15678  	s.GlobalReplicationGroupDescription = &v
 15679  	return s
 15680  }
 15681  
 15682  // SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
 15683  func (s *GlobalReplicationGroup) SetGlobalReplicationGroupId(v string) *GlobalReplicationGroup {
 15684  	s.GlobalReplicationGroupId = &v
 15685  	return s
 15686  }
 15687  
 15688  // SetMembers sets the Members field's value.
 15689  func (s *GlobalReplicationGroup) SetMembers(v []*GlobalReplicationGroupMember) *GlobalReplicationGroup {
 15690  	s.Members = v
 15691  	return s
 15692  }
 15693  
 15694  // SetStatus sets the Status field's value.
 15695  func (s *GlobalReplicationGroup) SetStatus(v string) *GlobalReplicationGroup {
 15696  	s.Status = &v
 15697  	return s
 15698  }
 15699  
 15700  // SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
 15701  func (s *GlobalReplicationGroup) SetTransitEncryptionEnabled(v bool) *GlobalReplicationGroup {
 15702  	s.TransitEncryptionEnabled = &v
 15703  	return s
 15704  }
 15705  
 15706  // The name of the Global datastore and role of this replication group in the
 15707  // Global datastore.
 15708  type GlobalReplicationGroupInfo struct {
 15709  	_ struct{} `type:"structure"`
 15710  
 15711  	// The name of the Global datastore
 15712  	GlobalReplicationGroupId *string `type:"string"`
 15713  
 15714  	// The role of the replication group in a Global datastore. Can be primary or
 15715  	// secondary.
 15716  	GlobalReplicationGroupMemberRole *string `type:"string"`
 15717  }
 15718  
 15719  // String returns the string representation.
 15720  //
 15721  // API parameter values that are decorated as "sensitive" in the API will not
 15722  // be included in the string output. The member name will be present, but the
 15723  // value will be replaced with "sensitive".
 15724  func (s GlobalReplicationGroupInfo) String() string {
 15725  	return awsutil.Prettify(s)
 15726  }
 15727  
 15728  // GoString returns the string representation.
 15729  //
 15730  // API parameter values that are decorated as "sensitive" in the API will not
 15731  // be included in the string output. The member name will be present, but the
 15732  // value will be replaced with "sensitive".
 15733  func (s GlobalReplicationGroupInfo) GoString() string {
 15734  	return s.String()
 15735  }
 15736  
 15737  // SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
 15738  func (s *GlobalReplicationGroupInfo) SetGlobalReplicationGroupId(v string) *GlobalReplicationGroupInfo {
 15739  	s.GlobalReplicationGroupId = &v
 15740  	return s
 15741  }
 15742  
 15743  // SetGlobalReplicationGroupMemberRole sets the GlobalReplicationGroupMemberRole field's value.
 15744  func (s *GlobalReplicationGroupInfo) SetGlobalReplicationGroupMemberRole(v string) *GlobalReplicationGroupInfo {
 15745  	s.GlobalReplicationGroupMemberRole = &v
 15746  	return s
 15747  }
 15748  
 15749  // A member of a Global datastore. It contains the Replication Group Id, the
 15750  // Amazon region and the role of the replication group.
 15751  type GlobalReplicationGroupMember struct {
 15752  	_ struct{} `type:"structure"`
 15753  
 15754  	// Indicates whether automatic failover is enabled for the replication group.
 15755  	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
 15756  
 15757  	// The replication group id of the Global datastore member.
 15758  	ReplicationGroupId *string `type:"string"`
 15759  
 15760  	// The Amazon region of the Global datastore member.
 15761  	ReplicationGroupRegion *string `type:"string"`
 15762  
 15763  	// Indicates the role of the replication group, primary or secondary.
 15764  	Role *string `type:"string"`
 15765  
 15766  	// The status of the membership of the replication group.
 15767  	Status *string `type:"string"`
 15768  }
 15769  
 15770  // String returns the string representation.
 15771  //
 15772  // API parameter values that are decorated as "sensitive" in the API will not
 15773  // be included in the string output. The member name will be present, but the
 15774  // value will be replaced with "sensitive".
 15775  func (s GlobalReplicationGroupMember) String() string {
 15776  	return awsutil.Prettify(s)
 15777  }
 15778  
 15779  // GoString 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 GlobalReplicationGroupMember) GoString() string {
 15785  	return s.String()
 15786  }
 15787  
 15788  // SetAutomaticFailover sets the AutomaticFailover field's value.
 15789  func (s *GlobalReplicationGroupMember) SetAutomaticFailover(v string) *GlobalReplicationGroupMember {
 15790  	s.AutomaticFailover = &v
 15791  	return s
 15792  }
 15793  
 15794  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 15795  func (s *GlobalReplicationGroupMember) SetReplicationGroupId(v string) *GlobalReplicationGroupMember {
 15796  	s.ReplicationGroupId = &v
 15797  	return s
 15798  }
 15799  
 15800  // SetReplicationGroupRegion sets the ReplicationGroupRegion field's value.
 15801  func (s *GlobalReplicationGroupMember) SetReplicationGroupRegion(v string) *GlobalReplicationGroupMember {
 15802  	s.ReplicationGroupRegion = &v
 15803  	return s
 15804  }
 15805  
 15806  // SetRole sets the Role field's value.
 15807  func (s *GlobalReplicationGroupMember) SetRole(v string) *GlobalReplicationGroupMember {
 15808  	s.Role = &v
 15809  	return s
 15810  }
 15811  
 15812  // SetStatus sets the Status field's value.
 15813  func (s *GlobalReplicationGroupMember) SetStatus(v string) *GlobalReplicationGroupMember {
 15814  	s.Status = &v
 15815  	return s
 15816  }
 15817  
 15818  type IncreaseNodeGroupsInGlobalReplicationGroupInput struct {
 15819  	_ struct{} `type:"structure"`
 15820  
 15821  	// Indicates that the process begins immediately. At present, the only permitted
 15822  	// value for this parameter is true.
 15823  	//
 15824  	// ApplyImmediately is a required field
 15825  	ApplyImmediately *bool `type:"boolean" required:"true"`
 15826  
 15827  	// The name of the Global datastore
 15828  	//
 15829  	// GlobalReplicationGroupId is a required field
 15830  	GlobalReplicationGroupId *string `type:"string" required:"true"`
 15831  
 15832  	// The number of node groups you wish to add
 15833  	//
 15834  	// NodeGroupCount is a required field
 15835  	NodeGroupCount *int64 `type:"integer" required:"true"`
 15836  
 15837  	// Describes the replication group IDs, the Amazon regions where they are stored
 15838  	// and the shard configuration for each that comprise the Global datastore
 15839  	RegionalConfigurations []*RegionalConfiguration `locationNameList:"RegionalConfiguration" type:"list"`
 15840  }
 15841  
 15842  // String returns the string representation.
 15843  //
 15844  // API parameter values that are decorated as "sensitive" in the API will not
 15845  // be included in the string output. The member name will be present, but the
 15846  // value will be replaced with "sensitive".
 15847  func (s IncreaseNodeGroupsInGlobalReplicationGroupInput) String() string {
 15848  	return awsutil.Prettify(s)
 15849  }
 15850  
 15851  // GoString returns the string representation.
 15852  //
 15853  // API parameter values that are decorated as "sensitive" in the API will not
 15854  // be included in the string output. The member name will be present, but the
 15855  // value will be replaced with "sensitive".
 15856  func (s IncreaseNodeGroupsInGlobalReplicationGroupInput) GoString() string {
 15857  	return s.String()
 15858  }
 15859  
 15860  // Validate inspects the fields of the type to determine if they are valid.
 15861  func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) Validate() error {
 15862  	invalidParams := request.ErrInvalidParams{Context: "IncreaseNodeGroupsInGlobalReplicationGroupInput"}
 15863  	if s.ApplyImmediately == nil {
 15864  		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
 15865  	}
 15866  	if s.GlobalReplicationGroupId == nil {
 15867  		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
 15868  	}
 15869  	if s.NodeGroupCount == nil {
 15870  		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
 15871  	}
 15872  	if s.RegionalConfigurations != nil {
 15873  		for i, v := range s.RegionalConfigurations {
 15874  			if v == nil {
 15875  				continue
 15876  			}
 15877  			if err := v.Validate(); err != nil {
 15878  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RegionalConfigurations", i), err.(request.ErrInvalidParams))
 15879  			}
 15880  		}
 15881  	}
 15882  
 15883  	if invalidParams.Len() > 0 {
 15884  		return invalidParams
 15885  	}
 15886  	return nil
 15887  }
 15888  
 15889  // SetApplyImmediately sets the ApplyImmediately field's value.
 15890  func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetApplyImmediately(v bool) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
 15891  	s.ApplyImmediately = &v
 15892  	return s
 15893  }
 15894  
 15895  // SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
 15896  func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
 15897  	s.GlobalReplicationGroupId = &v
 15898  	return s
 15899  }
 15900  
 15901  // SetNodeGroupCount sets the NodeGroupCount field's value.
 15902  func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetNodeGroupCount(v int64) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
 15903  	s.NodeGroupCount = &v
 15904  	return s
 15905  }
 15906  
 15907  // SetRegionalConfigurations sets the RegionalConfigurations field's value.
 15908  func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetRegionalConfigurations(v []*RegionalConfiguration) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
 15909  	s.RegionalConfigurations = v
 15910  	return s
 15911  }
 15912  
 15913  type IncreaseNodeGroupsInGlobalReplicationGroupOutput struct {
 15914  	_ struct{} `type:"structure"`
 15915  
 15916  	// Consists of a primary cluster that accepts writes and an associated secondary
 15917  	// cluster that resides in a different Amazon region. The secondary cluster
 15918  	// accepts only reads. The primary cluster automatically replicates updates
 15919  	// to the secondary cluster.
 15920  	//
 15921  	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
 15922  	//    datastore, which is what you use to associate a secondary cluster.
 15923  	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
 15924  }
 15925  
 15926  // String returns the string representation.
 15927  //
 15928  // API parameter values that are decorated as "sensitive" in the API will not
 15929  // be included in the string output. The member name will be present, but the
 15930  // value will be replaced with "sensitive".
 15931  func (s IncreaseNodeGroupsInGlobalReplicationGroupOutput) String() string {
 15932  	return awsutil.Prettify(s)
 15933  }
 15934  
 15935  // GoString returns the string representation.
 15936  //
 15937  // API parameter values that are decorated as "sensitive" in the API will not
 15938  // be included in the string output. The member name will be present, but the
 15939  // value will be replaced with "sensitive".
 15940  func (s IncreaseNodeGroupsInGlobalReplicationGroupOutput) GoString() string {
 15941  	return s.String()
 15942  }
 15943  
 15944  // SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
 15945  func (s *IncreaseNodeGroupsInGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *IncreaseNodeGroupsInGlobalReplicationGroupOutput {
 15946  	s.GlobalReplicationGroup = v
 15947  	return s
 15948  }
 15949  
 15950  type IncreaseReplicaCountInput struct {
 15951  	_ struct{} `type:"structure"`
 15952  
 15953  	// If True, the number of replica nodes is increased immediately. ApplyImmediately=False
 15954  	// is not currently supported.
 15955  	//
 15956  	// ApplyImmediately is a required field
 15957  	ApplyImmediately *bool `type:"boolean" required:"true"`
 15958  
 15959  	// The number of read replica nodes you want at the completion of this operation.
 15960  	// For Redis (cluster mode disabled) replication groups, this is the number
 15961  	// of replica nodes in the replication group. For Redis (cluster mode enabled)
 15962  	// replication groups, this is the number of replica nodes in each of the replication
 15963  	// group's node groups.
 15964  	NewReplicaCount *int64 `type:"integer"`
 15965  
 15966  	// A list of ConfigureShard objects that can be used to configure each shard
 15967  	// in a Redis (cluster mode enabled) replication group. The ConfigureShard has
 15968  	// three members: NewReplicaCount, NodeGroupId, and PreferredAvailabilityZones.
 15969  	ReplicaConfiguration []*ConfigureShard `locationNameList:"ConfigureShard" type:"list"`
 15970  
 15971  	// The id of the replication group to which you want to add replica nodes.
 15972  	//
 15973  	// ReplicationGroupId is a required field
 15974  	ReplicationGroupId *string `type:"string" required:"true"`
 15975  }
 15976  
 15977  // String returns the string representation.
 15978  //
 15979  // API parameter values that are decorated as "sensitive" in the API will not
 15980  // be included in the string output. The member name will be present, but the
 15981  // value will be replaced with "sensitive".
 15982  func (s IncreaseReplicaCountInput) String() string {
 15983  	return awsutil.Prettify(s)
 15984  }
 15985  
 15986  // GoString returns the string representation.
 15987  //
 15988  // API parameter values that are decorated as "sensitive" in the API will not
 15989  // be included in the string output. The member name will be present, but the
 15990  // value will be replaced with "sensitive".
 15991  func (s IncreaseReplicaCountInput) GoString() string {
 15992  	return s.String()
 15993  }
 15994  
 15995  // Validate inspects the fields of the type to determine if they are valid.
 15996  func (s *IncreaseReplicaCountInput) Validate() error {
 15997  	invalidParams := request.ErrInvalidParams{Context: "IncreaseReplicaCountInput"}
 15998  	if s.ApplyImmediately == nil {
 15999  		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
 16000  	}
 16001  	if s.ReplicationGroupId == nil {
 16002  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
 16003  	}
 16004  	if s.ReplicaConfiguration != nil {
 16005  		for i, v := range s.ReplicaConfiguration {
 16006  			if v == nil {
 16007  				continue
 16008  			}
 16009  			if err := v.Validate(); err != nil {
 16010  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaConfiguration", i), err.(request.ErrInvalidParams))
 16011  			}
 16012  		}
 16013  	}
 16014  
 16015  	if invalidParams.Len() > 0 {
 16016  		return invalidParams
 16017  	}
 16018  	return nil
 16019  }
 16020  
 16021  // SetApplyImmediately sets the ApplyImmediately field's value.
 16022  func (s *IncreaseReplicaCountInput) SetApplyImmediately(v bool) *IncreaseReplicaCountInput {
 16023  	s.ApplyImmediately = &v
 16024  	return s
 16025  }
 16026  
 16027  // SetNewReplicaCount sets the NewReplicaCount field's value.
 16028  func (s *IncreaseReplicaCountInput) SetNewReplicaCount(v int64) *IncreaseReplicaCountInput {
 16029  	s.NewReplicaCount = &v
 16030  	return s
 16031  }
 16032  
 16033  // SetReplicaConfiguration sets the ReplicaConfiguration field's value.
 16034  func (s *IncreaseReplicaCountInput) SetReplicaConfiguration(v []*ConfigureShard) *IncreaseReplicaCountInput {
 16035  	s.ReplicaConfiguration = v
 16036  	return s
 16037  }
 16038  
 16039  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 16040  func (s *IncreaseReplicaCountInput) SetReplicationGroupId(v string) *IncreaseReplicaCountInput {
 16041  	s.ReplicationGroupId = &v
 16042  	return s
 16043  }
 16044  
 16045  type IncreaseReplicaCountOutput struct {
 16046  	_ struct{} `type:"structure"`
 16047  
 16048  	// Contains all of the attributes of a specific Redis replication group.
 16049  	ReplicationGroup *ReplicationGroup `type:"structure"`
 16050  }
 16051  
 16052  // String returns the string representation.
 16053  //
 16054  // API parameter values that are decorated as "sensitive" in the API will not
 16055  // be included in the string output. The member name will be present, but the
 16056  // value will be replaced with "sensitive".
 16057  func (s IncreaseReplicaCountOutput) String() string {
 16058  	return awsutil.Prettify(s)
 16059  }
 16060  
 16061  // GoString returns the string representation.
 16062  //
 16063  // API parameter values that are decorated as "sensitive" in the API will not
 16064  // be included in the string output. The member name will be present, but the
 16065  // value will be replaced with "sensitive".
 16066  func (s IncreaseReplicaCountOutput) GoString() string {
 16067  	return s.String()
 16068  }
 16069  
 16070  // SetReplicationGroup sets the ReplicationGroup field's value.
 16071  func (s *IncreaseReplicaCountOutput) SetReplicationGroup(v *ReplicationGroup) *IncreaseReplicaCountOutput {
 16072  	s.ReplicationGroup = v
 16073  	return s
 16074  }
 16075  
 16076  // The configuration details of the Kinesis Data Firehose destination.
 16077  type KinesisFirehoseDestinationDetails struct {
 16078  	_ struct{} `type:"structure"`
 16079  
 16080  	// The name of the Kinesis Data Firehose delivery stream.
 16081  	DeliveryStream *string `type:"string"`
 16082  }
 16083  
 16084  // String returns the string representation.
 16085  //
 16086  // API parameter values that are decorated as "sensitive" in the API will not
 16087  // be included in the string output. The member name will be present, but the
 16088  // value will be replaced with "sensitive".
 16089  func (s KinesisFirehoseDestinationDetails) String() string {
 16090  	return awsutil.Prettify(s)
 16091  }
 16092  
 16093  // GoString returns the string representation.
 16094  //
 16095  // API parameter values that are decorated as "sensitive" in the API will not
 16096  // be included in the string output. The member name will be present, but the
 16097  // value will be replaced with "sensitive".
 16098  func (s KinesisFirehoseDestinationDetails) GoString() string {
 16099  	return s.String()
 16100  }
 16101  
 16102  // SetDeliveryStream sets the DeliveryStream field's value.
 16103  func (s *KinesisFirehoseDestinationDetails) SetDeliveryStream(v string) *KinesisFirehoseDestinationDetails {
 16104  	s.DeliveryStream = &v
 16105  	return s
 16106  }
 16107  
 16108  // The input parameters for the ListAllowedNodeTypeModifications operation.
 16109  type ListAllowedNodeTypeModificationsInput struct {
 16110  	_ struct{} `type:"structure"`
 16111  
 16112  	// The name of the cluster you want to scale up to a larger node instanced type.
 16113  	// ElastiCache uses the cluster id to identify the current node type of this
 16114  	// cluster and from that to create a list of node types you can scale up to.
 16115  	//
 16116  	// You must provide a value for either the CacheClusterId or the ReplicationGroupId.
 16117  	CacheClusterId *string `type:"string"`
 16118  
 16119  	// The name of the replication group want to scale up to a larger node type.
 16120  	// ElastiCache uses the replication group id to identify the current node type
 16121  	// being used by this replication group, and from that to create a list of node
 16122  	// types you can scale up to.
 16123  	//
 16124  	// You must provide a value for either the CacheClusterId or the ReplicationGroupId.
 16125  	ReplicationGroupId *string `type:"string"`
 16126  }
 16127  
 16128  // String returns the string representation.
 16129  //
 16130  // API parameter values that are decorated as "sensitive" in the API will not
 16131  // be included in the string output. The member name will be present, but the
 16132  // value will be replaced with "sensitive".
 16133  func (s ListAllowedNodeTypeModificationsInput) String() string {
 16134  	return awsutil.Prettify(s)
 16135  }
 16136  
 16137  // GoString returns the string representation.
 16138  //
 16139  // API parameter values that are decorated as "sensitive" in the API will not
 16140  // be included in the string output. The member name will be present, but the
 16141  // value will be replaced with "sensitive".
 16142  func (s ListAllowedNodeTypeModificationsInput) GoString() string {
 16143  	return s.String()
 16144  }
 16145  
 16146  // SetCacheClusterId sets the CacheClusterId field's value.
 16147  func (s *ListAllowedNodeTypeModificationsInput) SetCacheClusterId(v string) *ListAllowedNodeTypeModificationsInput {
 16148  	s.CacheClusterId = &v
 16149  	return s
 16150  }
 16151  
 16152  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 16153  func (s *ListAllowedNodeTypeModificationsInput) SetReplicationGroupId(v string) *ListAllowedNodeTypeModificationsInput {
 16154  	s.ReplicationGroupId = &v
 16155  	return s
 16156  }
 16157  
 16158  // Represents the allowed node types you can use to modify your cluster or replication
 16159  // group.
 16160  type ListAllowedNodeTypeModificationsOutput struct {
 16161  	_ struct{} `type:"structure"`
 16162  
 16163  	// A string list, each element of which specifies a cache node type which you
 16164  	// can use to scale your cluster or replication group. When scaling down a Redis
 16165  	// cluster or replication group using ModifyCacheCluster or ModifyReplicationGroup,
 16166  	// use a value from this list for the CacheNodeType parameter.
 16167  	ScaleDownModifications []*string `type:"list"`
 16168  
 16169  	// A string list, each element of which specifies a cache node type which you
 16170  	// can use to scale your cluster or replication group.
 16171  	//
 16172  	// When scaling up a Redis cluster or replication group using ModifyCacheCluster
 16173  	// or ModifyReplicationGroup, use a value from this list for the CacheNodeType
 16174  	// parameter.
 16175  	ScaleUpModifications []*string `type:"list"`
 16176  }
 16177  
 16178  // String returns the string representation.
 16179  //
 16180  // API parameter values that are decorated as "sensitive" in the API will not
 16181  // be included in the string output. The member name will be present, but the
 16182  // value will be replaced with "sensitive".
 16183  func (s ListAllowedNodeTypeModificationsOutput) String() string {
 16184  	return awsutil.Prettify(s)
 16185  }
 16186  
 16187  // GoString returns the string representation.
 16188  //
 16189  // API parameter values that are decorated as "sensitive" in the API will not
 16190  // be included in the string output. The member name will be present, but the
 16191  // value will be replaced with "sensitive".
 16192  func (s ListAllowedNodeTypeModificationsOutput) GoString() string {
 16193  	return s.String()
 16194  }
 16195  
 16196  // SetScaleDownModifications sets the ScaleDownModifications field's value.
 16197  func (s *ListAllowedNodeTypeModificationsOutput) SetScaleDownModifications(v []*string) *ListAllowedNodeTypeModificationsOutput {
 16198  	s.ScaleDownModifications = v
 16199  	return s
 16200  }
 16201  
 16202  // SetScaleUpModifications sets the ScaleUpModifications field's value.
 16203  func (s *ListAllowedNodeTypeModificationsOutput) SetScaleUpModifications(v []*string) *ListAllowedNodeTypeModificationsOutput {
 16204  	s.ScaleUpModifications = v
 16205  	return s
 16206  }
 16207  
 16208  // The input parameters for the ListTagsForResource operation.
 16209  type ListTagsForResourceInput struct {
 16210  	_ struct{} `type:"structure"`
 16211  
 16212  	// The Amazon Resource Name (ARN) of the resource for which you want the list
 16213  	// of tags, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
 16214  	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.
 16215  	//
 16216  	// For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon
 16217  	// Web Services Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
 16218  	//
 16219  	// ResourceName is a required field
 16220  	ResourceName *string `type:"string" required:"true"`
 16221  }
 16222  
 16223  // String returns the string representation.
 16224  //
 16225  // API parameter values that are decorated as "sensitive" in the API will not
 16226  // be included in the string output. The member name will be present, but the
 16227  // value will be replaced with "sensitive".
 16228  func (s ListTagsForResourceInput) String() string {
 16229  	return awsutil.Prettify(s)
 16230  }
 16231  
 16232  // GoString returns the string representation.
 16233  //
 16234  // API parameter values that are decorated as "sensitive" in the API will not
 16235  // be included in the string output. The member name will be present, but the
 16236  // value will be replaced with "sensitive".
 16237  func (s ListTagsForResourceInput) GoString() string {
 16238  	return s.String()
 16239  }
 16240  
 16241  // Validate inspects the fields of the type to determine if they are valid.
 16242  func (s *ListTagsForResourceInput) Validate() error {
 16243  	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
 16244  	if s.ResourceName == nil {
 16245  		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
 16246  	}
 16247  
 16248  	if invalidParams.Len() > 0 {
 16249  		return invalidParams
 16250  	}
 16251  	return nil
 16252  }
 16253  
 16254  // SetResourceName sets the ResourceName field's value.
 16255  func (s *ListTagsForResourceInput) SetResourceName(v string) *ListTagsForResourceInput {
 16256  	s.ResourceName = &v
 16257  	return s
 16258  }
 16259  
 16260  // Returns the destination, format and type of the logs.
 16261  type LogDeliveryConfiguration struct {
 16262  	_ struct{} `type:"structure"`
 16263  
 16264  	// Configuration details of either a CloudWatch Logs destination or Kinesis
 16265  	// Data Firehose destination.
 16266  	DestinationDetails *DestinationDetails `type:"structure"`
 16267  
 16268  	// Returns the destination type, either cloudwatch-logs or kinesis-firehose.
 16269  	DestinationType *string `type:"string" enum:"DestinationType"`
 16270  
 16271  	// Returns the log format, either JSON or TEXT.
 16272  	LogFormat *string `type:"string" enum:"LogFormat"`
 16273  
 16274  	// Refers to slow-log (https://redis.io/commands/slowlog).
 16275  	LogType *string `type:"string" enum:"LogType"`
 16276  
 16277  	// Returns an error message for the log delivery configuration.
 16278  	Message *string `type:"string"`
 16279  
 16280  	// Returns the log delivery configuration status. Values are one of enabling
 16281  	// | disabling | modifying | active | error
 16282  	Status *string `type:"string" enum:"LogDeliveryConfigurationStatus"`
 16283  }
 16284  
 16285  // String returns the string representation.
 16286  //
 16287  // API parameter values that are decorated as "sensitive" in the API will not
 16288  // be included in the string output. The member name will be present, but the
 16289  // value will be replaced with "sensitive".
 16290  func (s LogDeliveryConfiguration) String() string {
 16291  	return awsutil.Prettify(s)
 16292  }
 16293  
 16294  // GoString returns the string representation.
 16295  //
 16296  // API parameter values that are decorated as "sensitive" in the API will not
 16297  // be included in the string output. The member name will be present, but the
 16298  // value will be replaced with "sensitive".
 16299  func (s LogDeliveryConfiguration) GoString() string {
 16300  	return s.String()
 16301  }
 16302  
 16303  // SetDestinationDetails sets the DestinationDetails field's value.
 16304  func (s *LogDeliveryConfiguration) SetDestinationDetails(v *DestinationDetails) *LogDeliveryConfiguration {
 16305  	s.DestinationDetails = v
 16306  	return s
 16307  }
 16308  
 16309  // SetDestinationType sets the DestinationType field's value.
 16310  func (s *LogDeliveryConfiguration) SetDestinationType(v string) *LogDeliveryConfiguration {
 16311  	s.DestinationType = &v
 16312  	return s
 16313  }
 16314  
 16315  // SetLogFormat sets the LogFormat field's value.
 16316  func (s *LogDeliveryConfiguration) SetLogFormat(v string) *LogDeliveryConfiguration {
 16317  	s.LogFormat = &v
 16318  	return s
 16319  }
 16320  
 16321  // SetLogType sets the LogType field's value.
 16322  func (s *LogDeliveryConfiguration) SetLogType(v string) *LogDeliveryConfiguration {
 16323  	s.LogType = &v
 16324  	return s
 16325  }
 16326  
 16327  // SetMessage sets the Message field's value.
 16328  func (s *LogDeliveryConfiguration) SetMessage(v string) *LogDeliveryConfiguration {
 16329  	s.Message = &v
 16330  	return s
 16331  }
 16332  
 16333  // SetStatus sets the Status field's value.
 16334  func (s *LogDeliveryConfiguration) SetStatus(v string) *LogDeliveryConfiguration {
 16335  	s.Status = &v
 16336  	return s
 16337  }
 16338  
 16339  // Specifies the destination, format and type of the logs.
 16340  type LogDeliveryConfigurationRequest struct {
 16341  	_ struct{} `type:"structure"`
 16342  
 16343  	// Configuration details of either a CloudWatch Logs destination or Kinesis
 16344  	// Data Firehose destination.
 16345  	DestinationDetails *DestinationDetails `type:"structure"`
 16346  
 16347  	// Specify either cloudwatch-logs or kinesis-firehose as the destination type.
 16348  	DestinationType *string `type:"string" enum:"DestinationType"`
 16349  
 16350  	// Specify if log delivery is enabled. Default true.
 16351  	Enabled *bool `type:"boolean"`
 16352  
 16353  	// Specifies either JSON or TEXT
 16354  	LogFormat *string `type:"string" enum:"LogFormat"`
 16355  
 16356  	// Refers to slow-log (https://redis.io/commands/slowlog).
 16357  	LogType *string `type:"string" enum:"LogType"`
 16358  }
 16359  
 16360  // String returns the string representation.
 16361  //
 16362  // API parameter values that are decorated as "sensitive" in the API will not
 16363  // be included in the string output. The member name will be present, but the
 16364  // value will be replaced with "sensitive".
 16365  func (s LogDeliveryConfigurationRequest) String() string {
 16366  	return awsutil.Prettify(s)
 16367  }
 16368  
 16369  // GoString returns the string representation.
 16370  //
 16371  // API parameter values that are decorated as "sensitive" in the API will not
 16372  // be included in the string output. The member name will be present, but the
 16373  // value will be replaced with "sensitive".
 16374  func (s LogDeliveryConfigurationRequest) GoString() string {
 16375  	return s.String()
 16376  }
 16377  
 16378  // SetDestinationDetails sets the DestinationDetails field's value.
 16379  func (s *LogDeliveryConfigurationRequest) SetDestinationDetails(v *DestinationDetails) *LogDeliveryConfigurationRequest {
 16380  	s.DestinationDetails = v
 16381  	return s
 16382  }
 16383  
 16384  // SetDestinationType sets the DestinationType field's value.
 16385  func (s *LogDeliveryConfigurationRequest) SetDestinationType(v string) *LogDeliveryConfigurationRequest {
 16386  	s.DestinationType = &v
 16387  	return s
 16388  }
 16389  
 16390  // SetEnabled sets the Enabled field's value.
 16391  func (s *LogDeliveryConfigurationRequest) SetEnabled(v bool) *LogDeliveryConfigurationRequest {
 16392  	s.Enabled = &v
 16393  	return s
 16394  }
 16395  
 16396  // SetLogFormat sets the LogFormat field's value.
 16397  func (s *LogDeliveryConfigurationRequest) SetLogFormat(v string) *LogDeliveryConfigurationRequest {
 16398  	s.LogFormat = &v
 16399  	return s
 16400  }
 16401  
 16402  // SetLogType sets the LogType field's value.
 16403  func (s *LogDeliveryConfigurationRequest) SetLogType(v string) *LogDeliveryConfigurationRequest {
 16404  	s.LogType = &v
 16405  	return s
 16406  }
 16407  
 16408  // Represents the input of a ModifyCacheCluster operation.
 16409  type ModifyCacheClusterInput struct {
 16410  	_ struct{} `type:"structure"`
 16411  
 16412  	// Specifies whether the new nodes in this Memcached cluster are all created
 16413  	// in a single Availability Zone or created across multiple Availability Zones.
 16414  	//
 16415  	// Valid values: single-az | cross-az.
 16416  	//
 16417  	// This option is only supported for Memcached clusters.
 16418  	//
 16419  	// You cannot specify single-az if the Memcached cluster already has cache nodes
 16420  	// in different Availability Zones. If cross-az is specified, existing Memcached
 16421  	// nodes remain in their current Availability Zone.
 16422  	//
 16423  	// Only newly created nodes are located in different Availability Zones.
 16424  	AZMode *string `type:"string" enum:"AZMode"`
 16425  
 16426  	// If true, this parameter causes the modifications in this request and any
 16427  	// pending modifications to be applied, asynchronously and as soon as possible,
 16428  	// regardless of the PreferredMaintenanceWindow setting for the cluster.
 16429  	//
 16430  	// If false, changes to the cluster are applied on the next maintenance reboot,
 16431  	// or the next failure reboot, whichever occurs first.
 16432  	//
 16433  	// If you perform a ModifyCacheCluster before a pending modification is applied,
 16434  	// the pending modification is replaced by the newer modification.
 16435  	//
 16436  	// Valid values: true | false
 16437  	//
 16438  	// Default: false
 16439  	ApplyImmediately *bool `type:"boolean"`
 16440  
 16441  	// Reserved parameter. The password used to access a password protected server.
 16442  	// This parameter must be specified with the auth-token-update parameter. Password
 16443  	// constraints:
 16444  	//
 16445  	//    * Must be only printable ASCII characters
 16446  	//
 16447  	//    * Must be at least 16 characters and no more than 128 characters in length
 16448  	//
 16449  	//    * Cannot contain any of the following characters: '/', '"', or '@', '%'
 16450  	//
 16451  	// For more information, see AUTH password at AUTH (http://redis.io/commands/AUTH).
 16452  	AuthToken *string `type:"string"`
 16453  
 16454  	// Specifies the strategy to use to update the AUTH token. This parameter must
 16455  	// be specified with the auth-token parameter. Possible values:
 16456  	//
 16457  	//    * Rotate
 16458  	//
 16459  	//    * Set
 16460  	//
 16461  	// For more information, see Authenticating Users with Redis AUTH (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html)
 16462  	AuthTokenUpdateStrategy *string `type:"string" enum:"AuthTokenUpdateStrategyType"`
 16463  
 16464  	// This parameter is currently disabled.
 16465  	AutoMinorVersionUpgrade *bool `type:"boolean"`
 16466  
 16467  	// The cluster identifier. This value is stored as a lowercase string.
 16468  	//
 16469  	// CacheClusterId is a required field
 16470  	CacheClusterId *string `type:"string" required:"true"`
 16471  
 16472  	// A list of cache node IDs to be removed. A node ID is a numeric identifier
 16473  	// (0001, 0002, etc.). This parameter is only valid when NumCacheNodes is less
 16474  	// than the existing number of cache nodes. The number of cache node IDs supplied
 16475  	// in this parameter must match the difference between the existing number of
 16476  	// cache nodes in the cluster or pending cache nodes, whichever is greater,
 16477  	// and the value of NumCacheNodes in the request.
 16478  	//
 16479  	// For example: If you have 3 active cache nodes, 7 pending cache nodes, and
 16480  	// the number of cache nodes in this ModifyCacheCluster call is 5, you must
 16481  	// list 2 (7 - 5) cache node IDs to remove.
 16482  	CacheNodeIdsToRemove []*string `locationNameList:"CacheNodeId" type:"list"`
 16483  
 16484  	// A valid cache node type that you want to scale this cluster up to.
 16485  	CacheNodeType *string `type:"string"`
 16486  
 16487  	// The name of the cache parameter group to apply to this cluster. This change
 16488  	// is asynchronously applied as soon as possible for parameters when the ApplyImmediately
 16489  	// parameter is specified as true for this request.
 16490  	CacheParameterGroupName *string `type:"string"`
 16491  
 16492  	// A list of cache security group names to authorize on this cluster. This change
 16493  	// is asynchronously applied as soon as possible.
 16494  	//
 16495  	// You can use this parameter only with clusters that are created outside of
 16496  	// an Amazon Virtual Private Cloud (Amazon VPC).
 16497  	//
 16498  	// Constraints: Must contain no more than 255 alphanumeric characters. Must
 16499  	// not be "Default".
 16500  	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
 16501  
 16502  	// The upgraded version of the cache engine to be run on the cache nodes.
 16503  	//
 16504  	// Important: You can upgrade to a newer engine version (see Selecting a Cache
 16505  	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
 16506  	// but you cannot downgrade to an earlier engine version. If you want to use
 16507  	// an earlier engine version, you must delete the existing cluster and create
 16508  	// it anew with the earlier engine version.
 16509  	EngineVersion *string `type:"string"`
 16510  
 16511  	// Specifies the destination, format and type of the logs.
 16512  	LogDeliveryConfigurations []*LogDeliveryConfigurationRequest `locationNameList:"LogDeliveryConfigurationRequest" type:"list"`
 16513  
 16514  	//
 16515  	// This option is only supported on Memcached clusters.
 16516  	//
 16517  	// The list of Availability Zones where the new Memcached cache nodes are created.
 16518  	//
 16519  	// This parameter is only valid when NumCacheNodes in the request is greater
 16520  	// than the sum of the number of active cache nodes and the number of cache
 16521  	// nodes pending creation (which may be zero). The number of Availability Zones
 16522  	// supplied in this list must match the cache nodes being added in this request.
 16523  	//
 16524  	// Scenarios:
 16525  	//
 16526  	//    * Scenario 1: You have 3 active nodes and wish to add 2 nodes. Specify
 16527  	//    NumCacheNodes=5 (3 + 2) and optionally specify two Availability Zones
 16528  	//    for the two new nodes.
 16529  	//
 16530  	//    * Scenario 2: You have 3 active nodes and 2 nodes pending creation (from
 16531  	//    the scenario 1 call) and want to add 1 more node. Specify NumCacheNodes=6
 16532  	//    ((3 + 2) + 1) and optionally specify an Availability Zone for the new
 16533  	//    node.
 16534  	//
 16535  	//    * Scenario 3: You want to cancel all pending operations. Specify NumCacheNodes=3
 16536  	//    to cancel all pending operations.
 16537  	//
 16538  	// The Availability Zone placement of nodes pending creation cannot be modified.
 16539  	// If you wish to cancel any nodes pending creation, add 0 nodes by setting
 16540  	// NumCacheNodes to the number of current nodes.
 16541  	//
 16542  	// If cross-az is specified, existing Memcached nodes remain in their current
 16543  	// Availability Zone. Only newly created nodes can be located in different Availability
 16544  	// Zones. For guidance on how to move existing Memcached nodes to different
 16545  	// Availability Zones, see the Availability Zone Considerations section of Cache
 16546  	// Node Considerations for Memcached (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html).
 16547  	//
 16548  	// Impact of new add/remove requests upon pending requests
 16549  	//
 16550  	//    * Scenario-1 Pending Action: Delete New Request: Delete Result: The new
 16551  	//    delete, pending or immediate, replaces the pending delete.
 16552  	//
 16553  	//    * Scenario-2 Pending Action: Delete New Request: Create Result: The new
 16554  	//    create, pending or immediate, replaces the pending delete.
 16555  	//
 16556  	//    * Scenario-3 Pending Action: Create New Request: Delete Result: The new
 16557  	//    delete, pending or immediate, replaces the pending create.
 16558  	//
 16559  	//    * Scenario-4 Pending Action: Create New Request: Create Result: The new
 16560  	//    create is added to the pending create. Important: If the new create request
 16561  	//    is Apply Immediately - Yes, all creates are performed immediately. If
 16562  	//    the new create request is Apply Immediately - No, all creates are pending.
 16563  	NewAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
 16564  
 16565  	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
 16566  	// are sent.
 16567  	//
 16568  	// The Amazon SNS topic owner must be same as the cluster owner.
 16569  	NotificationTopicArn *string `type:"string"`
 16570  
 16571  	// The status of the Amazon SNS notification topic. Notifications are sent only
 16572  	// if the status is active.
 16573  	//
 16574  	// Valid values: active | inactive
 16575  	NotificationTopicStatus *string `type:"string"`
 16576  
 16577  	// The number of cache nodes that the cluster should have. If the value for
 16578  	// NumCacheNodes is greater than the sum of the number of current cache nodes
 16579  	// and the number of cache nodes pending creation (which may be zero), more
 16580  	// nodes are added. If the value is less than the number of existing cache nodes,
 16581  	// nodes are removed. If the value is equal to the number of current cache nodes,
 16582  	// any pending add or remove requests are canceled.
 16583  	//
 16584  	// If you are removing cache nodes, you must use the CacheNodeIdsToRemove parameter
 16585  	// to provide the IDs of the specific cache nodes to remove.
 16586  	//
 16587  	// For clusters running Redis, this value must be 1. For clusters running Memcached,
 16588  	// this value must be between 1 and 40.
 16589  	//
 16590  	// Adding or removing Memcached cache nodes can be applied immediately or as
 16591  	// a pending operation (see ApplyImmediately).
 16592  	//
 16593  	// A pending operation to modify the number of cache nodes in a cluster during
 16594  	// its maintenance window, whether by adding or removing nodes in accordance
 16595  	// with the scale out architecture, is not queued. The customer's latest request
 16596  	// to add or remove nodes to the cluster overrides any previous pending operations
 16597  	// to modify the number of cache nodes in the cluster. For example, a request
 16598  	// to remove 2 nodes would override a previous pending operation to remove 3
 16599  	// nodes. Similarly, a request to add 2 nodes would override a previous pending
 16600  	// operation to remove 3 nodes and vice versa. As Memcached cache nodes may
 16601  	// now be provisioned in different Availability Zones with flexible cache node
 16602  	// placement, a request to add nodes does not automatically override a previous
 16603  	// pending operation to add nodes. The customer can modify the previous pending
 16604  	// operation to add more nodes or explicitly cancel the pending request and
 16605  	// retry the new request. To cancel pending operations to modify the number
 16606  	// of cache nodes in a cluster, use the ModifyCacheCluster request and set NumCacheNodes
 16607  	// equal to the number of cache nodes currently in the cluster.
 16608  	NumCacheNodes *int64 `type:"integer"`
 16609  
 16610  	// Specifies the weekly time range during which maintenance on the cluster is
 16611  	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
 16612  	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
 16613  	//
 16614  	// Valid values for ddd are:
 16615  	//
 16616  	//    * sun
 16617  	//
 16618  	//    * mon
 16619  	//
 16620  	//    * tue
 16621  	//
 16622  	//    * wed
 16623  	//
 16624  	//    * thu
 16625  	//
 16626  	//    * fri
 16627  	//
 16628  	//    * sat
 16629  	//
 16630  	// Example: sun:23:00-mon:01:30
 16631  	PreferredMaintenanceWindow *string `type:"string"`
 16632  
 16633  	// Specifies the VPC Security Groups associated with the cluster.
 16634  	//
 16635  	// This parameter can be used only with clusters that are created in an Amazon
 16636  	// Virtual Private Cloud (Amazon VPC).
 16637  	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
 16638  
 16639  	// The number of days for which ElastiCache retains automatic cluster snapshots
 16640  	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
 16641  	// a snapshot that was taken today is retained for 5 days before being deleted.
 16642  	//
 16643  	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
 16644  	// off.
 16645  	SnapshotRetentionLimit *int64 `type:"integer"`
 16646  
 16647  	// The daily time range (in UTC) during which ElastiCache begins taking a daily
 16648  	// snapshot of your cluster.
 16649  	SnapshotWindow *string `type:"string"`
 16650  }
 16651  
 16652  // String returns the string representation.
 16653  //
 16654  // API parameter values that are decorated as "sensitive" in the API will not
 16655  // be included in the string output. The member name will be present, but the
 16656  // value will be replaced with "sensitive".
 16657  func (s ModifyCacheClusterInput) String() string {
 16658  	return awsutil.Prettify(s)
 16659  }
 16660  
 16661  // GoString returns the string representation.
 16662  //
 16663  // API parameter values that are decorated as "sensitive" in the API will not
 16664  // be included in the string output. The member name will be present, but the
 16665  // value will be replaced with "sensitive".
 16666  func (s ModifyCacheClusterInput) GoString() string {
 16667  	return s.String()
 16668  }
 16669  
 16670  // Validate inspects the fields of the type to determine if they are valid.
 16671  func (s *ModifyCacheClusterInput) Validate() error {
 16672  	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheClusterInput"}
 16673  	if s.CacheClusterId == nil {
 16674  		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
 16675  	}
 16676  
 16677  	if invalidParams.Len() > 0 {
 16678  		return invalidParams
 16679  	}
 16680  	return nil
 16681  }
 16682  
 16683  // SetAZMode sets the AZMode field's value.
 16684  func (s *ModifyCacheClusterInput) SetAZMode(v string) *ModifyCacheClusterInput {
 16685  	s.AZMode = &v
 16686  	return s
 16687  }
 16688  
 16689  // SetApplyImmediately sets the ApplyImmediately field's value.
 16690  func (s *ModifyCacheClusterInput) SetApplyImmediately(v bool) *ModifyCacheClusterInput {
 16691  	s.ApplyImmediately = &v
 16692  	return s
 16693  }
 16694  
 16695  // SetAuthToken sets the AuthToken field's value.
 16696  func (s *ModifyCacheClusterInput) SetAuthToken(v string) *ModifyCacheClusterInput {
 16697  	s.AuthToken = &v
 16698  	return s
 16699  }
 16700  
 16701  // SetAuthTokenUpdateStrategy sets the AuthTokenUpdateStrategy field's value.
 16702  func (s *ModifyCacheClusterInput) SetAuthTokenUpdateStrategy(v string) *ModifyCacheClusterInput {
 16703  	s.AuthTokenUpdateStrategy = &v
 16704  	return s
 16705  }
 16706  
 16707  // SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
 16708  func (s *ModifyCacheClusterInput) SetAutoMinorVersionUpgrade(v bool) *ModifyCacheClusterInput {
 16709  	s.AutoMinorVersionUpgrade = &v
 16710  	return s
 16711  }
 16712  
 16713  // SetCacheClusterId sets the CacheClusterId field's value.
 16714  func (s *ModifyCacheClusterInput) SetCacheClusterId(v string) *ModifyCacheClusterInput {
 16715  	s.CacheClusterId = &v
 16716  	return s
 16717  }
 16718  
 16719  // SetCacheNodeIdsToRemove sets the CacheNodeIdsToRemove field's value.
 16720  func (s *ModifyCacheClusterInput) SetCacheNodeIdsToRemove(v []*string) *ModifyCacheClusterInput {
 16721  	s.CacheNodeIdsToRemove = v
 16722  	return s
 16723  }
 16724  
 16725  // SetCacheNodeType sets the CacheNodeType field's value.
 16726  func (s *ModifyCacheClusterInput) SetCacheNodeType(v string) *ModifyCacheClusterInput {
 16727  	s.CacheNodeType = &v
 16728  	return s
 16729  }
 16730  
 16731  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
 16732  func (s *ModifyCacheClusterInput) SetCacheParameterGroupName(v string) *ModifyCacheClusterInput {
 16733  	s.CacheParameterGroupName = &v
 16734  	return s
 16735  }
 16736  
 16737  // SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
 16738  func (s *ModifyCacheClusterInput) SetCacheSecurityGroupNames(v []*string) *ModifyCacheClusterInput {
 16739  	s.CacheSecurityGroupNames = v
 16740  	return s
 16741  }
 16742  
 16743  // SetEngineVersion sets the EngineVersion field's value.
 16744  func (s *ModifyCacheClusterInput) SetEngineVersion(v string) *ModifyCacheClusterInput {
 16745  	s.EngineVersion = &v
 16746  	return s
 16747  }
 16748  
 16749  // SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
 16750  func (s *ModifyCacheClusterInput) SetLogDeliveryConfigurations(v []*LogDeliveryConfigurationRequest) *ModifyCacheClusterInput {
 16751  	s.LogDeliveryConfigurations = v
 16752  	return s
 16753  }
 16754  
 16755  // SetNewAvailabilityZones sets the NewAvailabilityZones field's value.
 16756  func (s *ModifyCacheClusterInput) SetNewAvailabilityZones(v []*string) *ModifyCacheClusterInput {
 16757  	s.NewAvailabilityZones = v
 16758  	return s
 16759  }
 16760  
 16761  // SetNotificationTopicArn sets the NotificationTopicArn field's value.
 16762  func (s *ModifyCacheClusterInput) SetNotificationTopicArn(v string) *ModifyCacheClusterInput {
 16763  	s.NotificationTopicArn = &v
 16764  	return s
 16765  }
 16766  
 16767  // SetNotificationTopicStatus sets the NotificationTopicStatus field's value.
 16768  func (s *ModifyCacheClusterInput) SetNotificationTopicStatus(v string) *ModifyCacheClusterInput {
 16769  	s.NotificationTopicStatus = &v
 16770  	return s
 16771  }
 16772  
 16773  // SetNumCacheNodes sets the NumCacheNodes field's value.
 16774  func (s *ModifyCacheClusterInput) SetNumCacheNodes(v int64) *ModifyCacheClusterInput {
 16775  	s.NumCacheNodes = &v
 16776  	return s
 16777  }
 16778  
 16779  // SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
 16780  func (s *ModifyCacheClusterInput) SetPreferredMaintenanceWindow(v string) *ModifyCacheClusterInput {
 16781  	s.PreferredMaintenanceWindow = &v
 16782  	return s
 16783  }
 16784  
 16785  // SetSecurityGroupIds sets the SecurityGroupIds field's value.
 16786  func (s *ModifyCacheClusterInput) SetSecurityGroupIds(v []*string) *ModifyCacheClusterInput {
 16787  	s.SecurityGroupIds = v
 16788  	return s
 16789  }
 16790  
 16791  // SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
 16792  func (s *ModifyCacheClusterInput) SetSnapshotRetentionLimit(v int64) *ModifyCacheClusterInput {
 16793  	s.SnapshotRetentionLimit = &v
 16794  	return s
 16795  }
 16796  
 16797  // SetSnapshotWindow sets the SnapshotWindow field's value.
 16798  func (s *ModifyCacheClusterInput) SetSnapshotWindow(v string) *ModifyCacheClusterInput {
 16799  	s.SnapshotWindow = &v
 16800  	return s
 16801  }
 16802  
 16803  type ModifyCacheClusterOutput struct {
 16804  	_ struct{} `type:"structure"`
 16805  
 16806  	// Contains all of the attributes of a specific cluster.
 16807  	CacheCluster *CacheCluster `type:"structure"`
 16808  }
 16809  
 16810  // String returns the string representation.
 16811  //
 16812  // API parameter values that are decorated as "sensitive" in the API will not
 16813  // be included in the string output. The member name will be present, but the
 16814  // value will be replaced with "sensitive".
 16815  func (s ModifyCacheClusterOutput) String() string {
 16816  	return awsutil.Prettify(s)
 16817  }
 16818  
 16819  // GoString returns the string representation.
 16820  //
 16821  // API parameter values that are decorated as "sensitive" in the API will not
 16822  // be included in the string output. The member name will be present, but the
 16823  // value will be replaced with "sensitive".
 16824  func (s ModifyCacheClusterOutput) GoString() string {
 16825  	return s.String()
 16826  }
 16827  
 16828  // SetCacheCluster sets the CacheCluster field's value.
 16829  func (s *ModifyCacheClusterOutput) SetCacheCluster(v *CacheCluster) *ModifyCacheClusterOutput {
 16830  	s.CacheCluster = v
 16831  	return s
 16832  }
 16833  
 16834  // Represents the input of a ModifyCacheParameterGroup operation.
 16835  type ModifyCacheParameterGroupInput struct {
 16836  	_ struct{} `type:"structure"`
 16837  
 16838  	// The name of the cache parameter group to modify.
 16839  	//
 16840  	// CacheParameterGroupName is a required field
 16841  	CacheParameterGroupName *string `type:"string" required:"true"`
 16842  
 16843  	// An array of parameter names and values for the parameter update. You must
 16844  	// supply at least one parameter name and value; subsequent arguments are optional.
 16845  	// A maximum of 20 parameters may be modified per request.
 16846  	//
 16847  	// ParameterNameValues is a required field
 16848  	ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list" required:"true"`
 16849  }
 16850  
 16851  // String returns the string representation.
 16852  //
 16853  // API parameter values that are decorated as "sensitive" in the API will not
 16854  // be included in the string output. The member name will be present, but the
 16855  // value will be replaced with "sensitive".
 16856  func (s ModifyCacheParameterGroupInput) String() string {
 16857  	return awsutil.Prettify(s)
 16858  }
 16859  
 16860  // GoString returns the string representation.
 16861  //
 16862  // API parameter values that are decorated as "sensitive" in the API will not
 16863  // be included in the string output. The member name will be present, but the
 16864  // value will be replaced with "sensitive".
 16865  func (s ModifyCacheParameterGroupInput) GoString() string {
 16866  	return s.String()
 16867  }
 16868  
 16869  // Validate inspects the fields of the type to determine if they are valid.
 16870  func (s *ModifyCacheParameterGroupInput) Validate() error {
 16871  	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheParameterGroupInput"}
 16872  	if s.CacheParameterGroupName == nil {
 16873  		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
 16874  	}
 16875  	if s.ParameterNameValues == nil {
 16876  		invalidParams.Add(request.NewErrParamRequired("ParameterNameValues"))
 16877  	}
 16878  
 16879  	if invalidParams.Len() > 0 {
 16880  		return invalidParams
 16881  	}
 16882  	return nil
 16883  }
 16884  
 16885  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
 16886  func (s *ModifyCacheParameterGroupInput) SetCacheParameterGroupName(v string) *ModifyCacheParameterGroupInput {
 16887  	s.CacheParameterGroupName = &v
 16888  	return s
 16889  }
 16890  
 16891  // SetParameterNameValues sets the ParameterNameValues field's value.
 16892  func (s *ModifyCacheParameterGroupInput) SetParameterNameValues(v []*ParameterNameValue) *ModifyCacheParameterGroupInput {
 16893  	s.ParameterNameValues = v
 16894  	return s
 16895  }
 16896  
 16897  // Represents the input of a ModifyCacheSubnetGroup operation.
 16898  type ModifyCacheSubnetGroupInput struct {
 16899  	_ struct{} `type:"structure"`
 16900  
 16901  	// A description of the cache subnet group.
 16902  	CacheSubnetGroupDescription *string `type:"string"`
 16903  
 16904  	// The name for the cache subnet group. This value is stored as a lowercase
 16905  	// string.
 16906  	//
 16907  	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
 16908  	//
 16909  	// Example: mysubnetgroup
 16910  	//
 16911  	// CacheSubnetGroupName is a required field
 16912  	CacheSubnetGroupName *string `type:"string" required:"true"`
 16913  
 16914  	// The EC2 subnet IDs for the cache subnet group.
 16915  	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list"`
 16916  }
 16917  
 16918  // String returns the string representation.
 16919  //
 16920  // API parameter values that are decorated as "sensitive" in the API will not
 16921  // be included in the string output. The member name will be present, but the
 16922  // value will be replaced with "sensitive".
 16923  func (s ModifyCacheSubnetGroupInput) String() string {
 16924  	return awsutil.Prettify(s)
 16925  }
 16926  
 16927  // GoString returns the string representation.
 16928  //
 16929  // API parameter values that are decorated as "sensitive" in the API will not
 16930  // be included in the string output. The member name will be present, but the
 16931  // value will be replaced with "sensitive".
 16932  func (s ModifyCacheSubnetGroupInput) GoString() string {
 16933  	return s.String()
 16934  }
 16935  
 16936  // Validate inspects the fields of the type to determine if they are valid.
 16937  func (s *ModifyCacheSubnetGroupInput) Validate() error {
 16938  	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheSubnetGroupInput"}
 16939  	if s.CacheSubnetGroupName == nil {
 16940  		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
 16941  	}
 16942  
 16943  	if invalidParams.Len() > 0 {
 16944  		return invalidParams
 16945  	}
 16946  	return nil
 16947  }
 16948  
 16949  // SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
 16950  func (s *ModifyCacheSubnetGroupInput) SetCacheSubnetGroupDescription(v string) *ModifyCacheSubnetGroupInput {
 16951  	s.CacheSubnetGroupDescription = &v
 16952  	return s
 16953  }
 16954  
 16955  // SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
 16956  func (s *ModifyCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *ModifyCacheSubnetGroupInput {
 16957  	s.CacheSubnetGroupName = &v
 16958  	return s
 16959  }
 16960  
 16961  // SetSubnetIds sets the SubnetIds field's value.
 16962  func (s *ModifyCacheSubnetGroupInput) SetSubnetIds(v []*string) *ModifyCacheSubnetGroupInput {
 16963  	s.SubnetIds = v
 16964  	return s
 16965  }
 16966  
 16967  type ModifyCacheSubnetGroupOutput struct {
 16968  	_ struct{} `type:"structure"`
 16969  
 16970  	// Represents the output of one of the following operations:
 16971  	//
 16972  	//    * CreateCacheSubnetGroup
 16973  	//
 16974  	//    * ModifyCacheSubnetGroup
 16975  	CacheSubnetGroup *CacheSubnetGroup `type:"structure"`
 16976  }
 16977  
 16978  // String returns the string representation.
 16979  //
 16980  // API parameter values that are decorated as "sensitive" in the API will not
 16981  // be included in the string output. The member name will be present, but the
 16982  // value will be replaced with "sensitive".
 16983  func (s ModifyCacheSubnetGroupOutput) String() string {
 16984  	return awsutil.Prettify(s)
 16985  }
 16986  
 16987  // GoString returns the string representation.
 16988  //
 16989  // API parameter values that are decorated as "sensitive" in the API will not
 16990  // be included in the string output. The member name will be present, but the
 16991  // value will be replaced with "sensitive".
 16992  func (s ModifyCacheSubnetGroupOutput) GoString() string {
 16993  	return s.String()
 16994  }
 16995  
 16996  // SetCacheSubnetGroup sets the CacheSubnetGroup field's value.
 16997  func (s *ModifyCacheSubnetGroupOutput) SetCacheSubnetGroup(v *CacheSubnetGroup) *ModifyCacheSubnetGroupOutput {
 16998  	s.CacheSubnetGroup = v
 16999  	return s
 17000  }
 17001  
 17002  type ModifyGlobalReplicationGroupInput struct {
 17003  	_ struct{} `type:"structure"`
 17004  
 17005  	// This parameter causes the modifications in this request and any pending modifications
 17006  	// to be applied, asynchronously and as soon as possible. Modifications to Global
 17007  	// Replication Groups cannot be requested to be applied in PreferredMaintenceWindow.
 17008  	//
 17009  	// ApplyImmediately is a required field
 17010  	ApplyImmediately *bool `type:"boolean" required:"true"`
 17011  
 17012  	// Determines whether a read replica is automatically promoted to read/write
 17013  	// primary if the existing primary encounters a failure.
 17014  	AutomaticFailoverEnabled *bool `type:"boolean"`
 17015  
 17016  	// A valid cache node type that you want to scale this Global datastore to.
 17017  	CacheNodeType *string `type:"string"`
 17018  
 17019  	// The name of the cache parameter group to use with the Global datastore. It
 17020  	// must be compatible with the major engine version used by the Global datastore.
 17021  	CacheParameterGroupName *string `type:"string"`
 17022  
 17023  	// The upgraded version of the cache engine to be run on the clusters in the
 17024  	// Global datastore.
 17025  	EngineVersion *string `type:"string"`
 17026  
 17027  	// A description of the Global datastore
 17028  	GlobalReplicationGroupDescription *string `type:"string"`
 17029  
 17030  	// The name of the Global datastore
 17031  	//
 17032  	// GlobalReplicationGroupId is a required field
 17033  	GlobalReplicationGroupId *string `type:"string" required:"true"`
 17034  }
 17035  
 17036  // String returns the string representation.
 17037  //
 17038  // API parameter values that are decorated as "sensitive" in the API will not
 17039  // be included in the string output. The member name will be present, but the
 17040  // value will be replaced with "sensitive".
 17041  func (s ModifyGlobalReplicationGroupInput) String() string {
 17042  	return awsutil.Prettify(s)
 17043  }
 17044  
 17045  // GoString returns the string representation.
 17046  //
 17047  // API parameter values that are decorated as "sensitive" in the API will not
 17048  // be included in the string output. The member name will be present, but the
 17049  // value will be replaced with "sensitive".
 17050  func (s ModifyGlobalReplicationGroupInput) GoString() string {
 17051  	return s.String()
 17052  }
 17053  
 17054  // Validate inspects the fields of the type to determine if they are valid.
 17055  func (s *ModifyGlobalReplicationGroupInput) Validate() error {
 17056  	invalidParams := request.ErrInvalidParams{Context: "ModifyGlobalReplicationGroupInput"}
 17057  	if s.ApplyImmediately == nil {
 17058  		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
 17059  	}
 17060  	if s.GlobalReplicationGroupId == nil {
 17061  		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
 17062  	}
 17063  
 17064  	if invalidParams.Len() > 0 {
 17065  		return invalidParams
 17066  	}
 17067  	return nil
 17068  }
 17069  
 17070  // SetApplyImmediately sets the ApplyImmediately field's value.
 17071  func (s *ModifyGlobalReplicationGroupInput) SetApplyImmediately(v bool) *ModifyGlobalReplicationGroupInput {
 17072  	s.ApplyImmediately = &v
 17073  	return s
 17074  }
 17075  
 17076  // SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
 17077  func (s *ModifyGlobalReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *ModifyGlobalReplicationGroupInput {
 17078  	s.AutomaticFailoverEnabled = &v
 17079  	return s
 17080  }
 17081  
 17082  // SetCacheNodeType sets the CacheNodeType field's value.
 17083  func (s *ModifyGlobalReplicationGroupInput) SetCacheNodeType(v string) *ModifyGlobalReplicationGroupInput {
 17084  	s.CacheNodeType = &v
 17085  	return s
 17086  }
 17087  
 17088  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
 17089  func (s *ModifyGlobalReplicationGroupInput) SetCacheParameterGroupName(v string) *ModifyGlobalReplicationGroupInput {
 17090  	s.CacheParameterGroupName = &v
 17091  	return s
 17092  }
 17093  
 17094  // SetEngineVersion sets the EngineVersion field's value.
 17095  func (s *ModifyGlobalReplicationGroupInput) SetEngineVersion(v string) *ModifyGlobalReplicationGroupInput {
 17096  	s.EngineVersion = &v
 17097  	return s
 17098  }
 17099  
 17100  // SetGlobalReplicationGroupDescription sets the GlobalReplicationGroupDescription field's value.
 17101  func (s *ModifyGlobalReplicationGroupInput) SetGlobalReplicationGroupDescription(v string) *ModifyGlobalReplicationGroupInput {
 17102  	s.GlobalReplicationGroupDescription = &v
 17103  	return s
 17104  }
 17105  
 17106  // SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
 17107  func (s *ModifyGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *ModifyGlobalReplicationGroupInput {
 17108  	s.GlobalReplicationGroupId = &v
 17109  	return s
 17110  }
 17111  
 17112  type ModifyGlobalReplicationGroupOutput struct {
 17113  	_ struct{} `type:"structure"`
 17114  
 17115  	// Consists of a primary cluster that accepts writes and an associated secondary
 17116  	// cluster that resides in a different Amazon region. The secondary cluster
 17117  	// accepts only reads. The primary cluster automatically replicates updates
 17118  	// to the secondary cluster.
 17119  	//
 17120  	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
 17121  	//    datastore, which is what you use to associate a secondary cluster.
 17122  	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
 17123  }
 17124  
 17125  // String returns the string representation.
 17126  //
 17127  // API parameter values that are decorated as "sensitive" in the API will not
 17128  // be included in the string output. The member name will be present, but the
 17129  // value will be replaced with "sensitive".
 17130  func (s ModifyGlobalReplicationGroupOutput) String() string {
 17131  	return awsutil.Prettify(s)
 17132  }
 17133  
 17134  // GoString returns the string representation.
 17135  //
 17136  // API parameter values that are decorated as "sensitive" in the API will not
 17137  // be included in the string output. The member name will be present, but the
 17138  // value will be replaced with "sensitive".
 17139  func (s ModifyGlobalReplicationGroupOutput) GoString() string {
 17140  	return s.String()
 17141  }
 17142  
 17143  // SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
 17144  func (s *ModifyGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *ModifyGlobalReplicationGroupOutput {
 17145  	s.GlobalReplicationGroup = v
 17146  	return s
 17147  }
 17148  
 17149  // Represents the input of a ModifyReplicationGroups operation.
 17150  type ModifyReplicationGroupInput struct {
 17151  	_ struct{} `type:"structure"`
 17152  
 17153  	// If true, this parameter causes the modifications in this request and any
 17154  	// pending modifications to be applied, asynchronously and as soon as possible,
 17155  	// regardless of the PreferredMaintenanceWindow setting for the replication
 17156  	// group.
 17157  	//
 17158  	// If false, changes to the nodes in the replication group are applied on the
 17159  	// next maintenance reboot, or the next failure reboot, whichever occurs first.
 17160  	//
 17161  	// Valid values: true | false
 17162  	//
 17163  	// Default: false
 17164  	ApplyImmediately *bool `type:"boolean"`
 17165  
 17166  	// Reserved parameter. The password used to access a password protected server.
 17167  	// This parameter must be specified with the auth-token-update-strategy parameter.
 17168  	// Password constraints:
 17169  	//
 17170  	//    * Must be only printable ASCII characters
 17171  	//
 17172  	//    * Must be at least 16 characters and no more than 128 characters in length
 17173  	//
 17174  	//    * Cannot contain any of the following characters: '/', '"', or '@', '%'
 17175  	//
 17176  	// For more information, see AUTH password at AUTH (http://redis.io/commands/AUTH).
 17177  	AuthToken *string `type:"string"`
 17178  
 17179  	// Specifies the strategy to use to update the AUTH token. This parameter must
 17180  	// be specified with the auth-token parameter. Possible values:
 17181  	//
 17182  	//    * Rotate
 17183  	//
 17184  	//    * Set
 17185  	//
 17186  	// For more information, see Authenticating Users with Redis AUTH (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html)
 17187  	AuthTokenUpdateStrategy *string `type:"string" enum:"AuthTokenUpdateStrategyType"`
 17188  
 17189  	// This parameter is currently disabled.
 17190  	AutoMinorVersionUpgrade *bool `type:"boolean"`
 17191  
 17192  	// Determines whether a read replica is automatically promoted to read/write
 17193  	// primary if the existing primary encounters a failure.
 17194  	//
 17195  	// Valid values: true | false
 17196  	AutomaticFailoverEnabled *bool `type:"boolean"`
 17197  
 17198  	// A valid cache node type that you want to scale this replication group to.
 17199  	CacheNodeType *string `type:"string"`
 17200  
 17201  	// The name of the cache parameter group to apply to all of the clusters in
 17202  	// this replication group. This change is asynchronously applied as soon as
 17203  	// possible for parameters when the ApplyImmediately parameter is specified
 17204  	// as true for this request.
 17205  	CacheParameterGroupName *string `type:"string"`
 17206  
 17207  	// A list of cache security group names to authorize for the clusters in this
 17208  	// replication group. This change is asynchronously applied as soon as possible.
 17209  	//
 17210  	// This parameter can be used only with replication group containing clusters
 17211  	// running outside of an Amazon Virtual Private Cloud (Amazon VPC).
 17212  	//
 17213  	// Constraints: Must contain no more than 255 alphanumeric characters. Must
 17214  	// not be Default.
 17215  	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
 17216  
 17217  	// The upgraded version of the cache engine to be run on the clusters in the
 17218  	// replication group.
 17219  	//
 17220  	// Important: You can upgrade to a newer engine version (see Selecting a Cache
 17221  	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
 17222  	// but you cannot downgrade to an earlier engine version. If you want to use
 17223  	// an earlier engine version, you must delete the existing replication group
 17224  	// and create it anew with the earlier engine version.
 17225  	EngineVersion *string `type:"string"`
 17226  
 17227  	// Specifies the destination, format and type of the logs.
 17228  	LogDeliveryConfigurations []*LogDeliveryConfigurationRequest `locationNameList:"LogDeliveryConfigurationRequest" type:"list"`
 17229  
 17230  	// A flag to indicate MultiAZ is enabled.
 17231  	MultiAZEnabled *bool `type:"boolean"`
 17232  
 17233  	// Deprecated. This parameter is not used.
 17234  	//
 17235  	// Deprecated: NodeGroupId has been deprecated
 17236  	NodeGroupId *string `deprecated:"true" type:"string"`
 17237  
 17238  	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
 17239  	// are sent.
 17240  	//
 17241  	// The Amazon SNS topic owner must be same as the replication group owner.
 17242  	NotificationTopicArn *string `type:"string"`
 17243  
 17244  	// The status of the Amazon SNS notification topic for the replication group.
 17245  	// Notifications are sent only if the status is active.
 17246  	//
 17247  	// Valid values: active | inactive
 17248  	NotificationTopicStatus *string `type:"string"`
 17249  
 17250  	// Specifies the weekly time range during which maintenance on the cluster is
 17251  	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
 17252  	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
 17253  	//
 17254  	// Valid values for ddd are:
 17255  	//
 17256  	//    * sun
 17257  	//
 17258  	//    * mon
 17259  	//
 17260  	//    * tue
 17261  	//
 17262  	//    * wed
 17263  	//
 17264  	//    * thu
 17265  	//
 17266  	//    * fri
 17267  	//
 17268  	//    * sat
 17269  	//
 17270  	// Example: sun:23:00-mon:01:30
 17271  	PreferredMaintenanceWindow *string `type:"string"`
 17272  
 17273  	// For replication groups with a single primary, if this parameter is specified,
 17274  	// ElastiCache promotes the specified cluster in the specified replication group
 17275  	// to the primary role. The nodes of all other clusters in the replication group
 17276  	// are read replicas.
 17277  	PrimaryClusterId *string `type:"string"`
 17278  
 17279  	// Removes the user group associated with this replication group.
 17280  	RemoveUserGroups *bool `type:"boolean"`
 17281  
 17282  	// A description for the replication group. Maximum length is 255 characters.
 17283  	ReplicationGroupDescription *string `type:"string"`
 17284  
 17285  	// The identifier of the replication group to modify.
 17286  	//
 17287  	// ReplicationGroupId is a required field
 17288  	ReplicationGroupId *string `type:"string" required:"true"`
 17289  
 17290  	// Specifies the VPC Security Groups associated with the clusters in the replication
 17291  	// group.
 17292  	//
 17293  	// This parameter can be used only with replication group containing clusters
 17294  	// running in an Amazon Virtual Private Cloud (Amazon VPC).
 17295  	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
 17296  
 17297  	// The number of days for which ElastiCache retains automatic node group (shard)
 17298  	// snapshots before deleting them. For example, if you set SnapshotRetentionLimit
 17299  	// to 5, a snapshot that was taken today is retained for 5 days before being
 17300  	// deleted.
 17301  	//
 17302  	// Important If the value of SnapshotRetentionLimit is set to zero (0), backups
 17303  	// are turned off.
 17304  	SnapshotRetentionLimit *int64 `type:"integer"`
 17305  
 17306  	// The daily time range (in UTC) during which ElastiCache begins taking a daily
 17307  	// snapshot of the node group (shard) specified by SnapshottingClusterId.
 17308  	//
 17309  	// Example: 05:00-09:00
 17310  	//
 17311  	// If you do not specify this parameter, ElastiCache automatically chooses an
 17312  	// appropriate time range.
 17313  	SnapshotWindow *string `type:"string"`
 17314  
 17315  	// The cluster ID that is used as the daily snapshot source for the replication
 17316  	// group. This parameter cannot be set for Redis (cluster mode enabled) replication
 17317  	// groups.
 17318  	SnapshottingClusterId *string `type:"string"`
 17319  
 17320  	// The ID of the user group you are associating with the replication group.
 17321  	UserGroupIdsToAdd []*string `type:"list"`
 17322  
 17323  	// The ID of the user group to disassociate from the replication group, meaning
 17324  	// the users in the group no longer can access the replication group.
 17325  	UserGroupIdsToRemove []*string `type:"list"`
 17326  }
 17327  
 17328  // String returns the string representation.
 17329  //
 17330  // API parameter values that are decorated as "sensitive" in the API will not
 17331  // be included in the string output. The member name will be present, but the
 17332  // value will be replaced with "sensitive".
 17333  func (s ModifyReplicationGroupInput) String() string {
 17334  	return awsutil.Prettify(s)
 17335  }
 17336  
 17337  // GoString returns the string representation.
 17338  //
 17339  // API parameter values that are decorated as "sensitive" in the API will not
 17340  // be included in the string output. The member name will be present, but the
 17341  // value will be replaced with "sensitive".
 17342  func (s ModifyReplicationGroupInput) GoString() string {
 17343  	return s.String()
 17344  }
 17345  
 17346  // Validate inspects the fields of the type to determine if they are valid.
 17347  func (s *ModifyReplicationGroupInput) Validate() error {
 17348  	invalidParams := request.ErrInvalidParams{Context: "ModifyReplicationGroupInput"}
 17349  	if s.ReplicationGroupId == nil {
 17350  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
 17351  	}
 17352  
 17353  	if invalidParams.Len() > 0 {
 17354  		return invalidParams
 17355  	}
 17356  	return nil
 17357  }
 17358  
 17359  // SetApplyImmediately sets the ApplyImmediately field's value.
 17360  func (s *ModifyReplicationGroupInput) SetApplyImmediately(v bool) *ModifyReplicationGroupInput {
 17361  	s.ApplyImmediately = &v
 17362  	return s
 17363  }
 17364  
 17365  // SetAuthToken sets the AuthToken field's value.
 17366  func (s *ModifyReplicationGroupInput) SetAuthToken(v string) *ModifyReplicationGroupInput {
 17367  	s.AuthToken = &v
 17368  	return s
 17369  }
 17370  
 17371  // SetAuthTokenUpdateStrategy sets the AuthTokenUpdateStrategy field's value.
 17372  func (s *ModifyReplicationGroupInput) SetAuthTokenUpdateStrategy(v string) *ModifyReplicationGroupInput {
 17373  	s.AuthTokenUpdateStrategy = &v
 17374  	return s
 17375  }
 17376  
 17377  // SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
 17378  func (s *ModifyReplicationGroupInput) SetAutoMinorVersionUpgrade(v bool) *ModifyReplicationGroupInput {
 17379  	s.AutoMinorVersionUpgrade = &v
 17380  	return s
 17381  }
 17382  
 17383  // SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
 17384  func (s *ModifyReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *ModifyReplicationGroupInput {
 17385  	s.AutomaticFailoverEnabled = &v
 17386  	return s
 17387  }
 17388  
 17389  // SetCacheNodeType sets the CacheNodeType field's value.
 17390  func (s *ModifyReplicationGroupInput) SetCacheNodeType(v string) *ModifyReplicationGroupInput {
 17391  	s.CacheNodeType = &v
 17392  	return s
 17393  }
 17394  
 17395  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
 17396  func (s *ModifyReplicationGroupInput) SetCacheParameterGroupName(v string) *ModifyReplicationGroupInput {
 17397  	s.CacheParameterGroupName = &v
 17398  	return s
 17399  }
 17400  
 17401  // SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
 17402  func (s *ModifyReplicationGroupInput) SetCacheSecurityGroupNames(v []*string) *ModifyReplicationGroupInput {
 17403  	s.CacheSecurityGroupNames = v
 17404  	return s
 17405  }
 17406  
 17407  // SetEngineVersion sets the EngineVersion field's value.
 17408  func (s *ModifyReplicationGroupInput) SetEngineVersion(v string) *ModifyReplicationGroupInput {
 17409  	s.EngineVersion = &v
 17410  	return s
 17411  }
 17412  
 17413  // SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
 17414  func (s *ModifyReplicationGroupInput) SetLogDeliveryConfigurations(v []*LogDeliveryConfigurationRequest) *ModifyReplicationGroupInput {
 17415  	s.LogDeliveryConfigurations = v
 17416  	return s
 17417  }
 17418  
 17419  // SetMultiAZEnabled sets the MultiAZEnabled field's value.
 17420  func (s *ModifyReplicationGroupInput) SetMultiAZEnabled(v bool) *ModifyReplicationGroupInput {
 17421  	s.MultiAZEnabled = &v
 17422  	return s
 17423  }
 17424  
 17425  // SetNodeGroupId sets the NodeGroupId field's value.
 17426  func (s *ModifyReplicationGroupInput) SetNodeGroupId(v string) *ModifyReplicationGroupInput {
 17427  	s.NodeGroupId = &v
 17428  	return s
 17429  }
 17430  
 17431  // SetNotificationTopicArn sets the NotificationTopicArn field's value.
 17432  func (s *ModifyReplicationGroupInput) SetNotificationTopicArn(v string) *ModifyReplicationGroupInput {
 17433  	s.NotificationTopicArn = &v
 17434  	return s
 17435  }
 17436  
 17437  // SetNotificationTopicStatus sets the NotificationTopicStatus field's value.
 17438  func (s *ModifyReplicationGroupInput) SetNotificationTopicStatus(v string) *ModifyReplicationGroupInput {
 17439  	s.NotificationTopicStatus = &v
 17440  	return s
 17441  }
 17442  
 17443  // SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
 17444  func (s *ModifyReplicationGroupInput) SetPreferredMaintenanceWindow(v string) *ModifyReplicationGroupInput {
 17445  	s.PreferredMaintenanceWindow = &v
 17446  	return s
 17447  }
 17448  
 17449  // SetPrimaryClusterId sets the PrimaryClusterId field's value.
 17450  func (s *ModifyReplicationGroupInput) SetPrimaryClusterId(v string) *ModifyReplicationGroupInput {
 17451  	s.PrimaryClusterId = &v
 17452  	return s
 17453  }
 17454  
 17455  // SetRemoveUserGroups sets the RemoveUserGroups field's value.
 17456  func (s *ModifyReplicationGroupInput) SetRemoveUserGroups(v bool) *ModifyReplicationGroupInput {
 17457  	s.RemoveUserGroups = &v
 17458  	return s
 17459  }
 17460  
 17461  // SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
 17462  func (s *ModifyReplicationGroupInput) SetReplicationGroupDescription(v string) *ModifyReplicationGroupInput {
 17463  	s.ReplicationGroupDescription = &v
 17464  	return s
 17465  }
 17466  
 17467  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 17468  func (s *ModifyReplicationGroupInput) SetReplicationGroupId(v string) *ModifyReplicationGroupInput {
 17469  	s.ReplicationGroupId = &v
 17470  	return s
 17471  }
 17472  
 17473  // SetSecurityGroupIds sets the SecurityGroupIds field's value.
 17474  func (s *ModifyReplicationGroupInput) SetSecurityGroupIds(v []*string) *ModifyReplicationGroupInput {
 17475  	s.SecurityGroupIds = v
 17476  	return s
 17477  }
 17478  
 17479  // SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
 17480  func (s *ModifyReplicationGroupInput) SetSnapshotRetentionLimit(v int64) *ModifyReplicationGroupInput {
 17481  	s.SnapshotRetentionLimit = &v
 17482  	return s
 17483  }
 17484  
 17485  // SetSnapshotWindow sets the SnapshotWindow field's value.
 17486  func (s *ModifyReplicationGroupInput) SetSnapshotWindow(v string) *ModifyReplicationGroupInput {
 17487  	s.SnapshotWindow = &v
 17488  	return s
 17489  }
 17490  
 17491  // SetSnapshottingClusterId sets the SnapshottingClusterId field's value.
 17492  func (s *ModifyReplicationGroupInput) SetSnapshottingClusterId(v string) *ModifyReplicationGroupInput {
 17493  	s.SnapshottingClusterId = &v
 17494  	return s
 17495  }
 17496  
 17497  // SetUserGroupIdsToAdd sets the UserGroupIdsToAdd field's value.
 17498  func (s *ModifyReplicationGroupInput) SetUserGroupIdsToAdd(v []*string) *ModifyReplicationGroupInput {
 17499  	s.UserGroupIdsToAdd = v
 17500  	return s
 17501  }
 17502  
 17503  // SetUserGroupIdsToRemove sets the UserGroupIdsToRemove field's value.
 17504  func (s *ModifyReplicationGroupInput) SetUserGroupIdsToRemove(v []*string) *ModifyReplicationGroupInput {
 17505  	s.UserGroupIdsToRemove = v
 17506  	return s
 17507  }
 17508  
 17509  type ModifyReplicationGroupOutput struct {
 17510  	_ struct{} `type:"structure"`
 17511  
 17512  	// Contains all of the attributes of a specific Redis replication group.
 17513  	ReplicationGroup *ReplicationGroup `type:"structure"`
 17514  }
 17515  
 17516  // String returns the string representation.
 17517  //
 17518  // API parameter values that are decorated as "sensitive" in the API will not
 17519  // be included in the string output. The member name will be present, but the
 17520  // value will be replaced with "sensitive".
 17521  func (s ModifyReplicationGroupOutput) String() string {
 17522  	return awsutil.Prettify(s)
 17523  }
 17524  
 17525  // GoString returns the string representation.
 17526  //
 17527  // API parameter values that are decorated as "sensitive" in the API will not
 17528  // be included in the string output. The member name will be present, but the
 17529  // value will be replaced with "sensitive".
 17530  func (s ModifyReplicationGroupOutput) GoString() string {
 17531  	return s.String()
 17532  }
 17533  
 17534  // SetReplicationGroup sets the ReplicationGroup field's value.
 17535  func (s *ModifyReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *ModifyReplicationGroupOutput {
 17536  	s.ReplicationGroup = v
 17537  	return s
 17538  }
 17539  
 17540  // Represents the input for a ModifyReplicationGroupShardConfiguration operation.
 17541  type ModifyReplicationGroupShardConfigurationInput struct {
 17542  	_ struct{} `type:"structure"`
 17543  
 17544  	// Indicates that the shard reconfiguration process begins immediately. At present,
 17545  	// the only permitted value for this parameter is true.
 17546  	//
 17547  	// Value: true
 17548  	//
 17549  	// ApplyImmediately is a required field
 17550  	ApplyImmediately *bool `type:"boolean" required:"true"`
 17551  
 17552  	// The number of node groups (shards) that results from the modification of
 17553  	// the shard configuration.
 17554  	//
 17555  	// NodeGroupCount is a required field
 17556  	NodeGroupCount *int64 `type:"integer" required:"true"`
 17557  
 17558  	// If the value of NodeGroupCount is less than the current number of node groups
 17559  	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
 17560  	// NodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster.
 17561  	//
 17562  	// ElastiCache for Redis will attempt to remove all node groups listed by NodeGroupsToRemove
 17563  	// from the cluster.
 17564  	NodeGroupsToRemove []*string `locationNameList:"NodeGroupToRemove" type:"list"`
 17565  
 17566  	// If the value of NodeGroupCount is less than the current number of node groups
 17567  	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
 17568  	// NodeGroupsToRetain is a list of NodeGroupIds to retain in the cluster.
 17569  	//
 17570  	// ElastiCache for Redis will attempt to remove all node groups except those
 17571  	// listed by NodeGroupsToRetain from the cluster.
 17572  	NodeGroupsToRetain []*string `locationNameList:"NodeGroupToRetain" type:"list"`
 17573  
 17574  	// The name of the Redis (cluster mode enabled) cluster (replication group)
 17575  	// on which the shards are to be configured.
 17576  	//
 17577  	// ReplicationGroupId is a required field
 17578  	ReplicationGroupId *string `type:"string" required:"true"`
 17579  
 17580  	// Specifies the preferred availability zones for each node group in the cluster.
 17581  	// If the value of NodeGroupCount is greater than the current number of node
 17582  	// groups (shards), you can use this parameter to specify the preferred availability
 17583  	// zones of the cluster's shards. If you omit this parameter ElastiCache selects
 17584  	// availability zones for you.
 17585  	//
 17586  	// You can specify this parameter only if the value of NodeGroupCount is greater
 17587  	// than the current number of node groups (shards).
 17588  	ReshardingConfiguration []*ReshardingConfiguration `locationNameList:"ReshardingConfiguration" type:"list"`
 17589  }
 17590  
 17591  // String returns the string representation.
 17592  //
 17593  // API parameter values that are decorated as "sensitive" in the API will not
 17594  // be included in the string output. The member name will be present, but the
 17595  // value will be replaced with "sensitive".
 17596  func (s ModifyReplicationGroupShardConfigurationInput) String() string {
 17597  	return awsutil.Prettify(s)
 17598  }
 17599  
 17600  // GoString returns the string representation.
 17601  //
 17602  // API parameter values that are decorated as "sensitive" in the API will not
 17603  // be included in the string output. The member name will be present, but the
 17604  // value will be replaced with "sensitive".
 17605  func (s ModifyReplicationGroupShardConfigurationInput) GoString() string {
 17606  	return s.String()
 17607  }
 17608  
 17609  // Validate inspects the fields of the type to determine if they are valid.
 17610  func (s *ModifyReplicationGroupShardConfigurationInput) Validate() error {
 17611  	invalidParams := request.ErrInvalidParams{Context: "ModifyReplicationGroupShardConfigurationInput"}
 17612  	if s.ApplyImmediately == nil {
 17613  		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
 17614  	}
 17615  	if s.NodeGroupCount == nil {
 17616  		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
 17617  	}
 17618  	if s.ReplicationGroupId == nil {
 17619  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
 17620  	}
 17621  	if s.ReshardingConfiguration != nil {
 17622  		for i, v := range s.ReshardingConfiguration {
 17623  			if v == nil {
 17624  				continue
 17625  			}
 17626  			if err := v.Validate(); err != nil {
 17627  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReshardingConfiguration", i), err.(request.ErrInvalidParams))
 17628  			}
 17629  		}
 17630  	}
 17631  
 17632  	if invalidParams.Len() > 0 {
 17633  		return invalidParams
 17634  	}
 17635  	return nil
 17636  }
 17637  
 17638  // SetApplyImmediately sets the ApplyImmediately field's value.
 17639  func (s *ModifyReplicationGroupShardConfigurationInput) SetApplyImmediately(v bool) *ModifyReplicationGroupShardConfigurationInput {
 17640  	s.ApplyImmediately = &v
 17641  	return s
 17642  }
 17643  
 17644  // SetNodeGroupCount sets the NodeGroupCount field's value.
 17645  func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupCount(v int64) *ModifyReplicationGroupShardConfigurationInput {
 17646  	s.NodeGroupCount = &v
 17647  	return s
 17648  }
 17649  
 17650  // SetNodeGroupsToRemove sets the NodeGroupsToRemove field's value.
 17651  func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupsToRemove(v []*string) *ModifyReplicationGroupShardConfigurationInput {
 17652  	s.NodeGroupsToRemove = v
 17653  	return s
 17654  }
 17655  
 17656  // SetNodeGroupsToRetain sets the NodeGroupsToRetain field's value.
 17657  func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupsToRetain(v []*string) *ModifyReplicationGroupShardConfigurationInput {
 17658  	s.NodeGroupsToRetain = v
 17659  	return s
 17660  }
 17661  
 17662  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 17663  func (s *ModifyReplicationGroupShardConfigurationInput) SetReplicationGroupId(v string) *ModifyReplicationGroupShardConfigurationInput {
 17664  	s.ReplicationGroupId = &v
 17665  	return s
 17666  }
 17667  
 17668  // SetReshardingConfiguration sets the ReshardingConfiguration field's value.
 17669  func (s *ModifyReplicationGroupShardConfigurationInput) SetReshardingConfiguration(v []*ReshardingConfiguration) *ModifyReplicationGroupShardConfigurationInput {
 17670  	s.ReshardingConfiguration = v
 17671  	return s
 17672  }
 17673  
 17674  type ModifyReplicationGroupShardConfigurationOutput struct {
 17675  	_ struct{} `type:"structure"`
 17676  
 17677  	// Contains all of the attributes of a specific Redis replication group.
 17678  	ReplicationGroup *ReplicationGroup `type:"structure"`
 17679  }
 17680  
 17681  // String returns the string representation.
 17682  //
 17683  // API parameter values that are decorated as "sensitive" in the API will not
 17684  // be included in the string output. The member name will be present, but the
 17685  // value will be replaced with "sensitive".
 17686  func (s ModifyReplicationGroupShardConfigurationOutput) String() string {
 17687  	return awsutil.Prettify(s)
 17688  }
 17689  
 17690  // GoString returns the string representation.
 17691  //
 17692  // API parameter values that are decorated as "sensitive" in the API will not
 17693  // be included in the string output. The member name will be present, but the
 17694  // value will be replaced with "sensitive".
 17695  func (s ModifyReplicationGroupShardConfigurationOutput) GoString() string {
 17696  	return s.String()
 17697  }
 17698  
 17699  // SetReplicationGroup sets the ReplicationGroup field's value.
 17700  func (s *ModifyReplicationGroupShardConfigurationOutput) SetReplicationGroup(v *ReplicationGroup) *ModifyReplicationGroupShardConfigurationOutput {
 17701  	s.ReplicationGroup = v
 17702  	return s
 17703  }
 17704  
 17705  type ModifyUserGroupInput struct {
 17706  	_ struct{} `type:"structure"`
 17707  
 17708  	// The ID of the user group.
 17709  	//
 17710  	// UserGroupId is a required field
 17711  	UserGroupId *string `type:"string" required:"true"`
 17712  
 17713  	// The list of user IDs to add to the user group.
 17714  	UserIdsToAdd []*string `min:"1" type:"list"`
 17715  
 17716  	// The list of user IDs to remove from the user group.
 17717  	UserIdsToRemove []*string `min:"1" type:"list"`
 17718  }
 17719  
 17720  // String returns the string representation.
 17721  //
 17722  // API parameter values that are decorated as "sensitive" in the API will not
 17723  // be included in the string output. The member name will be present, but the
 17724  // value will be replaced with "sensitive".
 17725  func (s ModifyUserGroupInput) String() string {
 17726  	return awsutil.Prettify(s)
 17727  }
 17728  
 17729  // GoString returns the string representation.
 17730  //
 17731  // API parameter values that are decorated as "sensitive" in the API will not
 17732  // be included in the string output. The member name will be present, but the
 17733  // value will be replaced with "sensitive".
 17734  func (s ModifyUserGroupInput) GoString() string {
 17735  	return s.String()
 17736  }
 17737  
 17738  // Validate inspects the fields of the type to determine if they are valid.
 17739  func (s *ModifyUserGroupInput) Validate() error {
 17740  	invalidParams := request.ErrInvalidParams{Context: "ModifyUserGroupInput"}
 17741  	if s.UserGroupId == nil {
 17742  		invalidParams.Add(request.NewErrParamRequired("UserGroupId"))
 17743  	}
 17744  	if s.UserIdsToAdd != nil && len(s.UserIdsToAdd) < 1 {
 17745  		invalidParams.Add(request.NewErrParamMinLen("UserIdsToAdd", 1))
 17746  	}
 17747  	if s.UserIdsToRemove != nil && len(s.UserIdsToRemove) < 1 {
 17748  		invalidParams.Add(request.NewErrParamMinLen("UserIdsToRemove", 1))
 17749  	}
 17750  
 17751  	if invalidParams.Len() > 0 {
 17752  		return invalidParams
 17753  	}
 17754  	return nil
 17755  }
 17756  
 17757  // SetUserGroupId sets the UserGroupId field's value.
 17758  func (s *ModifyUserGroupInput) SetUserGroupId(v string) *ModifyUserGroupInput {
 17759  	s.UserGroupId = &v
 17760  	return s
 17761  }
 17762  
 17763  // SetUserIdsToAdd sets the UserIdsToAdd field's value.
 17764  func (s *ModifyUserGroupInput) SetUserIdsToAdd(v []*string) *ModifyUserGroupInput {
 17765  	s.UserIdsToAdd = v
 17766  	return s
 17767  }
 17768  
 17769  // SetUserIdsToRemove sets the UserIdsToRemove field's value.
 17770  func (s *ModifyUserGroupInput) SetUserIdsToRemove(v []*string) *ModifyUserGroupInput {
 17771  	s.UserIdsToRemove = v
 17772  	return s
 17773  }
 17774  
 17775  type ModifyUserGroupOutput struct {
 17776  	_ struct{} `type:"structure"`
 17777  
 17778  	// The Amazon Resource Name (ARN) of the user group.
 17779  	ARN *string `type:"string"`
 17780  
 17781  	// The current supported value is Redis.
 17782  	Engine *string `type:"string"`
 17783  
 17784  	// A list of updates being applied to the user group.
 17785  	PendingChanges *UserGroupPendingChanges `type:"structure"`
 17786  
 17787  	// A list of replication groups that the user group can access.
 17788  	ReplicationGroups []*string `type:"list"`
 17789  
 17790  	// Indicates user group status. Can be "creating", "active", "modifying", "deleting".
 17791  	Status *string `type:"string"`
 17792  
 17793  	// The ID of the user group.
 17794  	UserGroupId *string `type:"string"`
 17795  
 17796  	// The list of user IDs that belong to the user group.
 17797  	UserIds []*string `type:"list"`
 17798  }
 17799  
 17800  // String returns the string representation.
 17801  //
 17802  // API parameter values that are decorated as "sensitive" in the API will not
 17803  // be included in the string output. The member name will be present, but the
 17804  // value will be replaced with "sensitive".
 17805  func (s ModifyUserGroupOutput) String() string {
 17806  	return awsutil.Prettify(s)
 17807  }
 17808  
 17809  // GoString returns the string representation.
 17810  //
 17811  // API parameter values that are decorated as "sensitive" in the API will not
 17812  // be included in the string output. The member name will be present, but the
 17813  // value will be replaced with "sensitive".
 17814  func (s ModifyUserGroupOutput) GoString() string {
 17815  	return s.String()
 17816  }
 17817  
 17818  // SetARN sets the ARN field's value.
 17819  func (s *ModifyUserGroupOutput) SetARN(v string) *ModifyUserGroupOutput {
 17820  	s.ARN = &v
 17821  	return s
 17822  }
 17823  
 17824  // SetEngine sets the Engine field's value.
 17825  func (s *ModifyUserGroupOutput) SetEngine(v string) *ModifyUserGroupOutput {
 17826  	s.Engine = &v
 17827  	return s
 17828  }
 17829  
 17830  // SetPendingChanges sets the PendingChanges field's value.
 17831  func (s *ModifyUserGroupOutput) SetPendingChanges(v *UserGroupPendingChanges) *ModifyUserGroupOutput {
 17832  	s.PendingChanges = v
 17833  	return s
 17834  }
 17835  
 17836  // SetReplicationGroups sets the ReplicationGroups field's value.
 17837  func (s *ModifyUserGroupOutput) SetReplicationGroups(v []*string) *ModifyUserGroupOutput {
 17838  	s.ReplicationGroups = v
 17839  	return s
 17840  }
 17841  
 17842  // SetStatus sets the Status field's value.
 17843  func (s *ModifyUserGroupOutput) SetStatus(v string) *ModifyUserGroupOutput {
 17844  	s.Status = &v
 17845  	return s
 17846  }
 17847  
 17848  // SetUserGroupId sets the UserGroupId field's value.
 17849  func (s *ModifyUserGroupOutput) SetUserGroupId(v string) *ModifyUserGroupOutput {
 17850  	s.UserGroupId = &v
 17851  	return s
 17852  }
 17853  
 17854  // SetUserIds sets the UserIds field's value.
 17855  func (s *ModifyUserGroupOutput) SetUserIds(v []*string) *ModifyUserGroupOutput {
 17856  	s.UserIds = v
 17857  	return s
 17858  }
 17859  
 17860  type ModifyUserInput struct {
 17861  	_ struct{} `type:"structure"`
 17862  
 17863  	// Access permissions string used for this user.
 17864  	AccessString *string `type:"string"`
 17865  
 17866  	// Adds additional user permissions to the access string.
 17867  	AppendAccessString *string `type:"string"`
 17868  
 17869  	// Indicates no password is required for the user.
 17870  	NoPasswordRequired *bool `type:"boolean"`
 17871  
 17872  	// The passwords belonging to the user. You are allowed up to two.
 17873  	Passwords []*string `min:"1" type:"list"`
 17874  
 17875  	// The ID of the user.
 17876  	//
 17877  	// UserId is a required field
 17878  	UserId *string `min:"1" type:"string" required:"true"`
 17879  }
 17880  
 17881  // String returns the string representation.
 17882  //
 17883  // API parameter values that are decorated as "sensitive" in the API will not
 17884  // be included in the string output. The member name will be present, but the
 17885  // value will be replaced with "sensitive".
 17886  func (s ModifyUserInput) String() string {
 17887  	return awsutil.Prettify(s)
 17888  }
 17889  
 17890  // GoString returns the string representation.
 17891  //
 17892  // API parameter values that are decorated as "sensitive" in the API will not
 17893  // be included in the string output. The member name will be present, but the
 17894  // value will be replaced with "sensitive".
 17895  func (s ModifyUserInput) GoString() string {
 17896  	return s.String()
 17897  }
 17898  
 17899  // Validate inspects the fields of the type to determine if they are valid.
 17900  func (s *ModifyUserInput) Validate() error {
 17901  	invalidParams := request.ErrInvalidParams{Context: "ModifyUserInput"}
 17902  	if s.Passwords != nil && len(s.Passwords) < 1 {
 17903  		invalidParams.Add(request.NewErrParamMinLen("Passwords", 1))
 17904  	}
 17905  	if s.UserId == nil {
 17906  		invalidParams.Add(request.NewErrParamRequired("UserId"))
 17907  	}
 17908  	if s.UserId != nil && len(*s.UserId) < 1 {
 17909  		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
 17910  	}
 17911  
 17912  	if invalidParams.Len() > 0 {
 17913  		return invalidParams
 17914  	}
 17915  	return nil
 17916  }
 17917  
 17918  // SetAccessString sets the AccessString field's value.
 17919  func (s *ModifyUserInput) SetAccessString(v string) *ModifyUserInput {
 17920  	s.AccessString = &v
 17921  	return s
 17922  }
 17923  
 17924  // SetAppendAccessString sets the AppendAccessString field's value.
 17925  func (s *ModifyUserInput) SetAppendAccessString(v string) *ModifyUserInput {
 17926  	s.AppendAccessString = &v
 17927  	return s
 17928  }
 17929  
 17930  // SetNoPasswordRequired sets the NoPasswordRequired field's value.
 17931  func (s *ModifyUserInput) SetNoPasswordRequired(v bool) *ModifyUserInput {
 17932  	s.NoPasswordRequired = &v
 17933  	return s
 17934  }
 17935  
 17936  // SetPasswords sets the Passwords field's value.
 17937  func (s *ModifyUserInput) SetPasswords(v []*string) *ModifyUserInput {
 17938  	s.Passwords = v
 17939  	return s
 17940  }
 17941  
 17942  // SetUserId sets the UserId field's value.
 17943  func (s *ModifyUserInput) SetUserId(v string) *ModifyUserInput {
 17944  	s.UserId = &v
 17945  	return s
 17946  }
 17947  
 17948  type ModifyUserOutput struct {
 17949  	_ struct{} `type:"structure"`
 17950  
 17951  	// The Amazon Resource Name (ARN) of the user.
 17952  	ARN *string `type:"string"`
 17953  
 17954  	// Access permissions string used for this user.
 17955  	AccessString *string `type:"string"`
 17956  
 17957  	// Denotes whether the user requires a password to authenticate.
 17958  	Authentication *Authentication `type:"structure"`
 17959  
 17960  	// The current supported value is Redis.
 17961  	Engine *string `type:"string"`
 17962  
 17963  	// Indicates the user status. Can be "active", "modifying" or "deleting".
 17964  	Status *string `type:"string"`
 17965  
 17966  	// Returns a list of the user group IDs the user belongs to.
 17967  	UserGroupIds []*string `type:"list"`
 17968  
 17969  	// The ID of the user.
 17970  	UserId *string `type:"string"`
 17971  
 17972  	// The username of the user.
 17973  	UserName *string `type:"string"`
 17974  }
 17975  
 17976  // String returns the string representation.
 17977  //
 17978  // API parameter values that are decorated as "sensitive" in the API will not
 17979  // be included in the string output. The member name will be present, but the
 17980  // value will be replaced with "sensitive".
 17981  func (s ModifyUserOutput) String() string {
 17982  	return awsutil.Prettify(s)
 17983  }
 17984  
 17985  // GoString returns the string representation.
 17986  //
 17987  // API parameter values that are decorated as "sensitive" in the API will not
 17988  // be included in the string output. The member name will be present, but the
 17989  // value will be replaced with "sensitive".
 17990  func (s ModifyUserOutput) GoString() string {
 17991  	return s.String()
 17992  }
 17993  
 17994  // SetARN sets the ARN field's value.
 17995  func (s *ModifyUserOutput) SetARN(v string) *ModifyUserOutput {
 17996  	s.ARN = &v
 17997  	return s
 17998  }
 17999  
 18000  // SetAccessString sets the AccessString field's value.
 18001  func (s *ModifyUserOutput) SetAccessString(v string) *ModifyUserOutput {
 18002  	s.AccessString = &v
 18003  	return s
 18004  }
 18005  
 18006  // SetAuthentication sets the Authentication field's value.
 18007  func (s *ModifyUserOutput) SetAuthentication(v *Authentication) *ModifyUserOutput {
 18008  	s.Authentication = v
 18009  	return s
 18010  }
 18011  
 18012  // SetEngine sets the Engine field's value.
 18013  func (s *ModifyUserOutput) SetEngine(v string) *ModifyUserOutput {
 18014  	s.Engine = &v
 18015  	return s
 18016  }
 18017  
 18018  // SetStatus sets the Status field's value.
 18019  func (s *ModifyUserOutput) SetStatus(v string) *ModifyUserOutput {
 18020  	s.Status = &v
 18021  	return s
 18022  }
 18023  
 18024  // SetUserGroupIds sets the UserGroupIds field's value.
 18025  func (s *ModifyUserOutput) SetUserGroupIds(v []*string) *ModifyUserOutput {
 18026  	s.UserGroupIds = v
 18027  	return s
 18028  }
 18029  
 18030  // SetUserId sets the UserId field's value.
 18031  func (s *ModifyUserOutput) SetUserId(v string) *ModifyUserOutput {
 18032  	s.UserId = &v
 18033  	return s
 18034  }
 18035  
 18036  // SetUserName sets the UserName field's value.
 18037  func (s *ModifyUserOutput) SetUserName(v string) *ModifyUserOutput {
 18038  	s.UserName = &v
 18039  	return s
 18040  }
 18041  
 18042  // Represents a collection of cache nodes in a replication group. One node in
 18043  // the node group is the read/write primary node. All the other nodes are read-only
 18044  // Replica nodes.
 18045  type NodeGroup struct {
 18046  	_ struct{} `type:"structure"`
 18047  
 18048  	// The identifier for the node group (shard). A Redis (cluster mode disabled)
 18049  	// replication group contains only 1 node group; therefore, the node group ID
 18050  	// is 0001. A Redis (cluster mode enabled) replication group contains 1 to 90
 18051  	// node groups numbered 0001 to 0090. Optionally, the user can provide the id
 18052  	// for a node group.
 18053  	NodeGroupId *string `type:"string"`
 18054  
 18055  	// A list containing information about individual nodes within the node group
 18056  	// (shard).
 18057  	NodeGroupMembers []*NodeGroupMember `locationNameList:"NodeGroupMember" type:"list"`
 18058  
 18059  	// The endpoint of the primary node in this node group (shard).
 18060  	PrimaryEndpoint *Endpoint `type:"structure"`
 18061  
 18062  	// The endpoint of the replica nodes in this node group (shard).
 18063  	ReaderEndpoint *Endpoint `type:"structure"`
 18064  
 18065  	// The keyspace for this node group (shard).
 18066  	Slots *string `type:"string"`
 18067  
 18068  	// The current state of this replication group - creating, available, modifying,
 18069  	// deleting.
 18070  	Status *string `type:"string"`
 18071  }
 18072  
 18073  // String returns the string representation.
 18074  //
 18075  // API parameter values that are decorated as "sensitive" in the API will not
 18076  // be included in the string output. The member name will be present, but the
 18077  // value will be replaced with "sensitive".
 18078  func (s NodeGroup) String() string {
 18079  	return awsutil.Prettify(s)
 18080  }
 18081  
 18082  // GoString returns the string representation.
 18083  //
 18084  // API parameter values that are decorated as "sensitive" in the API will not
 18085  // be included in the string output. The member name will be present, but the
 18086  // value will be replaced with "sensitive".
 18087  func (s NodeGroup) GoString() string {
 18088  	return s.String()
 18089  }
 18090  
 18091  // SetNodeGroupId sets the NodeGroupId field's value.
 18092  func (s *NodeGroup) SetNodeGroupId(v string) *NodeGroup {
 18093  	s.NodeGroupId = &v
 18094  	return s
 18095  }
 18096  
 18097  // SetNodeGroupMembers sets the NodeGroupMembers field's value.
 18098  func (s *NodeGroup) SetNodeGroupMembers(v []*NodeGroupMember) *NodeGroup {
 18099  	s.NodeGroupMembers = v
 18100  	return s
 18101  }
 18102  
 18103  // SetPrimaryEndpoint sets the PrimaryEndpoint field's value.
 18104  func (s *NodeGroup) SetPrimaryEndpoint(v *Endpoint) *NodeGroup {
 18105  	s.PrimaryEndpoint = v
 18106  	return s
 18107  }
 18108  
 18109  // SetReaderEndpoint sets the ReaderEndpoint field's value.
 18110  func (s *NodeGroup) SetReaderEndpoint(v *Endpoint) *NodeGroup {
 18111  	s.ReaderEndpoint = v
 18112  	return s
 18113  }
 18114  
 18115  // SetSlots sets the Slots field's value.
 18116  func (s *NodeGroup) SetSlots(v string) *NodeGroup {
 18117  	s.Slots = &v
 18118  	return s
 18119  }
 18120  
 18121  // SetStatus sets the Status field's value.
 18122  func (s *NodeGroup) SetStatus(v string) *NodeGroup {
 18123  	s.Status = &v
 18124  	return s
 18125  }
 18126  
 18127  // Node group (shard) configuration options. Each node group (shard) configuration
 18128  // has the following: Slots, PrimaryAvailabilityZone, ReplicaAvailabilityZones,
 18129  // ReplicaCount.
 18130  type NodeGroupConfiguration struct {
 18131  	_ struct{} `type:"structure"`
 18132  
 18133  	// Either the ElastiCache for Redis supplied 4-digit id or a user supplied id
 18134  	// for the node group these configuration values apply to.
 18135  	NodeGroupId *string `min:"1" type:"string"`
 18136  
 18137  	// The Availability Zone where the primary node of this node group (shard) is
 18138  	// launched.
 18139  	PrimaryAvailabilityZone *string `type:"string"`
 18140  
 18141  	// The outpost ARN of the primary node.
 18142  	PrimaryOutpostArn *string `type:"string"`
 18143  
 18144  	// A list of Availability Zones to be used for the read replicas. The number
 18145  	// of Availability Zones in this list must match the value of ReplicaCount or
 18146  	// ReplicasPerNodeGroup if not specified.
 18147  	ReplicaAvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`
 18148  
 18149  	// The number of read replica nodes in this node group (shard).
 18150  	ReplicaCount *int64 `type:"integer"`
 18151  
 18152  	// The outpost ARN of the node replicas.
 18153  	ReplicaOutpostArns []*string `locationNameList:"OutpostArn" type:"list"`
 18154  
 18155  	// A string that specifies the keyspace for a particular node group. Keyspaces
 18156  	// range from 0 to 16,383. The string is in the format startkey-endkey.
 18157  	//
 18158  	// Example: "0-3999"
 18159  	Slots *string `type:"string"`
 18160  }
 18161  
 18162  // String returns the string representation.
 18163  //
 18164  // API parameter values that are decorated as "sensitive" in the API will not
 18165  // be included in the string output. The member name will be present, but the
 18166  // value will be replaced with "sensitive".
 18167  func (s NodeGroupConfiguration) String() string {
 18168  	return awsutil.Prettify(s)
 18169  }
 18170  
 18171  // GoString returns the string representation.
 18172  //
 18173  // API parameter values that are decorated as "sensitive" in the API will not
 18174  // be included in the string output. The member name will be present, but the
 18175  // value will be replaced with "sensitive".
 18176  func (s NodeGroupConfiguration) GoString() string {
 18177  	return s.String()
 18178  }
 18179  
 18180  // Validate inspects the fields of the type to determine if they are valid.
 18181  func (s *NodeGroupConfiguration) Validate() error {
 18182  	invalidParams := request.ErrInvalidParams{Context: "NodeGroupConfiguration"}
 18183  	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
 18184  		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
 18185  	}
 18186  
 18187  	if invalidParams.Len() > 0 {
 18188  		return invalidParams
 18189  	}
 18190  	return nil
 18191  }
 18192  
 18193  // SetNodeGroupId sets the NodeGroupId field's value.
 18194  func (s *NodeGroupConfiguration) SetNodeGroupId(v string) *NodeGroupConfiguration {
 18195  	s.NodeGroupId = &v
 18196  	return s
 18197  }
 18198  
 18199  // SetPrimaryAvailabilityZone sets the PrimaryAvailabilityZone field's value.
 18200  func (s *NodeGroupConfiguration) SetPrimaryAvailabilityZone(v string) *NodeGroupConfiguration {
 18201  	s.PrimaryAvailabilityZone = &v
 18202  	return s
 18203  }
 18204  
 18205  // SetPrimaryOutpostArn sets the PrimaryOutpostArn field's value.
 18206  func (s *NodeGroupConfiguration) SetPrimaryOutpostArn(v string) *NodeGroupConfiguration {
 18207  	s.PrimaryOutpostArn = &v
 18208  	return s
 18209  }
 18210  
 18211  // SetReplicaAvailabilityZones sets the ReplicaAvailabilityZones field's value.
 18212  func (s *NodeGroupConfiguration) SetReplicaAvailabilityZones(v []*string) *NodeGroupConfiguration {
 18213  	s.ReplicaAvailabilityZones = v
 18214  	return s
 18215  }
 18216  
 18217  // SetReplicaCount sets the ReplicaCount field's value.
 18218  func (s *NodeGroupConfiguration) SetReplicaCount(v int64) *NodeGroupConfiguration {
 18219  	s.ReplicaCount = &v
 18220  	return s
 18221  }
 18222  
 18223  // SetReplicaOutpostArns sets the ReplicaOutpostArns field's value.
 18224  func (s *NodeGroupConfiguration) SetReplicaOutpostArns(v []*string) *NodeGroupConfiguration {
 18225  	s.ReplicaOutpostArns = v
 18226  	return s
 18227  }
 18228  
 18229  // SetSlots sets the Slots field's value.
 18230  func (s *NodeGroupConfiguration) SetSlots(v string) *NodeGroupConfiguration {
 18231  	s.Slots = &v
 18232  	return s
 18233  }
 18234  
 18235  // Represents a single node within a node group (shard).
 18236  type NodeGroupMember struct {
 18237  	_ struct{} `type:"structure"`
 18238  
 18239  	// The ID of the cluster to which the node belongs.
 18240  	CacheClusterId *string `type:"string"`
 18241  
 18242  	// The ID of the node within its cluster. A node ID is a numeric identifier
 18243  	// (0001, 0002, etc.).
 18244  	CacheNodeId *string `type:"string"`
 18245  
 18246  	// The role that is currently assigned to the node - primary or replica. This
 18247  	// member is only applicable for Redis (cluster mode disabled) replication groups.
 18248  	CurrentRole *string `type:"string"`
 18249  
 18250  	// The name of the Availability Zone in which the node is located.
 18251  	PreferredAvailabilityZone *string `type:"string"`
 18252  
 18253  	// The outpost ARN of the node group member.
 18254  	PreferredOutpostArn *string `type:"string"`
 18255  
 18256  	// The information required for client programs to connect to a node for read
 18257  	// operations. The read endpoint is only applicable on Redis (cluster mode disabled)
 18258  	// clusters.
 18259  	ReadEndpoint *Endpoint `type:"structure"`
 18260  }
 18261  
 18262  // String returns the string representation.
 18263  //
 18264  // API parameter values that are decorated as "sensitive" in the API will not
 18265  // be included in the string output. The member name will be present, but the
 18266  // value will be replaced with "sensitive".
 18267  func (s NodeGroupMember) String() string {
 18268  	return awsutil.Prettify(s)
 18269  }
 18270  
 18271  // GoString returns the string representation.
 18272  //
 18273  // API parameter values that are decorated as "sensitive" in the API will not
 18274  // be included in the string output. The member name will be present, but the
 18275  // value will be replaced with "sensitive".
 18276  func (s NodeGroupMember) GoString() string {
 18277  	return s.String()
 18278  }
 18279  
 18280  // SetCacheClusterId sets the CacheClusterId field's value.
 18281  func (s *NodeGroupMember) SetCacheClusterId(v string) *NodeGroupMember {
 18282  	s.CacheClusterId = &v
 18283  	return s
 18284  }
 18285  
 18286  // SetCacheNodeId sets the CacheNodeId field's value.
 18287  func (s *NodeGroupMember) SetCacheNodeId(v string) *NodeGroupMember {
 18288  	s.CacheNodeId = &v
 18289  	return s
 18290  }
 18291  
 18292  // SetCurrentRole sets the CurrentRole field's value.
 18293  func (s *NodeGroupMember) SetCurrentRole(v string) *NodeGroupMember {
 18294  	s.CurrentRole = &v
 18295  	return s
 18296  }
 18297  
 18298  // SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
 18299  func (s *NodeGroupMember) SetPreferredAvailabilityZone(v string) *NodeGroupMember {
 18300  	s.PreferredAvailabilityZone = &v
 18301  	return s
 18302  }
 18303  
 18304  // SetPreferredOutpostArn sets the PreferredOutpostArn field's value.
 18305  func (s *NodeGroupMember) SetPreferredOutpostArn(v string) *NodeGroupMember {
 18306  	s.PreferredOutpostArn = &v
 18307  	return s
 18308  }
 18309  
 18310  // SetReadEndpoint sets the ReadEndpoint field's value.
 18311  func (s *NodeGroupMember) SetReadEndpoint(v *Endpoint) *NodeGroupMember {
 18312  	s.ReadEndpoint = v
 18313  	return s
 18314  }
 18315  
 18316  // The status of the service update on the node group member
 18317  type NodeGroupMemberUpdateStatus struct {
 18318  	_ struct{} `type:"structure"`
 18319  
 18320  	// The cache cluster ID
 18321  	CacheClusterId *string `type:"string"`
 18322  
 18323  	// The node ID of the cache cluster
 18324  	CacheNodeId *string `type:"string"`
 18325  
 18326  	// The deletion date of the node
 18327  	NodeDeletionDate *time.Time `type:"timestamp"`
 18328  
 18329  	// The end date of the update for a node
 18330  	NodeUpdateEndDate *time.Time `type:"timestamp"`
 18331  
 18332  	// Reflects whether the update was initiated by the customer or automatically
 18333  	// applied
 18334  	NodeUpdateInitiatedBy *string `type:"string" enum:"NodeUpdateInitiatedBy"`
 18335  
 18336  	// The date when the update is triggered
 18337  	NodeUpdateInitiatedDate *time.Time `type:"timestamp"`
 18338  
 18339  	// The start date of the update for a node
 18340  	NodeUpdateStartDate *time.Time `type:"timestamp"`
 18341  
 18342  	// The update status of the node
 18343  	NodeUpdateStatus *string `type:"string" enum:"NodeUpdateStatus"`
 18344  
 18345  	// The date when the NodeUpdateStatus was last modified
 18346  	NodeUpdateStatusModifiedDate *time.Time `type:"timestamp"`
 18347  }
 18348  
 18349  // String returns the string representation.
 18350  //
 18351  // API parameter values that are decorated as "sensitive" in the API will not
 18352  // be included in the string output. The member name will be present, but the
 18353  // value will be replaced with "sensitive".
 18354  func (s NodeGroupMemberUpdateStatus) String() string {
 18355  	return awsutil.Prettify(s)
 18356  }
 18357  
 18358  // GoString returns the string representation.
 18359  //
 18360  // API parameter values that are decorated as "sensitive" in the API will not
 18361  // be included in the string output. The member name will be present, but the
 18362  // value will be replaced with "sensitive".
 18363  func (s NodeGroupMemberUpdateStatus) GoString() string {
 18364  	return s.String()
 18365  }
 18366  
 18367  // SetCacheClusterId sets the CacheClusterId field's value.
 18368  func (s *NodeGroupMemberUpdateStatus) SetCacheClusterId(v string) *NodeGroupMemberUpdateStatus {
 18369  	s.CacheClusterId = &v
 18370  	return s
 18371  }
 18372  
 18373  // SetCacheNodeId sets the CacheNodeId field's value.
 18374  func (s *NodeGroupMemberUpdateStatus) SetCacheNodeId(v string) *NodeGroupMemberUpdateStatus {
 18375  	s.CacheNodeId = &v
 18376  	return s
 18377  }
 18378  
 18379  // SetNodeDeletionDate sets the NodeDeletionDate field's value.
 18380  func (s *NodeGroupMemberUpdateStatus) SetNodeDeletionDate(v time.Time) *NodeGroupMemberUpdateStatus {
 18381  	s.NodeDeletionDate = &v
 18382  	return s
 18383  }
 18384  
 18385  // SetNodeUpdateEndDate sets the NodeUpdateEndDate field's value.
 18386  func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateEndDate(v time.Time) *NodeGroupMemberUpdateStatus {
 18387  	s.NodeUpdateEndDate = &v
 18388  	return s
 18389  }
 18390  
 18391  // SetNodeUpdateInitiatedBy sets the NodeUpdateInitiatedBy field's value.
 18392  func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateInitiatedBy(v string) *NodeGroupMemberUpdateStatus {
 18393  	s.NodeUpdateInitiatedBy = &v
 18394  	return s
 18395  }
 18396  
 18397  // SetNodeUpdateInitiatedDate sets the NodeUpdateInitiatedDate field's value.
 18398  func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateInitiatedDate(v time.Time) *NodeGroupMemberUpdateStatus {
 18399  	s.NodeUpdateInitiatedDate = &v
 18400  	return s
 18401  }
 18402  
 18403  // SetNodeUpdateStartDate sets the NodeUpdateStartDate field's value.
 18404  func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStartDate(v time.Time) *NodeGroupMemberUpdateStatus {
 18405  	s.NodeUpdateStartDate = &v
 18406  	return s
 18407  }
 18408  
 18409  // SetNodeUpdateStatus sets the NodeUpdateStatus field's value.
 18410  func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStatus(v string) *NodeGroupMemberUpdateStatus {
 18411  	s.NodeUpdateStatus = &v
 18412  	return s
 18413  }
 18414  
 18415  // SetNodeUpdateStatusModifiedDate sets the NodeUpdateStatusModifiedDate field's value.
 18416  func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStatusModifiedDate(v time.Time) *NodeGroupMemberUpdateStatus {
 18417  	s.NodeUpdateStatusModifiedDate = &v
 18418  	return s
 18419  }
 18420  
 18421  // The status of the service update on the node group
 18422  type NodeGroupUpdateStatus struct {
 18423  	_ struct{} `type:"structure"`
 18424  
 18425  	// The ID of the node group
 18426  	NodeGroupId *string `type:"string"`
 18427  
 18428  	// The status of the service update on the node group member
 18429  	NodeGroupMemberUpdateStatus []*NodeGroupMemberUpdateStatus `locationNameList:"NodeGroupMemberUpdateStatus" type:"list"`
 18430  }
 18431  
 18432  // String returns the string representation.
 18433  //
 18434  // API parameter values that are decorated as "sensitive" in the API will not
 18435  // be included in the string output. The member name will be present, but the
 18436  // value will be replaced with "sensitive".
 18437  func (s NodeGroupUpdateStatus) String() string {
 18438  	return awsutil.Prettify(s)
 18439  }
 18440  
 18441  // GoString returns the string representation.
 18442  //
 18443  // API parameter values that are decorated as "sensitive" in the API will not
 18444  // be included in the string output. The member name will be present, but the
 18445  // value will be replaced with "sensitive".
 18446  func (s NodeGroupUpdateStatus) GoString() string {
 18447  	return s.String()
 18448  }
 18449  
 18450  // SetNodeGroupId sets the NodeGroupId field's value.
 18451  func (s *NodeGroupUpdateStatus) SetNodeGroupId(v string) *NodeGroupUpdateStatus {
 18452  	s.NodeGroupId = &v
 18453  	return s
 18454  }
 18455  
 18456  // SetNodeGroupMemberUpdateStatus sets the NodeGroupMemberUpdateStatus field's value.
 18457  func (s *NodeGroupUpdateStatus) SetNodeGroupMemberUpdateStatus(v []*NodeGroupMemberUpdateStatus) *NodeGroupUpdateStatus {
 18458  	s.NodeGroupMemberUpdateStatus = v
 18459  	return s
 18460  }
 18461  
 18462  // Represents an individual cache node in a snapshot of a cluster.
 18463  type NodeSnapshot struct {
 18464  	_ struct{} `type:"structure"`
 18465  
 18466  	// A unique identifier for the source cluster.
 18467  	CacheClusterId *string `type:"string"`
 18468  
 18469  	// The date and time when the cache node was created in the source cluster.
 18470  	CacheNodeCreateTime *time.Time `type:"timestamp"`
 18471  
 18472  	// The cache node identifier for the node in the source cluster.
 18473  	CacheNodeId *string `type:"string"`
 18474  
 18475  	// The size of the cache on the source cache node.
 18476  	CacheSize *string `type:"string"`
 18477  
 18478  	// The configuration for the source node group (shard).
 18479  	NodeGroupConfiguration *NodeGroupConfiguration `type:"structure"`
 18480  
 18481  	// A unique identifier for the source node group (shard).
 18482  	NodeGroupId *string `type:"string"`
 18483  
 18484  	// The date and time when the source node's metadata and cache data set was
 18485  	// obtained for the snapshot.
 18486  	SnapshotCreateTime *time.Time `type:"timestamp"`
 18487  }
 18488  
 18489  // String returns the string representation.
 18490  //
 18491  // API parameter values that are decorated as "sensitive" in the API will not
 18492  // be included in the string output. The member name will be present, but the
 18493  // value will be replaced with "sensitive".
 18494  func (s NodeSnapshot) String() string {
 18495  	return awsutil.Prettify(s)
 18496  }
 18497  
 18498  // GoString returns the string representation.
 18499  //
 18500  // API parameter values that are decorated as "sensitive" in the API will not
 18501  // be included in the string output. The member name will be present, but the
 18502  // value will be replaced with "sensitive".
 18503  func (s NodeSnapshot) GoString() string {
 18504  	return s.String()
 18505  }
 18506  
 18507  // SetCacheClusterId sets the CacheClusterId field's value.
 18508  func (s *NodeSnapshot) SetCacheClusterId(v string) *NodeSnapshot {
 18509  	s.CacheClusterId = &v
 18510  	return s
 18511  }
 18512  
 18513  // SetCacheNodeCreateTime sets the CacheNodeCreateTime field's value.
 18514  func (s *NodeSnapshot) SetCacheNodeCreateTime(v time.Time) *NodeSnapshot {
 18515  	s.CacheNodeCreateTime = &v
 18516  	return s
 18517  }
 18518  
 18519  // SetCacheNodeId sets the CacheNodeId field's value.
 18520  func (s *NodeSnapshot) SetCacheNodeId(v string) *NodeSnapshot {
 18521  	s.CacheNodeId = &v
 18522  	return s
 18523  }
 18524  
 18525  // SetCacheSize sets the CacheSize field's value.
 18526  func (s *NodeSnapshot) SetCacheSize(v string) *NodeSnapshot {
 18527  	s.CacheSize = &v
 18528  	return s
 18529  }
 18530  
 18531  // SetNodeGroupConfiguration sets the NodeGroupConfiguration field's value.
 18532  func (s *NodeSnapshot) SetNodeGroupConfiguration(v *NodeGroupConfiguration) *NodeSnapshot {
 18533  	s.NodeGroupConfiguration = v
 18534  	return s
 18535  }
 18536  
 18537  // SetNodeGroupId sets the NodeGroupId field's value.
 18538  func (s *NodeSnapshot) SetNodeGroupId(v string) *NodeSnapshot {
 18539  	s.NodeGroupId = &v
 18540  	return s
 18541  }
 18542  
 18543  // SetSnapshotCreateTime sets the SnapshotCreateTime field's value.
 18544  func (s *NodeSnapshot) SetSnapshotCreateTime(v time.Time) *NodeSnapshot {
 18545  	s.SnapshotCreateTime = &v
 18546  	return s
 18547  }
 18548  
 18549  // Describes a notification topic and its status. Notification topics are used
 18550  // for publishing ElastiCache events to subscribers using Amazon Simple Notification
 18551  // Service (SNS).
 18552  type NotificationConfiguration struct {
 18553  	_ struct{} `type:"structure"`
 18554  
 18555  	// The Amazon Resource Name (ARN) that identifies the topic.
 18556  	TopicArn *string `type:"string"`
 18557  
 18558  	// The current state of the topic.
 18559  	TopicStatus *string `type:"string"`
 18560  }
 18561  
 18562  // String returns the string representation.
 18563  //
 18564  // API parameter values that are decorated as "sensitive" in the API will not
 18565  // be included in the string output. The member name will be present, but the
 18566  // value will be replaced with "sensitive".
 18567  func (s NotificationConfiguration) String() string {
 18568  	return awsutil.Prettify(s)
 18569  }
 18570  
 18571  // GoString returns the string representation.
 18572  //
 18573  // API parameter values that are decorated as "sensitive" in the API will not
 18574  // be included in the string output. The member name will be present, but the
 18575  // value will be replaced with "sensitive".
 18576  func (s NotificationConfiguration) GoString() string {
 18577  	return s.String()
 18578  }
 18579  
 18580  // SetTopicArn sets the TopicArn field's value.
 18581  func (s *NotificationConfiguration) SetTopicArn(v string) *NotificationConfiguration {
 18582  	s.TopicArn = &v
 18583  	return s
 18584  }
 18585  
 18586  // SetTopicStatus sets the TopicStatus field's value.
 18587  func (s *NotificationConfiguration) SetTopicStatus(v string) *NotificationConfiguration {
 18588  	s.TopicStatus = &v
 18589  	return s
 18590  }
 18591  
 18592  // Describes an individual setting that controls some aspect of ElastiCache
 18593  // behavior.
 18594  type Parameter struct {
 18595  	_ struct{} `type:"structure"`
 18596  
 18597  	// The valid range of values for the parameter.
 18598  	AllowedValues *string `type:"string"`
 18599  
 18600  	// Indicates whether a change to the parameter is applied immediately or requires
 18601  	// a reboot for the change to be applied. You can force a reboot or wait until
 18602  	// the next maintenance window's reboot. For more information, see Rebooting
 18603  	// a Cluster (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html).
 18604  	ChangeType *string `type:"string" enum:"ChangeType"`
 18605  
 18606  	// The valid data type for the parameter.
 18607  	DataType *string `type:"string"`
 18608  
 18609  	// A description of the parameter.
 18610  	Description *string `type:"string"`
 18611  
 18612  	// Indicates whether (true) or not (false) the parameter can be modified. Some
 18613  	// parameters have security or operational implications that prevent them from
 18614  	// being changed.
 18615  	IsModifiable *bool `type:"boolean"`
 18616  
 18617  	// The earliest cache engine version to which the parameter can apply.
 18618  	MinimumEngineVersion *string `type:"string"`
 18619  
 18620  	// The name of the parameter.
 18621  	ParameterName *string `type:"string"`
 18622  
 18623  	// The value of the parameter.
 18624  	ParameterValue *string `type:"string"`
 18625  
 18626  	// The source of the parameter.
 18627  	Source *string `type:"string"`
 18628  }
 18629  
 18630  // String returns the string representation.
 18631  //
 18632  // API parameter values that are decorated as "sensitive" in the API will not
 18633  // be included in the string output. The member name will be present, but the
 18634  // value will be replaced with "sensitive".
 18635  func (s Parameter) String() string {
 18636  	return awsutil.Prettify(s)
 18637  }
 18638  
 18639  // GoString returns the string representation.
 18640  //
 18641  // API parameter values that are decorated as "sensitive" in the API will not
 18642  // be included in the string output. The member name will be present, but the
 18643  // value will be replaced with "sensitive".
 18644  func (s Parameter) GoString() string {
 18645  	return s.String()
 18646  }
 18647  
 18648  // SetAllowedValues sets the AllowedValues field's value.
 18649  func (s *Parameter) SetAllowedValues(v string) *Parameter {
 18650  	s.AllowedValues = &v
 18651  	return s
 18652  }
 18653  
 18654  // SetChangeType sets the ChangeType field's value.
 18655  func (s *Parameter) SetChangeType(v string) *Parameter {
 18656  	s.ChangeType = &v
 18657  	return s
 18658  }
 18659  
 18660  // SetDataType sets the DataType field's value.
 18661  func (s *Parameter) SetDataType(v string) *Parameter {
 18662  	s.DataType = &v
 18663  	return s
 18664  }
 18665  
 18666  // SetDescription sets the Description field's value.
 18667  func (s *Parameter) SetDescription(v string) *Parameter {
 18668  	s.Description = &v
 18669  	return s
 18670  }
 18671  
 18672  // SetIsModifiable sets the IsModifiable field's value.
 18673  func (s *Parameter) SetIsModifiable(v bool) *Parameter {
 18674  	s.IsModifiable = &v
 18675  	return s
 18676  }
 18677  
 18678  // SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
 18679  func (s *Parameter) SetMinimumEngineVersion(v string) *Parameter {
 18680  	s.MinimumEngineVersion = &v
 18681  	return s
 18682  }
 18683  
 18684  // SetParameterName sets the ParameterName field's value.
 18685  func (s *Parameter) SetParameterName(v string) *Parameter {
 18686  	s.ParameterName = &v
 18687  	return s
 18688  }
 18689  
 18690  // SetParameterValue sets the ParameterValue field's value.
 18691  func (s *Parameter) SetParameterValue(v string) *Parameter {
 18692  	s.ParameterValue = &v
 18693  	return s
 18694  }
 18695  
 18696  // SetSource sets the Source field's value.
 18697  func (s *Parameter) SetSource(v string) *Parameter {
 18698  	s.Source = &v
 18699  	return s
 18700  }
 18701  
 18702  // Describes a name-value pair that is used to update the value of a parameter.
 18703  type ParameterNameValue struct {
 18704  	_ struct{} `type:"structure"`
 18705  
 18706  	// The name of the parameter.
 18707  	ParameterName *string `type:"string"`
 18708  
 18709  	// The value of the parameter.
 18710  	ParameterValue *string `type:"string"`
 18711  }
 18712  
 18713  // String returns the string representation.
 18714  //
 18715  // API parameter values that are decorated as "sensitive" in the API will not
 18716  // be included in the string output. The member name will be present, but the
 18717  // value will be replaced with "sensitive".
 18718  func (s ParameterNameValue) String() string {
 18719  	return awsutil.Prettify(s)
 18720  }
 18721  
 18722  // GoString returns the string representation.
 18723  //
 18724  // API parameter values that are decorated as "sensitive" in the API will not
 18725  // be included in the string output. The member name will be present, but the
 18726  // value will be replaced with "sensitive".
 18727  func (s ParameterNameValue) GoString() string {
 18728  	return s.String()
 18729  }
 18730  
 18731  // SetParameterName sets the ParameterName field's value.
 18732  func (s *ParameterNameValue) SetParameterName(v string) *ParameterNameValue {
 18733  	s.ParameterName = &v
 18734  	return s
 18735  }
 18736  
 18737  // SetParameterValue sets the ParameterValue field's value.
 18738  func (s *ParameterNameValue) SetParameterValue(v string) *ParameterNameValue {
 18739  	s.ParameterValue = &v
 18740  	return s
 18741  }
 18742  
 18743  // The log delivery configurations being modified
 18744  type PendingLogDeliveryConfiguration struct {
 18745  	_ struct{} `type:"structure"`
 18746  
 18747  	// Configuration details of either a CloudWatch Logs destination or Kinesis
 18748  	// Data Firehose destination.
 18749  	DestinationDetails *DestinationDetails `type:"structure"`
 18750  
 18751  	// Returns the destination type, either CloudWatch Logs or Kinesis Data Firehose.
 18752  	DestinationType *string `type:"string" enum:"DestinationType"`
 18753  
 18754  	// Returns the log format, either JSON or TEXT
 18755  	LogFormat *string `type:"string" enum:"LogFormat"`
 18756  
 18757  	// Refers to slow-log (https://redis.io/commands/slowlog).
 18758  	LogType *string `type:"string" enum:"LogType"`
 18759  }
 18760  
 18761  // String returns the string representation.
 18762  //
 18763  // API parameter values that are decorated as "sensitive" in the API will not
 18764  // be included in the string output. The member name will be present, but the
 18765  // value will be replaced with "sensitive".
 18766  func (s PendingLogDeliveryConfiguration) String() string {
 18767  	return awsutil.Prettify(s)
 18768  }
 18769  
 18770  // GoString returns the string representation.
 18771  //
 18772  // API parameter values that are decorated as "sensitive" in the API will not
 18773  // be included in the string output. The member name will be present, but the
 18774  // value will be replaced with "sensitive".
 18775  func (s PendingLogDeliveryConfiguration) GoString() string {
 18776  	return s.String()
 18777  }
 18778  
 18779  // SetDestinationDetails sets the DestinationDetails field's value.
 18780  func (s *PendingLogDeliveryConfiguration) SetDestinationDetails(v *DestinationDetails) *PendingLogDeliveryConfiguration {
 18781  	s.DestinationDetails = v
 18782  	return s
 18783  }
 18784  
 18785  // SetDestinationType sets the DestinationType field's value.
 18786  func (s *PendingLogDeliveryConfiguration) SetDestinationType(v string) *PendingLogDeliveryConfiguration {
 18787  	s.DestinationType = &v
 18788  	return s
 18789  }
 18790  
 18791  // SetLogFormat sets the LogFormat field's value.
 18792  func (s *PendingLogDeliveryConfiguration) SetLogFormat(v string) *PendingLogDeliveryConfiguration {
 18793  	s.LogFormat = &v
 18794  	return s
 18795  }
 18796  
 18797  // SetLogType sets the LogType field's value.
 18798  func (s *PendingLogDeliveryConfiguration) SetLogType(v string) *PendingLogDeliveryConfiguration {
 18799  	s.LogType = &v
 18800  	return s
 18801  }
 18802  
 18803  // A group of settings that are applied to the cluster in the future, or that
 18804  // are currently being applied.
 18805  type PendingModifiedValues struct {
 18806  	_ struct{} `type:"structure"`
 18807  
 18808  	// The auth token status
 18809  	AuthTokenStatus *string `type:"string" enum:"AuthTokenUpdateStatus"`
 18810  
 18811  	// A list of cache node IDs that are being removed (or will be removed) from
 18812  	// the cluster. A node ID is a 4-digit numeric identifier (0001, 0002, etc.).
 18813  	CacheNodeIdsToRemove []*string `locationNameList:"CacheNodeId" type:"list"`
 18814  
 18815  	// The cache node type that this cluster or replication group is scaled to.
 18816  	CacheNodeType *string `type:"string"`
 18817  
 18818  	// The new cache engine version that the cluster runs.
 18819  	EngineVersion *string `type:"string"`
 18820  
 18821  	// The log delivery configurations being modified
 18822  	LogDeliveryConfigurations []*PendingLogDeliveryConfiguration `locationName:"PendingLogDeliveryConfiguration" type:"list"`
 18823  
 18824  	// The new number of cache nodes for the cluster.
 18825  	//
 18826  	// For clusters running Redis, this value must be 1. For clusters running Memcached,
 18827  	// this value must be between 1 and 40.
 18828  	NumCacheNodes *int64 `type:"integer"`
 18829  }
 18830  
 18831  // String returns the string representation.
 18832  //
 18833  // API parameter values that are decorated as "sensitive" in the API will not
 18834  // be included in the string output. The member name will be present, but the
 18835  // value will be replaced with "sensitive".
 18836  func (s PendingModifiedValues) String() string {
 18837  	return awsutil.Prettify(s)
 18838  }
 18839  
 18840  // GoString returns the string representation.
 18841  //
 18842  // API parameter values that are decorated as "sensitive" in the API will not
 18843  // be included in the string output. The member name will be present, but the
 18844  // value will be replaced with "sensitive".
 18845  func (s PendingModifiedValues) GoString() string {
 18846  	return s.String()
 18847  }
 18848  
 18849  // SetAuthTokenStatus sets the AuthTokenStatus field's value.
 18850  func (s *PendingModifiedValues) SetAuthTokenStatus(v string) *PendingModifiedValues {
 18851  	s.AuthTokenStatus = &v
 18852  	return s
 18853  }
 18854  
 18855  // SetCacheNodeIdsToRemove sets the CacheNodeIdsToRemove field's value.
 18856  func (s *PendingModifiedValues) SetCacheNodeIdsToRemove(v []*string) *PendingModifiedValues {
 18857  	s.CacheNodeIdsToRemove = v
 18858  	return s
 18859  }
 18860  
 18861  // SetCacheNodeType sets the CacheNodeType field's value.
 18862  func (s *PendingModifiedValues) SetCacheNodeType(v string) *PendingModifiedValues {
 18863  	s.CacheNodeType = &v
 18864  	return s
 18865  }
 18866  
 18867  // SetEngineVersion sets the EngineVersion field's value.
 18868  func (s *PendingModifiedValues) SetEngineVersion(v string) *PendingModifiedValues {
 18869  	s.EngineVersion = &v
 18870  	return s
 18871  }
 18872  
 18873  // SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
 18874  func (s *PendingModifiedValues) SetLogDeliveryConfigurations(v []*PendingLogDeliveryConfiguration) *PendingModifiedValues {
 18875  	s.LogDeliveryConfigurations = v
 18876  	return s
 18877  }
 18878  
 18879  // SetNumCacheNodes sets the NumCacheNodes field's value.
 18880  func (s *PendingModifiedValues) SetNumCacheNodes(v int64) *PendingModifiedValues {
 18881  	s.NumCacheNodes = &v
 18882  	return s
 18883  }
 18884  
 18885  // Update action that has been processed for the corresponding apply/stop request
 18886  type ProcessedUpdateAction struct {
 18887  	_ struct{} `type:"structure"`
 18888  
 18889  	// The ID of the cache cluster
 18890  	CacheClusterId *string `type:"string"`
 18891  
 18892  	// The ID of the replication group
 18893  	ReplicationGroupId *string `type:"string"`
 18894  
 18895  	// The unique ID of the service update
 18896  	ServiceUpdateName *string `type:"string"`
 18897  
 18898  	// The status of the update action on the Redis cluster
 18899  	UpdateActionStatus *string `type:"string" enum:"UpdateActionStatus"`
 18900  }
 18901  
 18902  // String returns the string representation.
 18903  //
 18904  // API parameter values that are decorated as "sensitive" in the API will not
 18905  // be included in the string output. The member name will be present, but the
 18906  // value will be replaced with "sensitive".
 18907  func (s ProcessedUpdateAction) String() string {
 18908  	return awsutil.Prettify(s)
 18909  }
 18910  
 18911  // GoString returns the string representation.
 18912  //
 18913  // API parameter values that are decorated as "sensitive" in the API will not
 18914  // be included in the string output. The member name will be present, but the
 18915  // value will be replaced with "sensitive".
 18916  func (s ProcessedUpdateAction) GoString() string {
 18917  	return s.String()
 18918  }
 18919  
 18920  // SetCacheClusterId sets the CacheClusterId field's value.
 18921  func (s *ProcessedUpdateAction) SetCacheClusterId(v string) *ProcessedUpdateAction {
 18922  	s.CacheClusterId = &v
 18923  	return s
 18924  }
 18925  
 18926  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 18927  func (s *ProcessedUpdateAction) SetReplicationGroupId(v string) *ProcessedUpdateAction {
 18928  	s.ReplicationGroupId = &v
 18929  	return s
 18930  }
 18931  
 18932  // SetServiceUpdateName sets the ServiceUpdateName field's value.
 18933  func (s *ProcessedUpdateAction) SetServiceUpdateName(v string) *ProcessedUpdateAction {
 18934  	s.ServiceUpdateName = &v
 18935  	return s
 18936  }
 18937  
 18938  // SetUpdateActionStatus sets the UpdateActionStatus field's value.
 18939  func (s *ProcessedUpdateAction) SetUpdateActionStatus(v string) *ProcessedUpdateAction {
 18940  	s.UpdateActionStatus = &v
 18941  	return s
 18942  }
 18943  
 18944  // Represents the input of a PurchaseReservedCacheNodesOffering operation.
 18945  type PurchaseReservedCacheNodesOfferingInput struct {
 18946  	_ struct{} `type:"structure"`
 18947  
 18948  	// The number of cache node instances to reserve.
 18949  	//
 18950  	// Default: 1
 18951  	CacheNodeCount *int64 `type:"integer"`
 18952  
 18953  	// A customer-specified identifier to track this reservation.
 18954  	//
 18955  	// The Reserved Cache Node ID is an unique customer-specified identifier to
 18956  	// track this reservation. If this parameter is not specified, ElastiCache automatically
 18957  	// generates an identifier for the reservation.
 18958  	//
 18959  	// Example: myreservationID
 18960  	ReservedCacheNodeId *string `type:"string"`
 18961  
 18962  	// The ID of the reserved cache node offering to purchase.
 18963  	//
 18964  	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
 18965  	//
 18966  	// ReservedCacheNodesOfferingId is a required field
 18967  	ReservedCacheNodesOfferingId *string `type:"string" required:"true"`
 18968  
 18969  	// A list of tags to be added to this resource. A tag is a key-value pair. A
 18970  	// tag key must be accompanied by a tag value, although null is accepted.
 18971  	Tags []*Tag `locationNameList:"Tag" type:"list"`
 18972  }
 18973  
 18974  // String returns the string representation.
 18975  //
 18976  // API parameter values that are decorated as "sensitive" in the API will not
 18977  // be included in the string output. The member name will be present, but the
 18978  // value will be replaced with "sensitive".
 18979  func (s PurchaseReservedCacheNodesOfferingInput) String() string {
 18980  	return awsutil.Prettify(s)
 18981  }
 18982  
 18983  // GoString returns the string representation.
 18984  //
 18985  // API parameter values that are decorated as "sensitive" in the API will not
 18986  // be included in the string output. The member name will be present, but the
 18987  // value will be replaced with "sensitive".
 18988  func (s PurchaseReservedCacheNodesOfferingInput) GoString() string {
 18989  	return s.String()
 18990  }
 18991  
 18992  // Validate inspects the fields of the type to determine if they are valid.
 18993  func (s *PurchaseReservedCacheNodesOfferingInput) Validate() error {
 18994  	invalidParams := request.ErrInvalidParams{Context: "PurchaseReservedCacheNodesOfferingInput"}
 18995  	if s.ReservedCacheNodesOfferingId == nil {
 18996  		invalidParams.Add(request.NewErrParamRequired("ReservedCacheNodesOfferingId"))
 18997  	}
 18998  
 18999  	if invalidParams.Len() > 0 {
 19000  		return invalidParams
 19001  	}
 19002  	return nil
 19003  }
 19004  
 19005  // SetCacheNodeCount sets the CacheNodeCount field's value.
 19006  func (s *PurchaseReservedCacheNodesOfferingInput) SetCacheNodeCount(v int64) *PurchaseReservedCacheNodesOfferingInput {
 19007  	s.CacheNodeCount = &v
 19008  	return s
 19009  }
 19010  
 19011  // SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
 19012  func (s *PurchaseReservedCacheNodesOfferingInput) SetReservedCacheNodeId(v string) *PurchaseReservedCacheNodesOfferingInput {
 19013  	s.ReservedCacheNodeId = &v
 19014  	return s
 19015  }
 19016  
 19017  // SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
 19018  func (s *PurchaseReservedCacheNodesOfferingInput) SetReservedCacheNodesOfferingId(v string) *PurchaseReservedCacheNodesOfferingInput {
 19019  	s.ReservedCacheNodesOfferingId = &v
 19020  	return s
 19021  }
 19022  
 19023  // SetTags sets the Tags field's value.
 19024  func (s *PurchaseReservedCacheNodesOfferingInput) SetTags(v []*Tag) *PurchaseReservedCacheNodesOfferingInput {
 19025  	s.Tags = v
 19026  	return s
 19027  }
 19028  
 19029  type PurchaseReservedCacheNodesOfferingOutput struct {
 19030  	_ struct{} `type:"structure"`
 19031  
 19032  	// Represents the output of a PurchaseReservedCacheNodesOffering operation.
 19033  	ReservedCacheNode *ReservedCacheNode `type:"structure"`
 19034  }
 19035  
 19036  // String returns the string representation.
 19037  //
 19038  // API parameter values that are decorated as "sensitive" in the API will not
 19039  // be included in the string output. The member name will be present, but the
 19040  // value will be replaced with "sensitive".
 19041  func (s PurchaseReservedCacheNodesOfferingOutput) String() string {
 19042  	return awsutil.Prettify(s)
 19043  }
 19044  
 19045  // GoString returns the string representation.
 19046  //
 19047  // API parameter values that are decorated as "sensitive" in the API will not
 19048  // be included in the string output. The member name will be present, but the
 19049  // value will be replaced with "sensitive".
 19050  func (s PurchaseReservedCacheNodesOfferingOutput) GoString() string {
 19051  	return s.String()
 19052  }
 19053  
 19054  // SetReservedCacheNode sets the ReservedCacheNode field's value.
 19055  func (s *PurchaseReservedCacheNodesOfferingOutput) SetReservedCacheNode(v *ReservedCacheNode) *PurchaseReservedCacheNodesOfferingOutput {
 19056  	s.ReservedCacheNode = v
 19057  	return s
 19058  }
 19059  
 19060  type RebalanceSlotsInGlobalReplicationGroupInput struct {
 19061  	_ struct{} `type:"structure"`
 19062  
 19063  	// If True, redistribution is applied immediately.
 19064  	//
 19065  	// ApplyImmediately is a required field
 19066  	ApplyImmediately *bool `type:"boolean" required:"true"`
 19067  
 19068  	// The name of the Global datastore
 19069  	//
 19070  	// GlobalReplicationGroupId is a required field
 19071  	GlobalReplicationGroupId *string `type:"string" required:"true"`
 19072  }
 19073  
 19074  // String returns the string representation.
 19075  //
 19076  // API parameter values that are decorated as "sensitive" in the API will not
 19077  // be included in the string output. The member name will be present, but the
 19078  // value will be replaced with "sensitive".
 19079  func (s RebalanceSlotsInGlobalReplicationGroupInput) String() string {
 19080  	return awsutil.Prettify(s)
 19081  }
 19082  
 19083  // GoString returns the string representation.
 19084  //
 19085  // API parameter values that are decorated as "sensitive" in the API will not
 19086  // be included in the string output. The member name will be present, but the
 19087  // value will be replaced with "sensitive".
 19088  func (s RebalanceSlotsInGlobalReplicationGroupInput) GoString() string {
 19089  	return s.String()
 19090  }
 19091  
 19092  // Validate inspects the fields of the type to determine if they are valid.
 19093  func (s *RebalanceSlotsInGlobalReplicationGroupInput) Validate() error {
 19094  	invalidParams := request.ErrInvalidParams{Context: "RebalanceSlotsInGlobalReplicationGroupInput"}
 19095  	if s.ApplyImmediately == nil {
 19096  		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
 19097  	}
 19098  	if s.GlobalReplicationGroupId == nil {
 19099  		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
 19100  	}
 19101  
 19102  	if invalidParams.Len() > 0 {
 19103  		return invalidParams
 19104  	}
 19105  	return nil
 19106  }
 19107  
 19108  // SetApplyImmediately sets the ApplyImmediately field's value.
 19109  func (s *RebalanceSlotsInGlobalReplicationGroupInput) SetApplyImmediately(v bool) *RebalanceSlotsInGlobalReplicationGroupInput {
 19110  	s.ApplyImmediately = &v
 19111  	return s
 19112  }
 19113  
 19114  // SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
 19115  func (s *RebalanceSlotsInGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *RebalanceSlotsInGlobalReplicationGroupInput {
 19116  	s.GlobalReplicationGroupId = &v
 19117  	return s
 19118  }
 19119  
 19120  type RebalanceSlotsInGlobalReplicationGroupOutput struct {
 19121  	_ struct{} `type:"structure"`
 19122  
 19123  	// Consists of a primary cluster that accepts writes and an associated secondary
 19124  	// cluster that resides in a different Amazon region. The secondary cluster
 19125  	// accepts only reads. The primary cluster automatically replicates updates
 19126  	// to the secondary cluster.
 19127  	//
 19128  	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
 19129  	//    datastore, which is what you use to associate a secondary cluster.
 19130  	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
 19131  }
 19132  
 19133  // String returns the string representation.
 19134  //
 19135  // API parameter values that are decorated as "sensitive" in the API will not
 19136  // be included in the string output. The member name will be present, but the
 19137  // value will be replaced with "sensitive".
 19138  func (s RebalanceSlotsInGlobalReplicationGroupOutput) String() string {
 19139  	return awsutil.Prettify(s)
 19140  }
 19141  
 19142  // GoString returns the string representation.
 19143  //
 19144  // API parameter values that are decorated as "sensitive" in the API will not
 19145  // be included in the string output. The member name will be present, but the
 19146  // value will be replaced with "sensitive".
 19147  func (s RebalanceSlotsInGlobalReplicationGroupOutput) GoString() string {
 19148  	return s.String()
 19149  }
 19150  
 19151  // SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
 19152  func (s *RebalanceSlotsInGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *RebalanceSlotsInGlobalReplicationGroupOutput {
 19153  	s.GlobalReplicationGroup = v
 19154  	return s
 19155  }
 19156  
 19157  // Represents the input of a RebootCacheCluster operation.
 19158  type RebootCacheClusterInput struct {
 19159  	_ struct{} `type:"structure"`
 19160  
 19161  	// The cluster identifier. This parameter is stored as a lowercase string.
 19162  	//
 19163  	// CacheClusterId is a required field
 19164  	CacheClusterId *string `type:"string" required:"true"`
 19165  
 19166  	// A list of cache node IDs to reboot. A node ID is a numeric identifier (0001,
 19167  	// 0002, etc.). To reboot an entire cluster, specify all of the cache node IDs.
 19168  	//
 19169  	// CacheNodeIdsToReboot is a required field
 19170  	CacheNodeIdsToReboot []*string `locationNameList:"CacheNodeId" type:"list" required:"true"`
 19171  }
 19172  
 19173  // String returns the string representation.
 19174  //
 19175  // API parameter values that are decorated as "sensitive" in the API will not
 19176  // be included in the string output. The member name will be present, but the
 19177  // value will be replaced with "sensitive".
 19178  func (s RebootCacheClusterInput) String() string {
 19179  	return awsutil.Prettify(s)
 19180  }
 19181  
 19182  // GoString returns the string representation.
 19183  //
 19184  // API parameter values that are decorated as "sensitive" in the API will not
 19185  // be included in the string output. The member name will be present, but the
 19186  // value will be replaced with "sensitive".
 19187  func (s RebootCacheClusterInput) GoString() string {
 19188  	return s.String()
 19189  }
 19190  
 19191  // Validate inspects the fields of the type to determine if they are valid.
 19192  func (s *RebootCacheClusterInput) Validate() error {
 19193  	invalidParams := request.ErrInvalidParams{Context: "RebootCacheClusterInput"}
 19194  	if s.CacheClusterId == nil {
 19195  		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
 19196  	}
 19197  	if s.CacheNodeIdsToReboot == nil {
 19198  		invalidParams.Add(request.NewErrParamRequired("CacheNodeIdsToReboot"))
 19199  	}
 19200  
 19201  	if invalidParams.Len() > 0 {
 19202  		return invalidParams
 19203  	}
 19204  	return nil
 19205  }
 19206  
 19207  // SetCacheClusterId sets the CacheClusterId field's value.
 19208  func (s *RebootCacheClusterInput) SetCacheClusterId(v string) *RebootCacheClusterInput {
 19209  	s.CacheClusterId = &v
 19210  	return s
 19211  }
 19212  
 19213  // SetCacheNodeIdsToReboot sets the CacheNodeIdsToReboot field's value.
 19214  func (s *RebootCacheClusterInput) SetCacheNodeIdsToReboot(v []*string) *RebootCacheClusterInput {
 19215  	s.CacheNodeIdsToReboot = v
 19216  	return s
 19217  }
 19218  
 19219  type RebootCacheClusterOutput struct {
 19220  	_ struct{} `type:"structure"`
 19221  
 19222  	// Contains all of the attributes of a specific cluster.
 19223  	CacheCluster *CacheCluster `type:"structure"`
 19224  }
 19225  
 19226  // String returns the string representation.
 19227  //
 19228  // API parameter values that are decorated as "sensitive" in the API will not
 19229  // be included in the string output. The member name will be present, but the
 19230  // value will be replaced with "sensitive".
 19231  func (s RebootCacheClusterOutput) String() string {
 19232  	return awsutil.Prettify(s)
 19233  }
 19234  
 19235  // GoString returns the string representation.
 19236  //
 19237  // API parameter values that are decorated as "sensitive" in the API will not
 19238  // be included in the string output. The member name will be present, but the
 19239  // value will be replaced with "sensitive".
 19240  func (s RebootCacheClusterOutput) GoString() string {
 19241  	return s.String()
 19242  }
 19243  
 19244  // SetCacheCluster sets the CacheCluster field's value.
 19245  func (s *RebootCacheClusterOutput) SetCacheCluster(v *CacheCluster) *RebootCacheClusterOutput {
 19246  	s.CacheCluster = v
 19247  	return s
 19248  }
 19249  
 19250  // Contains the specific price and frequency of a recurring charges for a reserved
 19251  // cache node, or for a reserved cache node offering.
 19252  type RecurringCharge struct {
 19253  	_ struct{} `type:"structure"`
 19254  
 19255  	// The monetary amount of the recurring charge.
 19256  	RecurringChargeAmount *float64 `type:"double"`
 19257  
 19258  	// The frequency of the recurring charge.
 19259  	RecurringChargeFrequency *string `type:"string"`
 19260  }
 19261  
 19262  // String 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 RecurringCharge) String() string {
 19268  	return awsutil.Prettify(s)
 19269  }
 19270  
 19271  // GoString returns the string representation.
 19272  //
 19273  // API parameter values that are decorated as "sensitive" in the API will not
 19274  // be included in the string output. The member name will be present, but the
 19275  // value will be replaced with "sensitive".
 19276  func (s RecurringCharge) GoString() string {
 19277  	return s.String()
 19278  }
 19279  
 19280  // SetRecurringChargeAmount sets the RecurringChargeAmount field's value.
 19281  func (s *RecurringCharge) SetRecurringChargeAmount(v float64) *RecurringCharge {
 19282  	s.RecurringChargeAmount = &v
 19283  	return s
 19284  }
 19285  
 19286  // SetRecurringChargeFrequency sets the RecurringChargeFrequency field's value.
 19287  func (s *RecurringCharge) SetRecurringChargeFrequency(v string) *RecurringCharge {
 19288  	s.RecurringChargeFrequency = &v
 19289  	return s
 19290  }
 19291  
 19292  // A list of the replication groups
 19293  type RegionalConfiguration struct {
 19294  	_ struct{} `type:"structure"`
 19295  
 19296  	// The name of the secondary cluster
 19297  	//
 19298  	// ReplicationGroupId is a required field
 19299  	ReplicationGroupId *string `type:"string" required:"true"`
 19300  
 19301  	// The Amazon region where the cluster is stored
 19302  	//
 19303  	// ReplicationGroupRegion is a required field
 19304  	ReplicationGroupRegion *string `type:"string" required:"true"`
 19305  
 19306  	// A list of PreferredAvailabilityZones objects that specifies the configuration
 19307  	// of a node group in the resharded cluster.
 19308  	//
 19309  	// ReshardingConfiguration is a required field
 19310  	ReshardingConfiguration []*ReshardingConfiguration `locationNameList:"ReshardingConfiguration" type:"list" required:"true"`
 19311  }
 19312  
 19313  // String returns the string representation.
 19314  //
 19315  // API parameter values that are decorated as "sensitive" in the API will not
 19316  // be included in the string output. The member name will be present, but the
 19317  // value will be replaced with "sensitive".
 19318  func (s RegionalConfiguration) String() string {
 19319  	return awsutil.Prettify(s)
 19320  }
 19321  
 19322  // GoString returns the string representation.
 19323  //
 19324  // API parameter values that are decorated as "sensitive" in the API will not
 19325  // be included in the string output. The member name will be present, but the
 19326  // value will be replaced with "sensitive".
 19327  func (s RegionalConfiguration) GoString() string {
 19328  	return s.String()
 19329  }
 19330  
 19331  // Validate inspects the fields of the type to determine if they are valid.
 19332  func (s *RegionalConfiguration) Validate() error {
 19333  	invalidParams := request.ErrInvalidParams{Context: "RegionalConfiguration"}
 19334  	if s.ReplicationGroupId == nil {
 19335  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
 19336  	}
 19337  	if s.ReplicationGroupRegion == nil {
 19338  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupRegion"))
 19339  	}
 19340  	if s.ReshardingConfiguration == nil {
 19341  		invalidParams.Add(request.NewErrParamRequired("ReshardingConfiguration"))
 19342  	}
 19343  	if s.ReshardingConfiguration != nil {
 19344  		for i, v := range s.ReshardingConfiguration {
 19345  			if v == nil {
 19346  				continue
 19347  			}
 19348  			if err := v.Validate(); err != nil {
 19349  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReshardingConfiguration", i), err.(request.ErrInvalidParams))
 19350  			}
 19351  		}
 19352  	}
 19353  
 19354  	if invalidParams.Len() > 0 {
 19355  		return invalidParams
 19356  	}
 19357  	return nil
 19358  }
 19359  
 19360  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 19361  func (s *RegionalConfiguration) SetReplicationGroupId(v string) *RegionalConfiguration {
 19362  	s.ReplicationGroupId = &v
 19363  	return s
 19364  }
 19365  
 19366  // SetReplicationGroupRegion sets the ReplicationGroupRegion field's value.
 19367  func (s *RegionalConfiguration) SetReplicationGroupRegion(v string) *RegionalConfiguration {
 19368  	s.ReplicationGroupRegion = &v
 19369  	return s
 19370  }
 19371  
 19372  // SetReshardingConfiguration sets the ReshardingConfiguration field's value.
 19373  func (s *RegionalConfiguration) SetReshardingConfiguration(v []*ReshardingConfiguration) *RegionalConfiguration {
 19374  	s.ReshardingConfiguration = v
 19375  	return s
 19376  }
 19377  
 19378  // Represents the input of a RemoveTagsFromResource operation.
 19379  type RemoveTagsFromResourceInput struct {
 19380  	_ struct{} `type:"structure"`
 19381  
 19382  	// The Amazon Resource Name (ARN) of the resource from which you want the tags
 19383  	// removed, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
 19384  	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.
 19385  	//
 19386  	// For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon
 19387  	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
 19388  	//
 19389  	// ResourceName is a required field
 19390  	ResourceName *string `type:"string" required:"true"`
 19391  
 19392  	// A list of TagKeys identifying the tags you want removed from the named resource.
 19393  	//
 19394  	// TagKeys is a required field
 19395  	TagKeys []*string `type:"list" required:"true"`
 19396  }
 19397  
 19398  // String returns the string representation.
 19399  //
 19400  // API parameter values that are decorated as "sensitive" in the API will not
 19401  // be included in the string output. The member name will be present, but the
 19402  // value will be replaced with "sensitive".
 19403  func (s RemoveTagsFromResourceInput) String() string {
 19404  	return awsutil.Prettify(s)
 19405  }
 19406  
 19407  // GoString returns the string representation.
 19408  //
 19409  // API parameter values that are decorated as "sensitive" in the API will not
 19410  // be included in the string output. The member name will be present, but the
 19411  // value will be replaced with "sensitive".
 19412  func (s RemoveTagsFromResourceInput) GoString() string {
 19413  	return s.String()
 19414  }
 19415  
 19416  // Validate inspects the fields of the type to determine if they are valid.
 19417  func (s *RemoveTagsFromResourceInput) Validate() error {
 19418  	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsFromResourceInput"}
 19419  	if s.ResourceName == nil {
 19420  		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
 19421  	}
 19422  	if s.TagKeys == nil {
 19423  		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
 19424  	}
 19425  
 19426  	if invalidParams.Len() > 0 {
 19427  		return invalidParams
 19428  	}
 19429  	return nil
 19430  }
 19431  
 19432  // SetResourceName sets the ResourceName field's value.
 19433  func (s *RemoveTagsFromResourceInput) SetResourceName(v string) *RemoveTagsFromResourceInput {
 19434  	s.ResourceName = &v
 19435  	return s
 19436  }
 19437  
 19438  // SetTagKeys sets the TagKeys field's value.
 19439  func (s *RemoveTagsFromResourceInput) SetTagKeys(v []*string) *RemoveTagsFromResourceInput {
 19440  	s.TagKeys = v
 19441  	return s
 19442  }
 19443  
 19444  // Contains all of the attributes of a specific Redis replication group.
 19445  type ReplicationGroup struct {
 19446  	_ struct{} `type:"structure"`
 19447  
 19448  	// The ARN (Amazon Resource Name) of the replication group.
 19449  	ARN *string `type:"string"`
 19450  
 19451  	// A flag that enables encryption at-rest when set to true.
 19452  	//
 19453  	// You cannot modify the value of AtRestEncryptionEnabled after the cluster
 19454  	// is created. To enable encryption at-rest on a cluster you must set AtRestEncryptionEnabled
 19455  	// to true when you create a cluster.
 19456  	//
 19457  	// Required: Only available when creating a replication group in an Amazon VPC
 19458  	// using redis version 3.2.6, 4.x or later.
 19459  	//
 19460  	// Default: false
 19461  	AtRestEncryptionEnabled *bool `type:"boolean"`
 19462  
 19463  	// A flag that enables using an AuthToken (password) when issuing Redis commands.
 19464  	//
 19465  	// Default: false
 19466  	AuthTokenEnabled *bool `type:"boolean"`
 19467  
 19468  	// The date the auth token was last modified
 19469  	AuthTokenLastModifiedDate *time.Time `type:"timestamp"`
 19470  
 19471  	// Indicates the status of automatic failover for this Redis replication group.
 19472  	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
 19473  
 19474  	// The name of the compute and memory capacity node type for each node in the
 19475  	// replication group.
 19476  	CacheNodeType *string `type:"string"`
 19477  
 19478  	// A flag indicating whether or not this replication group is cluster enabled;
 19479  	// i.e., whether its data can be partitioned across multiple shards (API/CLI:
 19480  	// node groups).
 19481  	//
 19482  	// Valid values: true | false
 19483  	ClusterEnabled *bool `type:"boolean"`
 19484  
 19485  	// The configuration endpoint for this replication group. Use the configuration
 19486  	// endpoint to connect to this replication group.
 19487  	ConfigurationEndpoint *Endpoint `type:"structure"`
 19488  
 19489  	// The user supplied description of the replication group.
 19490  	Description *string `type:"string"`
 19491  
 19492  	// The name of the Global datastore and role of this replication group in the
 19493  	// Global datastore.
 19494  	GlobalReplicationGroupInfo *GlobalReplicationGroupInfo `type:"structure"`
 19495  
 19496  	// The ID of the KMS key used to encrypt the disk in the cluster.
 19497  	KmsKeyId *string `type:"string"`
 19498  
 19499  	// Returns the destination, format and type of the logs.
 19500  	LogDeliveryConfigurations []*LogDeliveryConfiguration `locationNameList:"LogDeliveryConfiguration" type:"list"`
 19501  
 19502  	// The names of all the cache clusters that are part of this replication group.
 19503  	MemberClusters []*string `locationNameList:"ClusterId" type:"list"`
 19504  
 19505  	// The outpost ARNs of the replication group's member clusters.
 19506  	MemberClustersOutpostArns []*string `locationNameList:"ReplicationGroupOutpostArn" type:"list"`
 19507  
 19508  	// A flag indicating if you have Multi-AZ enabled to enhance fault tolerance.
 19509  	// For more information, see Minimizing Downtime: Multi-AZ (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html)
 19510  	MultiAZ *string `type:"string" enum:"MultiAZStatus"`
 19511  
 19512  	// A list of node groups in this replication group. For Redis (cluster mode
 19513  	// disabled) replication groups, this is a single-element list. For Redis (cluster
 19514  	// mode enabled) replication groups, the list contains an entry for each node
 19515  	// group (shard).
 19516  	NodeGroups []*NodeGroup `locationNameList:"NodeGroup" type:"list"`
 19517  
 19518  	// A group of settings to be applied to the replication group, either immediately
 19519  	// or during the next maintenance window.
 19520  	PendingModifiedValues *ReplicationGroupPendingModifiedValues `type:"structure"`
 19521  
 19522  	// The date and time when the cluster was created.
 19523  	ReplicationGroupCreateTime *time.Time `type:"timestamp"`
 19524  
 19525  	// The identifier for the replication group.
 19526  	ReplicationGroupId *string `type:"string"`
 19527  
 19528  	// The number of days for which ElastiCache retains automatic cluster snapshots
 19529  	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
 19530  	// a snapshot that was taken today is retained for 5 days before being deleted.
 19531  	//
 19532  	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
 19533  	// off.
 19534  	SnapshotRetentionLimit *int64 `type:"integer"`
 19535  
 19536  	// The daily time range (in UTC) during which ElastiCache begins taking a daily
 19537  	// snapshot of your node group (shard).
 19538  	//
 19539  	// Example: 05:00-09:00
 19540  	//
 19541  	// If you do not specify this parameter, ElastiCache automatically chooses an
 19542  	// appropriate time range.
 19543  	//
 19544  	// This parameter is only valid if the Engine parameter is redis.
 19545  	SnapshotWindow *string `type:"string"`
 19546  
 19547  	// The cluster ID that is used as the daily snapshot source for the replication
 19548  	// group.
 19549  	SnapshottingClusterId *string `type:"string"`
 19550  
 19551  	// The current state of this replication group - creating, available, modifying,
 19552  	// deleting, create-failed, snapshotting.
 19553  	Status *string `type:"string"`
 19554  
 19555  	// A flag that enables in-transit encryption when set to true.
 19556  	//
 19557  	// You cannot modify the value of TransitEncryptionEnabled after the cluster
 19558  	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
 19559  	// to true when you create a cluster.
 19560  	//
 19561  	// Required: Only available when creating a replication group in an Amazon VPC
 19562  	// using redis version 3.2.6, 4.x or later.
 19563  	//
 19564  	// Default: false
 19565  	TransitEncryptionEnabled *bool `type:"boolean"`
 19566  
 19567  	// The ID of the user group associated to the replication group.
 19568  	UserGroupIds []*string `type:"list"`
 19569  }
 19570  
 19571  // String returns the string representation.
 19572  //
 19573  // API parameter values that are decorated as "sensitive" in the API will not
 19574  // be included in the string output. The member name will be present, but the
 19575  // value will be replaced with "sensitive".
 19576  func (s ReplicationGroup) String() string {
 19577  	return awsutil.Prettify(s)
 19578  }
 19579  
 19580  // GoString returns the string representation.
 19581  //
 19582  // API parameter values that are decorated as "sensitive" in the API will not
 19583  // be included in the string output. The member name will be present, but the
 19584  // value will be replaced with "sensitive".
 19585  func (s ReplicationGroup) GoString() string {
 19586  	return s.String()
 19587  }
 19588  
 19589  // SetARN sets the ARN field's value.
 19590  func (s *ReplicationGroup) SetARN(v string) *ReplicationGroup {
 19591  	s.ARN = &v
 19592  	return s
 19593  }
 19594  
 19595  // SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
 19596  func (s *ReplicationGroup) SetAtRestEncryptionEnabled(v bool) *ReplicationGroup {
 19597  	s.AtRestEncryptionEnabled = &v
 19598  	return s
 19599  }
 19600  
 19601  // SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
 19602  func (s *ReplicationGroup) SetAuthTokenEnabled(v bool) *ReplicationGroup {
 19603  	s.AuthTokenEnabled = &v
 19604  	return s
 19605  }
 19606  
 19607  // SetAuthTokenLastModifiedDate sets the AuthTokenLastModifiedDate field's value.
 19608  func (s *ReplicationGroup) SetAuthTokenLastModifiedDate(v time.Time) *ReplicationGroup {
 19609  	s.AuthTokenLastModifiedDate = &v
 19610  	return s
 19611  }
 19612  
 19613  // SetAutomaticFailover sets the AutomaticFailover field's value.
 19614  func (s *ReplicationGroup) SetAutomaticFailover(v string) *ReplicationGroup {
 19615  	s.AutomaticFailover = &v
 19616  	return s
 19617  }
 19618  
 19619  // SetCacheNodeType sets the CacheNodeType field's value.
 19620  func (s *ReplicationGroup) SetCacheNodeType(v string) *ReplicationGroup {
 19621  	s.CacheNodeType = &v
 19622  	return s
 19623  }
 19624  
 19625  // SetClusterEnabled sets the ClusterEnabled field's value.
 19626  func (s *ReplicationGroup) SetClusterEnabled(v bool) *ReplicationGroup {
 19627  	s.ClusterEnabled = &v
 19628  	return s
 19629  }
 19630  
 19631  // SetConfigurationEndpoint sets the ConfigurationEndpoint field's value.
 19632  func (s *ReplicationGroup) SetConfigurationEndpoint(v *Endpoint) *ReplicationGroup {
 19633  	s.ConfigurationEndpoint = v
 19634  	return s
 19635  }
 19636  
 19637  // SetDescription sets the Description field's value.
 19638  func (s *ReplicationGroup) SetDescription(v string) *ReplicationGroup {
 19639  	s.Description = &v
 19640  	return s
 19641  }
 19642  
 19643  // SetGlobalReplicationGroupInfo sets the GlobalReplicationGroupInfo field's value.
 19644  func (s *ReplicationGroup) SetGlobalReplicationGroupInfo(v *GlobalReplicationGroupInfo) *ReplicationGroup {
 19645  	s.GlobalReplicationGroupInfo = v
 19646  	return s
 19647  }
 19648  
 19649  // SetKmsKeyId sets the KmsKeyId field's value.
 19650  func (s *ReplicationGroup) SetKmsKeyId(v string) *ReplicationGroup {
 19651  	s.KmsKeyId = &v
 19652  	return s
 19653  }
 19654  
 19655  // SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
 19656  func (s *ReplicationGroup) SetLogDeliveryConfigurations(v []*LogDeliveryConfiguration) *ReplicationGroup {
 19657  	s.LogDeliveryConfigurations = v
 19658  	return s
 19659  }
 19660  
 19661  // SetMemberClusters sets the MemberClusters field's value.
 19662  func (s *ReplicationGroup) SetMemberClusters(v []*string) *ReplicationGroup {
 19663  	s.MemberClusters = v
 19664  	return s
 19665  }
 19666  
 19667  // SetMemberClustersOutpostArns sets the MemberClustersOutpostArns field's value.
 19668  func (s *ReplicationGroup) SetMemberClustersOutpostArns(v []*string) *ReplicationGroup {
 19669  	s.MemberClustersOutpostArns = v
 19670  	return s
 19671  }
 19672  
 19673  // SetMultiAZ sets the MultiAZ field's value.
 19674  func (s *ReplicationGroup) SetMultiAZ(v string) *ReplicationGroup {
 19675  	s.MultiAZ = &v
 19676  	return s
 19677  }
 19678  
 19679  // SetNodeGroups sets the NodeGroups field's value.
 19680  func (s *ReplicationGroup) SetNodeGroups(v []*NodeGroup) *ReplicationGroup {
 19681  	s.NodeGroups = v
 19682  	return s
 19683  }
 19684  
 19685  // SetPendingModifiedValues sets the PendingModifiedValues field's value.
 19686  func (s *ReplicationGroup) SetPendingModifiedValues(v *ReplicationGroupPendingModifiedValues) *ReplicationGroup {
 19687  	s.PendingModifiedValues = v
 19688  	return s
 19689  }
 19690  
 19691  // SetReplicationGroupCreateTime sets the ReplicationGroupCreateTime field's value.
 19692  func (s *ReplicationGroup) SetReplicationGroupCreateTime(v time.Time) *ReplicationGroup {
 19693  	s.ReplicationGroupCreateTime = &v
 19694  	return s
 19695  }
 19696  
 19697  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 19698  func (s *ReplicationGroup) SetReplicationGroupId(v string) *ReplicationGroup {
 19699  	s.ReplicationGroupId = &v
 19700  	return s
 19701  }
 19702  
 19703  // SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
 19704  func (s *ReplicationGroup) SetSnapshotRetentionLimit(v int64) *ReplicationGroup {
 19705  	s.SnapshotRetentionLimit = &v
 19706  	return s
 19707  }
 19708  
 19709  // SetSnapshotWindow sets the SnapshotWindow field's value.
 19710  func (s *ReplicationGroup) SetSnapshotWindow(v string) *ReplicationGroup {
 19711  	s.SnapshotWindow = &v
 19712  	return s
 19713  }
 19714  
 19715  // SetSnapshottingClusterId sets the SnapshottingClusterId field's value.
 19716  func (s *ReplicationGroup) SetSnapshottingClusterId(v string) *ReplicationGroup {
 19717  	s.SnapshottingClusterId = &v
 19718  	return s
 19719  }
 19720  
 19721  // SetStatus sets the Status field's value.
 19722  func (s *ReplicationGroup) SetStatus(v string) *ReplicationGroup {
 19723  	s.Status = &v
 19724  	return s
 19725  }
 19726  
 19727  // SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
 19728  func (s *ReplicationGroup) SetTransitEncryptionEnabled(v bool) *ReplicationGroup {
 19729  	s.TransitEncryptionEnabled = &v
 19730  	return s
 19731  }
 19732  
 19733  // SetUserGroupIds sets the UserGroupIds field's value.
 19734  func (s *ReplicationGroup) SetUserGroupIds(v []*string) *ReplicationGroup {
 19735  	s.UserGroupIds = v
 19736  	return s
 19737  }
 19738  
 19739  // The settings to be applied to the Redis replication group, either immediately
 19740  // or during the next maintenance window.
 19741  type ReplicationGroupPendingModifiedValues struct {
 19742  	_ struct{} `type:"structure"`
 19743  
 19744  	// The auth token status
 19745  	AuthTokenStatus *string `type:"string" enum:"AuthTokenUpdateStatus"`
 19746  
 19747  	// Indicates the status of automatic failover for this Redis replication group.
 19748  	AutomaticFailoverStatus *string `type:"string" enum:"PendingAutomaticFailoverStatus"`
 19749  
 19750  	// The log delivery configurations being modified
 19751  	LogDeliveryConfigurations []*PendingLogDeliveryConfiguration `locationName:"PendingLogDeliveryConfiguration" type:"list"`
 19752  
 19753  	// The primary cluster ID that is applied immediately (if --apply-immediately
 19754  	// was specified), or during the next maintenance window.
 19755  	PrimaryClusterId *string `type:"string"`
 19756  
 19757  	// The status of an online resharding operation.
 19758  	Resharding *ReshardingStatus `type:"structure"`
 19759  
 19760  	// The user group being modified.
 19761  	UserGroups *UserGroupsUpdateStatus `type:"structure"`
 19762  }
 19763  
 19764  // String returns the string representation.
 19765  //
 19766  // API parameter values that are decorated as "sensitive" in the API will not
 19767  // be included in the string output. The member name will be present, but the
 19768  // value will be replaced with "sensitive".
 19769  func (s ReplicationGroupPendingModifiedValues) String() string {
 19770  	return awsutil.Prettify(s)
 19771  }
 19772  
 19773  // GoString returns the string representation.
 19774  //
 19775  // API parameter values that are decorated as "sensitive" in the API will not
 19776  // be included in the string output. The member name will be present, but the
 19777  // value will be replaced with "sensitive".
 19778  func (s ReplicationGroupPendingModifiedValues) GoString() string {
 19779  	return s.String()
 19780  }
 19781  
 19782  // SetAuthTokenStatus sets the AuthTokenStatus field's value.
 19783  func (s *ReplicationGroupPendingModifiedValues) SetAuthTokenStatus(v string) *ReplicationGroupPendingModifiedValues {
 19784  	s.AuthTokenStatus = &v
 19785  	return s
 19786  }
 19787  
 19788  // SetAutomaticFailoverStatus sets the AutomaticFailoverStatus field's value.
 19789  func (s *ReplicationGroupPendingModifiedValues) SetAutomaticFailoverStatus(v string) *ReplicationGroupPendingModifiedValues {
 19790  	s.AutomaticFailoverStatus = &v
 19791  	return s
 19792  }
 19793  
 19794  // SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
 19795  func (s *ReplicationGroupPendingModifiedValues) SetLogDeliveryConfigurations(v []*PendingLogDeliveryConfiguration) *ReplicationGroupPendingModifiedValues {
 19796  	s.LogDeliveryConfigurations = v
 19797  	return s
 19798  }
 19799  
 19800  // SetPrimaryClusterId sets the PrimaryClusterId field's value.
 19801  func (s *ReplicationGroupPendingModifiedValues) SetPrimaryClusterId(v string) *ReplicationGroupPendingModifiedValues {
 19802  	s.PrimaryClusterId = &v
 19803  	return s
 19804  }
 19805  
 19806  // SetResharding sets the Resharding field's value.
 19807  func (s *ReplicationGroupPendingModifiedValues) SetResharding(v *ReshardingStatus) *ReplicationGroupPendingModifiedValues {
 19808  	s.Resharding = v
 19809  	return s
 19810  }
 19811  
 19812  // SetUserGroups sets the UserGroups field's value.
 19813  func (s *ReplicationGroupPendingModifiedValues) SetUserGroups(v *UserGroupsUpdateStatus) *ReplicationGroupPendingModifiedValues {
 19814  	s.UserGroups = v
 19815  	return s
 19816  }
 19817  
 19818  // Represents the output of a PurchaseReservedCacheNodesOffering operation.
 19819  type ReservedCacheNode struct {
 19820  	_ struct{} `type:"structure"`
 19821  
 19822  	// The number of cache nodes that have been reserved.
 19823  	CacheNodeCount *int64 `type:"integer"`
 19824  
 19825  	// The cache node type for the reserved cache nodes.
 19826  	//
 19827  	// The following node types are supported by ElastiCache. Generally speaking,
 19828  	// the current generation types provide more memory and computational power
 19829  	// at lower cost when compared to their equivalent previous generation counterparts.
 19830  	//
 19831  	//    * General purpose: Current generation: M6g node types (available only
 19832  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
 19833  	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
 19834  	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
 19835  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
 19836  	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
 19837  	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
 19838  	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
 19839  	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
 19840  	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
 19841  	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
 19842  	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
 19843  	//    cache.m3.2xlarge
 19844  	//
 19845  	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
 19846  	//    cache.c1.xlarge
 19847  	//
 19848  	//    * Memory optimized: Current generation: R6g node types (available only
 19849  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
 19850  	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
 19851  	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
 19852  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
 19853  	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
 19854  	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
 19855  	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
 19856  	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
 19857  	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
 19858  	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
 19859  	//
 19860  	// Additional node type info
 19861  	//
 19862  	//    * All current generation instance types are created in Amazon VPC by default.
 19863  	//
 19864  	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
 19865  	//
 19866  	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
 19867  	//
 19868  	//    * Redis configuration variables appendonly and appendfsync are not supported
 19869  	//    on Redis version 2.8.22 and later.
 19870  	CacheNodeType *string `type:"string"`
 19871  
 19872  	// The duration of the reservation in seconds.
 19873  	Duration *int64 `type:"integer"`
 19874  
 19875  	// The fixed price charged for this reserved cache node.
 19876  	FixedPrice *float64 `type:"double"`
 19877  
 19878  	// The offering type of this reserved cache node.
 19879  	OfferingType *string `type:"string"`
 19880  
 19881  	// The description of the reserved cache node.
 19882  	ProductDescription *string `type:"string"`
 19883  
 19884  	// The recurring price charged to run this reserved cache node.
 19885  	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`
 19886  
 19887  	// The Amazon Resource Name (ARN) of the reserved cache node.
 19888  	//
 19889  	// Example: arn:aws:elasticache:us-east-1:123456789012:reserved-instance:ri-2017-03-27-08-33-25-582
 19890  	ReservationARN *string `type:"string"`
 19891  
 19892  	// The unique identifier for the reservation.
 19893  	ReservedCacheNodeId *string `type:"string"`
 19894  
 19895  	// The offering identifier.
 19896  	ReservedCacheNodesOfferingId *string `type:"string"`
 19897  
 19898  	// The time the reservation started.
 19899  	StartTime *time.Time `type:"timestamp"`
 19900  
 19901  	// The state of the reserved cache node.
 19902  	State *string `type:"string"`
 19903  
 19904  	// The hourly price charged for this reserved cache node.
 19905  	UsagePrice *float64 `type:"double"`
 19906  }
 19907  
 19908  // String returns the string representation.
 19909  //
 19910  // API parameter values that are decorated as "sensitive" in the API will not
 19911  // be included in the string output. The member name will be present, but the
 19912  // value will be replaced with "sensitive".
 19913  func (s ReservedCacheNode) String() string {
 19914  	return awsutil.Prettify(s)
 19915  }
 19916  
 19917  // GoString returns the string representation.
 19918  //
 19919  // API parameter values that are decorated as "sensitive" in the API will not
 19920  // be included in the string output. The member name will be present, but the
 19921  // value will be replaced with "sensitive".
 19922  func (s ReservedCacheNode) GoString() string {
 19923  	return s.String()
 19924  }
 19925  
 19926  // SetCacheNodeCount sets the CacheNodeCount field's value.
 19927  func (s *ReservedCacheNode) SetCacheNodeCount(v int64) *ReservedCacheNode {
 19928  	s.CacheNodeCount = &v
 19929  	return s
 19930  }
 19931  
 19932  // SetCacheNodeType sets the CacheNodeType field's value.
 19933  func (s *ReservedCacheNode) SetCacheNodeType(v string) *ReservedCacheNode {
 19934  	s.CacheNodeType = &v
 19935  	return s
 19936  }
 19937  
 19938  // SetDuration sets the Duration field's value.
 19939  func (s *ReservedCacheNode) SetDuration(v int64) *ReservedCacheNode {
 19940  	s.Duration = &v
 19941  	return s
 19942  }
 19943  
 19944  // SetFixedPrice sets the FixedPrice field's value.
 19945  func (s *ReservedCacheNode) SetFixedPrice(v float64) *ReservedCacheNode {
 19946  	s.FixedPrice = &v
 19947  	return s
 19948  }
 19949  
 19950  // SetOfferingType sets the OfferingType field's value.
 19951  func (s *ReservedCacheNode) SetOfferingType(v string) *ReservedCacheNode {
 19952  	s.OfferingType = &v
 19953  	return s
 19954  }
 19955  
 19956  // SetProductDescription sets the ProductDescription field's value.
 19957  func (s *ReservedCacheNode) SetProductDescription(v string) *ReservedCacheNode {
 19958  	s.ProductDescription = &v
 19959  	return s
 19960  }
 19961  
 19962  // SetRecurringCharges sets the RecurringCharges field's value.
 19963  func (s *ReservedCacheNode) SetRecurringCharges(v []*RecurringCharge) *ReservedCacheNode {
 19964  	s.RecurringCharges = v
 19965  	return s
 19966  }
 19967  
 19968  // SetReservationARN sets the ReservationARN field's value.
 19969  func (s *ReservedCacheNode) SetReservationARN(v string) *ReservedCacheNode {
 19970  	s.ReservationARN = &v
 19971  	return s
 19972  }
 19973  
 19974  // SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
 19975  func (s *ReservedCacheNode) SetReservedCacheNodeId(v string) *ReservedCacheNode {
 19976  	s.ReservedCacheNodeId = &v
 19977  	return s
 19978  }
 19979  
 19980  // SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
 19981  func (s *ReservedCacheNode) SetReservedCacheNodesOfferingId(v string) *ReservedCacheNode {
 19982  	s.ReservedCacheNodesOfferingId = &v
 19983  	return s
 19984  }
 19985  
 19986  // SetStartTime sets the StartTime field's value.
 19987  func (s *ReservedCacheNode) SetStartTime(v time.Time) *ReservedCacheNode {
 19988  	s.StartTime = &v
 19989  	return s
 19990  }
 19991  
 19992  // SetState sets the State field's value.
 19993  func (s *ReservedCacheNode) SetState(v string) *ReservedCacheNode {
 19994  	s.State = &v
 19995  	return s
 19996  }
 19997  
 19998  // SetUsagePrice sets the UsagePrice field's value.
 19999  func (s *ReservedCacheNode) SetUsagePrice(v float64) *ReservedCacheNode {
 20000  	s.UsagePrice = &v
 20001  	return s
 20002  }
 20003  
 20004  // Describes all of the attributes of a reserved cache node offering.
 20005  type ReservedCacheNodesOffering struct {
 20006  	_ struct{} `type:"structure"`
 20007  
 20008  	// The cache node type for the reserved cache node.
 20009  	//
 20010  	// The following node types are supported by ElastiCache. Generally speaking,
 20011  	// the current generation types provide more memory and computational power
 20012  	// at lower cost when compared to their equivalent previous generation counterparts.
 20013  	//
 20014  	//    * General purpose: Current generation: M6g node types (available only
 20015  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
 20016  	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
 20017  	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
 20018  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
 20019  	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
 20020  	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
 20021  	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
 20022  	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
 20023  	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
 20024  	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
 20025  	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
 20026  	//    cache.m3.2xlarge
 20027  	//
 20028  	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
 20029  	//    cache.c1.xlarge
 20030  	//
 20031  	//    * Memory optimized: Current generation: R6g node types (available only
 20032  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
 20033  	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
 20034  	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
 20035  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
 20036  	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
 20037  	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
 20038  	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
 20039  	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
 20040  	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
 20041  	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
 20042  	//
 20043  	// Additional node type info
 20044  	//
 20045  	//    * All current generation instance types are created in Amazon VPC by default.
 20046  	//
 20047  	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
 20048  	//
 20049  	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
 20050  	//
 20051  	//    * Redis configuration variables appendonly and appendfsync are not supported
 20052  	//    on Redis version 2.8.22 and later.
 20053  	CacheNodeType *string `type:"string"`
 20054  
 20055  	// The duration of the offering. in seconds.
 20056  	Duration *int64 `type:"integer"`
 20057  
 20058  	// The fixed price charged for this offering.
 20059  	FixedPrice *float64 `type:"double"`
 20060  
 20061  	// The offering type.
 20062  	OfferingType *string `type:"string"`
 20063  
 20064  	// The cache engine used by the offering.
 20065  	ProductDescription *string `type:"string"`
 20066  
 20067  	// The recurring price charged to run this reserved cache node.
 20068  	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`
 20069  
 20070  	// A unique identifier for the reserved cache node offering.
 20071  	ReservedCacheNodesOfferingId *string `type:"string"`
 20072  
 20073  	// The hourly price charged for this offering.
 20074  	UsagePrice *float64 `type:"double"`
 20075  }
 20076  
 20077  // String returns the string representation.
 20078  //
 20079  // API parameter values that are decorated as "sensitive" in the API will not
 20080  // be included in the string output. The member name will be present, but the
 20081  // value will be replaced with "sensitive".
 20082  func (s ReservedCacheNodesOffering) String() string {
 20083  	return awsutil.Prettify(s)
 20084  }
 20085  
 20086  // GoString returns the string representation.
 20087  //
 20088  // API parameter values that are decorated as "sensitive" in the API will not
 20089  // be included in the string output. The member name will be present, but the
 20090  // value will be replaced with "sensitive".
 20091  func (s ReservedCacheNodesOffering) GoString() string {
 20092  	return s.String()
 20093  }
 20094  
 20095  // SetCacheNodeType sets the CacheNodeType field's value.
 20096  func (s *ReservedCacheNodesOffering) SetCacheNodeType(v string) *ReservedCacheNodesOffering {
 20097  	s.CacheNodeType = &v
 20098  	return s
 20099  }
 20100  
 20101  // SetDuration sets the Duration field's value.
 20102  func (s *ReservedCacheNodesOffering) SetDuration(v int64) *ReservedCacheNodesOffering {
 20103  	s.Duration = &v
 20104  	return s
 20105  }
 20106  
 20107  // SetFixedPrice sets the FixedPrice field's value.
 20108  func (s *ReservedCacheNodesOffering) SetFixedPrice(v float64) *ReservedCacheNodesOffering {
 20109  	s.FixedPrice = &v
 20110  	return s
 20111  }
 20112  
 20113  // SetOfferingType sets the OfferingType field's value.
 20114  func (s *ReservedCacheNodesOffering) SetOfferingType(v string) *ReservedCacheNodesOffering {
 20115  	s.OfferingType = &v
 20116  	return s
 20117  }
 20118  
 20119  // SetProductDescription sets the ProductDescription field's value.
 20120  func (s *ReservedCacheNodesOffering) SetProductDescription(v string) *ReservedCacheNodesOffering {
 20121  	s.ProductDescription = &v
 20122  	return s
 20123  }
 20124  
 20125  // SetRecurringCharges sets the RecurringCharges field's value.
 20126  func (s *ReservedCacheNodesOffering) SetRecurringCharges(v []*RecurringCharge) *ReservedCacheNodesOffering {
 20127  	s.RecurringCharges = v
 20128  	return s
 20129  }
 20130  
 20131  // SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
 20132  func (s *ReservedCacheNodesOffering) SetReservedCacheNodesOfferingId(v string) *ReservedCacheNodesOffering {
 20133  	s.ReservedCacheNodesOfferingId = &v
 20134  	return s
 20135  }
 20136  
 20137  // SetUsagePrice sets the UsagePrice field's value.
 20138  func (s *ReservedCacheNodesOffering) SetUsagePrice(v float64) *ReservedCacheNodesOffering {
 20139  	s.UsagePrice = &v
 20140  	return s
 20141  }
 20142  
 20143  // Represents the input of a ResetCacheParameterGroup operation.
 20144  type ResetCacheParameterGroupInput struct {
 20145  	_ struct{} `type:"structure"`
 20146  
 20147  	// The name of the cache parameter group to reset.
 20148  	//
 20149  	// CacheParameterGroupName is a required field
 20150  	CacheParameterGroupName *string `type:"string" required:"true"`
 20151  
 20152  	// An array of parameter names to reset to their default values. If ResetAllParameters
 20153  	// is true, do not use ParameterNameValues. If ResetAllParameters is false,
 20154  	// you must specify the name of at least one parameter to reset.
 20155  	ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list"`
 20156  
 20157  	// If true, all parameters in the cache parameter group are reset to their default
 20158  	// values. If false, only the parameters listed by ParameterNameValues are reset
 20159  	// to their default values.
 20160  	//
 20161  	// Valid values: true | false
 20162  	ResetAllParameters *bool `type:"boolean"`
 20163  }
 20164  
 20165  // String returns the string representation.
 20166  //
 20167  // API parameter values that are decorated as "sensitive" in the API will not
 20168  // be included in the string output. The member name will be present, but the
 20169  // value will be replaced with "sensitive".
 20170  func (s ResetCacheParameterGroupInput) String() string {
 20171  	return awsutil.Prettify(s)
 20172  }
 20173  
 20174  // GoString returns the string representation.
 20175  //
 20176  // API parameter values that are decorated as "sensitive" in the API will not
 20177  // be included in the string output. The member name will be present, but the
 20178  // value will be replaced with "sensitive".
 20179  func (s ResetCacheParameterGroupInput) GoString() string {
 20180  	return s.String()
 20181  }
 20182  
 20183  // Validate inspects the fields of the type to determine if they are valid.
 20184  func (s *ResetCacheParameterGroupInput) Validate() error {
 20185  	invalidParams := request.ErrInvalidParams{Context: "ResetCacheParameterGroupInput"}
 20186  	if s.CacheParameterGroupName == nil {
 20187  		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
 20188  	}
 20189  
 20190  	if invalidParams.Len() > 0 {
 20191  		return invalidParams
 20192  	}
 20193  	return nil
 20194  }
 20195  
 20196  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
 20197  func (s *ResetCacheParameterGroupInput) SetCacheParameterGroupName(v string) *ResetCacheParameterGroupInput {
 20198  	s.CacheParameterGroupName = &v
 20199  	return s
 20200  }
 20201  
 20202  // SetParameterNameValues sets the ParameterNameValues field's value.
 20203  func (s *ResetCacheParameterGroupInput) SetParameterNameValues(v []*ParameterNameValue) *ResetCacheParameterGroupInput {
 20204  	s.ParameterNameValues = v
 20205  	return s
 20206  }
 20207  
 20208  // SetResetAllParameters sets the ResetAllParameters field's value.
 20209  func (s *ResetCacheParameterGroupInput) SetResetAllParameters(v bool) *ResetCacheParameterGroupInput {
 20210  	s.ResetAllParameters = &v
 20211  	return s
 20212  }
 20213  
 20214  // A list of PreferredAvailabilityZones objects that specifies the configuration
 20215  // of a node group in the resharded cluster.
 20216  type ReshardingConfiguration struct {
 20217  	_ struct{} `type:"structure"`
 20218  
 20219  	// Either the ElastiCache for Redis supplied 4-digit id or a user supplied id
 20220  	// for the node group these configuration values apply to.
 20221  	NodeGroupId *string `min:"1" type:"string"`
 20222  
 20223  	// A list of preferred availability zones for the nodes in this cluster.
 20224  	PreferredAvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`
 20225  }
 20226  
 20227  // String returns the string representation.
 20228  //
 20229  // API parameter values that are decorated as "sensitive" in the API will not
 20230  // be included in the string output. The member name will be present, but the
 20231  // value will be replaced with "sensitive".
 20232  func (s ReshardingConfiguration) String() string {
 20233  	return awsutil.Prettify(s)
 20234  }
 20235  
 20236  // GoString returns the string representation.
 20237  //
 20238  // API parameter values that are decorated as "sensitive" in the API will not
 20239  // be included in the string output. The member name will be present, but the
 20240  // value will be replaced with "sensitive".
 20241  func (s ReshardingConfiguration) GoString() string {
 20242  	return s.String()
 20243  }
 20244  
 20245  // Validate inspects the fields of the type to determine if they are valid.
 20246  func (s *ReshardingConfiguration) Validate() error {
 20247  	invalidParams := request.ErrInvalidParams{Context: "ReshardingConfiguration"}
 20248  	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
 20249  		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
 20250  	}
 20251  
 20252  	if invalidParams.Len() > 0 {
 20253  		return invalidParams
 20254  	}
 20255  	return nil
 20256  }
 20257  
 20258  // SetNodeGroupId sets the NodeGroupId field's value.
 20259  func (s *ReshardingConfiguration) SetNodeGroupId(v string) *ReshardingConfiguration {
 20260  	s.NodeGroupId = &v
 20261  	return s
 20262  }
 20263  
 20264  // SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
 20265  func (s *ReshardingConfiguration) SetPreferredAvailabilityZones(v []*string) *ReshardingConfiguration {
 20266  	s.PreferredAvailabilityZones = v
 20267  	return s
 20268  }
 20269  
 20270  // The status of an online resharding operation.
 20271  type ReshardingStatus struct {
 20272  	_ struct{} `type:"structure"`
 20273  
 20274  	// Represents the progress of an online resharding operation.
 20275  	SlotMigration *SlotMigration `type:"structure"`
 20276  }
 20277  
 20278  // String returns the string representation.
 20279  //
 20280  // API parameter values that are decorated as "sensitive" in the API will not
 20281  // be included in the string output. The member name will be present, but the
 20282  // value will be replaced with "sensitive".
 20283  func (s ReshardingStatus) String() string {
 20284  	return awsutil.Prettify(s)
 20285  }
 20286  
 20287  // GoString returns the string representation.
 20288  //
 20289  // API parameter values that are decorated as "sensitive" in the API will not
 20290  // be included in the string output. The member name will be present, but the
 20291  // value will be replaced with "sensitive".
 20292  func (s ReshardingStatus) GoString() string {
 20293  	return s.String()
 20294  }
 20295  
 20296  // SetSlotMigration sets the SlotMigration field's value.
 20297  func (s *ReshardingStatus) SetSlotMigration(v *SlotMigration) *ReshardingStatus {
 20298  	s.SlotMigration = v
 20299  	return s
 20300  }
 20301  
 20302  // Represents the input of a RevokeCacheSecurityGroupIngress operation.
 20303  type RevokeCacheSecurityGroupIngressInput struct {
 20304  	_ struct{} `type:"structure"`
 20305  
 20306  	// The name of the cache security group to revoke ingress from.
 20307  	//
 20308  	// CacheSecurityGroupName is a required field
 20309  	CacheSecurityGroupName *string `type:"string" required:"true"`
 20310  
 20311  	// The name of the Amazon EC2 security group to revoke access from.
 20312  	//
 20313  	// EC2SecurityGroupName is a required field
 20314  	EC2SecurityGroupName *string `type:"string" required:"true"`
 20315  
 20316  	// The Amazon account number of the Amazon EC2 security group owner. Note that
 20317  	// this is not the same thing as an Amazon access key ID - you must provide
 20318  	// a valid Amazon account number for this parameter.
 20319  	//
 20320  	// EC2SecurityGroupOwnerId is a required field
 20321  	EC2SecurityGroupOwnerId *string `type:"string" required:"true"`
 20322  }
 20323  
 20324  // String returns the string representation.
 20325  //
 20326  // API parameter values that are decorated as "sensitive" in the API will not
 20327  // be included in the string output. The member name will be present, but the
 20328  // value will be replaced with "sensitive".
 20329  func (s RevokeCacheSecurityGroupIngressInput) String() string {
 20330  	return awsutil.Prettify(s)
 20331  }
 20332  
 20333  // GoString returns the string representation.
 20334  //
 20335  // API parameter values that are decorated as "sensitive" in the API will not
 20336  // be included in the string output. The member name will be present, but the
 20337  // value will be replaced with "sensitive".
 20338  func (s RevokeCacheSecurityGroupIngressInput) GoString() string {
 20339  	return s.String()
 20340  }
 20341  
 20342  // Validate inspects the fields of the type to determine if they are valid.
 20343  func (s *RevokeCacheSecurityGroupIngressInput) Validate() error {
 20344  	invalidParams := request.ErrInvalidParams{Context: "RevokeCacheSecurityGroupIngressInput"}
 20345  	if s.CacheSecurityGroupName == nil {
 20346  		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
 20347  	}
 20348  	if s.EC2SecurityGroupName == nil {
 20349  		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupName"))
 20350  	}
 20351  	if s.EC2SecurityGroupOwnerId == nil {
 20352  		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupOwnerId"))
 20353  	}
 20354  
 20355  	if invalidParams.Len() > 0 {
 20356  		return invalidParams
 20357  	}
 20358  	return nil
 20359  }
 20360  
 20361  // SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
 20362  func (s *RevokeCacheSecurityGroupIngressInput) SetCacheSecurityGroupName(v string) *RevokeCacheSecurityGroupIngressInput {
 20363  	s.CacheSecurityGroupName = &v
 20364  	return s
 20365  }
 20366  
 20367  // SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
 20368  func (s *RevokeCacheSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *RevokeCacheSecurityGroupIngressInput {
 20369  	s.EC2SecurityGroupName = &v
 20370  	return s
 20371  }
 20372  
 20373  // SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
 20374  func (s *RevokeCacheSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *RevokeCacheSecurityGroupIngressInput {
 20375  	s.EC2SecurityGroupOwnerId = &v
 20376  	return s
 20377  }
 20378  
 20379  type RevokeCacheSecurityGroupIngressOutput struct {
 20380  	_ struct{} `type:"structure"`
 20381  
 20382  	// Represents the output of one of the following operations:
 20383  	//
 20384  	//    * AuthorizeCacheSecurityGroupIngress
 20385  	//
 20386  	//    * CreateCacheSecurityGroup
 20387  	//
 20388  	//    * RevokeCacheSecurityGroupIngress
 20389  	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
 20390  }
 20391  
 20392  // String returns the string representation.
 20393  //
 20394  // API parameter values that are decorated as "sensitive" in the API will not
 20395  // be included in the string output. The member name will be present, but the
 20396  // value will be replaced with "sensitive".
 20397  func (s RevokeCacheSecurityGroupIngressOutput) String() string {
 20398  	return awsutil.Prettify(s)
 20399  }
 20400  
 20401  // GoString returns the string representation.
 20402  //
 20403  // API parameter values that are decorated as "sensitive" in the API will not
 20404  // be included in the string output. The member name will be present, but the
 20405  // value will be replaced with "sensitive".
 20406  func (s RevokeCacheSecurityGroupIngressOutput) GoString() string {
 20407  	return s.String()
 20408  }
 20409  
 20410  // SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
 20411  func (s *RevokeCacheSecurityGroupIngressOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *RevokeCacheSecurityGroupIngressOutput {
 20412  	s.CacheSecurityGroup = v
 20413  	return s
 20414  }
 20415  
 20416  // Represents a single cache security group and its status.
 20417  type SecurityGroupMembership struct {
 20418  	_ struct{} `type:"structure"`
 20419  
 20420  	// The identifier of the cache security group.
 20421  	SecurityGroupId *string `type:"string"`
 20422  
 20423  	// The status of the cache security group membership. The status changes whenever
 20424  	// a cache security group is modified, or when the cache security groups assigned
 20425  	// to a cluster are modified.
 20426  	Status *string `type:"string"`
 20427  }
 20428  
 20429  // String returns the string representation.
 20430  //
 20431  // API parameter values that are decorated as "sensitive" in the API will not
 20432  // be included in the string output. The member name will be present, but the
 20433  // value will be replaced with "sensitive".
 20434  func (s SecurityGroupMembership) String() string {
 20435  	return awsutil.Prettify(s)
 20436  }
 20437  
 20438  // GoString returns the string representation.
 20439  //
 20440  // API parameter values that are decorated as "sensitive" in the API will not
 20441  // be included in the string output. The member name will be present, but the
 20442  // value will be replaced with "sensitive".
 20443  func (s SecurityGroupMembership) GoString() string {
 20444  	return s.String()
 20445  }
 20446  
 20447  // SetSecurityGroupId sets the SecurityGroupId field's value.
 20448  func (s *SecurityGroupMembership) SetSecurityGroupId(v string) *SecurityGroupMembership {
 20449  	s.SecurityGroupId = &v
 20450  	return s
 20451  }
 20452  
 20453  // SetStatus sets the Status field's value.
 20454  func (s *SecurityGroupMembership) SetStatus(v string) *SecurityGroupMembership {
 20455  	s.Status = &v
 20456  	return s
 20457  }
 20458  
 20459  // An update that you can apply to your Redis clusters.
 20460  type ServiceUpdate struct {
 20461  	_ struct{} `type:"structure"`
 20462  
 20463  	// Indicates whether the service update will be automatically applied once the
 20464  	// recommended apply-by date has expired.
 20465  	AutoUpdateAfterRecommendedApplyByDate *bool `type:"boolean"`
 20466  
 20467  	// The Elasticache engine to which the update applies. Either Redis or Memcached
 20468  	Engine *string `type:"string"`
 20469  
 20470  	// The Elasticache engine version to which the update applies. Either Redis
 20471  	// or Memcached engine version
 20472  	EngineVersion *string `type:"string"`
 20473  
 20474  	// The estimated length of time the service update will take
 20475  	EstimatedUpdateTime *string `type:"string"`
 20476  
 20477  	// Provides details of the service update
 20478  	ServiceUpdateDescription *string `type:"string"`
 20479  
 20480  	// The date after which the service update is no longer available
 20481  	ServiceUpdateEndDate *time.Time `type:"timestamp"`
 20482  
 20483  	// The unique ID of the service update
 20484  	ServiceUpdateName *string `type:"string"`
 20485  
 20486  	// The recommendend date to apply the service update in order to ensure compliance.
 20487  	// For information on compliance, see Self-Service Security Updates for Compliance
 20488  	// (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-compliance.html#elasticache-compliance-self-service).
 20489  	ServiceUpdateRecommendedApplyByDate *time.Time `type:"timestamp"`
 20490  
 20491  	// The date when the service update is initially available
 20492  	ServiceUpdateReleaseDate *time.Time `type:"timestamp"`
 20493  
 20494  	// The severity of the service update
 20495  	ServiceUpdateSeverity *string `type:"string" enum:"ServiceUpdateSeverity"`
 20496  
 20497  	// The status of the service update
 20498  	ServiceUpdateStatus *string `type:"string" enum:"ServiceUpdateStatus"`
 20499  
 20500  	// Reflects the nature of the service update
 20501  	ServiceUpdateType *string `type:"string" enum:"ServiceUpdateType"`
 20502  }
 20503  
 20504  // String returns the string representation.
 20505  //
 20506  // API parameter values that are decorated as "sensitive" in the API will not
 20507  // be included in the string output. The member name will be present, but the
 20508  // value will be replaced with "sensitive".
 20509  func (s ServiceUpdate) String() string {
 20510  	return awsutil.Prettify(s)
 20511  }
 20512  
 20513  // GoString returns the string representation.
 20514  //
 20515  // API parameter values that are decorated as "sensitive" in the API will not
 20516  // be included in the string output. The member name will be present, but the
 20517  // value will be replaced with "sensitive".
 20518  func (s ServiceUpdate) GoString() string {
 20519  	return s.String()
 20520  }
 20521  
 20522  // SetAutoUpdateAfterRecommendedApplyByDate sets the AutoUpdateAfterRecommendedApplyByDate field's value.
 20523  func (s *ServiceUpdate) SetAutoUpdateAfterRecommendedApplyByDate(v bool) *ServiceUpdate {
 20524  	s.AutoUpdateAfterRecommendedApplyByDate = &v
 20525  	return s
 20526  }
 20527  
 20528  // SetEngine sets the Engine field's value.
 20529  func (s *ServiceUpdate) SetEngine(v string) *ServiceUpdate {
 20530  	s.Engine = &v
 20531  	return s
 20532  }
 20533  
 20534  // SetEngineVersion sets the EngineVersion field's value.
 20535  func (s *ServiceUpdate) SetEngineVersion(v string) *ServiceUpdate {
 20536  	s.EngineVersion = &v
 20537  	return s
 20538  }
 20539  
 20540  // SetEstimatedUpdateTime sets the EstimatedUpdateTime field's value.
 20541  func (s *ServiceUpdate) SetEstimatedUpdateTime(v string) *ServiceUpdate {
 20542  	s.EstimatedUpdateTime = &v
 20543  	return s
 20544  }
 20545  
 20546  // SetServiceUpdateDescription sets the ServiceUpdateDescription field's value.
 20547  func (s *ServiceUpdate) SetServiceUpdateDescription(v string) *ServiceUpdate {
 20548  	s.ServiceUpdateDescription = &v
 20549  	return s
 20550  }
 20551  
 20552  // SetServiceUpdateEndDate sets the ServiceUpdateEndDate field's value.
 20553  func (s *ServiceUpdate) SetServiceUpdateEndDate(v time.Time) *ServiceUpdate {
 20554  	s.ServiceUpdateEndDate = &v
 20555  	return s
 20556  }
 20557  
 20558  // SetServiceUpdateName sets the ServiceUpdateName field's value.
 20559  func (s *ServiceUpdate) SetServiceUpdateName(v string) *ServiceUpdate {
 20560  	s.ServiceUpdateName = &v
 20561  	return s
 20562  }
 20563  
 20564  // SetServiceUpdateRecommendedApplyByDate sets the ServiceUpdateRecommendedApplyByDate field's value.
 20565  func (s *ServiceUpdate) SetServiceUpdateRecommendedApplyByDate(v time.Time) *ServiceUpdate {
 20566  	s.ServiceUpdateRecommendedApplyByDate = &v
 20567  	return s
 20568  }
 20569  
 20570  // SetServiceUpdateReleaseDate sets the ServiceUpdateReleaseDate field's value.
 20571  func (s *ServiceUpdate) SetServiceUpdateReleaseDate(v time.Time) *ServiceUpdate {
 20572  	s.ServiceUpdateReleaseDate = &v
 20573  	return s
 20574  }
 20575  
 20576  // SetServiceUpdateSeverity sets the ServiceUpdateSeverity field's value.
 20577  func (s *ServiceUpdate) SetServiceUpdateSeverity(v string) *ServiceUpdate {
 20578  	s.ServiceUpdateSeverity = &v
 20579  	return s
 20580  }
 20581  
 20582  // SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
 20583  func (s *ServiceUpdate) SetServiceUpdateStatus(v string) *ServiceUpdate {
 20584  	s.ServiceUpdateStatus = &v
 20585  	return s
 20586  }
 20587  
 20588  // SetServiceUpdateType sets the ServiceUpdateType field's value.
 20589  func (s *ServiceUpdate) SetServiceUpdateType(v string) *ServiceUpdate {
 20590  	s.ServiceUpdateType = &v
 20591  	return s
 20592  }
 20593  
 20594  // Represents the progress of an online resharding operation.
 20595  type SlotMigration struct {
 20596  	_ struct{} `type:"structure"`
 20597  
 20598  	// The percentage of the slot migration that is complete.
 20599  	ProgressPercentage *float64 `type:"double"`
 20600  }
 20601  
 20602  // String returns the string representation.
 20603  //
 20604  // API parameter values that are decorated as "sensitive" in the API will not
 20605  // be included in the string output. The member name will be present, but the
 20606  // value will be replaced with "sensitive".
 20607  func (s SlotMigration) String() string {
 20608  	return awsutil.Prettify(s)
 20609  }
 20610  
 20611  // GoString returns the string representation.
 20612  //
 20613  // API parameter values that are decorated as "sensitive" in the API will not
 20614  // be included in the string output. The member name will be present, but the
 20615  // value will be replaced with "sensitive".
 20616  func (s SlotMigration) GoString() string {
 20617  	return s.String()
 20618  }
 20619  
 20620  // SetProgressPercentage sets the ProgressPercentage field's value.
 20621  func (s *SlotMigration) SetProgressPercentage(v float64) *SlotMigration {
 20622  	s.ProgressPercentage = &v
 20623  	return s
 20624  }
 20625  
 20626  // Represents a copy of an entire Redis cluster as of the time when the snapshot
 20627  // was taken.
 20628  type Snapshot struct {
 20629  	_ struct{} `type:"structure"`
 20630  
 20631  	// The ARN (Amazon Resource Name) of the snapshot.
 20632  	ARN *string `type:"string"`
 20633  
 20634  	// This parameter is currently disabled.
 20635  	AutoMinorVersionUpgrade *bool `type:"boolean"`
 20636  
 20637  	// Indicates the status of automatic failover for the source Redis replication
 20638  	// group.
 20639  	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
 20640  
 20641  	// The date and time when the source cluster was created.
 20642  	CacheClusterCreateTime *time.Time `type:"timestamp"`
 20643  
 20644  	// The user-supplied identifier of the source cluster.
 20645  	CacheClusterId *string `type:"string"`
 20646  
 20647  	// The name of the compute and memory capacity node type for the source cluster.
 20648  	//
 20649  	// The following node types are supported by ElastiCache. Generally speaking,
 20650  	// the current generation types provide more memory and computational power
 20651  	// at lower cost when compared to their equivalent previous generation counterparts.
 20652  	//
 20653  	//    * General purpose: Current generation: M6g node types (available only
 20654  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
 20655  	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
 20656  	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
 20657  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
 20658  	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
 20659  	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
 20660  	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
 20661  	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
 20662  	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
 20663  	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
 20664  	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
 20665  	//    cache.m3.2xlarge
 20666  	//
 20667  	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
 20668  	//    cache.c1.xlarge
 20669  	//
 20670  	//    * Memory optimized: Current generation: R6g node types (available only
 20671  	//    for Redis engine version 5.0.6 onward and for Memcached engine version
 20672  	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
 20673  	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
 20674  	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
 20675  	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
 20676  	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
 20677  	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
 20678  	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
 20679  	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
 20680  	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
 20681  	//
 20682  	// Additional node type info
 20683  	//
 20684  	//    * All current generation instance types are created in Amazon VPC by default.
 20685  	//
 20686  	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
 20687  	//
 20688  	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
 20689  	//
 20690  	//    * Redis configuration variables appendonly and appendfsync are not supported
 20691  	//    on Redis version 2.8.22 and later.
 20692  	CacheNodeType *string `type:"string"`
 20693  
 20694  	// The cache parameter group that is associated with the source cluster.
 20695  	CacheParameterGroupName *string `type:"string"`
 20696  
 20697  	// The name of the cache subnet group associated with the source cluster.
 20698  	CacheSubnetGroupName *string `type:"string"`
 20699  
 20700  	// The name of the cache engine (memcached or redis) used by the source cluster.
 20701  	Engine *string `type:"string"`
 20702  
 20703  	// The version of the cache engine version that is used by the source cluster.
 20704  	EngineVersion *string `type:"string"`
 20705  
 20706  	// The ID of the KMS key used to encrypt the snapshot.
 20707  	KmsKeyId *string `type:"string"`
 20708  
 20709  	// A list of the cache nodes in the source cluster.
 20710  	NodeSnapshots []*NodeSnapshot `locationNameList:"NodeSnapshot" type:"list"`
 20711  
 20712  	// The number of cache nodes in the source cluster.
 20713  	//
 20714  	// For clusters running Redis, this value must be 1. For clusters running Memcached,
 20715  	// this value must be between 1 and 40.
 20716  	NumCacheNodes *int64 `type:"integer"`
 20717  
 20718  	// The number of node groups (shards) in this snapshot. When restoring from
 20719  	// a snapshot, the number of node groups (shards) in the snapshot and in the
 20720  	// restored replication group must be the same.
 20721  	NumNodeGroups *int64 `type:"integer"`
 20722  
 20723  	// The port number used by each cache nodes in the source cluster.
 20724  	Port *int64 `type:"integer"`
 20725  
 20726  	// The name of the Availability Zone in which the source cluster is located.
 20727  	PreferredAvailabilityZone *string `type:"string"`
 20728  
 20729  	// Specifies the weekly time range during which maintenance on the cluster is
 20730  	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
 20731  	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
 20732  	//
 20733  	// Valid values for ddd are:
 20734  	//
 20735  	//    * sun
 20736  	//
 20737  	//    * mon
 20738  	//
 20739  	//    * tue
 20740  	//
 20741  	//    * wed
 20742  	//
 20743  	//    * thu
 20744  	//
 20745  	//    * fri
 20746  	//
 20747  	//    * sat
 20748  	//
 20749  	// Example: sun:23:00-mon:01:30
 20750  	PreferredMaintenanceWindow *string `type:"string"`
 20751  
 20752  	// The ARN (Amazon Resource Name) of the preferred outpost.
 20753  	PreferredOutpostArn *string `type:"string"`
 20754  
 20755  	// A description of the source replication group.
 20756  	ReplicationGroupDescription *string `type:"string"`
 20757  
 20758  	// The unique identifier of the source replication group.
 20759  	ReplicationGroupId *string `type:"string"`
 20760  
 20761  	// The name of a snapshot. For an automatic snapshot, the name is system-generated.
 20762  	// For a manual snapshot, this is the user-provided name.
 20763  	SnapshotName *string `type:"string"`
 20764  
 20765  	// For an automatic snapshot, the number of days for which ElastiCache retains
 20766  	// the snapshot before deleting it.
 20767  	//
 20768  	// For manual snapshots, this field reflects the SnapshotRetentionLimit for
 20769  	// the source cluster when the snapshot was created. This field is otherwise
 20770  	// ignored: Manual snapshots do not expire, and can only be deleted using the
 20771  	// DeleteSnapshot operation.
 20772  	//
 20773  	// Important If the value of SnapshotRetentionLimit is set to zero (0), backups
 20774  	// are turned off.
 20775  	SnapshotRetentionLimit *int64 `type:"integer"`
 20776  
 20777  	// Indicates whether the snapshot is from an automatic backup (automated) or
 20778  	// was created manually (manual).
 20779  	SnapshotSource *string `type:"string"`
 20780  
 20781  	// The status of the snapshot. Valid values: creating | available | restoring
 20782  	// | copying | deleting.
 20783  	SnapshotStatus *string `type:"string"`
 20784  
 20785  	// The daily time range during which ElastiCache takes daily snapshots of the
 20786  	// source cluster.
 20787  	SnapshotWindow *string `type:"string"`
 20788  
 20789  	// The Amazon Resource Name (ARN) for the topic used by the source cluster for
 20790  	// publishing notifications.
 20791  	TopicArn *string `type:"string"`
 20792  
 20793  	// The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet
 20794  	// group for the source cluster.
 20795  	VpcId *string `type:"string"`
 20796  }
 20797  
 20798  // String returns the string representation.
 20799  //
 20800  // API parameter values that are decorated as "sensitive" in the API will not
 20801  // be included in the string output. The member name will be present, but the
 20802  // value will be replaced with "sensitive".
 20803  func (s Snapshot) String() string {
 20804  	return awsutil.Prettify(s)
 20805  }
 20806  
 20807  // GoString returns the string representation.
 20808  //
 20809  // API parameter values that are decorated as "sensitive" in the API will not
 20810  // be included in the string output. The member name will be present, but the
 20811  // value will be replaced with "sensitive".
 20812  func (s Snapshot) GoString() string {
 20813  	return s.String()
 20814  }
 20815  
 20816  // SetARN sets the ARN field's value.
 20817  func (s *Snapshot) SetARN(v string) *Snapshot {
 20818  	s.ARN = &v
 20819  	return s
 20820  }
 20821  
 20822  // SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
 20823  func (s *Snapshot) SetAutoMinorVersionUpgrade(v bool) *Snapshot {
 20824  	s.AutoMinorVersionUpgrade = &v
 20825  	return s
 20826  }
 20827  
 20828  // SetAutomaticFailover sets the AutomaticFailover field's value.
 20829  func (s *Snapshot) SetAutomaticFailover(v string) *Snapshot {
 20830  	s.AutomaticFailover = &v
 20831  	return s
 20832  }
 20833  
 20834  // SetCacheClusterCreateTime sets the CacheClusterCreateTime field's value.
 20835  func (s *Snapshot) SetCacheClusterCreateTime(v time.Time) *Snapshot {
 20836  	s.CacheClusterCreateTime = &v
 20837  	return s
 20838  }
 20839  
 20840  // SetCacheClusterId sets the CacheClusterId field's value.
 20841  func (s *Snapshot) SetCacheClusterId(v string) *Snapshot {
 20842  	s.CacheClusterId = &v
 20843  	return s
 20844  }
 20845  
 20846  // SetCacheNodeType sets the CacheNodeType field's value.
 20847  func (s *Snapshot) SetCacheNodeType(v string) *Snapshot {
 20848  	s.CacheNodeType = &v
 20849  	return s
 20850  }
 20851  
 20852  // SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
 20853  func (s *Snapshot) SetCacheParameterGroupName(v string) *Snapshot {
 20854  	s.CacheParameterGroupName = &v
 20855  	return s
 20856  }
 20857  
 20858  // SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
 20859  func (s *Snapshot) SetCacheSubnetGroupName(v string) *Snapshot {
 20860  	s.CacheSubnetGroupName = &v
 20861  	return s
 20862  }
 20863  
 20864  // SetEngine sets the Engine field's value.
 20865  func (s *Snapshot) SetEngine(v string) *Snapshot {
 20866  	s.Engine = &v
 20867  	return s
 20868  }
 20869  
 20870  // SetEngineVersion sets the EngineVersion field's value.
 20871  func (s *Snapshot) SetEngineVersion(v string) *Snapshot {
 20872  	s.EngineVersion = &v
 20873  	return s
 20874  }
 20875  
 20876  // SetKmsKeyId sets the KmsKeyId field's value.
 20877  func (s *Snapshot) SetKmsKeyId(v string) *Snapshot {
 20878  	s.KmsKeyId = &v
 20879  	return s
 20880  }
 20881  
 20882  // SetNodeSnapshots sets the NodeSnapshots field's value.
 20883  func (s *Snapshot) SetNodeSnapshots(v []*NodeSnapshot) *Snapshot {
 20884  	s.NodeSnapshots = v
 20885  	return s
 20886  }
 20887  
 20888  // SetNumCacheNodes sets the NumCacheNodes field's value.
 20889  func (s *Snapshot) SetNumCacheNodes(v int64) *Snapshot {
 20890  	s.NumCacheNodes = &v
 20891  	return s
 20892  }
 20893  
 20894  // SetNumNodeGroups sets the NumNodeGroups field's value.
 20895  func (s *Snapshot) SetNumNodeGroups(v int64) *Snapshot {
 20896  	s.NumNodeGroups = &v
 20897  	return s
 20898  }
 20899  
 20900  // SetPort sets the Port field's value.
 20901  func (s *Snapshot) SetPort(v int64) *Snapshot {
 20902  	s.Port = &v
 20903  	return s
 20904  }
 20905  
 20906  // SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
 20907  func (s *Snapshot) SetPreferredAvailabilityZone(v string) *Snapshot {
 20908  	s.PreferredAvailabilityZone = &v
 20909  	return s
 20910  }
 20911  
 20912  // SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
 20913  func (s *Snapshot) SetPreferredMaintenanceWindow(v string) *Snapshot {
 20914  	s.PreferredMaintenanceWindow = &v
 20915  	return s
 20916  }
 20917  
 20918  // SetPreferredOutpostArn sets the PreferredOutpostArn field's value.
 20919  func (s *Snapshot) SetPreferredOutpostArn(v string) *Snapshot {
 20920  	s.PreferredOutpostArn = &v
 20921  	return s
 20922  }
 20923  
 20924  // SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
 20925  func (s *Snapshot) SetReplicationGroupDescription(v string) *Snapshot {
 20926  	s.ReplicationGroupDescription = &v
 20927  	return s
 20928  }
 20929  
 20930  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 20931  func (s *Snapshot) SetReplicationGroupId(v string) *Snapshot {
 20932  	s.ReplicationGroupId = &v
 20933  	return s
 20934  }
 20935  
 20936  // SetSnapshotName sets the SnapshotName field's value.
 20937  func (s *Snapshot) SetSnapshotName(v string) *Snapshot {
 20938  	s.SnapshotName = &v
 20939  	return s
 20940  }
 20941  
 20942  // SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
 20943  func (s *Snapshot) SetSnapshotRetentionLimit(v int64) *Snapshot {
 20944  	s.SnapshotRetentionLimit = &v
 20945  	return s
 20946  }
 20947  
 20948  // SetSnapshotSource sets the SnapshotSource field's value.
 20949  func (s *Snapshot) SetSnapshotSource(v string) *Snapshot {
 20950  	s.SnapshotSource = &v
 20951  	return s
 20952  }
 20953  
 20954  // SetSnapshotStatus sets the SnapshotStatus field's value.
 20955  func (s *Snapshot) SetSnapshotStatus(v string) *Snapshot {
 20956  	s.SnapshotStatus = &v
 20957  	return s
 20958  }
 20959  
 20960  // SetSnapshotWindow sets the SnapshotWindow field's value.
 20961  func (s *Snapshot) SetSnapshotWindow(v string) *Snapshot {
 20962  	s.SnapshotWindow = &v
 20963  	return s
 20964  }
 20965  
 20966  // SetTopicArn sets the TopicArn field's value.
 20967  func (s *Snapshot) SetTopicArn(v string) *Snapshot {
 20968  	s.TopicArn = &v
 20969  	return s
 20970  }
 20971  
 20972  // SetVpcId sets the VpcId field's value.
 20973  func (s *Snapshot) SetVpcId(v string) *Snapshot {
 20974  	s.VpcId = &v
 20975  	return s
 20976  }
 20977  
 20978  type StartMigrationInput struct {
 20979  	_ struct{} `type:"structure"`
 20980  
 20981  	// List of endpoints from which data should be migrated. For Redis (cluster
 20982  	// mode disabled), list should have only one element.
 20983  	//
 20984  	// CustomerNodeEndpointList is a required field
 20985  	CustomerNodeEndpointList []*CustomerNodeEndpoint `type:"list" required:"true"`
 20986  
 20987  	// The ID of the replication group to which data should be migrated.
 20988  	//
 20989  	// ReplicationGroupId is a required field
 20990  	ReplicationGroupId *string `type:"string" required:"true"`
 20991  }
 20992  
 20993  // String returns the string representation.
 20994  //
 20995  // API parameter values that are decorated as "sensitive" in the API will not
 20996  // be included in the string output. The member name will be present, but the
 20997  // value will be replaced with "sensitive".
 20998  func (s StartMigrationInput) String() string {
 20999  	return awsutil.Prettify(s)
 21000  }
 21001  
 21002  // GoString returns the string representation.
 21003  //
 21004  // API parameter values that are decorated as "sensitive" in the API will not
 21005  // be included in the string output. The member name will be present, but the
 21006  // value will be replaced with "sensitive".
 21007  func (s StartMigrationInput) GoString() string {
 21008  	return s.String()
 21009  }
 21010  
 21011  // Validate inspects the fields of the type to determine if they are valid.
 21012  func (s *StartMigrationInput) Validate() error {
 21013  	invalidParams := request.ErrInvalidParams{Context: "StartMigrationInput"}
 21014  	if s.CustomerNodeEndpointList == nil {
 21015  		invalidParams.Add(request.NewErrParamRequired("CustomerNodeEndpointList"))
 21016  	}
 21017  	if s.ReplicationGroupId == nil {
 21018  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
 21019  	}
 21020  
 21021  	if invalidParams.Len() > 0 {
 21022  		return invalidParams
 21023  	}
 21024  	return nil
 21025  }
 21026  
 21027  // SetCustomerNodeEndpointList sets the CustomerNodeEndpointList field's value.
 21028  func (s *StartMigrationInput) SetCustomerNodeEndpointList(v []*CustomerNodeEndpoint) *StartMigrationInput {
 21029  	s.CustomerNodeEndpointList = v
 21030  	return s
 21031  }
 21032  
 21033  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 21034  func (s *StartMigrationInput) SetReplicationGroupId(v string) *StartMigrationInput {
 21035  	s.ReplicationGroupId = &v
 21036  	return s
 21037  }
 21038  
 21039  type StartMigrationOutput struct {
 21040  	_ struct{} `type:"structure"`
 21041  
 21042  	// Contains all of the attributes of a specific Redis replication group.
 21043  	ReplicationGroup *ReplicationGroup `type:"structure"`
 21044  }
 21045  
 21046  // String returns the string representation.
 21047  //
 21048  // API parameter values that are decorated as "sensitive" in the API will not
 21049  // be included in the string output. The member name will be present, but the
 21050  // value will be replaced with "sensitive".
 21051  func (s StartMigrationOutput) String() string {
 21052  	return awsutil.Prettify(s)
 21053  }
 21054  
 21055  // GoString returns the string representation.
 21056  //
 21057  // API parameter values that are decorated as "sensitive" in the API will not
 21058  // be included in the string output. The member name will be present, but the
 21059  // value will be replaced with "sensitive".
 21060  func (s StartMigrationOutput) GoString() string {
 21061  	return s.String()
 21062  }
 21063  
 21064  // SetReplicationGroup sets the ReplicationGroup field's value.
 21065  func (s *StartMigrationOutput) SetReplicationGroup(v *ReplicationGroup) *StartMigrationOutput {
 21066  	s.ReplicationGroup = v
 21067  	return s
 21068  }
 21069  
 21070  // Represents the subnet associated with a cluster. This parameter refers to
 21071  // subnets defined in Amazon Virtual Private Cloud (Amazon VPC) and used with
 21072  // ElastiCache.
 21073  type Subnet struct {
 21074  	_ struct{} `type:"structure"`
 21075  
 21076  	// The Availability Zone associated with the subnet.
 21077  	SubnetAvailabilityZone *AvailabilityZone `type:"structure"`
 21078  
 21079  	// The unique identifier for the subnet.
 21080  	SubnetIdentifier *string `type:"string"`
 21081  
 21082  	// The outpost ARN of the subnet.
 21083  	SubnetOutpost *SubnetOutpost `type:"structure"`
 21084  }
 21085  
 21086  // String returns the string representation.
 21087  //
 21088  // API parameter values that are decorated as "sensitive" in the API will not
 21089  // be included in the string output. The member name will be present, but the
 21090  // value will be replaced with "sensitive".
 21091  func (s Subnet) String() string {
 21092  	return awsutil.Prettify(s)
 21093  }
 21094  
 21095  // GoString returns the string representation.
 21096  //
 21097  // API parameter values that are decorated as "sensitive" in the API will not
 21098  // be included in the string output. The member name will be present, but the
 21099  // value will be replaced with "sensitive".
 21100  func (s Subnet) GoString() string {
 21101  	return s.String()
 21102  }
 21103  
 21104  // SetSubnetAvailabilityZone sets the SubnetAvailabilityZone field's value.
 21105  func (s *Subnet) SetSubnetAvailabilityZone(v *AvailabilityZone) *Subnet {
 21106  	s.SubnetAvailabilityZone = v
 21107  	return s
 21108  }
 21109  
 21110  // SetSubnetIdentifier sets the SubnetIdentifier field's value.
 21111  func (s *Subnet) SetSubnetIdentifier(v string) *Subnet {
 21112  	s.SubnetIdentifier = &v
 21113  	return s
 21114  }
 21115  
 21116  // SetSubnetOutpost sets the SubnetOutpost field's value.
 21117  func (s *Subnet) SetSubnetOutpost(v *SubnetOutpost) *Subnet {
 21118  	s.SubnetOutpost = v
 21119  	return s
 21120  }
 21121  
 21122  // The ID of the outpost subnet.
 21123  type SubnetOutpost struct {
 21124  	_ struct{} `type:"structure"`
 21125  
 21126  	// The outpost ARN of the subnet.
 21127  	SubnetOutpostArn *string `type:"string"`
 21128  }
 21129  
 21130  // String returns the string representation.
 21131  //
 21132  // API parameter values that are decorated as "sensitive" in the API will not
 21133  // be included in the string output. The member name will be present, but the
 21134  // value will be replaced with "sensitive".
 21135  func (s SubnetOutpost) String() string {
 21136  	return awsutil.Prettify(s)
 21137  }
 21138  
 21139  // GoString returns the string representation.
 21140  //
 21141  // API parameter values that are decorated as "sensitive" in the API will not
 21142  // be included in the string output. The member name will be present, but the
 21143  // value will be replaced with "sensitive".
 21144  func (s SubnetOutpost) GoString() string {
 21145  	return s.String()
 21146  }
 21147  
 21148  // SetSubnetOutpostArn sets the SubnetOutpostArn field's value.
 21149  func (s *SubnetOutpost) SetSubnetOutpostArn(v string) *SubnetOutpost {
 21150  	s.SubnetOutpostArn = &v
 21151  	return s
 21152  }
 21153  
 21154  // A tag that can be added to an ElastiCache cluster or replication group. Tags
 21155  // are composed of a Key/Value pair. You can use tags to categorize and track
 21156  // all your ElastiCache resources, with the exception of global replication
 21157  // group. When you add or remove tags on replication groups, those actions will
 21158  // be replicated to all nodes in the replication group. A tag with a null Value
 21159  // is permitted.
 21160  type Tag struct {
 21161  	_ struct{} `type:"structure"`
 21162  
 21163  	// The key for the tag. May not be null.
 21164  	Key *string `type:"string"`
 21165  
 21166  	// The tag's value. May be null.
 21167  	Value *string `type:"string"`
 21168  }
 21169  
 21170  // String returns the string representation.
 21171  //
 21172  // API parameter values that are decorated as "sensitive" in the API will not
 21173  // be included in the string output. The member name will be present, but the
 21174  // value will be replaced with "sensitive".
 21175  func (s Tag) String() string {
 21176  	return awsutil.Prettify(s)
 21177  }
 21178  
 21179  // GoString returns the string representation.
 21180  //
 21181  // API parameter values that are decorated as "sensitive" in the API will not
 21182  // be included in the string output. The member name will be present, but the
 21183  // value will be replaced with "sensitive".
 21184  func (s Tag) GoString() string {
 21185  	return s.String()
 21186  }
 21187  
 21188  // SetKey sets the Key field's value.
 21189  func (s *Tag) SetKey(v string) *Tag {
 21190  	s.Key = &v
 21191  	return s
 21192  }
 21193  
 21194  // SetValue sets the Value field's value.
 21195  func (s *Tag) SetValue(v string) *Tag {
 21196  	s.Value = &v
 21197  	return s
 21198  }
 21199  
 21200  // Represents the output from the AddTagsToResource, ListTagsForResource, and
 21201  // RemoveTagsFromResource operations.
 21202  type TagListMessage struct {
 21203  	_ struct{} `type:"structure"`
 21204  
 21205  	// A list of tags as key-value pairs.
 21206  	TagList []*Tag `locationNameList:"Tag" type:"list"`
 21207  }
 21208  
 21209  // String returns the string representation.
 21210  //
 21211  // API parameter values that are decorated as "sensitive" in the API will not
 21212  // be included in the string output. The member name will be present, but the
 21213  // value will be replaced with "sensitive".
 21214  func (s TagListMessage) String() string {
 21215  	return awsutil.Prettify(s)
 21216  }
 21217  
 21218  // GoString returns the string representation.
 21219  //
 21220  // API parameter values that are decorated as "sensitive" in the API will not
 21221  // be included in the string output. The member name will be present, but the
 21222  // value will be replaced with "sensitive".
 21223  func (s TagListMessage) GoString() string {
 21224  	return s.String()
 21225  }
 21226  
 21227  // SetTagList sets the TagList field's value.
 21228  func (s *TagListMessage) SetTagList(v []*Tag) *TagListMessage {
 21229  	s.TagList = v
 21230  	return s
 21231  }
 21232  
 21233  type TestFailoverInput struct {
 21234  	_ struct{} `type:"structure"`
 21235  
 21236  	// The name of the node group (called shard in the console) in this replication
 21237  	// group on which automatic failover is to be tested. You may test automatic
 21238  	// failover on up to 5 node groups in any rolling 24-hour period.
 21239  	//
 21240  	// NodeGroupId is a required field
 21241  	NodeGroupId *string `min:"1" type:"string" required:"true"`
 21242  
 21243  	// The name of the replication group (console: cluster) whose automatic failover
 21244  	// is being tested by this operation.
 21245  	//
 21246  	// ReplicationGroupId is a required field
 21247  	ReplicationGroupId *string `type:"string" required:"true"`
 21248  }
 21249  
 21250  // String returns the string representation.
 21251  //
 21252  // API parameter values that are decorated as "sensitive" in the API will not
 21253  // be included in the string output. The member name will be present, but the
 21254  // value will be replaced with "sensitive".
 21255  func (s TestFailoverInput) String() string {
 21256  	return awsutil.Prettify(s)
 21257  }
 21258  
 21259  // GoString returns the string representation.
 21260  //
 21261  // API parameter values that are decorated as "sensitive" in the API will not
 21262  // be included in the string output. The member name will be present, but the
 21263  // value will be replaced with "sensitive".
 21264  func (s TestFailoverInput) GoString() string {
 21265  	return s.String()
 21266  }
 21267  
 21268  // Validate inspects the fields of the type to determine if they are valid.
 21269  func (s *TestFailoverInput) Validate() error {
 21270  	invalidParams := request.ErrInvalidParams{Context: "TestFailoverInput"}
 21271  	if s.NodeGroupId == nil {
 21272  		invalidParams.Add(request.NewErrParamRequired("NodeGroupId"))
 21273  	}
 21274  	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
 21275  		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
 21276  	}
 21277  	if s.ReplicationGroupId == nil {
 21278  		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
 21279  	}
 21280  
 21281  	if invalidParams.Len() > 0 {
 21282  		return invalidParams
 21283  	}
 21284  	return nil
 21285  }
 21286  
 21287  // SetNodeGroupId sets the NodeGroupId field's value.
 21288  func (s *TestFailoverInput) SetNodeGroupId(v string) *TestFailoverInput {
 21289  	s.NodeGroupId = &v
 21290  	return s
 21291  }
 21292  
 21293  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 21294  func (s *TestFailoverInput) SetReplicationGroupId(v string) *TestFailoverInput {
 21295  	s.ReplicationGroupId = &v
 21296  	return s
 21297  }
 21298  
 21299  type TestFailoverOutput struct {
 21300  	_ struct{} `type:"structure"`
 21301  
 21302  	// Contains all of the attributes of a specific Redis replication group.
 21303  	ReplicationGroup *ReplicationGroup `type:"structure"`
 21304  }
 21305  
 21306  // String returns the string representation.
 21307  //
 21308  // API parameter values that are decorated as "sensitive" in the API will not
 21309  // be included in the string output. The member name will be present, but the
 21310  // value will be replaced with "sensitive".
 21311  func (s TestFailoverOutput) String() string {
 21312  	return awsutil.Prettify(s)
 21313  }
 21314  
 21315  // GoString returns the string representation.
 21316  //
 21317  // API parameter values that are decorated as "sensitive" in the API will not
 21318  // be included in the string output. The member name will be present, but the
 21319  // value will be replaced with "sensitive".
 21320  func (s TestFailoverOutput) GoString() string {
 21321  	return s.String()
 21322  }
 21323  
 21324  // SetReplicationGroup sets the ReplicationGroup field's value.
 21325  func (s *TestFailoverOutput) SetReplicationGroup(v *ReplicationGroup) *TestFailoverOutput {
 21326  	s.ReplicationGroup = v
 21327  	return s
 21328  }
 21329  
 21330  // Filters update actions from the service updates that are in available status
 21331  // during the time range.
 21332  type TimeRangeFilter struct {
 21333  	_ struct{} `type:"structure"`
 21334  
 21335  	// The end time of the time range filter
 21336  	EndTime *time.Time `type:"timestamp"`
 21337  
 21338  	// The start time of the time range filter
 21339  	StartTime *time.Time `type:"timestamp"`
 21340  }
 21341  
 21342  // String returns the string representation.
 21343  //
 21344  // API parameter values that are decorated as "sensitive" in the API will not
 21345  // be included in the string output. The member name will be present, but the
 21346  // value will be replaced with "sensitive".
 21347  func (s TimeRangeFilter) String() string {
 21348  	return awsutil.Prettify(s)
 21349  }
 21350  
 21351  // GoString returns the string representation.
 21352  //
 21353  // API parameter values that are decorated as "sensitive" in the API will not
 21354  // be included in the string output. The member name will be present, but the
 21355  // value will be replaced with "sensitive".
 21356  func (s TimeRangeFilter) GoString() string {
 21357  	return s.String()
 21358  }
 21359  
 21360  // SetEndTime sets the EndTime field's value.
 21361  func (s *TimeRangeFilter) SetEndTime(v time.Time) *TimeRangeFilter {
 21362  	s.EndTime = &v
 21363  	return s
 21364  }
 21365  
 21366  // SetStartTime sets the StartTime field's value.
 21367  func (s *TimeRangeFilter) SetStartTime(v time.Time) *TimeRangeFilter {
 21368  	s.StartTime = &v
 21369  	return s
 21370  }
 21371  
 21372  // Update action that has failed to be processed for the corresponding apply/stop
 21373  // request
 21374  type UnprocessedUpdateAction struct {
 21375  	_ struct{} `type:"structure"`
 21376  
 21377  	// The ID of the cache cluster
 21378  	CacheClusterId *string `type:"string"`
 21379  
 21380  	// The error message that describes the reason the request was not processed
 21381  	ErrorMessage *string `type:"string"`
 21382  
 21383  	// The error type for requests that are not processed
 21384  	ErrorType *string `type:"string"`
 21385  
 21386  	// The replication group ID
 21387  	ReplicationGroupId *string `type:"string"`
 21388  
 21389  	// The unique ID of the service update
 21390  	ServiceUpdateName *string `type:"string"`
 21391  }
 21392  
 21393  // String returns the string representation.
 21394  //
 21395  // API parameter values that are decorated as "sensitive" in the API will not
 21396  // be included in the string output. The member name will be present, but the
 21397  // value will be replaced with "sensitive".
 21398  func (s UnprocessedUpdateAction) String() string {
 21399  	return awsutil.Prettify(s)
 21400  }
 21401  
 21402  // GoString returns the string representation.
 21403  //
 21404  // API parameter values that are decorated as "sensitive" in the API will not
 21405  // be included in the string output. The member name will be present, but the
 21406  // value will be replaced with "sensitive".
 21407  func (s UnprocessedUpdateAction) GoString() string {
 21408  	return s.String()
 21409  }
 21410  
 21411  // SetCacheClusterId sets the CacheClusterId field's value.
 21412  func (s *UnprocessedUpdateAction) SetCacheClusterId(v string) *UnprocessedUpdateAction {
 21413  	s.CacheClusterId = &v
 21414  	return s
 21415  }
 21416  
 21417  // SetErrorMessage sets the ErrorMessage field's value.
 21418  func (s *UnprocessedUpdateAction) SetErrorMessage(v string) *UnprocessedUpdateAction {
 21419  	s.ErrorMessage = &v
 21420  	return s
 21421  }
 21422  
 21423  // SetErrorType sets the ErrorType field's value.
 21424  func (s *UnprocessedUpdateAction) SetErrorType(v string) *UnprocessedUpdateAction {
 21425  	s.ErrorType = &v
 21426  	return s
 21427  }
 21428  
 21429  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 21430  func (s *UnprocessedUpdateAction) SetReplicationGroupId(v string) *UnprocessedUpdateAction {
 21431  	s.ReplicationGroupId = &v
 21432  	return s
 21433  }
 21434  
 21435  // SetServiceUpdateName sets the ServiceUpdateName field's value.
 21436  func (s *UnprocessedUpdateAction) SetServiceUpdateName(v string) *UnprocessedUpdateAction {
 21437  	s.ServiceUpdateName = &v
 21438  	return s
 21439  }
 21440  
 21441  // The status of the service update for a specific replication group
 21442  type UpdateAction struct {
 21443  	_ struct{} `type:"structure"`
 21444  
 21445  	// The ID of the cache cluster
 21446  	CacheClusterId *string `type:"string"`
 21447  
 21448  	// The status of the service update on the cache node
 21449  	CacheNodeUpdateStatus []*CacheNodeUpdateStatus `locationNameList:"CacheNodeUpdateStatus" type:"list"`
 21450  
 21451  	// The Elasticache engine to which the update applies. Either Redis or Memcached
 21452  	Engine *string `type:"string"`
 21453  
 21454  	// The estimated length of time for the update to complete
 21455  	EstimatedUpdateTime *string `type:"string"`
 21456  
 21457  	// The status of the service update on the node group
 21458  	NodeGroupUpdateStatus []*NodeGroupUpdateStatus `locationNameList:"NodeGroupUpdateStatus" type:"list"`
 21459  
 21460  	// The progress of the service update on the replication group
 21461  	NodesUpdated *string `type:"string"`
 21462  
 21463  	// The ID of the replication group
 21464  	ReplicationGroupId *string `type:"string"`
 21465  
 21466  	// The unique ID of the service update
 21467  	ServiceUpdateName *string `type:"string"`
 21468  
 21469  	// The recommended date to apply the service update to ensure compliance. For
 21470  	// information on compliance, see Self-Service Security Updates for Compliance
 21471  	// (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-compliance.html#elasticache-compliance-self-service).
 21472  	ServiceUpdateRecommendedApplyByDate *time.Time `type:"timestamp"`
 21473  
 21474  	// The date the update is first available
 21475  	ServiceUpdateReleaseDate *time.Time `type:"timestamp"`
 21476  
 21477  	// The severity of the service update
 21478  	ServiceUpdateSeverity *string `type:"string" enum:"ServiceUpdateSeverity"`
 21479  
 21480  	// The status of the service update
 21481  	ServiceUpdateStatus *string `type:"string" enum:"ServiceUpdateStatus"`
 21482  
 21483  	// Reflects the nature of the service update
 21484  	ServiceUpdateType *string `type:"string" enum:"ServiceUpdateType"`
 21485  
 21486  	// If yes, all nodes in the replication group have been updated by the recommended
 21487  	// apply-by date. If no, at least one node in the replication group have not
 21488  	// been updated by the recommended apply-by date. If N/A, the replication group
 21489  	// was created after the recommended apply-by date.
 21490  	SlaMet *string `type:"string" enum:"SlaMet"`
 21491  
 21492  	// The date that the service update is available to a replication group
 21493  	UpdateActionAvailableDate *time.Time `type:"timestamp"`
 21494  
 21495  	// The status of the update action
 21496  	UpdateActionStatus *string `type:"string" enum:"UpdateActionStatus"`
 21497  
 21498  	// The date when the UpdateActionStatus was last modified
 21499  	UpdateActionStatusModifiedDate *time.Time `type:"timestamp"`
 21500  }
 21501  
 21502  // String returns the string representation.
 21503  //
 21504  // API parameter values that are decorated as "sensitive" in the API will not
 21505  // be included in the string output. The member name will be present, but the
 21506  // value will be replaced with "sensitive".
 21507  func (s UpdateAction) String() string {
 21508  	return awsutil.Prettify(s)
 21509  }
 21510  
 21511  // GoString returns the string representation.
 21512  //
 21513  // API parameter values that are decorated as "sensitive" in the API will not
 21514  // be included in the string output. The member name will be present, but the
 21515  // value will be replaced with "sensitive".
 21516  func (s UpdateAction) GoString() string {
 21517  	return s.String()
 21518  }
 21519  
 21520  // SetCacheClusterId sets the CacheClusterId field's value.
 21521  func (s *UpdateAction) SetCacheClusterId(v string) *UpdateAction {
 21522  	s.CacheClusterId = &v
 21523  	return s
 21524  }
 21525  
 21526  // SetCacheNodeUpdateStatus sets the CacheNodeUpdateStatus field's value.
 21527  func (s *UpdateAction) SetCacheNodeUpdateStatus(v []*CacheNodeUpdateStatus) *UpdateAction {
 21528  	s.CacheNodeUpdateStatus = v
 21529  	return s
 21530  }
 21531  
 21532  // SetEngine sets the Engine field's value.
 21533  func (s *UpdateAction) SetEngine(v string) *UpdateAction {
 21534  	s.Engine = &v
 21535  	return s
 21536  }
 21537  
 21538  // SetEstimatedUpdateTime sets the EstimatedUpdateTime field's value.
 21539  func (s *UpdateAction) SetEstimatedUpdateTime(v string) *UpdateAction {
 21540  	s.EstimatedUpdateTime = &v
 21541  	return s
 21542  }
 21543  
 21544  // SetNodeGroupUpdateStatus sets the NodeGroupUpdateStatus field's value.
 21545  func (s *UpdateAction) SetNodeGroupUpdateStatus(v []*NodeGroupUpdateStatus) *UpdateAction {
 21546  	s.NodeGroupUpdateStatus = v
 21547  	return s
 21548  }
 21549  
 21550  // SetNodesUpdated sets the NodesUpdated field's value.
 21551  func (s *UpdateAction) SetNodesUpdated(v string) *UpdateAction {
 21552  	s.NodesUpdated = &v
 21553  	return s
 21554  }
 21555  
 21556  // SetReplicationGroupId sets the ReplicationGroupId field's value.
 21557  func (s *UpdateAction) SetReplicationGroupId(v string) *UpdateAction {
 21558  	s.ReplicationGroupId = &v
 21559  	return s
 21560  }
 21561  
 21562  // SetServiceUpdateName sets the ServiceUpdateName field's value.
 21563  func (s *UpdateAction) SetServiceUpdateName(v string) *UpdateAction {
 21564  	s.ServiceUpdateName = &v
 21565  	return s
 21566  }
 21567  
 21568  // SetServiceUpdateRecommendedApplyByDate sets the ServiceUpdateRecommendedApplyByDate field's value.
 21569  func (s *UpdateAction) SetServiceUpdateRecommendedApplyByDate(v time.Time) *UpdateAction {
 21570  	s.ServiceUpdateRecommendedApplyByDate = &v
 21571  	return s
 21572  }
 21573  
 21574  // SetServiceUpdateReleaseDate sets the ServiceUpdateReleaseDate field's value.
 21575  func (s *UpdateAction) SetServiceUpdateReleaseDate(v time.Time) *UpdateAction {
 21576  	s.ServiceUpdateReleaseDate = &v
 21577  	return s
 21578  }
 21579  
 21580  // SetServiceUpdateSeverity sets the ServiceUpdateSeverity field's value.
 21581  func (s *UpdateAction) SetServiceUpdateSeverity(v string) *UpdateAction {
 21582  	s.ServiceUpdateSeverity = &v
 21583  	return s
 21584  }
 21585  
 21586  // SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
 21587  func (s *UpdateAction) SetServiceUpdateStatus(v string) *UpdateAction {
 21588  	s.ServiceUpdateStatus = &v
 21589  	return s
 21590  }
 21591  
 21592  // SetServiceUpdateType sets the ServiceUpdateType field's value.
 21593  func (s *UpdateAction) SetServiceUpdateType(v string) *UpdateAction {
 21594  	s.ServiceUpdateType = &v
 21595  	return s
 21596  }
 21597  
 21598  // SetSlaMet sets the SlaMet field's value.
 21599  func (s *UpdateAction) SetSlaMet(v string) *UpdateAction {
 21600  	s.SlaMet = &v
 21601  	return s
 21602  }
 21603  
 21604  // SetUpdateActionAvailableDate sets the UpdateActionAvailableDate field's value.
 21605  func (s *UpdateAction) SetUpdateActionAvailableDate(v time.Time) *UpdateAction {
 21606  	s.UpdateActionAvailableDate = &v
 21607  	return s
 21608  }
 21609  
 21610  // SetUpdateActionStatus sets the UpdateActionStatus field's value.
 21611  func (s *UpdateAction) SetUpdateActionStatus(v string) *UpdateAction {
 21612  	s.UpdateActionStatus = &v
 21613  	return s
 21614  }
 21615  
 21616  // SetUpdateActionStatusModifiedDate sets the UpdateActionStatusModifiedDate field's value.
 21617  func (s *UpdateAction) SetUpdateActionStatusModifiedDate(v time.Time) *UpdateAction {
 21618  	s.UpdateActionStatusModifiedDate = &v
 21619  	return s
 21620  }
 21621  
 21622  type User struct {
 21623  	_ struct{} `type:"structure"`
 21624  
 21625  	// The Amazon Resource Name (ARN) of the user.
 21626  	ARN *string `type:"string"`
 21627  
 21628  	// Access permissions string used for this user.
 21629  	AccessString *string `type:"string"`
 21630  
 21631  	// Denotes whether the user requires a password to authenticate.
 21632  	Authentication *Authentication `type:"structure"`
 21633  
 21634  	// The current supported value is Redis.
 21635  	Engine *string `type:"string"`
 21636  
 21637  	// Indicates the user status. Can be "active", "modifying" or "deleting".
 21638  	Status *string `type:"string"`
 21639  
 21640  	// Returns a list of the user group IDs the user belongs to.
 21641  	UserGroupIds []*string `type:"list"`
 21642  
 21643  	// The ID of the user.
 21644  	UserId *string `type:"string"`
 21645  
 21646  	// The username of the user.
 21647  	UserName *string `type:"string"`
 21648  }
 21649  
 21650  // String returns the string representation.
 21651  //
 21652  // API parameter values that are decorated as "sensitive" in the API will not
 21653  // be included in the string output. The member name will be present, but the
 21654  // value will be replaced with "sensitive".
 21655  func (s User) String() string {
 21656  	return awsutil.Prettify(s)
 21657  }
 21658  
 21659  // GoString returns the string representation.
 21660  //
 21661  // API parameter values that are decorated as "sensitive" in the API will not
 21662  // be included in the string output. The member name will be present, but the
 21663  // value will be replaced with "sensitive".
 21664  func (s User) GoString() string {
 21665  	return s.String()
 21666  }
 21667  
 21668  // SetARN sets the ARN field's value.
 21669  func (s *User) SetARN(v string) *User {
 21670  	s.ARN = &v
 21671  	return s
 21672  }
 21673  
 21674  // SetAccessString sets the AccessString field's value.
 21675  func (s *User) SetAccessString(v string) *User {
 21676  	s.AccessString = &v
 21677  	return s
 21678  }
 21679  
 21680  // SetAuthentication sets the Authentication field's value.
 21681  func (s *User) SetAuthentication(v *Authentication) *User {
 21682  	s.Authentication = v
 21683  	return s
 21684  }
 21685  
 21686  // SetEngine sets the Engine field's value.
 21687  func (s *User) SetEngine(v string) *User {
 21688  	s.Engine = &v
 21689  	return s
 21690  }
 21691  
 21692  // SetStatus sets the Status field's value.
 21693  func (s *User) SetStatus(v string) *User {
 21694  	s.Status = &v
 21695  	return s
 21696  }
 21697  
 21698  // SetUserGroupIds sets the UserGroupIds field's value.
 21699  func (s *User) SetUserGroupIds(v []*string) *User {
 21700  	s.UserGroupIds = v
 21701  	return s
 21702  }
 21703  
 21704  // SetUserId sets the UserId field's value.
 21705  func (s *User) SetUserId(v string) *User {
 21706  	s.UserId = &v
 21707  	return s
 21708  }
 21709  
 21710  // SetUserName sets the UserName field's value.
 21711  func (s *User) SetUserName(v string) *User {
 21712  	s.UserName = &v
 21713  	return s
 21714  }
 21715  
 21716  type UserGroup struct {
 21717  	_ struct{} `type:"structure"`
 21718  
 21719  	// The Amazon Resource Name (ARN) of the user group.
 21720  	ARN *string `type:"string"`
 21721  
 21722  	// The current supported value is Redis.
 21723  	Engine *string `type:"string"`
 21724  
 21725  	// A list of updates being applied to the user group.
 21726  	PendingChanges *UserGroupPendingChanges `type:"structure"`
 21727  
 21728  	// A list of replication groups that the user group can access.
 21729  	ReplicationGroups []*string `type:"list"`
 21730  
 21731  	// Indicates user group status. Can be "creating", "active", "modifying", "deleting".
 21732  	Status *string `type:"string"`
 21733  
 21734  	// The ID of the user group.
 21735  	UserGroupId *string `type:"string"`
 21736  
 21737  	// The list of user IDs that belong to the user group.
 21738  	UserIds []*string `type:"list"`
 21739  }
 21740  
 21741  // String returns the string representation.
 21742  //
 21743  // API parameter values that are decorated as "sensitive" in the API will not
 21744  // be included in the string output. The member name will be present, but the
 21745  // value will be replaced with "sensitive".
 21746  func (s UserGroup) String() string {
 21747  	return awsutil.Prettify(s)
 21748  }
 21749  
 21750  // GoString returns the string representation.
 21751  //
 21752  // API parameter values that are decorated as "sensitive" in the API will not
 21753  // be included in the string output. The member name will be present, but the
 21754  // value will be replaced with "sensitive".
 21755  func (s UserGroup) GoString() string {
 21756  	return s.String()
 21757  }
 21758  
 21759  // SetARN sets the ARN field's value.
 21760  func (s *UserGroup) SetARN(v string) *UserGroup {
 21761  	s.ARN = &v
 21762  	return s
 21763  }
 21764  
 21765  // SetEngine sets the Engine field's value.
 21766  func (s *UserGroup) SetEngine(v string) *UserGroup {
 21767  	s.Engine = &v
 21768  	return s
 21769  }
 21770  
 21771  // SetPendingChanges sets the PendingChanges field's value.
 21772  func (s *UserGroup) SetPendingChanges(v *UserGroupPendingChanges) *UserGroup {
 21773  	s.PendingChanges = v
 21774  	return s
 21775  }
 21776  
 21777  // SetReplicationGroups sets the ReplicationGroups field's value.
 21778  func (s *UserGroup) SetReplicationGroups(v []*string) *UserGroup {
 21779  	s.ReplicationGroups = v
 21780  	return s
 21781  }
 21782  
 21783  // SetStatus sets the Status field's value.
 21784  func (s *UserGroup) SetStatus(v string) *UserGroup {
 21785  	s.Status = &v
 21786  	return s
 21787  }
 21788  
 21789  // SetUserGroupId sets the UserGroupId field's value.
 21790  func (s *UserGroup) SetUserGroupId(v string) *UserGroup {
 21791  	s.UserGroupId = &v
 21792  	return s
 21793  }
 21794  
 21795  // SetUserIds sets the UserIds field's value.
 21796  func (s *UserGroup) SetUserIds(v []*string) *UserGroup {
 21797  	s.UserIds = v
 21798  	return s
 21799  }
 21800  
 21801  // Returns the updates being applied to the user group.
 21802  type UserGroupPendingChanges struct {
 21803  	_ struct{} `type:"structure"`
 21804  
 21805  	// The list of user IDs to add.
 21806  	UserIdsToAdd []*string `type:"list"`
 21807  
 21808  	// The list of user IDs to remove.
 21809  	UserIdsToRemove []*string `type:"list"`
 21810  }
 21811  
 21812  // String returns the string representation.
 21813  //
 21814  // API parameter values that are decorated as "sensitive" in the API will not
 21815  // be included in the string output. The member name will be present, but the
 21816  // value will be replaced with "sensitive".
 21817  func (s UserGroupPendingChanges) String() string {
 21818  	return awsutil.Prettify(s)
 21819  }
 21820  
 21821  // GoString returns the string representation.
 21822  //
 21823  // API parameter values that are decorated as "sensitive" in the API will not
 21824  // be included in the string output. The member name will be present, but the
 21825  // value will be replaced with "sensitive".
 21826  func (s UserGroupPendingChanges) GoString() string {
 21827  	return s.String()
 21828  }
 21829  
 21830  // SetUserIdsToAdd sets the UserIdsToAdd field's value.
 21831  func (s *UserGroupPendingChanges) SetUserIdsToAdd(v []*string) *UserGroupPendingChanges {
 21832  	s.UserIdsToAdd = v
 21833  	return s
 21834  }
 21835  
 21836  // SetUserIdsToRemove sets the UserIdsToRemove field's value.
 21837  func (s *UserGroupPendingChanges) SetUserIdsToRemove(v []*string) *UserGroupPendingChanges {
 21838  	s.UserIdsToRemove = v
 21839  	return s
 21840  }
 21841  
 21842  // The status of the user group update.
 21843  type UserGroupsUpdateStatus struct {
 21844  	_ struct{} `type:"structure"`
 21845  
 21846  	// The ID of the user group to add.
 21847  	UserGroupIdsToAdd []*string `type:"list"`
 21848  
 21849  	// The ID of the user group to remove.
 21850  	UserGroupIdsToRemove []*string `type:"list"`
 21851  }
 21852  
 21853  // String returns the string representation.
 21854  //
 21855  // API parameter values that are decorated as "sensitive" in the API will not
 21856  // be included in the string output. The member name will be present, but the
 21857  // value will be replaced with "sensitive".
 21858  func (s UserGroupsUpdateStatus) String() string {
 21859  	return awsutil.Prettify(s)
 21860  }
 21861  
 21862  // GoString returns the string representation.
 21863  //
 21864  // API parameter values that are decorated as "sensitive" in the API will not
 21865  // be included in the string output. The member name will be present, but the
 21866  // value will be replaced with "sensitive".
 21867  func (s UserGroupsUpdateStatus) GoString() string {
 21868  	return s.String()
 21869  }
 21870  
 21871  // SetUserGroupIdsToAdd sets the UserGroupIdsToAdd field's value.
 21872  func (s *UserGroupsUpdateStatus) SetUserGroupIdsToAdd(v []*string) *UserGroupsUpdateStatus {
 21873  	s.UserGroupIdsToAdd = v
 21874  	return s
 21875  }
 21876  
 21877  // SetUserGroupIdsToRemove sets the UserGroupIdsToRemove field's value.
 21878  func (s *UserGroupsUpdateStatus) SetUserGroupIdsToRemove(v []*string) *UserGroupsUpdateStatus {
 21879  	s.UserGroupIdsToRemove = v
 21880  	return s
 21881  }
 21882  
 21883  const (
 21884  	// AZModeSingleAz is a AZMode enum value
 21885  	AZModeSingleAz = "single-az"
 21886  
 21887  	// AZModeCrossAz is a AZMode enum value
 21888  	AZModeCrossAz = "cross-az"
 21889  )
 21890  
 21891  // AZMode_Values returns all elements of the AZMode enum
 21892  func AZMode_Values() []string {
 21893  	return []string{
 21894  		AZModeSingleAz,
 21895  		AZModeCrossAz,
 21896  	}
 21897  }
 21898  
 21899  const (
 21900  	// AuthTokenUpdateStatusSetting is a AuthTokenUpdateStatus enum value
 21901  	AuthTokenUpdateStatusSetting = "SETTING"
 21902  
 21903  	// AuthTokenUpdateStatusRotating is a AuthTokenUpdateStatus enum value
 21904  	AuthTokenUpdateStatusRotating = "ROTATING"
 21905  )
 21906  
 21907  // AuthTokenUpdateStatus_Values returns all elements of the AuthTokenUpdateStatus enum
 21908  func AuthTokenUpdateStatus_Values() []string {
 21909  	return []string{
 21910  		AuthTokenUpdateStatusSetting,
 21911  		AuthTokenUpdateStatusRotating,
 21912  	}
 21913  }
 21914  
 21915  const (
 21916  	// AuthTokenUpdateStrategyTypeSet is a AuthTokenUpdateStrategyType enum value
 21917  	AuthTokenUpdateStrategyTypeSet = "SET"
 21918  
 21919  	// AuthTokenUpdateStrategyTypeRotate is a AuthTokenUpdateStrategyType enum value
 21920  	AuthTokenUpdateStrategyTypeRotate = "ROTATE"
 21921  
 21922  	// AuthTokenUpdateStrategyTypeDelete is a AuthTokenUpdateStrategyType enum value
 21923  	AuthTokenUpdateStrategyTypeDelete = "DELETE"
 21924  )
 21925  
 21926  // AuthTokenUpdateStrategyType_Values returns all elements of the AuthTokenUpdateStrategyType enum
 21927  func AuthTokenUpdateStrategyType_Values() []string {
 21928  	return []string{
 21929  		AuthTokenUpdateStrategyTypeSet,
 21930  		AuthTokenUpdateStrategyTypeRotate,
 21931  		AuthTokenUpdateStrategyTypeDelete,
 21932  	}
 21933  }
 21934  
 21935  const (
 21936  	// AuthenticationTypePassword is a AuthenticationType enum value
 21937  	AuthenticationTypePassword = "password"
 21938  
 21939  	// AuthenticationTypeNoPassword is a AuthenticationType enum value
 21940  	AuthenticationTypeNoPassword = "no-password"
 21941  )
 21942  
 21943  // AuthenticationType_Values returns all elements of the AuthenticationType enum
 21944  func AuthenticationType_Values() []string {
 21945  	return []string{
 21946  		AuthenticationTypePassword,
 21947  		AuthenticationTypeNoPassword,
 21948  	}
 21949  }
 21950  
 21951  const (
 21952  	// AutomaticFailoverStatusEnabled is a AutomaticFailoverStatus enum value
 21953  	AutomaticFailoverStatusEnabled = "enabled"
 21954  
 21955  	// AutomaticFailoverStatusDisabled is a AutomaticFailoverStatus enum value
 21956  	AutomaticFailoverStatusDisabled = "disabled"
 21957  
 21958  	// AutomaticFailoverStatusEnabling is a AutomaticFailoverStatus enum value
 21959  	AutomaticFailoverStatusEnabling = "enabling"
 21960  
 21961  	// AutomaticFailoverStatusDisabling is a AutomaticFailoverStatus enum value
 21962  	AutomaticFailoverStatusDisabling = "disabling"
 21963  )
 21964  
 21965  // AutomaticFailoverStatus_Values returns all elements of the AutomaticFailoverStatus enum
 21966  func AutomaticFailoverStatus_Values() []string {
 21967  	return []string{
 21968  		AutomaticFailoverStatusEnabled,
 21969  		AutomaticFailoverStatusDisabled,
 21970  		AutomaticFailoverStatusEnabling,
 21971  		AutomaticFailoverStatusDisabling,
 21972  	}
 21973  }
 21974  
 21975  const (
 21976  	// ChangeTypeImmediate is a ChangeType enum value
 21977  	ChangeTypeImmediate = "immediate"
 21978  
 21979  	// ChangeTypeRequiresReboot is a ChangeType enum value
 21980  	ChangeTypeRequiresReboot = "requires-reboot"
 21981  )
 21982  
 21983  // ChangeType_Values returns all elements of the ChangeType enum
 21984  func ChangeType_Values() []string {
 21985  	return []string{
 21986  		ChangeTypeImmediate,
 21987  		ChangeTypeRequiresReboot,
 21988  	}
 21989  }
 21990  
 21991  const (
 21992  	// DestinationTypeCloudwatchLogs is a DestinationType enum value
 21993  	DestinationTypeCloudwatchLogs = "cloudwatch-logs"
 21994  
 21995  	// DestinationTypeKinesisFirehose is a DestinationType enum value
 21996  	DestinationTypeKinesisFirehose = "kinesis-firehose"
 21997  )
 21998  
 21999  // DestinationType_Values returns all elements of the DestinationType enum
 22000  func DestinationType_Values() []string {
 22001  	return []string{
 22002  		DestinationTypeCloudwatchLogs,
 22003  		DestinationTypeKinesisFirehose,
 22004  	}
 22005  }
 22006  
 22007  const (
 22008  	// LogDeliveryConfigurationStatusActive is a LogDeliveryConfigurationStatus enum value
 22009  	LogDeliveryConfigurationStatusActive = "active"
 22010  
 22011  	// LogDeliveryConfigurationStatusEnabling is a LogDeliveryConfigurationStatus enum value
 22012  	LogDeliveryConfigurationStatusEnabling = "enabling"
 22013  
 22014  	// LogDeliveryConfigurationStatusModifying is a LogDeliveryConfigurationStatus enum value
 22015  	LogDeliveryConfigurationStatusModifying = "modifying"
 22016  
 22017  	// LogDeliveryConfigurationStatusDisabling is a LogDeliveryConfigurationStatus enum value
 22018  	LogDeliveryConfigurationStatusDisabling = "disabling"
 22019  
 22020  	// LogDeliveryConfigurationStatusError is a LogDeliveryConfigurationStatus enum value
 22021  	LogDeliveryConfigurationStatusError = "error"
 22022  )
 22023  
 22024  // LogDeliveryConfigurationStatus_Values returns all elements of the LogDeliveryConfigurationStatus enum
 22025  func LogDeliveryConfigurationStatus_Values() []string {
 22026  	return []string{
 22027  		LogDeliveryConfigurationStatusActive,
 22028  		LogDeliveryConfigurationStatusEnabling,
 22029  		LogDeliveryConfigurationStatusModifying,
 22030  		LogDeliveryConfigurationStatusDisabling,
 22031  		LogDeliveryConfigurationStatusError,
 22032  	}
 22033  }
 22034  
 22035  const (
 22036  	// LogFormatText is a LogFormat enum value
 22037  	LogFormatText = "text"
 22038  
 22039  	// LogFormatJson is a LogFormat enum value
 22040  	LogFormatJson = "json"
 22041  )
 22042  
 22043  // LogFormat_Values returns all elements of the LogFormat enum
 22044  func LogFormat_Values() []string {
 22045  	return []string{
 22046  		LogFormatText,
 22047  		LogFormatJson,
 22048  	}
 22049  }
 22050  
 22051  const (
 22052  	// LogTypeSlowLog is a LogType enum value
 22053  	LogTypeSlowLog = "slow-log"
 22054  )
 22055  
 22056  // LogType_Values returns all elements of the LogType enum
 22057  func LogType_Values() []string {
 22058  	return []string{
 22059  		LogTypeSlowLog,
 22060  	}
 22061  }
 22062  
 22063  const (
 22064  	// MultiAZStatusEnabled is a MultiAZStatus enum value
 22065  	MultiAZStatusEnabled = "enabled"
 22066  
 22067  	// MultiAZStatusDisabled is a MultiAZStatus enum value
 22068  	MultiAZStatusDisabled = "disabled"
 22069  )
 22070  
 22071  // MultiAZStatus_Values returns all elements of the MultiAZStatus enum
 22072  func MultiAZStatus_Values() []string {
 22073  	return []string{
 22074  		MultiAZStatusEnabled,
 22075  		MultiAZStatusDisabled,
 22076  	}
 22077  }
 22078  
 22079  const (
 22080  	// NodeUpdateInitiatedBySystem is a NodeUpdateInitiatedBy enum value
 22081  	NodeUpdateInitiatedBySystem = "system"
 22082  
 22083  	// NodeUpdateInitiatedByCustomer is a NodeUpdateInitiatedBy enum value
 22084  	NodeUpdateInitiatedByCustomer = "customer"
 22085  )
 22086  
 22087  // NodeUpdateInitiatedBy_Values returns all elements of the NodeUpdateInitiatedBy enum
 22088  func NodeUpdateInitiatedBy_Values() []string {
 22089  	return []string{
 22090  		NodeUpdateInitiatedBySystem,
 22091  		NodeUpdateInitiatedByCustomer,
 22092  	}
 22093  }
 22094  
 22095  const (
 22096  	// NodeUpdateStatusNotApplied is a NodeUpdateStatus enum value
 22097  	NodeUpdateStatusNotApplied = "not-applied"
 22098  
 22099  	// NodeUpdateStatusWaitingToStart is a NodeUpdateStatus enum value
 22100  	NodeUpdateStatusWaitingToStart = "waiting-to-start"
 22101  
 22102  	// NodeUpdateStatusInProgress is a NodeUpdateStatus enum value
 22103  	NodeUpdateStatusInProgress = "in-progress"
 22104  
 22105  	// NodeUpdateStatusStopping is a NodeUpdateStatus enum value
 22106  	NodeUpdateStatusStopping = "stopping"
 22107  
 22108  	// NodeUpdateStatusStopped is a NodeUpdateStatus enum value
 22109  	NodeUpdateStatusStopped = "stopped"
 22110  
 22111  	// NodeUpdateStatusComplete is a NodeUpdateStatus enum value
 22112  	NodeUpdateStatusComplete = "complete"
 22113  )
 22114  
 22115  // NodeUpdateStatus_Values returns all elements of the NodeUpdateStatus enum
 22116  func NodeUpdateStatus_Values() []string {
 22117  	return []string{
 22118  		NodeUpdateStatusNotApplied,
 22119  		NodeUpdateStatusWaitingToStart,
 22120  		NodeUpdateStatusInProgress,
 22121  		NodeUpdateStatusStopping,
 22122  		NodeUpdateStatusStopped,
 22123  		NodeUpdateStatusComplete,
 22124  	}
 22125  }
 22126  
 22127  const (
 22128  	// OutpostModeSingleOutpost is a OutpostMode enum value
 22129  	OutpostModeSingleOutpost = "single-outpost"
 22130  
 22131  	// OutpostModeCrossOutpost is a OutpostMode enum value
 22132  	OutpostModeCrossOutpost = "cross-outpost"
 22133  )
 22134  
 22135  // OutpostMode_Values returns all elements of the OutpostMode enum
 22136  func OutpostMode_Values() []string {
 22137  	return []string{
 22138  		OutpostModeSingleOutpost,
 22139  		OutpostModeCrossOutpost,
 22140  	}
 22141  }
 22142  
 22143  const (
 22144  	// PendingAutomaticFailoverStatusEnabled is a PendingAutomaticFailoverStatus enum value
 22145  	PendingAutomaticFailoverStatusEnabled = "enabled"
 22146  
 22147  	// PendingAutomaticFailoverStatusDisabled is a PendingAutomaticFailoverStatus enum value
 22148  	PendingAutomaticFailoverStatusDisabled = "disabled"
 22149  )
 22150  
 22151  // PendingAutomaticFailoverStatus_Values returns all elements of the PendingAutomaticFailoverStatus enum
 22152  func PendingAutomaticFailoverStatus_Values() []string {
 22153  	return []string{
 22154  		PendingAutomaticFailoverStatusEnabled,
 22155  		PendingAutomaticFailoverStatusDisabled,
 22156  	}
 22157  }
 22158  
 22159  const (
 22160  	// ServiceUpdateSeverityCritical is a ServiceUpdateSeverity enum value
 22161  	ServiceUpdateSeverityCritical = "critical"
 22162  
 22163  	// ServiceUpdateSeverityImportant is a ServiceUpdateSeverity enum value
 22164  	ServiceUpdateSeverityImportant = "important"
 22165  
 22166  	// ServiceUpdateSeverityMedium is a ServiceUpdateSeverity enum value
 22167  	ServiceUpdateSeverityMedium = "medium"
 22168  
 22169  	// ServiceUpdateSeverityLow is a ServiceUpdateSeverity enum value
 22170  	ServiceUpdateSeverityLow = "low"
 22171  )
 22172  
 22173  // ServiceUpdateSeverity_Values returns all elements of the ServiceUpdateSeverity enum
 22174  func ServiceUpdateSeverity_Values() []string {
 22175  	return []string{
 22176  		ServiceUpdateSeverityCritical,
 22177  		ServiceUpdateSeverityImportant,
 22178  		ServiceUpdateSeverityMedium,
 22179  		ServiceUpdateSeverityLow,
 22180  	}
 22181  }
 22182  
 22183  const (
 22184  	// ServiceUpdateStatusAvailable is a ServiceUpdateStatus enum value
 22185  	ServiceUpdateStatusAvailable = "available"
 22186  
 22187  	// ServiceUpdateStatusCancelled is a ServiceUpdateStatus enum value
 22188  	ServiceUpdateStatusCancelled = "cancelled"
 22189  
 22190  	// ServiceUpdateStatusExpired is a ServiceUpdateStatus enum value
 22191  	ServiceUpdateStatusExpired = "expired"
 22192  )
 22193  
 22194  // ServiceUpdateStatus_Values returns all elements of the ServiceUpdateStatus enum
 22195  func ServiceUpdateStatus_Values() []string {
 22196  	return []string{
 22197  		ServiceUpdateStatusAvailable,
 22198  		ServiceUpdateStatusCancelled,
 22199  		ServiceUpdateStatusExpired,
 22200  	}
 22201  }
 22202  
 22203  const (
 22204  	// ServiceUpdateTypeSecurityUpdate is a ServiceUpdateType enum value
 22205  	ServiceUpdateTypeSecurityUpdate = "security-update"
 22206  )
 22207  
 22208  // ServiceUpdateType_Values returns all elements of the ServiceUpdateType enum
 22209  func ServiceUpdateType_Values() []string {
 22210  	return []string{
 22211  		ServiceUpdateTypeSecurityUpdate,
 22212  	}
 22213  }
 22214  
 22215  const (
 22216  	// SlaMetYes is a SlaMet enum value
 22217  	SlaMetYes = "yes"
 22218  
 22219  	// SlaMetNo is a SlaMet enum value
 22220  	SlaMetNo = "no"
 22221  
 22222  	// SlaMetNA is a SlaMet enum value
 22223  	SlaMetNA = "n/a"
 22224  )
 22225  
 22226  // SlaMet_Values returns all elements of the SlaMet enum
 22227  func SlaMet_Values() []string {
 22228  	return []string{
 22229  		SlaMetYes,
 22230  		SlaMetNo,
 22231  		SlaMetNA,
 22232  	}
 22233  }
 22234  
 22235  const (
 22236  	// SourceTypeCacheCluster is a SourceType enum value
 22237  	SourceTypeCacheCluster = "cache-cluster"
 22238  
 22239  	// SourceTypeCacheParameterGroup is a SourceType enum value
 22240  	SourceTypeCacheParameterGroup = "cache-parameter-group"
 22241  
 22242  	// SourceTypeCacheSecurityGroup is a SourceType enum value
 22243  	SourceTypeCacheSecurityGroup = "cache-security-group"
 22244  
 22245  	// SourceTypeCacheSubnetGroup is a SourceType enum value
 22246  	SourceTypeCacheSubnetGroup = "cache-subnet-group"
 22247  
 22248  	// SourceTypeReplicationGroup is a SourceType enum value
 22249  	SourceTypeReplicationGroup = "replication-group"
 22250  
 22251  	// SourceTypeUser is a SourceType enum value
 22252  	SourceTypeUser = "user"
 22253  
 22254  	// SourceTypeUserGroup is a SourceType enum value
 22255  	SourceTypeUserGroup = "user-group"
 22256  )
 22257  
 22258  // SourceType_Values returns all elements of the SourceType enum
 22259  func SourceType_Values() []string {
 22260  	return []string{
 22261  		SourceTypeCacheCluster,
 22262  		SourceTypeCacheParameterGroup,
 22263  		SourceTypeCacheSecurityGroup,
 22264  		SourceTypeCacheSubnetGroup,
 22265  		SourceTypeReplicationGroup,
 22266  		SourceTypeUser,
 22267  		SourceTypeUserGroup,
 22268  	}
 22269  }
 22270  
 22271  const (
 22272  	// UpdateActionStatusNotApplied is a UpdateActionStatus enum value
 22273  	UpdateActionStatusNotApplied = "not-applied"
 22274  
 22275  	// UpdateActionStatusWaitingToStart is a UpdateActionStatus enum value
 22276  	UpdateActionStatusWaitingToStart = "waiting-to-start"
 22277  
 22278  	// UpdateActionStatusInProgress is a UpdateActionStatus enum value
 22279  	UpdateActionStatusInProgress = "in-progress"
 22280  
 22281  	// UpdateActionStatusStopping is a UpdateActionStatus enum value
 22282  	UpdateActionStatusStopping = "stopping"
 22283  
 22284  	// UpdateActionStatusStopped is a UpdateActionStatus enum value
 22285  	UpdateActionStatusStopped = "stopped"
 22286  
 22287  	// UpdateActionStatusComplete is a UpdateActionStatus enum value
 22288  	UpdateActionStatusComplete = "complete"
 22289  
 22290  	// UpdateActionStatusScheduling is a UpdateActionStatus enum value
 22291  	UpdateActionStatusScheduling = "scheduling"
 22292  
 22293  	// UpdateActionStatusScheduled is a UpdateActionStatus enum value
 22294  	UpdateActionStatusScheduled = "scheduled"
 22295  
 22296  	// UpdateActionStatusNotApplicable is a UpdateActionStatus enum value
 22297  	UpdateActionStatusNotApplicable = "not-applicable"
 22298  )
 22299  
 22300  // UpdateActionStatus_Values returns all elements of the UpdateActionStatus enum
 22301  func UpdateActionStatus_Values() []string {
 22302  	return []string{
 22303  		UpdateActionStatusNotApplied,
 22304  		UpdateActionStatusWaitingToStart,
 22305  		UpdateActionStatusInProgress,
 22306  		UpdateActionStatusStopping,
 22307  		UpdateActionStatusStopped,
 22308  		UpdateActionStatusComplete,
 22309  		UpdateActionStatusScheduling,
 22310  		UpdateActionStatusScheduled,
 22311  		UpdateActionStatusNotApplicable,
 22312  	}
 22313  }