1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package elasticache
4
5import (
6	"fmt"
7	"time"
8
9	"github.com/aws/aws-sdk-go/aws"
10	"github.com/aws/aws-sdk-go/aws/awsutil"
11	"github.com/aws/aws-sdk-go/aws/request"
12	"github.com/aws/aws-sdk-go/private/protocol"
13	"github.com/aws/aws-sdk-go/private/protocol/query"
14)
15
16const 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
42func (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
126func (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.
140func (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
147const 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
173func (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
224func (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.
238func (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
245const 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
271func (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
307func (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.
321func (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
328const 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
354func (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
390func (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.
404func (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
411const 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
437func (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
475func (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.
489func (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
496const 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
522func (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
631func (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.
645func (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
652const 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
678func (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
762func (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.
776func (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
783const 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
809func (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
873func (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.
887func (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
894const 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
920func (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
973func (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.
987func (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
994const 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
1020func (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
1078func (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.
1092func (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
1099const 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
1125func (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
1178func (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.
1192func (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
1199const 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
1225func (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
1358func (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.
1372func (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
1379const 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
1405func (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
1478func (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.
1492func (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
1499const 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
1525func (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
1575func (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.
1589func (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
1596const 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
1622func (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
1675func (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.
1689func (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
1696const 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
1722func (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
1763func (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.
1777func (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
1784const 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
1810func (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
1884func (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.
1898func (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
1905const 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
1931func (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
2009func (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.
2023func (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
2030const 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
2056func (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
2102func (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.
2116func (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
2123const 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
2149func (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
2194func (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.
2208func (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
2215const 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
2241func (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
2281func (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.
2295func (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
2302const 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
2328func (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
2382func (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.
2396func (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
2403const 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
2429func (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
2498func (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.
2512func (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
2519const 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
2545func (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
2591func (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.
2605func (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
2612const 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
2638func (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//
2679// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteUser
2680func (c *ElastiCache) DeleteUser(input *DeleteUserInput) (*DeleteUserOutput, error) {
2681	req, out := c.DeleteUserRequest(input)
2682	return out, req.Send()
2683}
2684
2685// DeleteUserWithContext is the same as DeleteUser with the addition of
2686// the ability to pass a context and additional request options.
2687//
2688// See DeleteUser for details on how to use this API operation.
2689//
2690// The context must be non-nil and will be used for request cancellation. If
2691// the context is nil a panic will occur. In the future the SDK may create
2692// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2693// for more information on using Contexts.
2694func (c *ElastiCache) DeleteUserWithContext(ctx aws.Context, input *DeleteUserInput, opts ...request.Option) (*DeleteUserOutput, error) {
2695	req, out := c.DeleteUserRequest(input)
2696	req.SetContext(ctx)
2697	req.ApplyOptions(opts...)
2698	return out, req.Send()
2699}
2700
2701const opDeleteUserGroup = "DeleteUserGroup"
2702
2703// DeleteUserGroupRequest generates a "aws/request.Request" representing the
2704// client's request for the DeleteUserGroup operation. The "output" return
2705// value will be populated with the request's response once the request completes
2706// successfully.
2707//
2708// Use "Send" method on the returned Request to send the API call to the service.
2709// the "output" return value is not valid until after Send returns without error.
2710//
2711// See DeleteUserGroup for more information on using the DeleteUserGroup
2712// API call, and error handling.
2713//
2714// This method is useful when you want to inject custom logic or configuration
2715// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2716//
2717//
2718//    // Example sending a request using the DeleteUserGroupRequest method.
2719//    req, resp := client.DeleteUserGroupRequest(params)
2720//
2721//    err := req.Send()
2722//    if err == nil { // resp is now filled
2723//        fmt.Println(resp)
2724//    }
2725//
2726// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteUserGroup
2727func (c *ElastiCache) DeleteUserGroupRequest(input *DeleteUserGroupInput) (req *request.Request, output *DeleteUserGroupOutput) {
2728	op := &request.Operation{
2729		Name:       opDeleteUserGroup,
2730		HTTPMethod: "POST",
2731		HTTPPath:   "/",
2732	}
2733
2734	if input == nil {
2735		input = &DeleteUserGroupInput{}
2736	}
2737
2738	output = &DeleteUserGroupOutput{}
2739	req = c.newRequest(op, input, output)
2740	return
2741}
2742
2743// DeleteUserGroup API operation for Amazon ElastiCache.
2744//
2745// For Redis engine version 6.x onwards: Deletes a user group. The user group
2746// must first be disassociated from the replication group before it can be deleted.
2747// For more information, see Using Role Based Access Control (RBAC) (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.RBAC.html).
2748//
2749// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2750// with awserr.Error's Code and Message methods to get detailed information about
2751// the error.
2752//
2753// See the AWS API reference guide for Amazon ElastiCache's
2754// API operation DeleteUserGroup for usage and error information.
2755//
2756// Returned Error Codes:
2757//   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
2758//   The user group was not found or does not exist
2759//
2760//   * ErrCodeInvalidUserGroupStateFault "InvalidUserGroupState"
2761//   The user group is not in an active state.
2762//
2763//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2764//   The value for a parameter is invalid.
2765//
2766// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteUserGroup
2767func (c *ElastiCache) DeleteUserGroup(input *DeleteUserGroupInput) (*DeleteUserGroupOutput, error) {
2768	req, out := c.DeleteUserGroupRequest(input)
2769	return out, req.Send()
2770}
2771
2772// DeleteUserGroupWithContext is the same as DeleteUserGroup with the addition of
2773// the ability to pass a context and additional request options.
2774//
2775// See DeleteUserGroup for details on how to use this API operation.
2776//
2777// The context must be non-nil and will be used for request cancellation. If
2778// the context is nil a panic will occur. In the future the SDK may create
2779// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2780// for more information on using Contexts.
2781func (c *ElastiCache) DeleteUserGroupWithContext(ctx aws.Context, input *DeleteUserGroupInput, opts ...request.Option) (*DeleteUserGroupOutput, error) {
2782	req, out := c.DeleteUserGroupRequest(input)
2783	req.SetContext(ctx)
2784	req.ApplyOptions(opts...)
2785	return out, req.Send()
2786}
2787
2788const opDescribeCacheClusters = "DescribeCacheClusters"
2789
2790// DescribeCacheClustersRequest generates a "aws/request.Request" representing the
2791// client's request for the DescribeCacheClusters operation. The "output" return
2792// value will be populated with the request's response once the request completes
2793// successfully.
2794//
2795// Use "Send" method on the returned Request to send the API call to the service.
2796// the "output" return value is not valid until after Send returns without error.
2797//
2798// See DescribeCacheClusters for more information on using the DescribeCacheClusters
2799// API call, and error handling.
2800//
2801// This method is useful when you want to inject custom logic or configuration
2802// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2803//
2804//
2805//    // Example sending a request using the DescribeCacheClustersRequest method.
2806//    req, resp := client.DescribeCacheClustersRequest(params)
2807//
2808//    err := req.Send()
2809//    if err == nil { // resp is now filled
2810//        fmt.Println(resp)
2811//    }
2812//
2813// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheClusters
2814func (c *ElastiCache) DescribeCacheClustersRequest(input *DescribeCacheClustersInput) (req *request.Request, output *DescribeCacheClustersOutput) {
2815	op := &request.Operation{
2816		Name:       opDescribeCacheClusters,
2817		HTTPMethod: "POST",
2818		HTTPPath:   "/",
2819		Paginator: &request.Paginator{
2820			InputTokens:     []string{"Marker"},
2821			OutputTokens:    []string{"Marker"},
2822			LimitToken:      "MaxRecords",
2823			TruncationToken: "",
2824		},
2825	}
2826
2827	if input == nil {
2828		input = &DescribeCacheClustersInput{}
2829	}
2830
2831	output = &DescribeCacheClustersOutput{}
2832	req = c.newRequest(op, input, output)
2833	return
2834}
2835
2836// DescribeCacheClusters API operation for Amazon ElastiCache.
2837//
2838// Returns information about all provisioned clusters if no cluster identifier
2839// is specified, or about a specific cache cluster if a cluster identifier is
2840// supplied.
2841//
2842// By default, abbreviated information about the clusters is returned. You can
2843// use the optional ShowCacheNodeInfo flag to retrieve detailed information
2844// about the cache nodes associated with the clusters. These details include
2845// the DNS address and port for the cache node endpoint.
2846//
2847// If the cluster is in the creating state, only cluster-level information is
2848// displayed until all of the nodes are successfully provisioned.
2849//
2850// If the cluster is in the deleting state, only cluster-level information is
2851// displayed.
2852//
2853// If cache nodes are currently being added to the cluster, node endpoint information
2854// and creation time for the additional nodes are not displayed until they are
2855// completely provisioned. When the cluster state is available, the cluster
2856// is ready for use.
2857//
2858// If cache nodes are currently being removed from the cluster, no endpoint
2859// information for the removed nodes is displayed.
2860//
2861// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2862// with awserr.Error's Code and Message methods to get detailed information about
2863// the error.
2864//
2865// See the AWS API reference guide for Amazon ElastiCache's
2866// API operation DescribeCacheClusters for usage and error information.
2867//
2868// Returned Error Codes:
2869//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
2870//   The requested cluster ID does not refer to an existing cluster.
2871//
2872//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2873//   The value for a parameter is invalid.
2874//
2875//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2876//   Two or more incompatible parameters were specified.
2877//
2878// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheClusters
2879func (c *ElastiCache) DescribeCacheClusters(input *DescribeCacheClustersInput) (*DescribeCacheClustersOutput, error) {
2880	req, out := c.DescribeCacheClustersRequest(input)
2881	return out, req.Send()
2882}
2883
2884// DescribeCacheClustersWithContext is the same as DescribeCacheClusters with the addition of
2885// the ability to pass a context and additional request options.
2886//
2887// See DescribeCacheClusters for details on how to use this API operation.
2888//
2889// The context must be non-nil and will be used for request cancellation. If
2890// the context is nil a panic will occur. In the future the SDK may create
2891// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2892// for more information on using Contexts.
2893func (c *ElastiCache) DescribeCacheClustersWithContext(ctx aws.Context, input *DescribeCacheClustersInput, opts ...request.Option) (*DescribeCacheClustersOutput, error) {
2894	req, out := c.DescribeCacheClustersRequest(input)
2895	req.SetContext(ctx)
2896	req.ApplyOptions(opts...)
2897	return out, req.Send()
2898}
2899
2900// DescribeCacheClustersPages iterates over the pages of a DescribeCacheClusters operation,
2901// calling the "fn" function with the response data for each page. To stop
2902// iterating, return false from the fn function.
2903//
2904// See DescribeCacheClusters method for more information on how to use this operation.
2905//
2906// Note: This operation can generate multiple requests to a service.
2907//
2908//    // Example iterating over at most 3 pages of a DescribeCacheClusters operation.
2909//    pageNum := 0
2910//    err := client.DescribeCacheClustersPages(params,
2911//        func(page *elasticache.DescribeCacheClustersOutput, lastPage bool) bool {
2912//            pageNum++
2913//            fmt.Println(page)
2914//            return pageNum <= 3
2915//        })
2916//
2917func (c *ElastiCache) DescribeCacheClustersPages(input *DescribeCacheClustersInput, fn func(*DescribeCacheClustersOutput, bool) bool) error {
2918	return c.DescribeCacheClustersPagesWithContext(aws.BackgroundContext(), input, fn)
2919}
2920
2921// DescribeCacheClustersPagesWithContext same as DescribeCacheClustersPages except
2922// it takes a Context and allows setting request options on the pages.
2923//
2924// The context must be non-nil and will be used for request cancellation. If
2925// the context is nil a panic will occur. In the future the SDK may create
2926// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2927// for more information on using Contexts.
2928func (c *ElastiCache) DescribeCacheClustersPagesWithContext(ctx aws.Context, input *DescribeCacheClustersInput, fn func(*DescribeCacheClustersOutput, bool) bool, opts ...request.Option) error {
2929	p := request.Pagination{
2930		NewRequest: func() (*request.Request, error) {
2931			var inCpy *DescribeCacheClustersInput
2932			if input != nil {
2933				tmp := *input
2934				inCpy = &tmp
2935			}
2936			req, _ := c.DescribeCacheClustersRequest(inCpy)
2937			req.SetContext(ctx)
2938			req.ApplyOptions(opts...)
2939			return req, nil
2940		},
2941	}
2942
2943	for p.Next() {
2944		if !fn(p.Page().(*DescribeCacheClustersOutput), !p.HasNextPage()) {
2945			break
2946		}
2947	}
2948
2949	return p.Err()
2950}
2951
2952const opDescribeCacheEngineVersions = "DescribeCacheEngineVersions"
2953
2954// DescribeCacheEngineVersionsRequest generates a "aws/request.Request" representing the
2955// client's request for the DescribeCacheEngineVersions operation. The "output" return
2956// value will be populated with the request's response once the request completes
2957// successfully.
2958//
2959// Use "Send" method on the returned Request to send the API call to the service.
2960// the "output" return value is not valid until after Send returns without error.
2961//
2962// See DescribeCacheEngineVersions for more information on using the DescribeCacheEngineVersions
2963// API call, and error handling.
2964//
2965// This method is useful when you want to inject custom logic or configuration
2966// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2967//
2968//
2969//    // Example sending a request using the DescribeCacheEngineVersionsRequest method.
2970//    req, resp := client.DescribeCacheEngineVersionsRequest(params)
2971//
2972//    err := req.Send()
2973//    if err == nil { // resp is now filled
2974//        fmt.Println(resp)
2975//    }
2976//
2977// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheEngineVersions
2978func (c *ElastiCache) DescribeCacheEngineVersionsRequest(input *DescribeCacheEngineVersionsInput) (req *request.Request, output *DescribeCacheEngineVersionsOutput) {
2979	op := &request.Operation{
2980		Name:       opDescribeCacheEngineVersions,
2981		HTTPMethod: "POST",
2982		HTTPPath:   "/",
2983		Paginator: &request.Paginator{
2984			InputTokens:     []string{"Marker"},
2985			OutputTokens:    []string{"Marker"},
2986			LimitToken:      "MaxRecords",
2987			TruncationToken: "",
2988		},
2989	}
2990
2991	if input == nil {
2992		input = &DescribeCacheEngineVersionsInput{}
2993	}
2994
2995	output = &DescribeCacheEngineVersionsOutput{}
2996	req = c.newRequest(op, input, output)
2997	return
2998}
2999
3000// DescribeCacheEngineVersions API operation for Amazon ElastiCache.
3001//
3002// Returns a list of the available cache engines and their versions.
3003//
3004// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3005// with awserr.Error's Code and Message methods to get detailed information about
3006// the error.
3007//
3008// See the AWS API reference guide for Amazon ElastiCache's
3009// API operation DescribeCacheEngineVersions for usage and error information.
3010// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheEngineVersions
3011func (c *ElastiCache) DescribeCacheEngineVersions(input *DescribeCacheEngineVersionsInput) (*DescribeCacheEngineVersionsOutput, error) {
3012	req, out := c.DescribeCacheEngineVersionsRequest(input)
3013	return out, req.Send()
3014}
3015
3016// DescribeCacheEngineVersionsWithContext is the same as DescribeCacheEngineVersions with the addition of
3017// the ability to pass a context and additional request options.
3018//
3019// See DescribeCacheEngineVersions for details on how to use this API operation.
3020//
3021// The context must be non-nil and will be used for request cancellation. If
3022// the context is nil a panic will occur. In the future the SDK may create
3023// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3024// for more information on using Contexts.
3025func (c *ElastiCache) DescribeCacheEngineVersionsWithContext(ctx aws.Context, input *DescribeCacheEngineVersionsInput, opts ...request.Option) (*DescribeCacheEngineVersionsOutput, error) {
3026	req, out := c.DescribeCacheEngineVersionsRequest(input)
3027	req.SetContext(ctx)
3028	req.ApplyOptions(opts...)
3029	return out, req.Send()
3030}
3031
3032// DescribeCacheEngineVersionsPages iterates over the pages of a DescribeCacheEngineVersions operation,
3033// calling the "fn" function with the response data for each page. To stop
3034// iterating, return false from the fn function.
3035//
3036// See DescribeCacheEngineVersions method for more information on how to use this operation.
3037//
3038// Note: This operation can generate multiple requests to a service.
3039//
3040//    // Example iterating over at most 3 pages of a DescribeCacheEngineVersions operation.
3041//    pageNum := 0
3042//    err := client.DescribeCacheEngineVersionsPages(params,
3043//        func(page *elasticache.DescribeCacheEngineVersionsOutput, lastPage bool) bool {
3044//            pageNum++
3045//            fmt.Println(page)
3046//            return pageNum <= 3
3047//        })
3048//
3049func (c *ElastiCache) DescribeCacheEngineVersionsPages(input *DescribeCacheEngineVersionsInput, fn func(*DescribeCacheEngineVersionsOutput, bool) bool) error {
3050	return c.DescribeCacheEngineVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
3051}
3052
3053// DescribeCacheEngineVersionsPagesWithContext same as DescribeCacheEngineVersionsPages except
3054// it takes a Context and allows setting request options on the pages.
3055//
3056// The context must be non-nil and will be used for request cancellation. If
3057// the context is nil a panic will occur. In the future the SDK may create
3058// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3059// for more information on using Contexts.
3060func (c *ElastiCache) DescribeCacheEngineVersionsPagesWithContext(ctx aws.Context, input *DescribeCacheEngineVersionsInput, fn func(*DescribeCacheEngineVersionsOutput, bool) bool, opts ...request.Option) error {
3061	p := request.Pagination{
3062		NewRequest: func() (*request.Request, error) {
3063			var inCpy *DescribeCacheEngineVersionsInput
3064			if input != nil {
3065				tmp := *input
3066				inCpy = &tmp
3067			}
3068			req, _ := c.DescribeCacheEngineVersionsRequest(inCpy)
3069			req.SetContext(ctx)
3070			req.ApplyOptions(opts...)
3071			return req, nil
3072		},
3073	}
3074
3075	for p.Next() {
3076		if !fn(p.Page().(*DescribeCacheEngineVersionsOutput), !p.HasNextPage()) {
3077			break
3078		}
3079	}
3080
3081	return p.Err()
3082}
3083
3084const opDescribeCacheParameterGroups = "DescribeCacheParameterGroups"
3085
3086// DescribeCacheParameterGroupsRequest generates a "aws/request.Request" representing the
3087// client's request for the DescribeCacheParameterGroups operation. The "output" return
3088// value will be populated with the request's response once the request completes
3089// successfully.
3090//
3091// Use "Send" method on the returned Request to send the API call to the service.
3092// the "output" return value is not valid until after Send returns without error.
3093//
3094// See DescribeCacheParameterGroups for more information on using the DescribeCacheParameterGroups
3095// API call, and error handling.
3096//
3097// This method is useful when you want to inject custom logic or configuration
3098// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3099//
3100//
3101//    // Example sending a request using the DescribeCacheParameterGroupsRequest method.
3102//    req, resp := client.DescribeCacheParameterGroupsRequest(params)
3103//
3104//    err := req.Send()
3105//    if err == nil { // resp is now filled
3106//        fmt.Println(resp)
3107//    }
3108//
3109// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameterGroups
3110func (c *ElastiCache) DescribeCacheParameterGroupsRequest(input *DescribeCacheParameterGroupsInput) (req *request.Request, output *DescribeCacheParameterGroupsOutput) {
3111	op := &request.Operation{
3112		Name:       opDescribeCacheParameterGroups,
3113		HTTPMethod: "POST",
3114		HTTPPath:   "/",
3115		Paginator: &request.Paginator{
3116			InputTokens:     []string{"Marker"},
3117			OutputTokens:    []string{"Marker"},
3118			LimitToken:      "MaxRecords",
3119			TruncationToken: "",
3120		},
3121	}
3122
3123	if input == nil {
3124		input = &DescribeCacheParameterGroupsInput{}
3125	}
3126
3127	output = &DescribeCacheParameterGroupsOutput{}
3128	req = c.newRequest(op, input, output)
3129	return
3130}
3131
3132// DescribeCacheParameterGroups API operation for Amazon ElastiCache.
3133//
3134// Returns a list of cache parameter group descriptions. If a cache parameter
3135// group name is specified, the list contains only the descriptions for that
3136// group.
3137//
3138// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3139// with awserr.Error's Code and Message methods to get detailed information about
3140// the error.
3141//
3142// See the AWS API reference guide for Amazon ElastiCache's
3143// API operation DescribeCacheParameterGroups for usage and error information.
3144//
3145// Returned Error Codes:
3146//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
3147//   The requested cache parameter group name does not refer to an existing cache
3148//   parameter group.
3149//
3150//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3151//   The value for a parameter is invalid.
3152//
3153//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3154//   Two or more incompatible parameters were specified.
3155//
3156// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameterGroups
3157func (c *ElastiCache) DescribeCacheParameterGroups(input *DescribeCacheParameterGroupsInput) (*DescribeCacheParameterGroupsOutput, error) {
3158	req, out := c.DescribeCacheParameterGroupsRequest(input)
3159	return out, req.Send()
3160}
3161
3162// DescribeCacheParameterGroupsWithContext is the same as DescribeCacheParameterGroups with the addition of
3163// the ability to pass a context and additional request options.
3164//
3165// See DescribeCacheParameterGroups for details on how to use this API operation.
3166//
3167// The context must be non-nil and will be used for request cancellation. If
3168// the context is nil a panic will occur. In the future the SDK may create
3169// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3170// for more information on using Contexts.
3171func (c *ElastiCache) DescribeCacheParameterGroupsWithContext(ctx aws.Context, input *DescribeCacheParameterGroupsInput, opts ...request.Option) (*DescribeCacheParameterGroupsOutput, error) {
3172	req, out := c.DescribeCacheParameterGroupsRequest(input)
3173	req.SetContext(ctx)
3174	req.ApplyOptions(opts...)
3175	return out, req.Send()
3176}
3177
3178// DescribeCacheParameterGroupsPages iterates over the pages of a DescribeCacheParameterGroups operation,
3179// calling the "fn" function with the response data for each page. To stop
3180// iterating, return false from the fn function.
3181//
3182// See DescribeCacheParameterGroups method for more information on how to use this operation.
3183//
3184// Note: This operation can generate multiple requests to a service.
3185//
3186//    // Example iterating over at most 3 pages of a DescribeCacheParameterGroups operation.
3187//    pageNum := 0
3188//    err := client.DescribeCacheParameterGroupsPages(params,
3189//        func(page *elasticache.DescribeCacheParameterGroupsOutput, lastPage bool) bool {
3190//            pageNum++
3191//            fmt.Println(page)
3192//            return pageNum <= 3
3193//        })
3194//
3195func (c *ElastiCache) DescribeCacheParameterGroupsPages(input *DescribeCacheParameterGroupsInput, fn func(*DescribeCacheParameterGroupsOutput, bool) bool) error {
3196	return c.DescribeCacheParameterGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3197}
3198
3199// DescribeCacheParameterGroupsPagesWithContext same as DescribeCacheParameterGroupsPages except
3200// it takes a Context and allows setting request options on the pages.
3201//
3202// The context must be non-nil and will be used for request cancellation. If
3203// the context is nil a panic will occur. In the future the SDK may create
3204// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3205// for more information on using Contexts.
3206func (c *ElastiCache) DescribeCacheParameterGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheParameterGroupsInput, fn func(*DescribeCacheParameterGroupsOutput, bool) bool, opts ...request.Option) error {
3207	p := request.Pagination{
3208		NewRequest: func() (*request.Request, error) {
3209			var inCpy *DescribeCacheParameterGroupsInput
3210			if input != nil {
3211				tmp := *input
3212				inCpy = &tmp
3213			}
3214			req, _ := c.DescribeCacheParameterGroupsRequest(inCpy)
3215			req.SetContext(ctx)
3216			req.ApplyOptions(opts...)
3217			return req, nil
3218		},
3219	}
3220
3221	for p.Next() {
3222		if !fn(p.Page().(*DescribeCacheParameterGroupsOutput), !p.HasNextPage()) {
3223			break
3224		}
3225	}
3226
3227	return p.Err()
3228}
3229
3230const opDescribeCacheParameters = "DescribeCacheParameters"
3231
3232// DescribeCacheParametersRequest generates a "aws/request.Request" representing the
3233// client's request for the DescribeCacheParameters operation. The "output" return
3234// value will be populated with the request's response once the request completes
3235// successfully.
3236//
3237// Use "Send" method on the returned Request to send the API call to the service.
3238// the "output" return value is not valid until after Send returns without error.
3239//
3240// See DescribeCacheParameters for more information on using the DescribeCacheParameters
3241// API call, and error handling.
3242//
3243// This method is useful when you want to inject custom logic or configuration
3244// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3245//
3246//
3247//    // Example sending a request using the DescribeCacheParametersRequest method.
3248//    req, resp := client.DescribeCacheParametersRequest(params)
3249//
3250//    err := req.Send()
3251//    if err == nil { // resp is now filled
3252//        fmt.Println(resp)
3253//    }
3254//
3255// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameters
3256func (c *ElastiCache) DescribeCacheParametersRequest(input *DescribeCacheParametersInput) (req *request.Request, output *DescribeCacheParametersOutput) {
3257	op := &request.Operation{
3258		Name:       opDescribeCacheParameters,
3259		HTTPMethod: "POST",
3260		HTTPPath:   "/",
3261		Paginator: &request.Paginator{
3262			InputTokens:     []string{"Marker"},
3263			OutputTokens:    []string{"Marker"},
3264			LimitToken:      "MaxRecords",
3265			TruncationToken: "",
3266		},
3267	}
3268
3269	if input == nil {
3270		input = &DescribeCacheParametersInput{}
3271	}
3272
3273	output = &DescribeCacheParametersOutput{}
3274	req = c.newRequest(op, input, output)
3275	return
3276}
3277
3278// DescribeCacheParameters API operation for Amazon ElastiCache.
3279//
3280// Returns the detailed parameter list for a particular cache parameter group.
3281//
3282// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3283// with awserr.Error's Code and Message methods to get detailed information about
3284// the error.
3285//
3286// See the AWS API reference guide for Amazon ElastiCache's
3287// API operation DescribeCacheParameters for usage and error information.
3288//
3289// Returned Error Codes:
3290//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
3291//   The requested cache parameter group name does not refer to an existing cache
3292//   parameter group.
3293//
3294//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3295//   The value for a parameter is invalid.
3296//
3297//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3298//   Two or more incompatible parameters were specified.
3299//
3300// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameters
3301func (c *ElastiCache) DescribeCacheParameters(input *DescribeCacheParametersInput) (*DescribeCacheParametersOutput, error) {
3302	req, out := c.DescribeCacheParametersRequest(input)
3303	return out, req.Send()
3304}
3305
3306// DescribeCacheParametersWithContext is the same as DescribeCacheParameters with the addition of
3307// the ability to pass a context and additional request options.
3308//
3309// See DescribeCacheParameters for details on how to use this API operation.
3310//
3311// The context must be non-nil and will be used for request cancellation. If
3312// the context is nil a panic will occur. In the future the SDK may create
3313// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3314// for more information on using Contexts.
3315func (c *ElastiCache) DescribeCacheParametersWithContext(ctx aws.Context, input *DescribeCacheParametersInput, opts ...request.Option) (*DescribeCacheParametersOutput, error) {
3316	req, out := c.DescribeCacheParametersRequest(input)
3317	req.SetContext(ctx)
3318	req.ApplyOptions(opts...)
3319	return out, req.Send()
3320}
3321
3322// DescribeCacheParametersPages iterates over the pages of a DescribeCacheParameters operation,
3323// calling the "fn" function with the response data for each page. To stop
3324// iterating, return false from the fn function.
3325//
3326// See DescribeCacheParameters method for more information on how to use this operation.
3327//
3328// Note: This operation can generate multiple requests to a service.
3329//
3330//    // Example iterating over at most 3 pages of a DescribeCacheParameters operation.
3331//    pageNum := 0
3332//    err := client.DescribeCacheParametersPages(params,
3333//        func(page *elasticache.DescribeCacheParametersOutput, lastPage bool) bool {
3334//            pageNum++
3335//            fmt.Println(page)
3336//            return pageNum <= 3
3337//        })
3338//
3339func (c *ElastiCache) DescribeCacheParametersPages(input *DescribeCacheParametersInput, fn func(*DescribeCacheParametersOutput, bool) bool) error {
3340	return c.DescribeCacheParametersPagesWithContext(aws.BackgroundContext(), input, fn)
3341}
3342
3343// DescribeCacheParametersPagesWithContext same as DescribeCacheParametersPages except
3344// it takes a Context and allows setting request options on the pages.
3345//
3346// The context must be non-nil and will be used for request cancellation. If
3347// the context is nil a panic will occur. In the future the SDK may create
3348// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3349// for more information on using Contexts.
3350func (c *ElastiCache) DescribeCacheParametersPagesWithContext(ctx aws.Context, input *DescribeCacheParametersInput, fn func(*DescribeCacheParametersOutput, bool) bool, opts ...request.Option) error {
3351	p := request.Pagination{
3352		NewRequest: func() (*request.Request, error) {
3353			var inCpy *DescribeCacheParametersInput
3354			if input != nil {
3355				tmp := *input
3356				inCpy = &tmp
3357			}
3358			req, _ := c.DescribeCacheParametersRequest(inCpy)
3359			req.SetContext(ctx)
3360			req.ApplyOptions(opts...)
3361			return req, nil
3362		},
3363	}
3364
3365	for p.Next() {
3366		if !fn(p.Page().(*DescribeCacheParametersOutput), !p.HasNextPage()) {
3367			break
3368		}
3369	}
3370
3371	return p.Err()
3372}
3373
3374const opDescribeCacheSecurityGroups = "DescribeCacheSecurityGroups"
3375
3376// DescribeCacheSecurityGroupsRequest generates a "aws/request.Request" representing the
3377// client's request for the DescribeCacheSecurityGroups operation. The "output" return
3378// value will be populated with the request's response once the request completes
3379// successfully.
3380//
3381// Use "Send" method on the returned Request to send the API call to the service.
3382// the "output" return value is not valid until after Send returns without error.
3383//
3384// See DescribeCacheSecurityGroups for more information on using the DescribeCacheSecurityGroups
3385// API call, and error handling.
3386//
3387// This method is useful when you want to inject custom logic or configuration
3388// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3389//
3390//
3391//    // Example sending a request using the DescribeCacheSecurityGroupsRequest method.
3392//    req, resp := client.DescribeCacheSecurityGroupsRequest(params)
3393//
3394//    err := req.Send()
3395//    if err == nil { // resp is now filled
3396//        fmt.Println(resp)
3397//    }
3398//
3399// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSecurityGroups
3400func (c *ElastiCache) DescribeCacheSecurityGroupsRequest(input *DescribeCacheSecurityGroupsInput) (req *request.Request, output *DescribeCacheSecurityGroupsOutput) {
3401	op := &request.Operation{
3402		Name:       opDescribeCacheSecurityGroups,
3403		HTTPMethod: "POST",
3404		HTTPPath:   "/",
3405		Paginator: &request.Paginator{
3406			InputTokens:     []string{"Marker"},
3407			OutputTokens:    []string{"Marker"},
3408			LimitToken:      "MaxRecords",
3409			TruncationToken: "",
3410		},
3411	}
3412
3413	if input == nil {
3414		input = &DescribeCacheSecurityGroupsInput{}
3415	}
3416
3417	output = &DescribeCacheSecurityGroupsOutput{}
3418	req = c.newRequest(op, input, output)
3419	return
3420}
3421
3422// DescribeCacheSecurityGroups API operation for Amazon ElastiCache.
3423//
3424// Returns a list of cache security group descriptions. If a cache security
3425// group name is specified, the list contains only the description of that group.
3426// This applicable only when you have ElastiCache in Classic setup
3427//
3428// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3429// with awserr.Error's Code and Message methods to get detailed information about
3430// the error.
3431//
3432// See the AWS API reference guide for Amazon ElastiCache's
3433// API operation DescribeCacheSecurityGroups for usage and error information.
3434//
3435// Returned Error Codes:
3436//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
3437//   The requested cache security group name does not refer to an existing cache
3438//   security group.
3439//
3440//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3441//   The value for a parameter is invalid.
3442//
3443//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3444//   Two or more incompatible parameters were specified.
3445//
3446// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSecurityGroups
3447func (c *ElastiCache) DescribeCacheSecurityGroups(input *DescribeCacheSecurityGroupsInput) (*DescribeCacheSecurityGroupsOutput, error) {
3448	req, out := c.DescribeCacheSecurityGroupsRequest(input)
3449	return out, req.Send()
3450}
3451
3452// DescribeCacheSecurityGroupsWithContext is the same as DescribeCacheSecurityGroups with the addition of
3453// the ability to pass a context and additional request options.
3454//
3455// See DescribeCacheSecurityGroups for details on how to use this API operation.
3456//
3457// The context must be non-nil and will be used for request cancellation. If
3458// the context is nil a panic will occur. In the future the SDK may create
3459// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3460// for more information on using Contexts.
3461func (c *ElastiCache) DescribeCacheSecurityGroupsWithContext(ctx aws.Context, input *DescribeCacheSecurityGroupsInput, opts ...request.Option) (*DescribeCacheSecurityGroupsOutput, error) {
3462	req, out := c.DescribeCacheSecurityGroupsRequest(input)
3463	req.SetContext(ctx)
3464	req.ApplyOptions(opts...)
3465	return out, req.Send()
3466}
3467
3468// DescribeCacheSecurityGroupsPages iterates over the pages of a DescribeCacheSecurityGroups operation,
3469// calling the "fn" function with the response data for each page. To stop
3470// iterating, return false from the fn function.
3471//
3472// See DescribeCacheSecurityGroups method for more information on how to use this operation.
3473//
3474// Note: This operation can generate multiple requests to a service.
3475//
3476//    // Example iterating over at most 3 pages of a DescribeCacheSecurityGroups operation.
3477//    pageNum := 0
3478//    err := client.DescribeCacheSecurityGroupsPages(params,
3479//        func(page *elasticache.DescribeCacheSecurityGroupsOutput, lastPage bool) bool {
3480//            pageNum++
3481//            fmt.Println(page)
3482//            return pageNum <= 3
3483//        })
3484//
3485func (c *ElastiCache) DescribeCacheSecurityGroupsPages(input *DescribeCacheSecurityGroupsInput, fn func(*DescribeCacheSecurityGroupsOutput, bool) bool) error {
3486	return c.DescribeCacheSecurityGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3487}
3488
3489// DescribeCacheSecurityGroupsPagesWithContext same as DescribeCacheSecurityGroupsPages except
3490// it takes a Context and allows setting request options on the pages.
3491//
3492// The context must be non-nil and will be used for request cancellation. If
3493// the context is nil a panic will occur. In the future the SDK may create
3494// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3495// for more information on using Contexts.
3496func (c *ElastiCache) DescribeCacheSecurityGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheSecurityGroupsInput, fn func(*DescribeCacheSecurityGroupsOutput, bool) bool, opts ...request.Option) error {
3497	p := request.Pagination{
3498		NewRequest: func() (*request.Request, error) {
3499			var inCpy *DescribeCacheSecurityGroupsInput
3500			if input != nil {
3501				tmp := *input
3502				inCpy = &tmp
3503			}
3504			req, _ := c.DescribeCacheSecurityGroupsRequest(inCpy)
3505			req.SetContext(ctx)
3506			req.ApplyOptions(opts...)
3507			return req, nil
3508		},
3509	}
3510
3511	for p.Next() {
3512		if !fn(p.Page().(*DescribeCacheSecurityGroupsOutput), !p.HasNextPage()) {
3513			break
3514		}
3515	}
3516
3517	return p.Err()
3518}
3519
3520const opDescribeCacheSubnetGroups = "DescribeCacheSubnetGroups"
3521
3522// DescribeCacheSubnetGroupsRequest generates a "aws/request.Request" representing the
3523// client's request for the DescribeCacheSubnetGroups operation. The "output" return
3524// value will be populated with the request's response once the request completes
3525// successfully.
3526//
3527// Use "Send" method on the returned Request to send the API call to the service.
3528// the "output" return value is not valid until after Send returns without error.
3529//
3530// See DescribeCacheSubnetGroups for more information on using the DescribeCacheSubnetGroups
3531// API call, and error handling.
3532//
3533// This method is useful when you want to inject custom logic or configuration
3534// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3535//
3536//
3537//    // Example sending a request using the DescribeCacheSubnetGroupsRequest method.
3538//    req, resp := client.DescribeCacheSubnetGroupsRequest(params)
3539//
3540//    err := req.Send()
3541//    if err == nil { // resp is now filled
3542//        fmt.Println(resp)
3543//    }
3544//
3545// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSubnetGroups
3546func (c *ElastiCache) DescribeCacheSubnetGroupsRequest(input *DescribeCacheSubnetGroupsInput) (req *request.Request, output *DescribeCacheSubnetGroupsOutput) {
3547	op := &request.Operation{
3548		Name:       opDescribeCacheSubnetGroups,
3549		HTTPMethod: "POST",
3550		HTTPPath:   "/",
3551		Paginator: &request.Paginator{
3552			InputTokens:     []string{"Marker"},
3553			OutputTokens:    []string{"Marker"},
3554			LimitToken:      "MaxRecords",
3555			TruncationToken: "",
3556		},
3557	}
3558
3559	if input == nil {
3560		input = &DescribeCacheSubnetGroupsInput{}
3561	}
3562
3563	output = &DescribeCacheSubnetGroupsOutput{}
3564	req = c.newRequest(op, input, output)
3565	return
3566}
3567
3568// DescribeCacheSubnetGroups API operation for Amazon ElastiCache.
3569//
3570// Returns a list of cache subnet group descriptions. If a subnet group name
3571// is specified, the list contains only the description of that group. This
3572// is applicable only when you have ElastiCache in VPC setup. All ElastiCache
3573// clusters now launch in VPC by default.
3574//
3575// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3576// with awserr.Error's Code and Message methods to get detailed information about
3577// the error.
3578//
3579// See the AWS API reference guide for Amazon ElastiCache's
3580// API operation DescribeCacheSubnetGroups for usage and error information.
3581//
3582// Returned Error Codes:
3583//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
3584//   The requested cache subnet group name does not refer to an existing cache
3585//   subnet group.
3586//
3587// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSubnetGroups
3588func (c *ElastiCache) DescribeCacheSubnetGroups(input *DescribeCacheSubnetGroupsInput) (*DescribeCacheSubnetGroupsOutput, error) {
3589	req, out := c.DescribeCacheSubnetGroupsRequest(input)
3590	return out, req.Send()
3591}
3592
3593// DescribeCacheSubnetGroupsWithContext is the same as DescribeCacheSubnetGroups with the addition of
3594// the ability to pass a context and additional request options.
3595//
3596// See DescribeCacheSubnetGroups for details on how to use this API operation.
3597//
3598// The context must be non-nil and will be used for request cancellation. If
3599// the context is nil a panic will occur. In the future the SDK may create
3600// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3601// for more information on using Contexts.
3602func (c *ElastiCache) DescribeCacheSubnetGroupsWithContext(ctx aws.Context, input *DescribeCacheSubnetGroupsInput, opts ...request.Option) (*DescribeCacheSubnetGroupsOutput, error) {
3603	req, out := c.DescribeCacheSubnetGroupsRequest(input)
3604	req.SetContext(ctx)
3605	req.ApplyOptions(opts...)
3606	return out, req.Send()
3607}
3608
3609// DescribeCacheSubnetGroupsPages iterates over the pages of a DescribeCacheSubnetGroups operation,
3610// calling the "fn" function with the response data for each page. To stop
3611// iterating, return false from the fn function.
3612//
3613// See DescribeCacheSubnetGroups method for more information on how to use this operation.
3614//
3615// Note: This operation can generate multiple requests to a service.
3616//
3617//    // Example iterating over at most 3 pages of a DescribeCacheSubnetGroups operation.
3618//    pageNum := 0
3619//    err := client.DescribeCacheSubnetGroupsPages(params,
3620//        func(page *elasticache.DescribeCacheSubnetGroupsOutput, lastPage bool) bool {
3621//            pageNum++
3622//            fmt.Println(page)
3623//            return pageNum <= 3
3624//        })
3625//
3626func (c *ElastiCache) DescribeCacheSubnetGroupsPages(input *DescribeCacheSubnetGroupsInput, fn func(*DescribeCacheSubnetGroupsOutput, bool) bool) error {
3627	return c.DescribeCacheSubnetGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3628}
3629
3630// DescribeCacheSubnetGroupsPagesWithContext same as DescribeCacheSubnetGroupsPages except
3631// it takes a Context and allows setting request options on the pages.
3632//
3633// The context must be non-nil and will be used for request cancellation. If
3634// the context is nil a panic will occur. In the future the SDK may create
3635// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3636// for more information on using Contexts.
3637func (c *ElastiCache) DescribeCacheSubnetGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheSubnetGroupsInput, fn func(*DescribeCacheSubnetGroupsOutput, bool) bool, opts ...request.Option) error {
3638	p := request.Pagination{
3639		NewRequest: func() (*request.Request, error) {
3640			var inCpy *DescribeCacheSubnetGroupsInput
3641			if input != nil {
3642				tmp := *input
3643				inCpy = &tmp
3644			}
3645			req, _ := c.DescribeCacheSubnetGroupsRequest(inCpy)
3646			req.SetContext(ctx)
3647			req.ApplyOptions(opts...)
3648			return req, nil
3649		},
3650	}
3651
3652	for p.Next() {
3653		if !fn(p.Page().(*DescribeCacheSubnetGroupsOutput), !p.HasNextPage()) {
3654			break
3655		}
3656	}
3657
3658	return p.Err()
3659}
3660
3661const opDescribeEngineDefaultParameters = "DescribeEngineDefaultParameters"
3662
3663// DescribeEngineDefaultParametersRequest generates a "aws/request.Request" representing the
3664// client's request for the DescribeEngineDefaultParameters operation. The "output" return
3665// value will be populated with the request's response once the request completes
3666// successfully.
3667//
3668// Use "Send" method on the returned Request to send the API call to the service.
3669// the "output" return value is not valid until after Send returns without error.
3670//
3671// See DescribeEngineDefaultParameters for more information on using the DescribeEngineDefaultParameters
3672// API call, and error handling.
3673//
3674// This method is useful when you want to inject custom logic or configuration
3675// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3676//
3677//
3678//    // Example sending a request using the DescribeEngineDefaultParametersRequest method.
3679//    req, resp := client.DescribeEngineDefaultParametersRequest(params)
3680//
3681//    err := req.Send()
3682//    if err == nil { // resp is now filled
3683//        fmt.Println(resp)
3684//    }
3685//
3686// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEngineDefaultParameters
3687func (c *ElastiCache) DescribeEngineDefaultParametersRequest(input *DescribeEngineDefaultParametersInput) (req *request.Request, output *DescribeEngineDefaultParametersOutput) {
3688	op := &request.Operation{
3689		Name:       opDescribeEngineDefaultParameters,
3690		HTTPMethod: "POST",
3691		HTTPPath:   "/",
3692		Paginator: &request.Paginator{
3693			InputTokens:     []string{"Marker"},
3694			OutputTokens:    []string{"EngineDefaults.Marker"},
3695			LimitToken:      "MaxRecords",
3696			TruncationToken: "",
3697		},
3698	}
3699
3700	if input == nil {
3701		input = &DescribeEngineDefaultParametersInput{}
3702	}
3703
3704	output = &DescribeEngineDefaultParametersOutput{}
3705	req = c.newRequest(op, input, output)
3706	return
3707}
3708
3709// DescribeEngineDefaultParameters API operation for Amazon ElastiCache.
3710//
3711// Returns the default engine and system parameter information for the specified
3712// cache engine.
3713//
3714// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3715// with awserr.Error's Code and Message methods to get detailed information about
3716// the error.
3717//
3718// See the AWS API reference guide for Amazon ElastiCache's
3719// API operation DescribeEngineDefaultParameters for usage and error information.
3720//
3721// Returned Error Codes:
3722//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3723//   The value for a parameter is invalid.
3724//
3725//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3726//   Two or more incompatible parameters were specified.
3727//
3728// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEngineDefaultParameters
3729func (c *ElastiCache) DescribeEngineDefaultParameters(input *DescribeEngineDefaultParametersInput) (*DescribeEngineDefaultParametersOutput, error) {
3730	req, out := c.DescribeEngineDefaultParametersRequest(input)
3731	return out, req.Send()
3732}
3733
3734// DescribeEngineDefaultParametersWithContext is the same as DescribeEngineDefaultParameters with the addition of
3735// the ability to pass a context and additional request options.
3736//
3737// See DescribeEngineDefaultParameters for details on how to use this API operation.
3738//
3739// The context must be non-nil and will be used for request cancellation. If
3740// the context is nil a panic will occur. In the future the SDK may create
3741// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3742// for more information on using Contexts.
3743func (c *ElastiCache) DescribeEngineDefaultParametersWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, opts ...request.Option) (*DescribeEngineDefaultParametersOutput, error) {
3744	req, out := c.DescribeEngineDefaultParametersRequest(input)
3745	req.SetContext(ctx)
3746	req.ApplyOptions(opts...)
3747	return out, req.Send()
3748}
3749
3750// DescribeEngineDefaultParametersPages iterates over the pages of a DescribeEngineDefaultParameters operation,
3751// calling the "fn" function with the response data for each page. To stop
3752// iterating, return false from the fn function.
3753//
3754// See DescribeEngineDefaultParameters method for more information on how to use this operation.
3755//
3756// Note: This operation can generate multiple requests to a service.
3757//
3758//    // Example iterating over at most 3 pages of a DescribeEngineDefaultParameters operation.
3759//    pageNum := 0
3760//    err := client.DescribeEngineDefaultParametersPages(params,
3761//        func(page *elasticache.DescribeEngineDefaultParametersOutput, lastPage bool) bool {
3762//            pageNum++
3763//            fmt.Println(page)
3764//            return pageNum <= 3
3765//        })
3766//
3767func (c *ElastiCache) DescribeEngineDefaultParametersPages(input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool) error {
3768	return c.DescribeEngineDefaultParametersPagesWithContext(aws.BackgroundContext(), input, fn)
3769}
3770
3771// DescribeEngineDefaultParametersPagesWithContext same as DescribeEngineDefaultParametersPages except
3772// it takes a Context and allows setting request options on the pages.
3773//
3774// The context must be non-nil and will be used for request cancellation. If
3775// the context is nil a panic will occur. In the future the SDK may create
3776// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3777// for more information on using Contexts.
3778func (c *ElastiCache) DescribeEngineDefaultParametersPagesWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool, opts ...request.Option) error {
3779	p := request.Pagination{
3780		NewRequest: func() (*request.Request, error) {
3781			var inCpy *DescribeEngineDefaultParametersInput
3782			if input != nil {
3783				tmp := *input
3784				inCpy = &tmp
3785			}
3786			req, _ := c.DescribeEngineDefaultParametersRequest(inCpy)
3787			req.SetContext(ctx)
3788			req.ApplyOptions(opts...)
3789			return req, nil
3790		},
3791	}
3792
3793	for p.Next() {
3794		if !fn(p.Page().(*DescribeEngineDefaultParametersOutput), !p.HasNextPage()) {
3795			break
3796		}
3797	}
3798
3799	return p.Err()
3800}
3801
3802const opDescribeEvents = "DescribeEvents"
3803
3804// DescribeEventsRequest generates a "aws/request.Request" representing the
3805// client's request for the DescribeEvents operation. The "output" return
3806// value will be populated with the request's response once the request completes
3807// successfully.
3808//
3809// Use "Send" method on the returned Request to send the API call to the service.
3810// the "output" return value is not valid until after Send returns without error.
3811//
3812// See DescribeEvents for more information on using the DescribeEvents
3813// API call, and error handling.
3814//
3815// This method is useful when you want to inject custom logic or configuration
3816// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3817//
3818//
3819//    // Example sending a request using the DescribeEventsRequest method.
3820//    req, resp := client.DescribeEventsRequest(params)
3821//
3822//    err := req.Send()
3823//    if err == nil { // resp is now filled
3824//        fmt.Println(resp)
3825//    }
3826//
3827// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEvents
3828func (c *ElastiCache) DescribeEventsRequest(input *DescribeEventsInput) (req *request.Request, output *DescribeEventsOutput) {
3829	op := &request.Operation{
3830		Name:       opDescribeEvents,
3831		HTTPMethod: "POST",
3832		HTTPPath:   "/",
3833		Paginator: &request.Paginator{
3834			InputTokens:     []string{"Marker"},
3835			OutputTokens:    []string{"Marker"},
3836			LimitToken:      "MaxRecords",
3837			TruncationToken: "",
3838		},
3839	}
3840
3841	if input == nil {
3842		input = &DescribeEventsInput{}
3843	}
3844
3845	output = &DescribeEventsOutput{}
3846	req = c.newRequest(op, input, output)
3847	return
3848}
3849
3850// DescribeEvents API operation for Amazon ElastiCache.
3851//
3852// Returns events related to clusters, cache security groups, and cache parameter
3853// groups. You can obtain events specific to a particular cluster, cache security
3854// group, or cache parameter group by providing the name as a parameter.
3855//
3856// By default, only the events occurring within the last hour are returned;
3857// however, you can retrieve up to 14 days' worth of events if necessary.
3858//
3859// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3860// with awserr.Error's Code and Message methods to get detailed information about
3861// the error.
3862//
3863// See the AWS API reference guide for Amazon ElastiCache's
3864// API operation DescribeEvents for usage and error information.
3865//
3866// Returned Error Codes:
3867//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3868//   The value for a parameter is invalid.
3869//
3870//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3871//   Two or more incompatible parameters were specified.
3872//
3873// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEvents
3874func (c *ElastiCache) DescribeEvents(input *DescribeEventsInput) (*DescribeEventsOutput, error) {
3875	req, out := c.DescribeEventsRequest(input)
3876	return out, req.Send()
3877}
3878
3879// DescribeEventsWithContext is the same as DescribeEvents with the addition of
3880// the ability to pass a context and additional request options.
3881//
3882// See DescribeEvents for details on how to use this API operation.
3883//
3884// The context must be non-nil and will be used for request cancellation. If
3885// the context is nil a panic will occur. In the future the SDK may create
3886// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3887// for more information on using Contexts.
3888func (c *ElastiCache) DescribeEventsWithContext(ctx aws.Context, input *DescribeEventsInput, opts ...request.Option) (*DescribeEventsOutput, error) {
3889	req, out := c.DescribeEventsRequest(input)
3890	req.SetContext(ctx)
3891	req.ApplyOptions(opts...)
3892	return out, req.Send()
3893}
3894
3895// DescribeEventsPages iterates over the pages of a DescribeEvents operation,
3896// calling the "fn" function with the response data for each page. To stop
3897// iterating, return false from the fn function.
3898//
3899// See DescribeEvents method for more information on how to use this operation.
3900//
3901// Note: This operation can generate multiple requests to a service.
3902//
3903//    // Example iterating over at most 3 pages of a DescribeEvents operation.
3904//    pageNum := 0
3905//    err := client.DescribeEventsPages(params,
3906//        func(page *elasticache.DescribeEventsOutput, lastPage bool) bool {
3907//            pageNum++
3908//            fmt.Println(page)
3909//            return pageNum <= 3
3910//        })
3911//
3912func (c *ElastiCache) DescribeEventsPages(input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool) error {
3913	return c.DescribeEventsPagesWithContext(aws.BackgroundContext(), input, fn)
3914}
3915
3916// DescribeEventsPagesWithContext same as DescribeEventsPages except
3917// it takes a Context and allows setting request options on the pages.
3918//
3919// The context must be non-nil and will be used for request cancellation. If
3920// the context is nil a panic will occur. In the future the SDK may create
3921// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3922// for more information on using Contexts.
3923func (c *ElastiCache) DescribeEventsPagesWithContext(ctx aws.Context, input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool, opts ...request.Option) error {
3924	p := request.Pagination{
3925		NewRequest: func() (*request.Request, error) {
3926			var inCpy *DescribeEventsInput
3927			if input != nil {
3928				tmp := *input
3929				inCpy = &tmp
3930			}
3931			req, _ := c.DescribeEventsRequest(inCpy)
3932			req.SetContext(ctx)
3933			req.ApplyOptions(opts...)
3934			return req, nil
3935		},
3936	}
3937
3938	for p.Next() {
3939		if !fn(p.Page().(*DescribeEventsOutput), !p.HasNextPage()) {
3940			break
3941		}
3942	}
3943
3944	return p.Err()
3945}
3946
3947const opDescribeGlobalReplicationGroups = "DescribeGlobalReplicationGroups"
3948
3949// DescribeGlobalReplicationGroupsRequest generates a "aws/request.Request" representing the
3950// client's request for the DescribeGlobalReplicationGroups operation. The "output" return
3951// value will be populated with the request's response once the request completes
3952// successfully.
3953//
3954// Use "Send" method on the returned Request to send the API call to the service.
3955// the "output" return value is not valid until after Send returns without error.
3956//
3957// See DescribeGlobalReplicationGroups for more information on using the DescribeGlobalReplicationGroups
3958// API call, and error handling.
3959//
3960// This method is useful when you want to inject custom logic or configuration
3961// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3962//
3963//
3964//    // Example sending a request using the DescribeGlobalReplicationGroupsRequest method.
3965//    req, resp := client.DescribeGlobalReplicationGroupsRequest(params)
3966//
3967//    err := req.Send()
3968//    if err == nil { // resp is now filled
3969//        fmt.Println(resp)
3970//    }
3971//
3972// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeGlobalReplicationGroups
3973func (c *ElastiCache) DescribeGlobalReplicationGroupsRequest(input *DescribeGlobalReplicationGroupsInput) (req *request.Request, output *DescribeGlobalReplicationGroupsOutput) {
3974	op := &request.Operation{
3975		Name:       opDescribeGlobalReplicationGroups,
3976		HTTPMethod: "POST",
3977		HTTPPath:   "/",
3978		Paginator: &request.Paginator{
3979			InputTokens:     []string{"Marker"},
3980			OutputTokens:    []string{"Marker"},
3981			LimitToken:      "MaxRecords",
3982			TruncationToken: "",
3983		},
3984	}
3985
3986	if input == nil {
3987		input = &DescribeGlobalReplicationGroupsInput{}
3988	}
3989
3990	output = &DescribeGlobalReplicationGroupsOutput{}
3991	req = c.newRequest(op, input, output)
3992	return
3993}
3994
3995// DescribeGlobalReplicationGroups API operation for Amazon ElastiCache.
3996//
3997// Returns information about a particular global replication group. If no identifier
3998// is specified, returns information about all Global datastores.
3999//
4000// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4001// with awserr.Error's Code and Message methods to get detailed information about
4002// the error.
4003//
4004// See the AWS API reference guide for Amazon ElastiCache's
4005// API operation DescribeGlobalReplicationGroups for usage and error information.
4006//
4007// Returned Error Codes:
4008//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
4009//   The Global datastore does not exist
4010//
4011//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4012//   The value for a parameter is invalid.
4013//
4014//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4015//   Two or more incompatible parameters were specified.
4016//
4017// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeGlobalReplicationGroups
4018func (c *ElastiCache) DescribeGlobalReplicationGroups(input *DescribeGlobalReplicationGroupsInput) (*DescribeGlobalReplicationGroupsOutput, error) {
4019	req, out := c.DescribeGlobalReplicationGroupsRequest(input)
4020	return out, req.Send()
4021}
4022
4023// DescribeGlobalReplicationGroupsWithContext is the same as DescribeGlobalReplicationGroups with the addition of
4024// the ability to pass a context and additional request options.
4025//
4026// See DescribeGlobalReplicationGroups for details on how to use this API operation.
4027//
4028// The context must be non-nil and will be used for request cancellation. If
4029// the context is nil a panic will occur. In the future the SDK may create
4030// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4031// for more information on using Contexts.
4032func (c *ElastiCache) DescribeGlobalReplicationGroupsWithContext(ctx aws.Context, input *DescribeGlobalReplicationGroupsInput, opts ...request.Option) (*DescribeGlobalReplicationGroupsOutput, error) {
4033	req, out := c.DescribeGlobalReplicationGroupsRequest(input)
4034	req.SetContext(ctx)
4035	req.ApplyOptions(opts...)
4036	return out, req.Send()
4037}
4038
4039// DescribeGlobalReplicationGroupsPages iterates over the pages of a DescribeGlobalReplicationGroups operation,
4040// calling the "fn" function with the response data for each page. To stop
4041// iterating, return false from the fn function.
4042//
4043// See DescribeGlobalReplicationGroups method for more information on how to use this operation.
4044//
4045// Note: This operation can generate multiple requests to a service.
4046//
4047//    // Example iterating over at most 3 pages of a DescribeGlobalReplicationGroups operation.
4048//    pageNum := 0
4049//    err := client.DescribeGlobalReplicationGroupsPages(params,
4050//        func(page *elasticache.DescribeGlobalReplicationGroupsOutput, lastPage bool) bool {
4051//            pageNum++
4052//            fmt.Println(page)
4053//            return pageNum <= 3
4054//        })
4055//
4056func (c *ElastiCache) DescribeGlobalReplicationGroupsPages(input *DescribeGlobalReplicationGroupsInput, fn func(*DescribeGlobalReplicationGroupsOutput, bool) bool) error {
4057	return c.DescribeGlobalReplicationGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
4058}
4059
4060// DescribeGlobalReplicationGroupsPagesWithContext same as DescribeGlobalReplicationGroupsPages except
4061// it takes a Context and allows setting request options on the pages.
4062//
4063// The context must be non-nil and will be used for request cancellation. If
4064// the context is nil a panic will occur. In the future the SDK may create
4065// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4066// for more information on using Contexts.
4067func (c *ElastiCache) DescribeGlobalReplicationGroupsPagesWithContext(ctx aws.Context, input *DescribeGlobalReplicationGroupsInput, fn func(*DescribeGlobalReplicationGroupsOutput, bool) bool, opts ...request.Option) error {
4068	p := request.Pagination{
4069		NewRequest: func() (*request.Request, error) {
4070			var inCpy *DescribeGlobalReplicationGroupsInput
4071			if input != nil {
4072				tmp := *input
4073				inCpy = &tmp
4074			}
4075			req, _ := c.DescribeGlobalReplicationGroupsRequest(inCpy)
4076			req.SetContext(ctx)
4077			req.ApplyOptions(opts...)
4078			return req, nil
4079		},
4080	}
4081
4082	for p.Next() {
4083		if !fn(p.Page().(*DescribeGlobalReplicationGroupsOutput), !p.HasNextPage()) {
4084			break
4085		}
4086	}
4087
4088	return p.Err()
4089}
4090
4091const opDescribeReplicationGroups = "DescribeReplicationGroups"
4092
4093// DescribeReplicationGroupsRequest generates a "aws/request.Request" representing the
4094// client's request for the DescribeReplicationGroups operation. The "output" return
4095// value will be populated with the request's response once the request completes
4096// successfully.
4097//
4098// Use "Send" method on the returned Request to send the API call to the service.
4099// the "output" return value is not valid until after Send returns without error.
4100//
4101// See DescribeReplicationGroups for more information on using the DescribeReplicationGroups
4102// API call, and error handling.
4103//
4104// This method is useful when you want to inject custom logic or configuration
4105// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4106//
4107//
4108//    // Example sending a request using the DescribeReplicationGroupsRequest method.
4109//    req, resp := client.DescribeReplicationGroupsRequest(params)
4110//
4111//    err := req.Send()
4112//    if err == nil { // resp is now filled
4113//        fmt.Println(resp)
4114//    }
4115//
4116// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReplicationGroups
4117func (c *ElastiCache) DescribeReplicationGroupsRequest(input *DescribeReplicationGroupsInput) (req *request.Request, output *DescribeReplicationGroupsOutput) {
4118	op := &request.Operation{
4119		Name:       opDescribeReplicationGroups,
4120		HTTPMethod: "POST",
4121		HTTPPath:   "/",
4122		Paginator: &request.Paginator{
4123			InputTokens:     []string{"Marker"},
4124			OutputTokens:    []string{"Marker"},
4125			LimitToken:      "MaxRecords",
4126			TruncationToken: "",
4127		},
4128	}
4129
4130	if input == nil {
4131		input = &DescribeReplicationGroupsInput{}
4132	}
4133
4134	output = &DescribeReplicationGroupsOutput{}
4135	req = c.newRequest(op, input, output)
4136	return
4137}
4138
4139// DescribeReplicationGroups API operation for Amazon ElastiCache.
4140//
4141// Returns information about a particular replication group. If no identifier
4142// is specified, DescribeReplicationGroups returns information about all replication
4143// groups.
4144//
4145// This operation is valid for Redis only.
4146//
4147// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4148// with awserr.Error's Code and Message methods to get detailed information about
4149// the error.
4150//
4151// See the AWS API reference guide for Amazon ElastiCache's
4152// API operation DescribeReplicationGroups for usage and error information.
4153//
4154// Returned Error Codes:
4155//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4156//   The specified replication group does not exist.
4157//
4158//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4159//   The value for a parameter is invalid.
4160//
4161//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4162//   Two or more incompatible parameters were specified.
4163//
4164// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReplicationGroups
4165func (c *ElastiCache) DescribeReplicationGroups(input *DescribeReplicationGroupsInput) (*DescribeReplicationGroupsOutput, error) {
4166	req, out := c.DescribeReplicationGroupsRequest(input)
4167	return out, req.Send()
4168}
4169
4170// DescribeReplicationGroupsWithContext is the same as DescribeReplicationGroups with the addition of
4171// the ability to pass a context and additional request options.
4172//
4173// See DescribeReplicationGroups for details on how to use this API operation.
4174//
4175// The context must be non-nil and will be used for request cancellation. If
4176// the context is nil a panic will occur. In the future the SDK may create
4177// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4178// for more information on using Contexts.
4179func (c *ElastiCache) DescribeReplicationGroupsWithContext(ctx aws.Context, input *DescribeReplicationGroupsInput, opts ...request.Option) (*DescribeReplicationGroupsOutput, error) {
4180	req, out := c.DescribeReplicationGroupsRequest(input)
4181	req.SetContext(ctx)
4182	req.ApplyOptions(opts...)
4183	return out, req.Send()
4184}
4185
4186// DescribeReplicationGroupsPages iterates over the pages of a DescribeReplicationGroups operation,
4187// calling the "fn" function with the response data for each page. To stop
4188// iterating, return false from the fn function.
4189//
4190// See DescribeReplicationGroups method for more information on how to use this operation.
4191//
4192// Note: This operation can generate multiple requests to a service.
4193//
4194//    // Example iterating over at most 3 pages of a DescribeReplicationGroups operation.
4195//    pageNum := 0
4196//    err := client.DescribeReplicationGroupsPages(params,
4197//        func(page *elasticache.DescribeReplicationGroupsOutput, lastPage bool) bool {
4198//            pageNum++
4199//            fmt.Println(page)
4200//            return pageNum <= 3
4201//        })
4202//
4203func (c *ElastiCache) DescribeReplicationGroupsPages(input *DescribeReplicationGroupsInput, fn func(*DescribeReplicationGroupsOutput, bool) bool) error {
4204	return c.DescribeReplicationGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
4205}
4206
4207// DescribeReplicationGroupsPagesWithContext same as DescribeReplicationGroupsPages except
4208// it takes a Context and allows setting request options on the pages.
4209//
4210// The context must be non-nil and will be used for request cancellation. If
4211// the context is nil a panic will occur. In the future the SDK may create
4212// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4213// for more information on using Contexts.
4214func (c *ElastiCache) DescribeReplicationGroupsPagesWithContext(ctx aws.Context, input *DescribeReplicationGroupsInput, fn func(*DescribeReplicationGroupsOutput, bool) bool, opts ...request.Option) error {
4215	p := request.Pagination{
4216		NewRequest: func() (*request.Request, error) {
4217			var inCpy *DescribeReplicationGroupsInput
4218			if input != nil {
4219				tmp := *input
4220				inCpy = &tmp
4221			}
4222			req, _ := c.DescribeReplicationGroupsRequest(inCpy)
4223			req.SetContext(ctx)
4224			req.ApplyOptions(opts...)
4225			return req, nil
4226		},
4227	}
4228
4229	for p.Next() {
4230		if !fn(p.Page().(*DescribeReplicationGroupsOutput), !p.HasNextPage()) {
4231			break
4232		}
4233	}
4234
4235	return p.Err()
4236}
4237
4238const opDescribeReservedCacheNodes = "DescribeReservedCacheNodes"
4239
4240// DescribeReservedCacheNodesRequest generates a "aws/request.Request" representing the
4241// client's request for the DescribeReservedCacheNodes operation. The "output" return
4242// value will be populated with the request's response once the request completes
4243// successfully.
4244//
4245// Use "Send" method on the returned Request to send the API call to the service.
4246// the "output" return value is not valid until after Send returns without error.
4247//
4248// See DescribeReservedCacheNodes for more information on using the DescribeReservedCacheNodes
4249// API call, and error handling.
4250//
4251// This method is useful when you want to inject custom logic or configuration
4252// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4253//
4254//
4255//    // Example sending a request using the DescribeReservedCacheNodesRequest method.
4256//    req, resp := client.DescribeReservedCacheNodesRequest(params)
4257//
4258//    err := req.Send()
4259//    if err == nil { // resp is now filled
4260//        fmt.Println(resp)
4261//    }
4262//
4263// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodes
4264func (c *ElastiCache) DescribeReservedCacheNodesRequest(input *DescribeReservedCacheNodesInput) (req *request.Request, output *DescribeReservedCacheNodesOutput) {
4265	op := &request.Operation{
4266		Name:       opDescribeReservedCacheNodes,
4267		HTTPMethod: "POST",
4268		HTTPPath:   "/",
4269		Paginator: &request.Paginator{
4270			InputTokens:     []string{"Marker"},
4271			OutputTokens:    []string{"Marker"},
4272			LimitToken:      "MaxRecords",
4273			TruncationToken: "",
4274		},
4275	}
4276
4277	if input == nil {
4278		input = &DescribeReservedCacheNodesInput{}
4279	}
4280
4281	output = &DescribeReservedCacheNodesOutput{}
4282	req = c.newRequest(op, input, output)
4283	return
4284}
4285
4286// DescribeReservedCacheNodes API operation for Amazon ElastiCache.
4287//
4288// Returns information about reserved cache nodes for this account, or about
4289// a specified reserved cache node.
4290//
4291// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4292// with awserr.Error's Code and Message methods to get detailed information about
4293// the error.
4294//
4295// See the AWS API reference guide for Amazon ElastiCache's
4296// API operation DescribeReservedCacheNodes for usage and error information.
4297//
4298// Returned Error Codes:
4299//   * ErrCodeReservedCacheNodeNotFoundFault "ReservedCacheNodeNotFound"
4300//   The requested reserved cache node was not found.
4301//
4302//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4303//   The value for a parameter is invalid.
4304//
4305//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4306//   Two or more incompatible parameters were specified.
4307//
4308// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodes
4309func (c *ElastiCache) DescribeReservedCacheNodes(input *DescribeReservedCacheNodesInput) (*DescribeReservedCacheNodesOutput, error) {
4310	req, out := c.DescribeReservedCacheNodesRequest(input)
4311	return out, req.Send()
4312}
4313
4314// DescribeReservedCacheNodesWithContext is the same as DescribeReservedCacheNodes with the addition of
4315// the ability to pass a context and additional request options.
4316//
4317// See DescribeReservedCacheNodes for details on how to use this API operation.
4318//
4319// The context must be non-nil and will be used for request cancellation. If
4320// the context is nil a panic will occur. In the future the SDK may create
4321// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4322// for more information on using Contexts.
4323func (c *ElastiCache) DescribeReservedCacheNodesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesInput, opts ...request.Option) (*DescribeReservedCacheNodesOutput, error) {
4324	req, out := c.DescribeReservedCacheNodesRequest(input)
4325	req.SetContext(ctx)
4326	req.ApplyOptions(opts...)
4327	return out, req.Send()
4328}
4329
4330// DescribeReservedCacheNodesPages iterates over the pages of a DescribeReservedCacheNodes operation,
4331// calling the "fn" function with the response data for each page. To stop
4332// iterating, return false from the fn function.
4333//
4334// See DescribeReservedCacheNodes method for more information on how to use this operation.
4335//
4336// Note: This operation can generate multiple requests to a service.
4337//
4338//    // Example iterating over at most 3 pages of a DescribeReservedCacheNodes operation.
4339//    pageNum := 0
4340//    err := client.DescribeReservedCacheNodesPages(params,
4341//        func(page *elasticache.DescribeReservedCacheNodesOutput, lastPage bool) bool {
4342//            pageNum++
4343//            fmt.Println(page)
4344//            return pageNum <= 3
4345//        })
4346//
4347func (c *ElastiCache) DescribeReservedCacheNodesPages(input *DescribeReservedCacheNodesInput, fn func(*DescribeReservedCacheNodesOutput, bool) bool) error {
4348	return c.DescribeReservedCacheNodesPagesWithContext(aws.BackgroundContext(), input, fn)
4349}
4350
4351// DescribeReservedCacheNodesPagesWithContext same as DescribeReservedCacheNodesPages except
4352// it takes a Context and allows setting request options on the pages.
4353//
4354// The context must be non-nil and will be used for request cancellation. If
4355// the context is nil a panic will occur. In the future the SDK may create
4356// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4357// for more information on using Contexts.
4358func (c *ElastiCache) DescribeReservedCacheNodesPagesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesInput, fn func(*DescribeReservedCacheNodesOutput, bool) bool, opts ...request.Option) error {
4359	p := request.Pagination{
4360		NewRequest: func() (*request.Request, error) {
4361			var inCpy *DescribeReservedCacheNodesInput
4362			if input != nil {
4363				tmp := *input
4364				inCpy = &tmp
4365			}
4366			req, _ := c.DescribeReservedCacheNodesRequest(inCpy)
4367			req.SetContext(ctx)
4368			req.ApplyOptions(opts...)
4369			return req, nil
4370		},
4371	}
4372
4373	for p.Next() {
4374		if !fn(p.Page().(*DescribeReservedCacheNodesOutput), !p.HasNextPage()) {
4375			break
4376		}
4377	}
4378
4379	return p.Err()
4380}
4381
4382const opDescribeReservedCacheNodesOfferings = "DescribeReservedCacheNodesOfferings"
4383
4384// DescribeReservedCacheNodesOfferingsRequest generates a "aws/request.Request" representing the
4385// client's request for the DescribeReservedCacheNodesOfferings operation. The "output" return
4386// value will be populated with the request's response once the request completes
4387// successfully.
4388//
4389// Use "Send" method on the returned Request to send the API call to the service.
4390// the "output" return value is not valid until after Send returns without error.
4391//
4392// See DescribeReservedCacheNodesOfferings for more information on using the DescribeReservedCacheNodesOfferings
4393// API call, and error handling.
4394//
4395// This method is useful when you want to inject custom logic or configuration
4396// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4397//
4398//
4399//    // Example sending a request using the DescribeReservedCacheNodesOfferingsRequest method.
4400//    req, resp := client.DescribeReservedCacheNodesOfferingsRequest(params)
4401//
4402//    err := req.Send()
4403//    if err == nil { // resp is now filled
4404//        fmt.Println(resp)
4405//    }
4406//
4407// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodesOfferings
4408func (c *ElastiCache) DescribeReservedCacheNodesOfferingsRequest(input *DescribeReservedCacheNodesOfferingsInput) (req *request.Request, output *DescribeReservedCacheNodesOfferingsOutput) {
4409	op := &request.Operation{
4410		Name:       opDescribeReservedCacheNodesOfferings,
4411		HTTPMethod: "POST",
4412		HTTPPath:   "/",
4413		Paginator: &request.Paginator{
4414			InputTokens:     []string{"Marker"},
4415			OutputTokens:    []string{"Marker"},
4416			LimitToken:      "MaxRecords",
4417			TruncationToken: "",
4418		},
4419	}
4420
4421	if input == nil {
4422		input = &DescribeReservedCacheNodesOfferingsInput{}
4423	}
4424
4425	output = &DescribeReservedCacheNodesOfferingsOutput{}
4426	req = c.newRequest(op, input, output)
4427	return
4428}
4429
4430// DescribeReservedCacheNodesOfferings API operation for Amazon ElastiCache.
4431//
4432// Lists available reserved cache node offerings.
4433//
4434// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4435// with awserr.Error's Code and Message methods to get detailed information about
4436// the error.
4437//
4438// See the AWS API reference guide for Amazon ElastiCache's
4439// API operation DescribeReservedCacheNodesOfferings for usage and error information.
4440//
4441// Returned Error Codes:
4442//   * ErrCodeReservedCacheNodesOfferingNotFoundFault "ReservedCacheNodesOfferingNotFound"
4443//   The requested cache node offering does not exist.
4444//
4445//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4446//   The value for a parameter is invalid.
4447//
4448//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4449//   Two or more incompatible parameters were specified.
4450//
4451// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodesOfferings
4452func (c *ElastiCache) DescribeReservedCacheNodesOfferings(input *DescribeReservedCacheNodesOfferingsInput) (*DescribeReservedCacheNodesOfferingsOutput, error) {
4453	req, out := c.DescribeReservedCacheNodesOfferingsRequest(input)
4454	return out, req.Send()
4455}
4456
4457// DescribeReservedCacheNodesOfferingsWithContext is the same as DescribeReservedCacheNodesOfferings with the addition of
4458// the ability to pass a context and additional request options.
4459//
4460// See DescribeReservedCacheNodesOfferings for details on how to use this API operation.
4461//
4462// The context must be non-nil and will be used for request cancellation. If
4463// the context is nil a panic will occur. In the future the SDK may create
4464// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4465// for more information on using Contexts.
4466func (c *ElastiCache) DescribeReservedCacheNodesOfferingsWithContext(ctx aws.Context, input *DescribeReservedCacheNodesOfferingsInput, opts ...request.Option) (*DescribeReservedCacheNodesOfferingsOutput, error) {
4467	req, out := c.DescribeReservedCacheNodesOfferingsRequest(input)
4468	req.SetContext(ctx)
4469	req.ApplyOptions(opts...)
4470	return out, req.Send()
4471}
4472
4473// DescribeReservedCacheNodesOfferingsPages iterates over the pages of a DescribeReservedCacheNodesOfferings operation,
4474// calling the "fn" function with the response data for each page. To stop
4475// iterating, return false from the fn function.
4476//
4477// See DescribeReservedCacheNodesOfferings method for more information on how to use this operation.
4478//
4479// Note: This operation can generate multiple requests to a service.
4480//
4481//    // Example iterating over at most 3 pages of a DescribeReservedCacheNodesOfferings operation.
4482//    pageNum := 0
4483//    err := client.DescribeReservedCacheNodesOfferingsPages(params,
4484//        func(page *elasticache.DescribeReservedCacheNodesOfferingsOutput, lastPage bool) bool {
4485//            pageNum++
4486//            fmt.Println(page)
4487//            return pageNum <= 3
4488//        })
4489//
4490func (c *ElastiCache) DescribeReservedCacheNodesOfferingsPages(input *DescribeReservedCacheNodesOfferingsInput, fn func(*DescribeReservedCacheNodesOfferingsOutput, bool) bool) error {
4491	return c.DescribeReservedCacheNodesOfferingsPagesWithContext(aws.BackgroundContext(), input, fn)
4492}
4493
4494// DescribeReservedCacheNodesOfferingsPagesWithContext same as DescribeReservedCacheNodesOfferingsPages except
4495// it takes a Context and allows setting request options on the pages.
4496//
4497// The context must be non-nil and will be used for request cancellation. If
4498// the context is nil a panic will occur. In the future the SDK may create
4499// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4500// for more information on using Contexts.
4501func (c *ElastiCache) DescribeReservedCacheNodesOfferingsPagesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesOfferingsInput, fn func(*DescribeReservedCacheNodesOfferingsOutput, bool) bool, opts ...request.Option) error {
4502	p := request.Pagination{
4503		NewRequest: func() (*request.Request, error) {
4504			var inCpy *DescribeReservedCacheNodesOfferingsInput
4505			if input != nil {
4506				tmp := *input
4507				inCpy = &tmp
4508			}
4509			req, _ := c.DescribeReservedCacheNodesOfferingsRequest(inCpy)
4510			req.SetContext(ctx)
4511			req.ApplyOptions(opts...)
4512			return req, nil
4513		},
4514	}
4515
4516	for p.Next() {
4517		if !fn(p.Page().(*DescribeReservedCacheNodesOfferingsOutput), !p.HasNextPage()) {
4518			break
4519		}
4520	}
4521
4522	return p.Err()
4523}
4524
4525const opDescribeServiceUpdates = "DescribeServiceUpdates"
4526
4527// DescribeServiceUpdatesRequest generates a "aws/request.Request" representing the
4528// client's request for the DescribeServiceUpdates operation. The "output" return
4529// value will be populated with the request's response once the request completes
4530// successfully.
4531//
4532// Use "Send" method on the returned Request to send the API call to the service.
4533// the "output" return value is not valid until after Send returns without error.
4534//
4535// See DescribeServiceUpdates for more information on using the DescribeServiceUpdates
4536// API call, and error handling.
4537//
4538// This method is useful when you want to inject custom logic or configuration
4539// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4540//
4541//
4542//    // Example sending a request using the DescribeServiceUpdatesRequest method.
4543//    req, resp := client.DescribeServiceUpdatesRequest(params)
4544//
4545//    err := req.Send()
4546//    if err == nil { // resp is now filled
4547//        fmt.Println(resp)
4548//    }
4549//
4550// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeServiceUpdates
4551func (c *ElastiCache) DescribeServiceUpdatesRequest(input *DescribeServiceUpdatesInput) (req *request.Request, output *DescribeServiceUpdatesOutput) {
4552	op := &request.Operation{
4553		Name:       opDescribeServiceUpdates,
4554		HTTPMethod: "POST",
4555		HTTPPath:   "/",
4556		Paginator: &request.Paginator{
4557			InputTokens:     []string{"Marker"},
4558			OutputTokens:    []string{"Marker"},
4559			LimitToken:      "MaxRecords",
4560			TruncationToken: "",
4561		},
4562	}
4563
4564	if input == nil {
4565		input = &DescribeServiceUpdatesInput{}
4566	}
4567
4568	output = &DescribeServiceUpdatesOutput{}
4569	req = c.newRequest(op, input, output)
4570	return
4571}
4572
4573// DescribeServiceUpdates API operation for Amazon ElastiCache.
4574//
4575// Returns details of the service updates
4576//
4577// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4578// with awserr.Error's Code and Message methods to get detailed information about
4579// the error.
4580//
4581// See the AWS API reference guide for Amazon ElastiCache's
4582// API operation DescribeServiceUpdates for usage and error information.
4583//
4584// Returned Error Codes:
4585//   * ErrCodeServiceUpdateNotFoundFault "ServiceUpdateNotFoundFault"
4586//   The service update doesn't exist
4587//
4588//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4589//   The value for a parameter is invalid.
4590//
4591//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4592//   Two or more incompatible parameters were specified.
4593//
4594// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeServiceUpdates
4595func (c *ElastiCache) DescribeServiceUpdates(input *DescribeServiceUpdatesInput) (*DescribeServiceUpdatesOutput, error) {
4596	req, out := c.DescribeServiceUpdatesRequest(input)
4597	return out, req.Send()
4598}
4599
4600// DescribeServiceUpdatesWithContext is the same as DescribeServiceUpdates with the addition of
4601// the ability to pass a context and additional request options.
4602//
4603// See DescribeServiceUpdates for details on how to use this API operation.
4604//
4605// The context must be non-nil and will be used for request cancellation. If
4606// the context is nil a panic will occur. In the future the SDK may create
4607// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4608// for more information on using Contexts.
4609func (c *ElastiCache) DescribeServiceUpdatesWithContext(ctx aws.Context, input *DescribeServiceUpdatesInput, opts ...request.Option) (*DescribeServiceUpdatesOutput, error) {
4610	req, out := c.DescribeServiceUpdatesRequest(input)
4611	req.SetContext(ctx)
4612	req.ApplyOptions(opts...)
4613	return out, req.Send()
4614}
4615
4616// DescribeServiceUpdatesPages iterates over the pages of a DescribeServiceUpdates operation,
4617// calling the "fn" function with the response data for each page. To stop
4618// iterating, return false from the fn function.
4619//
4620// See DescribeServiceUpdates method for more information on how to use this operation.
4621//
4622// Note: This operation can generate multiple requests to a service.
4623//
4624//    // Example iterating over at most 3 pages of a DescribeServiceUpdates operation.
4625//    pageNum := 0
4626//    err := client.DescribeServiceUpdatesPages(params,
4627//        func(page *elasticache.DescribeServiceUpdatesOutput, lastPage bool) bool {
4628//            pageNum++
4629//            fmt.Println(page)
4630//            return pageNum <= 3
4631//        })
4632//
4633func (c *ElastiCache) DescribeServiceUpdatesPages(input *DescribeServiceUpdatesInput, fn func(*DescribeServiceUpdatesOutput, bool) bool) error {
4634	return c.DescribeServiceUpdatesPagesWithContext(aws.BackgroundContext(), input, fn)
4635}
4636
4637// DescribeServiceUpdatesPagesWithContext same as DescribeServiceUpdatesPages except
4638// it takes a Context and allows setting request options on the pages.
4639//
4640// The context must be non-nil and will be used for request cancellation. If
4641// the context is nil a panic will occur. In the future the SDK may create
4642// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4643// for more information on using Contexts.
4644func (c *ElastiCache) DescribeServiceUpdatesPagesWithContext(ctx aws.Context, input *DescribeServiceUpdatesInput, fn func(*DescribeServiceUpdatesOutput, bool) bool, opts ...request.Option) error {
4645	p := request.Pagination{
4646		NewRequest: func() (*request.Request, error) {
4647			var inCpy *DescribeServiceUpdatesInput
4648			if input != nil {
4649				tmp := *input
4650				inCpy = &tmp
4651			}
4652			req, _ := c.DescribeServiceUpdatesRequest(inCpy)
4653			req.SetContext(ctx)
4654			req.ApplyOptions(opts...)
4655			return req, nil
4656		},
4657	}
4658
4659	for p.Next() {
4660		if !fn(p.Page().(*DescribeServiceUpdatesOutput), !p.HasNextPage()) {
4661			break
4662		}
4663	}
4664
4665	return p.Err()
4666}
4667
4668const opDescribeSnapshots = "DescribeSnapshots"
4669
4670// DescribeSnapshotsRequest generates a "aws/request.Request" representing the
4671// client's request for the DescribeSnapshots operation. The "output" return
4672// value will be populated with the request's response once the request completes
4673// successfully.
4674//
4675// Use "Send" method on the returned Request to send the API call to the service.
4676// the "output" return value is not valid until after Send returns without error.
4677//
4678// See DescribeSnapshots for more information on using the DescribeSnapshots
4679// API call, and error handling.
4680//
4681// This method is useful when you want to inject custom logic or configuration
4682// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4683//
4684//
4685//    // Example sending a request using the DescribeSnapshotsRequest method.
4686//    req, resp := client.DescribeSnapshotsRequest(params)
4687//
4688//    err := req.Send()
4689//    if err == nil { // resp is now filled
4690//        fmt.Println(resp)
4691//    }
4692//
4693// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeSnapshots
4694func (c *ElastiCache) DescribeSnapshotsRequest(input *DescribeSnapshotsInput) (req *request.Request, output *DescribeSnapshotsOutput) {
4695	op := &request.Operation{
4696		Name:       opDescribeSnapshots,
4697		HTTPMethod: "POST",
4698		HTTPPath:   "/",
4699		Paginator: &request.Paginator{
4700			InputTokens:     []string{"Marker"},
4701			OutputTokens:    []string{"Marker"},
4702			LimitToken:      "MaxRecords",
4703			TruncationToken: "",
4704		},
4705	}
4706
4707	if input == nil {
4708		input = &DescribeSnapshotsInput{}
4709	}
4710
4711	output = &DescribeSnapshotsOutput{}
4712	req = c.newRequest(op, input, output)
4713	return
4714}
4715
4716// DescribeSnapshots API operation for Amazon ElastiCache.
4717//
4718// Returns information about cluster or replication group snapshots. By default,
4719// DescribeSnapshots lists all of your snapshots; it can optionally describe
4720// a single snapshot, or just the snapshots associated with a particular cache
4721// cluster.
4722//
4723// This operation is valid for Redis only.
4724//
4725// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4726// with awserr.Error's Code and Message methods to get detailed information about
4727// the error.
4728//
4729// See the AWS API reference guide for Amazon ElastiCache's
4730// API operation DescribeSnapshots for usage and error information.
4731//
4732// Returned Error Codes:
4733//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4734//   The requested cluster ID does not refer to an existing cluster.
4735//
4736//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
4737//   The requested snapshot name does not refer to an existing snapshot.
4738//
4739//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4740//   The value for a parameter is invalid.
4741//
4742//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4743//   Two or more incompatible parameters were specified.
4744//
4745// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeSnapshots
4746func (c *ElastiCache) DescribeSnapshots(input *DescribeSnapshotsInput) (*DescribeSnapshotsOutput, error) {
4747	req, out := c.DescribeSnapshotsRequest(input)
4748	return out, req.Send()
4749}
4750
4751// DescribeSnapshotsWithContext is the same as DescribeSnapshots with the addition of
4752// the ability to pass a context and additional request options.
4753//
4754// See DescribeSnapshots for details on how to use this API operation.
4755//
4756// The context must be non-nil and will be used for request cancellation. If
4757// the context is nil a panic will occur. In the future the SDK may create
4758// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4759// for more information on using Contexts.
4760func (c *ElastiCache) DescribeSnapshotsWithContext(ctx aws.Context, input *DescribeSnapshotsInput, opts ...request.Option) (*DescribeSnapshotsOutput, error) {
4761	req, out := c.DescribeSnapshotsRequest(input)
4762	req.SetContext(ctx)
4763	req.ApplyOptions(opts...)
4764	return out, req.Send()
4765}
4766
4767// DescribeSnapshotsPages iterates over the pages of a DescribeSnapshots operation,
4768// calling the "fn" function with the response data for each page. To stop
4769// iterating, return false from the fn function.
4770//
4771// See DescribeSnapshots method for more information on how to use this operation.
4772//
4773// Note: This operation can generate multiple requests to a service.
4774//
4775//    // Example iterating over at most 3 pages of a DescribeSnapshots operation.
4776//    pageNum := 0
4777//    err := client.DescribeSnapshotsPages(params,
4778//        func(page *elasticache.DescribeSnapshotsOutput, lastPage bool) bool {
4779//            pageNum++
4780//            fmt.Println(page)
4781//            return pageNum <= 3
4782//        })
4783//
4784func (c *ElastiCache) DescribeSnapshotsPages(input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool) error {
4785	return c.DescribeSnapshotsPagesWithContext(aws.BackgroundContext(), input, fn)
4786}
4787
4788// DescribeSnapshotsPagesWithContext same as DescribeSnapshotsPages except
4789// it takes a Context and allows setting request options on the pages.
4790//
4791// The context must be non-nil and will be used for request cancellation. If
4792// the context is nil a panic will occur. In the future the SDK may create
4793// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4794// for more information on using Contexts.
4795func (c *ElastiCache) DescribeSnapshotsPagesWithContext(ctx aws.Context, input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool, opts ...request.Option) error {
4796	p := request.Pagination{
4797		NewRequest: func() (*request.Request, error) {
4798			var inCpy *DescribeSnapshotsInput
4799			if input != nil {
4800				tmp := *input
4801				inCpy = &tmp
4802			}
4803			req, _ := c.DescribeSnapshotsRequest(inCpy)
4804			req.SetContext(ctx)
4805			req.ApplyOptions(opts...)
4806			return req, nil
4807		},
4808	}
4809
4810	for p.Next() {
4811		if !fn(p.Page().(*DescribeSnapshotsOutput), !p.HasNextPage()) {
4812			break
4813		}
4814	}
4815
4816	return p.Err()
4817}
4818
4819const opDescribeUpdateActions = "DescribeUpdateActions"
4820
4821// DescribeUpdateActionsRequest generates a "aws/request.Request" representing the
4822// client's request for the DescribeUpdateActions operation. The "output" return
4823// value will be populated with the request's response once the request completes
4824// successfully.
4825//
4826// Use "Send" method on the returned Request to send the API call to the service.
4827// the "output" return value is not valid until after Send returns without error.
4828//
4829// See DescribeUpdateActions for more information on using the DescribeUpdateActions
4830// API call, and error handling.
4831//
4832// This method is useful when you want to inject custom logic or configuration
4833// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4834//
4835//
4836//    // Example sending a request using the DescribeUpdateActionsRequest method.
4837//    req, resp := client.DescribeUpdateActionsRequest(params)
4838//
4839//    err := req.Send()
4840//    if err == nil { // resp is now filled
4841//        fmt.Println(resp)
4842//    }
4843//
4844// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUpdateActions
4845func (c *ElastiCache) DescribeUpdateActionsRequest(input *DescribeUpdateActionsInput) (req *request.Request, output *DescribeUpdateActionsOutput) {
4846	op := &request.Operation{
4847		Name:       opDescribeUpdateActions,
4848		HTTPMethod: "POST",
4849		HTTPPath:   "/",
4850		Paginator: &request.Paginator{
4851			InputTokens:     []string{"Marker"},
4852			OutputTokens:    []string{"Marker"},
4853			LimitToken:      "MaxRecords",
4854			TruncationToken: "",
4855		},
4856	}
4857
4858	if input == nil {
4859		input = &DescribeUpdateActionsInput{}
4860	}
4861
4862	output = &DescribeUpdateActionsOutput{}
4863	req = c.newRequest(op, input, output)
4864	return
4865}
4866
4867// DescribeUpdateActions API operation for Amazon ElastiCache.
4868//
4869// Returns details of the update actions
4870//
4871// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4872// with awserr.Error's Code and Message methods to get detailed information about
4873// the error.
4874//
4875// See the AWS API reference guide for Amazon ElastiCache's
4876// API operation DescribeUpdateActions for usage and error information.
4877//
4878// Returned Error Codes:
4879//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4880//   The value for a parameter is invalid.
4881//
4882//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4883//   Two or more incompatible parameters were specified.
4884//
4885// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUpdateActions
4886func (c *ElastiCache) DescribeUpdateActions(input *DescribeUpdateActionsInput) (*DescribeUpdateActionsOutput, error) {
4887	req, out := c.DescribeUpdateActionsRequest(input)
4888	return out, req.Send()
4889}
4890
4891// DescribeUpdateActionsWithContext is the same as DescribeUpdateActions with the addition of
4892// the ability to pass a context and additional request options.
4893//
4894// See DescribeUpdateActions for details on how to use this API operation.
4895//
4896// The context must be non-nil and will be used for request cancellation. If
4897// the context is nil a panic will occur. In the future the SDK may create
4898// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4899// for more information on using Contexts.
4900func (c *ElastiCache) DescribeUpdateActionsWithContext(ctx aws.Context, input *DescribeUpdateActionsInput, opts ...request.Option) (*DescribeUpdateActionsOutput, error) {
4901	req, out := c.DescribeUpdateActionsRequest(input)
4902	req.SetContext(ctx)
4903	req.ApplyOptions(opts...)
4904	return out, req.Send()
4905}
4906
4907// DescribeUpdateActionsPages iterates over the pages of a DescribeUpdateActions operation,
4908// calling the "fn" function with the response data for each page. To stop
4909// iterating, return false from the fn function.
4910//
4911// See DescribeUpdateActions method for more information on how to use this operation.
4912//
4913// Note: This operation can generate multiple requests to a service.
4914//
4915//    // Example iterating over at most 3 pages of a DescribeUpdateActions operation.
4916//    pageNum := 0
4917//    err := client.DescribeUpdateActionsPages(params,
4918//        func(page *elasticache.DescribeUpdateActionsOutput, lastPage bool) bool {
4919//            pageNum++
4920//            fmt.Println(page)
4921//            return pageNum <= 3
4922//        })
4923//
4924func (c *ElastiCache) DescribeUpdateActionsPages(input *DescribeUpdateActionsInput, fn func(*DescribeUpdateActionsOutput, bool) bool) error {
4925	return c.DescribeUpdateActionsPagesWithContext(aws.BackgroundContext(), input, fn)
4926}
4927
4928// DescribeUpdateActionsPagesWithContext same as DescribeUpdateActionsPages except
4929// it takes a Context and allows setting request options on the pages.
4930//
4931// The context must be non-nil and will be used for request cancellation. If
4932// the context is nil a panic will occur. In the future the SDK may create
4933// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4934// for more information on using Contexts.
4935func (c *ElastiCache) DescribeUpdateActionsPagesWithContext(ctx aws.Context, input *DescribeUpdateActionsInput, fn func(*DescribeUpdateActionsOutput, bool) bool, opts ...request.Option) error {
4936	p := request.Pagination{
4937		NewRequest: func() (*request.Request, error) {
4938			var inCpy *DescribeUpdateActionsInput
4939			if input != nil {
4940				tmp := *input
4941				inCpy = &tmp
4942			}
4943			req, _ := c.DescribeUpdateActionsRequest(inCpy)
4944			req.SetContext(ctx)
4945			req.ApplyOptions(opts...)
4946			return req, nil
4947		},
4948	}
4949
4950	for p.Next() {
4951		if !fn(p.Page().(*DescribeUpdateActionsOutput), !p.HasNextPage()) {
4952			break
4953		}
4954	}
4955
4956	return p.Err()
4957}
4958
4959const opDescribeUserGroups = "DescribeUserGroups"
4960
4961// DescribeUserGroupsRequest generates a "aws/request.Request" representing the
4962// client's request for the DescribeUserGroups operation. The "output" return
4963// value will be populated with the request's response once the request completes
4964// successfully.
4965//
4966// Use "Send" method on the returned Request to send the API call to the service.
4967// the "output" return value is not valid until after Send returns without error.
4968//
4969// See DescribeUserGroups for more information on using the DescribeUserGroups
4970// API call, and error handling.
4971//
4972// This method is useful when you want to inject custom logic or configuration
4973// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4974//
4975//
4976//    // Example sending a request using the DescribeUserGroupsRequest method.
4977//    req, resp := client.DescribeUserGroupsRequest(params)
4978//
4979//    err := req.Send()
4980//    if err == nil { // resp is now filled
4981//        fmt.Println(resp)
4982//    }
4983//
4984// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUserGroups
4985func (c *ElastiCache) DescribeUserGroupsRequest(input *DescribeUserGroupsInput) (req *request.Request, output *DescribeUserGroupsOutput) {
4986	op := &request.Operation{
4987		Name:       opDescribeUserGroups,
4988		HTTPMethod: "POST",
4989		HTTPPath:   "/",
4990		Paginator: &request.Paginator{
4991			InputTokens:     []string{"Marker"},
4992			OutputTokens:    []string{"Marker"},
4993			LimitToken:      "MaxRecords",
4994			TruncationToken: "",
4995		},
4996	}
4997
4998	if input == nil {
4999		input = &DescribeUserGroupsInput{}
5000	}
5001
5002	output = &DescribeUserGroupsOutput{}
5003	req = c.newRequest(op, input, output)
5004	return
5005}
5006
5007// DescribeUserGroups API operation for Amazon ElastiCache.
5008//
5009// Returns a list of user groups.
5010//
5011// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5012// with awserr.Error's Code and Message methods to get detailed information about
5013// the error.
5014//
5015// See the AWS API reference guide for Amazon ElastiCache's
5016// API operation DescribeUserGroups for usage and error information.
5017//
5018// Returned Error Codes:
5019//   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
5020//   The user group was not found or does not exist
5021//
5022//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5023//   Two or more incompatible parameters were specified.
5024//
5025// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUserGroups
5026func (c *ElastiCache) DescribeUserGroups(input *DescribeUserGroupsInput) (*DescribeUserGroupsOutput, error) {
5027	req, out := c.DescribeUserGroupsRequest(input)
5028	return out, req.Send()
5029}
5030
5031// DescribeUserGroupsWithContext is the same as DescribeUserGroups with the addition of
5032// the ability to pass a context and additional request options.
5033//
5034// See DescribeUserGroups for details on how to use this API operation.
5035//
5036// The context must be non-nil and will be used for request cancellation. If
5037// the context is nil a panic will occur. In the future the SDK may create
5038// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5039// for more information on using Contexts.
5040func (c *ElastiCache) DescribeUserGroupsWithContext(ctx aws.Context, input *DescribeUserGroupsInput, opts ...request.Option) (*DescribeUserGroupsOutput, error) {
5041	req, out := c.DescribeUserGroupsRequest(input)
5042	req.SetContext(ctx)
5043	req.ApplyOptions(opts...)
5044	return out, req.Send()
5045}
5046
5047// DescribeUserGroupsPages iterates over the pages of a DescribeUserGroups operation,
5048// calling the "fn" function with the response data for each page. To stop
5049// iterating, return false from the fn function.
5050//
5051// See DescribeUserGroups method for more information on how to use this operation.
5052//
5053// Note: This operation can generate multiple requests to a service.
5054//
5055//    // Example iterating over at most 3 pages of a DescribeUserGroups operation.
5056//    pageNum := 0
5057//    err := client.DescribeUserGroupsPages(params,
5058//        func(page *elasticache.DescribeUserGroupsOutput, lastPage bool) bool {
5059//            pageNum++
5060//            fmt.Println(page)
5061//            return pageNum <= 3
5062//        })
5063//
5064func (c *ElastiCache) DescribeUserGroupsPages(input *DescribeUserGroupsInput, fn func(*DescribeUserGroupsOutput, bool) bool) error {
5065	return c.DescribeUserGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
5066}
5067
5068// DescribeUserGroupsPagesWithContext same as DescribeUserGroupsPages except
5069// it takes a Context and allows setting request options on the pages.
5070//
5071// The context must be non-nil and will be used for request cancellation. If
5072// the context is nil a panic will occur. In the future the SDK may create
5073// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5074// for more information on using Contexts.
5075func (c *ElastiCache) DescribeUserGroupsPagesWithContext(ctx aws.Context, input *DescribeUserGroupsInput, fn func(*DescribeUserGroupsOutput, bool) bool, opts ...request.Option) error {
5076	p := request.Pagination{
5077		NewRequest: func() (*request.Request, error) {
5078			var inCpy *DescribeUserGroupsInput
5079			if input != nil {
5080				tmp := *input
5081				inCpy = &tmp
5082			}
5083			req, _ := c.DescribeUserGroupsRequest(inCpy)
5084			req.SetContext(ctx)
5085			req.ApplyOptions(opts...)
5086			return req, nil
5087		},
5088	}
5089
5090	for p.Next() {
5091		if !fn(p.Page().(*DescribeUserGroupsOutput), !p.HasNextPage()) {
5092			break
5093		}
5094	}
5095
5096	return p.Err()
5097}
5098
5099const opDescribeUsers = "DescribeUsers"
5100
5101// DescribeUsersRequest generates a "aws/request.Request" representing the
5102// client's request for the DescribeUsers operation. The "output" return
5103// value will be populated with the request's response once the request completes
5104// successfully.
5105//
5106// Use "Send" method on the returned Request to send the API call to the service.
5107// the "output" return value is not valid until after Send returns without error.
5108//
5109// See DescribeUsers for more information on using the DescribeUsers
5110// API call, and error handling.
5111//
5112// This method is useful when you want to inject custom logic or configuration
5113// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5114//
5115//
5116//    // Example sending a request using the DescribeUsersRequest method.
5117//    req, resp := client.DescribeUsersRequest(params)
5118//
5119//    err := req.Send()
5120//    if err == nil { // resp is now filled
5121//        fmt.Println(resp)
5122//    }
5123//
5124// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUsers
5125func (c *ElastiCache) DescribeUsersRequest(input *DescribeUsersInput) (req *request.Request, output *DescribeUsersOutput) {
5126	op := &request.Operation{
5127		Name:       opDescribeUsers,
5128		HTTPMethod: "POST",
5129		HTTPPath:   "/",
5130		Paginator: &request.Paginator{
5131			InputTokens:     []string{"Marker"},
5132			OutputTokens:    []string{"Marker"},
5133			LimitToken:      "MaxRecords",
5134			TruncationToken: "",
5135		},
5136	}
5137
5138	if input == nil {
5139		input = &DescribeUsersInput{}
5140	}
5141
5142	output = &DescribeUsersOutput{}
5143	req = c.newRequest(op, input, output)
5144	return
5145}
5146
5147// DescribeUsers API operation for Amazon ElastiCache.
5148//
5149// Returns a list of users.
5150//
5151// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5152// with awserr.Error's Code and Message methods to get detailed information about
5153// the error.
5154//
5155// See the AWS API reference guide for Amazon ElastiCache's
5156// API operation DescribeUsers for usage and error information.
5157//
5158// Returned Error Codes:
5159//   * ErrCodeUserNotFoundFault "UserNotFound"
5160//   The user does not exist or could not be found.
5161//
5162//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5163//   Two or more incompatible parameters were specified.
5164//
5165// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUsers
5166func (c *ElastiCache) DescribeUsers(input *DescribeUsersInput) (*DescribeUsersOutput, error) {
5167	req, out := c.DescribeUsersRequest(input)
5168	return out, req.Send()
5169}
5170
5171// DescribeUsersWithContext is the same as DescribeUsers with the addition of
5172// the ability to pass a context and additional request options.
5173//
5174// See DescribeUsers for details on how to use this API operation.
5175//
5176// The context must be non-nil and will be used for request cancellation. If
5177// the context is nil a panic will occur. In the future the SDK may create
5178// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5179// for more information on using Contexts.
5180func (c *ElastiCache) DescribeUsersWithContext(ctx aws.Context, input *DescribeUsersInput, opts ...request.Option) (*DescribeUsersOutput, error) {
5181	req, out := c.DescribeUsersRequest(input)
5182	req.SetContext(ctx)
5183	req.ApplyOptions(opts...)
5184	return out, req.Send()
5185}
5186
5187// DescribeUsersPages iterates over the pages of a DescribeUsers operation,
5188// calling the "fn" function with the response data for each page. To stop
5189// iterating, return false from the fn function.
5190//
5191// See DescribeUsers method for more information on how to use this operation.
5192//
5193// Note: This operation can generate multiple requests to a service.
5194//
5195//    // Example iterating over at most 3 pages of a DescribeUsers operation.
5196//    pageNum := 0
5197//    err := client.DescribeUsersPages(params,
5198//        func(page *elasticache.DescribeUsersOutput, lastPage bool) bool {
5199//            pageNum++
5200//            fmt.Println(page)
5201//            return pageNum <= 3
5202//        })
5203//
5204func (c *ElastiCache) DescribeUsersPages(input *DescribeUsersInput, fn func(*DescribeUsersOutput, bool) bool) error {
5205	return c.DescribeUsersPagesWithContext(aws.BackgroundContext(), input, fn)
5206}
5207
5208// DescribeUsersPagesWithContext same as DescribeUsersPages except
5209// it takes a Context and allows setting request options on the pages.
5210//
5211// The context must be non-nil and will be used for request cancellation. If
5212// the context is nil a panic will occur. In the future the SDK may create
5213// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5214// for more information on using Contexts.
5215func (c *ElastiCache) DescribeUsersPagesWithContext(ctx aws.Context, input *DescribeUsersInput, fn func(*DescribeUsersOutput, bool) bool, opts ...request.Option) error {
5216	p := request.Pagination{
5217		NewRequest: func() (*request.Request, error) {
5218			var inCpy *DescribeUsersInput
5219			if input != nil {
5220				tmp := *input
5221				inCpy = &tmp
5222			}
5223			req, _ := c.DescribeUsersRequest(inCpy)
5224			req.SetContext(ctx)
5225			req.ApplyOptions(opts...)
5226			return req, nil
5227		},
5228	}
5229
5230	for p.Next() {
5231		if !fn(p.Page().(*DescribeUsersOutput), !p.HasNextPage()) {
5232			break
5233		}
5234	}
5235
5236	return p.Err()
5237}
5238
5239const opDisassociateGlobalReplicationGroup = "DisassociateGlobalReplicationGroup"
5240
5241// DisassociateGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
5242// client's request for the DisassociateGlobalReplicationGroup operation. The "output" return
5243// value will be populated with the request's response once the request completes
5244// successfully.
5245//
5246// Use "Send" method on the returned Request to send the API call to the service.
5247// the "output" return value is not valid until after Send returns without error.
5248//
5249// See DisassociateGlobalReplicationGroup for more information on using the DisassociateGlobalReplicationGroup
5250// API call, and error handling.
5251//
5252// This method is useful when you want to inject custom logic or configuration
5253// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5254//
5255//
5256//    // Example sending a request using the DisassociateGlobalReplicationGroupRequest method.
5257//    req, resp := client.DisassociateGlobalReplicationGroupRequest(params)
5258//
5259//    err := req.Send()
5260//    if err == nil { // resp is now filled
5261//        fmt.Println(resp)
5262//    }
5263//
5264// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DisassociateGlobalReplicationGroup
5265func (c *ElastiCache) DisassociateGlobalReplicationGroupRequest(input *DisassociateGlobalReplicationGroupInput) (req *request.Request, output *DisassociateGlobalReplicationGroupOutput) {
5266	op := &request.Operation{
5267		Name:       opDisassociateGlobalReplicationGroup,
5268		HTTPMethod: "POST",
5269		HTTPPath:   "/",
5270	}
5271
5272	if input == nil {
5273		input = &DisassociateGlobalReplicationGroupInput{}
5274	}
5275
5276	output = &DisassociateGlobalReplicationGroupOutput{}
5277	req = c.newRequest(op, input, output)
5278	return
5279}
5280
5281// DisassociateGlobalReplicationGroup API operation for Amazon ElastiCache.
5282//
5283// Remove a secondary cluster from the Global datastore using the Global datastore
5284// name. The secondary cluster will no longer receive updates from the primary
5285// cluster, but will remain as a standalone cluster in that Amazon region.
5286//
5287// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5288// with awserr.Error's Code and Message methods to get detailed information about
5289// the error.
5290//
5291// See the AWS API reference guide for Amazon ElastiCache's
5292// API operation DisassociateGlobalReplicationGroup for usage and error information.
5293//
5294// Returned Error Codes:
5295//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
5296//   The Global datastore does not exist
5297//
5298//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
5299//   The Global datastore is not available or in primary-only state.
5300//
5301//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5302//   The value for a parameter is invalid.
5303//
5304//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5305//   Two or more incompatible parameters were specified.
5306//
5307// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DisassociateGlobalReplicationGroup
5308func (c *ElastiCache) DisassociateGlobalReplicationGroup(input *DisassociateGlobalReplicationGroupInput) (*DisassociateGlobalReplicationGroupOutput, error) {
5309	req, out := c.DisassociateGlobalReplicationGroupRequest(input)
5310	return out, req.Send()
5311}
5312
5313// DisassociateGlobalReplicationGroupWithContext is the same as DisassociateGlobalReplicationGroup with the addition of
5314// the ability to pass a context and additional request options.
5315//
5316// See DisassociateGlobalReplicationGroup for details on how to use this API operation.
5317//
5318// The context must be non-nil and will be used for request cancellation. If
5319// the context is nil a panic will occur. In the future the SDK may create
5320// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5321// for more information on using Contexts.
5322func (c *ElastiCache) DisassociateGlobalReplicationGroupWithContext(ctx aws.Context, input *DisassociateGlobalReplicationGroupInput, opts ...request.Option) (*DisassociateGlobalReplicationGroupOutput, error) {
5323	req, out := c.DisassociateGlobalReplicationGroupRequest(input)
5324	req.SetContext(ctx)
5325	req.ApplyOptions(opts...)
5326	return out, req.Send()
5327}
5328
5329const opFailoverGlobalReplicationGroup = "FailoverGlobalReplicationGroup"
5330
5331// FailoverGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
5332// client's request for the FailoverGlobalReplicationGroup operation. The "output" return
5333// value will be populated with the request's response once the request completes
5334// successfully.
5335//
5336// Use "Send" method on the returned Request to send the API call to the service.
5337// the "output" return value is not valid until after Send returns without error.
5338//
5339// See FailoverGlobalReplicationGroup for more information on using the FailoverGlobalReplicationGroup
5340// API call, and error handling.
5341//
5342// This method is useful when you want to inject custom logic or configuration
5343// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5344//
5345//
5346//    // Example sending a request using the FailoverGlobalReplicationGroupRequest method.
5347//    req, resp := client.FailoverGlobalReplicationGroupRequest(params)
5348//
5349//    err := req.Send()
5350//    if err == nil { // resp is now filled
5351//        fmt.Println(resp)
5352//    }
5353//
5354// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/FailoverGlobalReplicationGroup
5355func (c *ElastiCache) FailoverGlobalReplicationGroupRequest(input *FailoverGlobalReplicationGroupInput) (req *request.Request, output *FailoverGlobalReplicationGroupOutput) {
5356	op := &request.Operation{
5357		Name:       opFailoverGlobalReplicationGroup,
5358		HTTPMethod: "POST",
5359		HTTPPath:   "/",
5360	}
5361
5362	if input == nil {
5363		input = &FailoverGlobalReplicationGroupInput{}
5364	}
5365
5366	output = &FailoverGlobalReplicationGroupOutput{}
5367	req = c.newRequest(op, input, output)
5368	return
5369}
5370
5371// FailoverGlobalReplicationGroup API operation for Amazon ElastiCache.
5372//
5373// Used to failover the primary region to a selected secondary region. The selected
5374// secondary region will become primary, and all other clusters will become
5375// secondary.
5376//
5377// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5378// with awserr.Error's Code and Message methods to get detailed information about
5379// the error.
5380//
5381// See the AWS API reference guide for Amazon ElastiCache's
5382// API operation FailoverGlobalReplicationGroup for usage and error information.
5383//
5384// Returned Error Codes:
5385//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
5386//   The Global datastore does not exist
5387//
5388//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
5389//   The Global datastore is not available or in primary-only state.
5390//
5391//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5392//   The value for a parameter is invalid.
5393//
5394//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5395//   Two or more incompatible parameters were specified.
5396//
5397// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/FailoverGlobalReplicationGroup
5398func (c *ElastiCache) FailoverGlobalReplicationGroup(input *FailoverGlobalReplicationGroupInput) (*FailoverGlobalReplicationGroupOutput, error) {
5399	req, out := c.FailoverGlobalReplicationGroupRequest(input)
5400	return out, req.Send()
5401}
5402
5403// FailoverGlobalReplicationGroupWithContext is the same as FailoverGlobalReplicationGroup with the addition of
5404// the ability to pass a context and additional request options.
5405//
5406// See FailoverGlobalReplicationGroup for details on how to use this API operation.
5407//
5408// The context must be non-nil and will be used for request cancellation. If
5409// the context is nil a panic will occur. In the future the SDK may create
5410// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5411// for more information on using Contexts.
5412func (c *ElastiCache) FailoverGlobalReplicationGroupWithContext(ctx aws.Context, input *FailoverGlobalReplicationGroupInput, opts ...request.Option) (*FailoverGlobalReplicationGroupOutput, error) {
5413	req, out := c.FailoverGlobalReplicationGroupRequest(input)
5414	req.SetContext(ctx)
5415	req.ApplyOptions(opts...)
5416	return out, req.Send()
5417}
5418
5419const opIncreaseNodeGroupsInGlobalReplicationGroup = "IncreaseNodeGroupsInGlobalReplicationGroup"
5420
5421// IncreaseNodeGroupsInGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
5422// client's request for the IncreaseNodeGroupsInGlobalReplicationGroup operation. The "output" return
5423// value will be populated with the request's response once the request completes
5424// successfully.
5425//
5426// Use "Send" method on the returned Request to send the API call to the service.
5427// the "output" return value is not valid until after Send returns without error.
5428//
5429// See IncreaseNodeGroupsInGlobalReplicationGroup for more information on using the IncreaseNodeGroupsInGlobalReplicationGroup
5430// API call, and error handling.
5431//
5432// This method is useful when you want to inject custom logic or configuration
5433// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5434//
5435//
5436//    // Example sending a request using the IncreaseNodeGroupsInGlobalReplicationGroupRequest method.
5437//    req, resp := client.IncreaseNodeGroupsInGlobalReplicationGroupRequest(params)
5438//
5439//    err := req.Send()
5440//    if err == nil { // resp is now filled
5441//        fmt.Println(resp)
5442//    }
5443//
5444// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseNodeGroupsInGlobalReplicationGroup
5445func (c *ElastiCache) IncreaseNodeGroupsInGlobalReplicationGroupRequest(input *IncreaseNodeGroupsInGlobalReplicationGroupInput) (req *request.Request, output *IncreaseNodeGroupsInGlobalReplicationGroupOutput) {
5446	op := &request.Operation{
5447		Name:       opIncreaseNodeGroupsInGlobalReplicationGroup,
5448		HTTPMethod: "POST",
5449		HTTPPath:   "/",
5450	}
5451
5452	if input == nil {
5453		input = &IncreaseNodeGroupsInGlobalReplicationGroupInput{}
5454	}
5455
5456	output = &IncreaseNodeGroupsInGlobalReplicationGroupOutput{}
5457	req = c.newRequest(op, input, output)
5458	return
5459}
5460
5461// IncreaseNodeGroupsInGlobalReplicationGroup API operation for Amazon ElastiCache.
5462//
5463// Increase the number of node groups in the Global datastore
5464//
5465// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5466// with awserr.Error's Code and Message methods to get detailed information about
5467// the error.
5468//
5469// See the AWS API reference guide for Amazon ElastiCache's
5470// API operation IncreaseNodeGroupsInGlobalReplicationGroup for usage and error information.
5471//
5472// Returned Error Codes:
5473//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
5474//   The Global datastore does not exist
5475//
5476//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
5477//   The Global datastore is not available or in primary-only state.
5478//
5479//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5480//   The value for a parameter is invalid.
5481//
5482// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseNodeGroupsInGlobalReplicationGroup
5483func (c *ElastiCache) IncreaseNodeGroupsInGlobalReplicationGroup(input *IncreaseNodeGroupsInGlobalReplicationGroupInput) (*IncreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
5484	req, out := c.IncreaseNodeGroupsInGlobalReplicationGroupRequest(input)
5485	return out, req.Send()
5486}
5487
5488// IncreaseNodeGroupsInGlobalReplicationGroupWithContext is the same as IncreaseNodeGroupsInGlobalReplicationGroup with the addition of
5489// the ability to pass a context and additional request options.
5490//
5491// See IncreaseNodeGroupsInGlobalReplicationGroup for details on how to use this API operation.
5492//
5493// The context must be non-nil and will be used for request cancellation. If
5494// the context is nil a panic will occur. In the future the SDK may create
5495// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5496// for more information on using Contexts.
5497func (c *ElastiCache) IncreaseNodeGroupsInGlobalReplicationGroupWithContext(ctx aws.Context, input *IncreaseNodeGroupsInGlobalReplicationGroupInput, opts ...request.Option) (*IncreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
5498	req, out := c.IncreaseNodeGroupsInGlobalReplicationGroupRequest(input)
5499	req.SetContext(ctx)
5500	req.ApplyOptions(opts...)
5501	return out, req.Send()
5502}
5503
5504const opIncreaseReplicaCount = "IncreaseReplicaCount"
5505
5506// IncreaseReplicaCountRequest generates a "aws/request.Request" representing the
5507// client's request for the IncreaseReplicaCount operation. The "output" return
5508// value will be populated with the request's response once the request completes
5509// successfully.
5510//
5511// Use "Send" method on the returned Request to send the API call to the service.
5512// the "output" return value is not valid until after Send returns without error.
5513//
5514// See IncreaseReplicaCount for more information on using the IncreaseReplicaCount
5515// API call, and error handling.
5516//
5517// This method is useful when you want to inject custom logic or configuration
5518// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5519//
5520//
5521//    // Example sending a request using the IncreaseReplicaCountRequest method.
5522//    req, resp := client.IncreaseReplicaCountRequest(params)
5523//
5524//    err := req.Send()
5525//    if err == nil { // resp is now filled
5526//        fmt.Println(resp)
5527//    }
5528//
5529// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseReplicaCount
5530func (c *ElastiCache) IncreaseReplicaCountRequest(input *IncreaseReplicaCountInput) (req *request.Request, output *IncreaseReplicaCountOutput) {
5531	op := &request.Operation{
5532		Name:       opIncreaseReplicaCount,
5533		HTTPMethod: "POST",
5534		HTTPPath:   "/",
5535	}
5536
5537	if input == nil {
5538		input = &IncreaseReplicaCountInput{}
5539	}
5540
5541	output = &IncreaseReplicaCountOutput{}
5542	req = c.newRequest(op, input, output)
5543	return
5544}
5545
5546// IncreaseReplicaCount API operation for Amazon ElastiCache.
5547//
5548// Dynamically increases the number of replicas in a Redis (cluster mode disabled)
5549// replication group or the number of replica nodes in one or more node groups
5550// (shards) of a Redis (cluster mode enabled) replication group. This operation
5551// is performed with no cluster down time.
5552//
5553// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5554// with awserr.Error's Code and Message methods to get detailed information about
5555// the error.
5556//
5557// See the AWS API reference guide for Amazon ElastiCache's
5558// API operation IncreaseReplicaCount for usage and error information.
5559//
5560// Returned Error Codes:
5561//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
5562//   The specified replication group does not exist.
5563//
5564//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
5565//   The requested replication group is not in the available state.
5566//
5567//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5568//   The requested cluster is not in the available state.
5569//
5570//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
5571//   The VPC network is in an invalid state.
5572//
5573//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
5574//   The requested cache node type is not available in the specified Availability
5575//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
5576//   in the ElastiCache User Guide.
5577//
5578//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
5579//   The request cannot be processed because it would exceed the allowed number
5580//   of clusters per customer.
5581//
5582//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
5583//   The request cannot be processed because it would exceed the maximum allowed
5584//   number of node groups (shards) in a single replication group. The default
5585//   maximum is 90
5586//
5587//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
5588//   The request cannot be processed because it would exceed the allowed number
5589//   of cache nodes per customer.
5590//
5591//   * ErrCodeNoOperationFault "NoOperationFault"
5592//   The operation was not performed because no changes were required.
5593//
5594//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
5595//   The KMS key supplied is not valid.
5596//
5597//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5598//   The value for a parameter is invalid.
5599//
5600//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5601//   Two or more incompatible parameters were specified.
5602//
5603// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseReplicaCount
5604func (c *ElastiCache) IncreaseReplicaCount(input *IncreaseReplicaCountInput) (*IncreaseReplicaCountOutput, error) {
5605	req, out := c.IncreaseReplicaCountRequest(input)
5606	return out, req.Send()
5607}
5608
5609// IncreaseReplicaCountWithContext is the same as IncreaseReplicaCount with the addition of
5610// the ability to pass a context and additional request options.
5611//
5612// See IncreaseReplicaCount for details on how to use this API operation.
5613//
5614// The context must be non-nil and will be used for request cancellation. If
5615// the context is nil a panic will occur. In the future the SDK may create
5616// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5617// for more information on using Contexts.
5618func (c *ElastiCache) IncreaseReplicaCountWithContext(ctx aws.Context, input *IncreaseReplicaCountInput, opts ...request.Option) (*IncreaseReplicaCountOutput, error) {
5619	req, out := c.IncreaseReplicaCountRequest(input)
5620	req.SetContext(ctx)
5621	req.ApplyOptions(opts...)
5622	return out, req.Send()
5623}
5624
5625const opListAllowedNodeTypeModifications = "ListAllowedNodeTypeModifications"
5626
5627// ListAllowedNodeTypeModificationsRequest generates a "aws/request.Request" representing the
5628// client's request for the ListAllowedNodeTypeModifications operation. The "output" return
5629// value will be populated with the request's response once the request completes
5630// successfully.
5631//
5632// Use "Send" method on the returned Request to send the API call to the service.
5633// the "output" return value is not valid until after Send returns without error.
5634//
5635// See ListAllowedNodeTypeModifications for more information on using the ListAllowedNodeTypeModifications
5636// API call, and error handling.
5637//
5638// This method is useful when you want to inject custom logic or configuration
5639// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5640//
5641//
5642//    // Example sending a request using the ListAllowedNodeTypeModificationsRequest method.
5643//    req, resp := client.ListAllowedNodeTypeModificationsRequest(params)
5644//
5645//    err := req.Send()
5646//    if err == nil { // resp is now filled
5647//        fmt.Println(resp)
5648//    }
5649//
5650// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListAllowedNodeTypeModifications
5651func (c *ElastiCache) ListAllowedNodeTypeModificationsRequest(input *ListAllowedNodeTypeModificationsInput) (req *request.Request, output *ListAllowedNodeTypeModificationsOutput) {
5652	op := &request.Operation{
5653		Name:       opListAllowedNodeTypeModifications,
5654		HTTPMethod: "POST",
5655		HTTPPath:   "/",
5656	}
5657
5658	if input == nil {
5659		input = &ListAllowedNodeTypeModificationsInput{}
5660	}
5661
5662	output = &ListAllowedNodeTypeModificationsOutput{}
5663	req = c.newRequest(op, input, output)
5664	return
5665}
5666
5667// ListAllowedNodeTypeModifications API operation for Amazon ElastiCache.
5668//
5669// Lists all available node types that you can scale your Redis cluster's or
5670// replication group's current node type.
5671//
5672// When you use the ModifyCacheCluster or ModifyReplicationGroup operations
5673// to scale your cluster or replication group, the value of the CacheNodeType
5674// parameter must be one of the node types returned by this operation.
5675//
5676// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5677// with awserr.Error's Code and Message methods to get detailed information about
5678// the error.
5679//
5680// See the AWS API reference guide for Amazon ElastiCache's
5681// API operation ListAllowedNodeTypeModifications for usage and error information.
5682//
5683// Returned Error Codes:
5684//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5685//   The requested cluster ID does not refer to an existing cluster.
5686//
5687//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
5688//   The specified replication group does not exist.
5689//
5690//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5691//   Two or more incompatible parameters were specified.
5692//
5693//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5694//   The value for a parameter is invalid.
5695//
5696// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListAllowedNodeTypeModifications
5697func (c *ElastiCache) ListAllowedNodeTypeModifications(input *ListAllowedNodeTypeModificationsInput) (*ListAllowedNodeTypeModificationsOutput, error) {
5698	req, out := c.ListAllowedNodeTypeModificationsRequest(input)
5699	return out, req.Send()
5700}
5701
5702// ListAllowedNodeTypeModificationsWithContext is the same as ListAllowedNodeTypeModifications with the addition of
5703// the ability to pass a context and additional request options.
5704//
5705// See ListAllowedNodeTypeModifications for details on how to use this API operation.
5706//
5707// The context must be non-nil and will be used for request cancellation. If
5708// the context is nil a panic will occur. In the future the SDK may create
5709// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5710// for more information on using Contexts.
5711func (c *ElastiCache) ListAllowedNodeTypeModificationsWithContext(ctx aws.Context, input *ListAllowedNodeTypeModificationsInput, opts ...request.Option) (*ListAllowedNodeTypeModificationsOutput, error) {
5712	req, out := c.ListAllowedNodeTypeModificationsRequest(input)
5713	req.SetContext(ctx)
5714	req.ApplyOptions(opts...)
5715	return out, req.Send()
5716}
5717
5718const opListTagsForResource = "ListTagsForResource"
5719
5720// ListTagsForResourceRequest generates a "aws/request.Request" representing the
5721// client's request for the ListTagsForResource operation. The "output" return
5722// value will be populated with the request's response once the request completes
5723// successfully.
5724//
5725// Use "Send" method on the returned Request to send the API call to the service.
5726// the "output" return value is not valid until after Send returns without error.
5727//
5728// See ListTagsForResource for more information on using the ListTagsForResource
5729// API call, and error handling.
5730//
5731// This method is useful when you want to inject custom logic or configuration
5732// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5733//
5734//
5735//    // Example sending a request using the ListTagsForResourceRequest method.
5736//    req, resp := client.ListTagsForResourceRequest(params)
5737//
5738//    err := req.Send()
5739//    if err == nil { // resp is now filled
5740//        fmt.Println(resp)
5741//    }
5742//
5743// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListTagsForResource
5744func (c *ElastiCache) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *TagListMessage) {
5745	op := &request.Operation{
5746		Name:       opListTagsForResource,
5747		HTTPMethod: "POST",
5748		HTTPPath:   "/",
5749	}
5750
5751	if input == nil {
5752		input = &ListTagsForResourceInput{}
5753	}
5754
5755	output = &TagListMessage{}
5756	req = c.newRequest(op, input, output)
5757	return
5758}
5759
5760// ListTagsForResource API operation for Amazon ElastiCache.
5761//
5762// Lists all tags currently on a named resource.
5763//
5764// A tag is a key-value pair where the key and value are case-sensitive. You
5765// can use tags to categorize and track all your ElastiCache resources, with
5766// the exception of global replication group. When you add or remove tags on
5767// replication groups, those actions will be replicated to all nodes in the
5768// replication group. For more information, see Resource-level permissions (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/IAM.ResourceLevelPermissions.html).
5769//
5770// If the cluster is not in the available state, ListTagsForResource returns
5771// an error.
5772//
5773// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5774// with awserr.Error's Code and Message methods to get detailed information about
5775// the error.
5776//
5777// See the AWS API reference guide for Amazon ElastiCache's
5778// API operation ListTagsForResource for usage and error information.
5779//
5780// Returned Error Codes:
5781//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5782//   The requested cluster ID does not refer to an existing cluster.
5783//
5784//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
5785//   The requested cache parameter group name does not refer to an existing cache
5786//   parameter group.
5787//
5788//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
5789//   The requested cache security group name does not refer to an existing cache
5790//   security group.
5791//
5792//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
5793//   The requested cache subnet group name does not refer to an existing cache
5794//   subnet group.
5795//
5796//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
5797//   The requested replication group is not in the available state.
5798//
5799//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
5800//   The specified replication group does not exist.
5801//
5802//   * ErrCodeReservedCacheNodeNotFoundFault "ReservedCacheNodeNotFound"
5803//   The requested reserved cache node was not found.
5804//
5805//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
5806//   The requested snapshot name does not refer to an existing snapshot.
5807//
5808//   * ErrCodeUserNotFoundFault "UserNotFound"
5809//   The user does not exist or could not be found.
5810//
5811//   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
5812//   The user group was not found or does not exist
5813//
5814//   * ErrCodeInvalidARNFault "InvalidARN"
5815//   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
5816//
5817// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListTagsForResource
5818func (c *ElastiCache) ListTagsForResource(input *ListTagsForResourceInput) (*TagListMessage, error) {
5819	req, out := c.ListTagsForResourceRequest(input)
5820	return out, req.Send()
5821}
5822
5823// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
5824// the ability to pass a context and additional request options.
5825//
5826// See ListTagsForResource for details on how to use this API operation.
5827//
5828// The context must be non-nil and will be used for request cancellation. If
5829// the context is nil a panic will occur. In the future the SDK may create
5830// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5831// for more information on using Contexts.
5832func (c *ElastiCache) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*TagListMessage, error) {
5833	req, out := c.ListTagsForResourceRequest(input)
5834	req.SetContext(ctx)
5835	req.ApplyOptions(opts...)
5836	return out, req.Send()
5837}
5838
5839const opModifyCacheCluster = "ModifyCacheCluster"
5840
5841// ModifyCacheClusterRequest generates a "aws/request.Request" representing the
5842// client's request for the ModifyCacheCluster operation. The "output" return
5843// value will be populated with the request's response once the request completes
5844// successfully.
5845//
5846// Use "Send" method on the returned Request to send the API call to the service.
5847// the "output" return value is not valid until after Send returns without error.
5848//
5849// See ModifyCacheCluster for more information on using the ModifyCacheCluster
5850// API call, and error handling.
5851//
5852// This method is useful when you want to inject custom logic or configuration
5853// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5854//
5855//
5856//    // Example sending a request using the ModifyCacheClusterRequest method.
5857//    req, resp := client.ModifyCacheClusterRequest(params)
5858//
5859//    err := req.Send()
5860//    if err == nil { // resp is now filled
5861//        fmt.Println(resp)
5862//    }
5863//
5864// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster
5865func (c *ElastiCache) ModifyCacheClusterRequest(input *ModifyCacheClusterInput) (req *request.Request, output *ModifyCacheClusterOutput) {
5866	op := &request.Operation{
5867		Name:       opModifyCacheCluster,
5868		HTTPMethod: "POST",
5869		HTTPPath:   "/",
5870	}
5871
5872	if input == nil {
5873		input = &ModifyCacheClusterInput{}
5874	}
5875
5876	output = &ModifyCacheClusterOutput{}
5877	req = c.newRequest(op, input, output)
5878	return
5879}
5880
5881// ModifyCacheCluster API operation for Amazon ElastiCache.
5882//
5883// Modifies the settings for a cluster. You can use this operation to change
5884// one or more cluster configuration parameters by specifying the parameters
5885// and the new values.
5886//
5887// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5888// with awserr.Error's Code and Message methods to get detailed information about
5889// the error.
5890//
5891// See the AWS API reference guide for Amazon ElastiCache's
5892// API operation ModifyCacheCluster for usage and error information.
5893//
5894// Returned Error Codes:
5895//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5896//   The requested cluster is not in the available state.
5897//
5898//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
5899//   The current state of the cache security group does not allow deletion.
5900//
5901//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
5902//   The requested cache node type is not available in the specified Availability
5903//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
5904//   in the ElastiCache User Guide.
5905//
5906//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5907//   The requested cluster ID does not refer to an existing cluster.
5908//
5909//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
5910//   The request cannot be processed because it would exceed the allowed number
5911//   of cache nodes in a single cluster.
5912//
5913//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
5914//   The request cannot be processed because it would exceed the allowed number
5915//   of cache nodes per customer.
5916//
5917//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
5918//   The requested cache security group name does not refer to an existing cache
5919//   security group.
5920//
5921//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
5922//   The requested cache parameter group name does not refer to an existing cache
5923//   parameter group.
5924//
5925//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
5926//   The VPC network is in an invalid state.
5927//
5928//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5929//   The value for a parameter is invalid.
5930//
5931//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5932//   Two or more incompatible parameters were specified.
5933//
5934// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster
5935func (c *ElastiCache) ModifyCacheCluster(input *ModifyCacheClusterInput) (*ModifyCacheClusterOutput, error) {
5936	req, out := c.ModifyCacheClusterRequest(input)
5937	return out, req.Send()
5938}
5939
5940// ModifyCacheClusterWithContext is the same as ModifyCacheCluster with the addition of
5941// the ability to pass a context and additional request options.
5942//
5943// See ModifyCacheCluster for details on how to use this API operation.
5944//
5945// The context must be non-nil and will be used for request cancellation. If
5946// the context is nil a panic will occur. In the future the SDK may create
5947// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5948// for more information on using Contexts.
5949func (c *ElastiCache) ModifyCacheClusterWithContext(ctx aws.Context, input *ModifyCacheClusterInput, opts ...request.Option) (*ModifyCacheClusterOutput, error) {
5950	req, out := c.ModifyCacheClusterRequest(input)
5951	req.SetContext(ctx)
5952	req.ApplyOptions(opts...)
5953	return out, req.Send()
5954}
5955
5956const opModifyCacheParameterGroup = "ModifyCacheParameterGroup"
5957
5958// ModifyCacheParameterGroupRequest generates a "aws/request.Request" representing the
5959// client's request for the ModifyCacheParameterGroup operation. The "output" return
5960// value will be populated with the request's response once the request completes
5961// successfully.
5962//
5963// Use "Send" method on the returned Request to send the API call to the service.
5964// the "output" return value is not valid until after Send returns without error.
5965//
5966// See ModifyCacheParameterGroup for more information on using the ModifyCacheParameterGroup
5967// API call, and error handling.
5968//
5969// This method is useful when you want to inject custom logic or configuration
5970// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5971//
5972//
5973//    // Example sending a request using the ModifyCacheParameterGroupRequest method.
5974//    req, resp := client.ModifyCacheParameterGroupRequest(params)
5975//
5976//    err := req.Send()
5977//    if err == nil { // resp is now filled
5978//        fmt.Println(resp)
5979//    }
5980//
5981// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheParameterGroup
5982func (c *ElastiCache) ModifyCacheParameterGroupRequest(input *ModifyCacheParameterGroupInput) (req *request.Request, output *CacheParameterGroupNameMessage) {
5983	op := &request.Operation{
5984		Name:       opModifyCacheParameterGroup,
5985		HTTPMethod: "POST",
5986		HTTPPath:   "/",
5987	}
5988
5989	if input == nil {
5990		input = &ModifyCacheParameterGroupInput{}
5991	}
5992
5993	output = &CacheParameterGroupNameMessage{}
5994	req = c.newRequest(op, input, output)
5995	return
5996}
5997
5998// ModifyCacheParameterGroup API operation for Amazon ElastiCache.
5999//
6000// Modifies the parameters of a cache parameter group. You can modify up to
6001// 20 parameters in a single request by submitting a list parameter name and
6002// value pairs.
6003//
6004// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6005// with awserr.Error's Code and Message methods to get detailed information about
6006// the error.
6007//
6008// See the AWS API reference guide for Amazon ElastiCache's
6009// API operation ModifyCacheParameterGroup for usage and error information.
6010//
6011// Returned Error Codes:
6012//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
6013//   The requested cache parameter group name does not refer to an existing cache
6014//   parameter group.
6015//
6016//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
6017//   The current state of the cache parameter group does not allow the requested
6018//   operation to occur.
6019//
6020//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6021//   The value for a parameter is invalid.
6022//
6023//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
6024//   Two or more incompatible parameters were specified.
6025//
6026//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
6027//   The Global datastore is not available or in primary-only state.
6028//
6029// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheParameterGroup
6030func (c *ElastiCache) ModifyCacheParameterGroup(input *ModifyCacheParameterGroupInput) (*CacheParameterGroupNameMessage, error) {
6031	req, out := c.ModifyCacheParameterGroupRequest(input)
6032	return out, req.Send()
6033}
6034
6035// ModifyCacheParameterGroupWithContext is the same as ModifyCacheParameterGroup with the addition of
6036// the ability to pass a context and additional request options.
6037//
6038// See ModifyCacheParameterGroup for details on how to use this API operation.
6039//
6040// The context must be non-nil and will be used for request cancellation. If
6041// the context is nil a panic will occur. In the future the SDK may create
6042// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6043// for more information on using Contexts.
6044func (c *ElastiCache) ModifyCacheParameterGroupWithContext(ctx aws.Context, input *ModifyCacheParameterGroupInput, opts ...request.Option) (*CacheParameterGroupNameMessage, error) {
6045	req, out := c.ModifyCacheParameterGroupRequest(input)
6046	req.SetContext(ctx)
6047	req.ApplyOptions(opts...)
6048	return out, req.Send()
6049}
6050
6051const opModifyCacheSubnetGroup = "ModifyCacheSubnetGroup"
6052
6053// ModifyCacheSubnetGroupRequest generates a "aws/request.Request" representing the
6054// client's request for the ModifyCacheSubnetGroup operation. The "output" return
6055// value will be populated with the request's response once the request completes
6056// successfully.
6057//
6058// Use "Send" method on the returned Request to send the API call to the service.
6059// the "output" return value is not valid until after Send returns without error.
6060//
6061// See ModifyCacheSubnetGroup for more information on using the ModifyCacheSubnetGroup
6062// API call, and error handling.
6063//
6064// This method is useful when you want to inject custom logic or configuration
6065// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6066//
6067//
6068//    // Example sending a request using the ModifyCacheSubnetGroupRequest method.
6069//    req, resp := client.ModifyCacheSubnetGroupRequest(params)
6070//
6071//    err := req.Send()
6072//    if err == nil { // resp is now filled
6073//        fmt.Println(resp)
6074//    }
6075//
6076// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheSubnetGroup
6077func (c *ElastiCache) ModifyCacheSubnetGroupRequest(input *ModifyCacheSubnetGroupInput) (req *request.Request, output *ModifyCacheSubnetGroupOutput) {
6078	op := &request.Operation{
6079		Name:       opModifyCacheSubnetGroup,
6080		HTTPMethod: "POST",
6081		HTTPPath:   "/",
6082	}
6083
6084	if input == nil {
6085		input = &ModifyCacheSubnetGroupInput{}
6086	}
6087
6088	output = &ModifyCacheSubnetGroupOutput{}
6089	req = c.newRequest(op, input, output)
6090	return
6091}
6092
6093// ModifyCacheSubnetGroup API operation for Amazon ElastiCache.
6094//
6095// Modifies an existing cache subnet group.
6096//
6097// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6098// with awserr.Error's Code and Message methods to get detailed information about
6099// the error.
6100//
6101// See the AWS API reference guide for Amazon ElastiCache's
6102// API operation ModifyCacheSubnetGroup for usage and error information.
6103//
6104// Returned Error Codes:
6105//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
6106//   The requested cache subnet group name does not refer to an existing cache
6107//   subnet group.
6108//
6109//   * ErrCodeCacheSubnetQuotaExceededFault "CacheSubnetQuotaExceededFault"
6110//   The request cannot be processed because it would exceed the allowed number
6111//   of subnets in a cache subnet group.
6112//
6113//   * ErrCodeSubnetInUse "SubnetInUse"
6114//   The requested subnet is being used by another cache subnet group.
6115//
6116//   * ErrCodeInvalidSubnet "InvalidSubnet"
6117//   An invalid subnet identifier was specified.
6118//
6119//   * ErrCodeSubnetNotAllowedFault "SubnetNotAllowedFault"
6120//   At least one subnet ID does not match the other subnet IDs. This mismatch
6121//   typically occurs when a user sets one subnet ID to a regional Availability
6122//   Zone and a different one to an outpost. Or when a user sets the subnet ID
6123//   to an Outpost when not subscribed on this service.
6124//
6125// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheSubnetGroup
6126func (c *ElastiCache) ModifyCacheSubnetGroup(input *ModifyCacheSubnetGroupInput) (*ModifyCacheSubnetGroupOutput, error) {
6127	req, out := c.ModifyCacheSubnetGroupRequest(input)
6128	return out, req.Send()
6129}
6130
6131// ModifyCacheSubnetGroupWithContext is the same as ModifyCacheSubnetGroup with the addition of
6132// the ability to pass a context and additional request options.
6133//
6134// See ModifyCacheSubnetGroup for details on how to use this API operation.
6135//
6136// The context must be non-nil and will be used for request cancellation. If
6137// the context is nil a panic will occur. In the future the SDK may create
6138// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6139// for more information on using Contexts.
6140func (c *ElastiCache) ModifyCacheSubnetGroupWithContext(ctx aws.Context, input *ModifyCacheSubnetGroupInput, opts ...request.Option) (*ModifyCacheSubnetGroupOutput, error) {
6141	req, out := c.ModifyCacheSubnetGroupRequest(input)
6142	req.SetContext(ctx)
6143	req.ApplyOptions(opts...)
6144	return out, req.Send()
6145}
6146
6147const opModifyGlobalReplicationGroup = "ModifyGlobalReplicationGroup"
6148
6149// ModifyGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
6150// client's request for the ModifyGlobalReplicationGroup operation. The "output" return
6151// value will be populated with the request's response once the request completes
6152// successfully.
6153//
6154// Use "Send" method on the returned Request to send the API call to the service.
6155// the "output" return value is not valid until after Send returns without error.
6156//
6157// See ModifyGlobalReplicationGroup for more information on using the ModifyGlobalReplicationGroup
6158// API call, and error handling.
6159//
6160// This method is useful when you want to inject custom logic or configuration
6161// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6162//
6163//
6164//    // Example sending a request using the ModifyGlobalReplicationGroupRequest method.
6165//    req, resp := client.ModifyGlobalReplicationGroupRequest(params)
6166//
6167//    err := req.Send()
6168//    if err == nil { // resp is now filled
6169//        fmt.Println(resp)
6170//    }
6171//
6172// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyGlobalReplicationGroup
6173func (c *ElastiCache) ModifyGlobalReplicationGroupRequest(input *ModifyGlobalReplicationGroupInput) (req *request.Request, output *ModifyGlobalReplicationGroupOutput) {
6174	op := &request.Operation{
6175		Name:       opModifyGlobalReplicationGroup,
6176		HTTPMethod: "POST",
6177		HTTPPath:   "/",
6178	}
6179
6180	if input == nil {
6181		input = &ModifyGlobalReplicationGroupInput{}
6182	}
6183
6184	output = &ModifyGlobalReplicationGroupOutput{}
6185	req = c.newRequest(op, input, output)
6186	return
6187}
6188
6189// ModifyGlobalReplicationGroup API operation for Amazon ElastiCache.
6190//
6191// Modifies the settings for a Global datastore.
6192//
6193// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6194// with awserr.Error's Code and Message methods to get detailed information about
6195// the error.
6196//
6197// See the AWS API reference guide for Amazon ElastiCache's
6198// API operation ModifyGlobalReplicationGroup for usage and error information.
6199//
6200// Returned Error Codes:
6201//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
6202//   The Global datastore does not exist
6203//
6204//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
6205//   The Global datastore is not available or in primary-only state.
6206//
6207//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6208//   The value for a parameter is invalid.
6209//
6210// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyGlobalReplicationGroup
6211func (c *ElastiCache) ModifyGlobalReplicationGroup(input *ModifyGlobalReplicationGroupInput) (*ModifyGlobalReplicationGroupOutput, error) {
6212	req, out := c.ModifyGlobalReplicationGroupRequest(input)
6213	return out, req.Send()
6214}
6215
6216// ModifyGlobalReplicationGroupWithContext is the same as ModifyGlobalReplicationGroup with the addition of
6217// the ability to pass a context and additional request options.
6218//
6219// See ModifyGlobalReplicationGroup for details on how to use this API operation.
6220//
6221// The context must be non-nil and will be used for request cancellation. If
6222// the context is nil a panic will occur. In the future the SDK may create
6223// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6224// for more information on using Contexts.
6225func (c *ElastiCache) ModifyGlobalReplicationGroupWithContext(ctx aws.Context, input *ModifyGlobalReplicationGroupInput, opts ...request.Option) (*ModifyGlobalReplicationGroupOutput, error) {
6226	req, out := c.ModifyGlobalReplicationGroupRequest(input)
6227	req.SetContext(ctx)
6228	req.ApplyOptions(opts...)
6229	return out, req.Send()
6230}
6231
6232const opModifyReplicationGroup = "ModifyReplicationGroup"
6233
6234// ModifyReplicationGroupRequest generates a "aws/request.Request" representing the
6235// client's request for the ModifyReplicationGroup operation. The "output" return
6236// value will be populated with the request's response once the request completes
6237// successfully.
6238//
6239// Use "Send" method on the returned Request to send the API call to the service.
6240// the "output" return value is not valid until after Send returns without error.
6241//
6242// See ModifyReplicationGroup for more information on using the ModifyReplicationGroup
6243// API call, and error handling.
6244//
6245// This method is useful when you want to inject custom logic or configuration
6246// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6247//
6248//
6249//    // Example sending a request using the ModifyReplicationGroupRequest method.
6250//    req, resp := client.ModifyReplicationGroupRequest(params)
6251//
6252//    err := req.Send()
6253//    if err == nil { // resp is now filled
6254//        fmt.Println(resp)
6255//    }
6256//
6257// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroup
6258func (c *ElastiCache) ModifyReplicationGroupRequest(input *ModifyReplicationGroupInput) (req *request.Request, output *ModifyReplicationGroupOutput) {
6259	op := &request.Operation{
6260		Name:       opModifyReplicationGroup,
6261		HTTPMethod: "POST",
6262		HTTPPath:   "/",
6263	}
6264
6265	if input == nil {
6266		input = &ModifyReplicationGroupInput{}
6267	}
6268
6269	output = &ModifyReplicationGroupOutput{}
6270	req = c.newRequest(op, input, output)
6271	return
6272}
6273
6274// ModifyReplicationGroup API operation for Amazon ElastiCache.
6275//
6276// Modifies the settings for a replication group.
6277//
6278//    * Scaling for Amazon ElastiCache for Redis (cluster mode enabled) (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/scaling-redis-cluster-mode-enabled.html)
6279//    in the ElastiCache User Guide
6280//
6281//    * ModifyReplicationGroupShardConfiguration (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html)
6282//    in the ElastiCache API Reference
6283//
6284// This operation is valid for Redis only.
6285//
6286// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6287// with awserr.Error's Code and Message methods to get detailed information about
6288// the error.
6289//
6290// See the AWS API reference guide for Amazon ElastiCache's
6291// API operation ModifyReplicationGroup for usage and error information.
6292//
6293// Returned Error Codes:
6294//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
6295//   The specified replication group does not exist.
6296//
6297//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
6298//   The requested replication group is not in the available state.
6299//
6300//   * ErrCodeInvalidUserGroupStateFault "InvalidUserGroupState"
6301//   The user group is not in an active state.
6302//
6303//   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
6304//   The user group was not found or does not exist
6305//
6306//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
6307//   The requested cluster is not in the available state.
6308//
6309//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
6310//   The current state of the cache security group does not allow deletion.
6311//
6312//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
6313//   The requested cache node type is not available in the specified Availability
6314//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
6315//   in the ElastiCache User Guide.
6316//
6317//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
6318//   The requested cluster ID does not refer to an existing cluster.
6319//
6320//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
6321//   The request cannot be processed because it would exceed the allowed number
6322//   of cache nodes in a single cluster.
6323//
6324//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
6325//   The request cannot be processed because it would exceed the allowed number
6326//   of cache nodes per customer.
6327//
6328//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
6329//   The requested cache security group name does not refer to an existing cache
6330//   security group.
6331//
6332//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
6333//   The requested cache parameter group name does not refer to an existing cache
6334//   parameter group.
6335//
6336//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
6337//   The VPC network is in an invalid state.
6338//
6339//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
6340//   The KMS key supplied is not valid.
6341//
6342//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6343//   The value for a parameter is invalid.
6344//
6345//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
6346//   Two or more incompatible parameters were specified.
6347//
6348// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroup
6349func (c *ElastiCache) ModifyReplicationGroup(input *ModifyReplicationGroupInput) (*ModifyReplicationGroupOutput, error) {
6350	req, out := c.ModifyReplicationGroupRequest(input)
6351	return out, req.Send()
6352}
6353
6354// ModifyReplicationGroupWithContext is the same as ModifyReplicationGroup with the addition of
6355// the ability to pass a context and additional request options.
6356//
6357// See ModifyReplicationGroup for details on how to use this API operation.
6358//
6359// The context must be non-nil and will be used for request cancellation. If
6360// the context is nil a panic will occur. In the future the SDK may create
6361// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6362// for more information on using Contexts.
6363func (c *ElastiCache) ModifyReplicationGroupWithContext(ctx aws.Context, input *ModifyReplicationGroupInput, opts ...request.Option) (*ModifyReplicationGroupOutput, error) {
6364	req, out := c.ModifyReplicationGroupRequest(input)
6365	req.SetContext(ctx)
6366	req.ApplyOptions(opts...)
6367	return out, req.Send()
6368}
6369
6370const opModifyReplicationGroupShardConfiguration = "ModifyReplicationGroupShardConfiguration"
6371
6372// ModifyReplicationGroupShardConfigurationRequest generates a "aws/request.Request" representing the
6373// client's request for the ModifyReplicationGroupShardConfiguration operation. The "output" return
6374// value will be populated with the request's response once the request completes
6375// successfully.
6376//
6377// Use "Send" method on the returned Request to send the API call to the service.
6378// the "output" return value is not valid until after Send returns without error.
6379//
6380// See ModifyReplicationGroupShardConfiguration for more information on using the ModifyReplicationGroupShardConfiguration
6381// API call, and error handling.
6382//
6383// This method is useful when you want to inject custom logic or configuration
6384// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6385//
6386//
6387//    // Example sending a request using the ModifyReplicationGroupShardConfigurationRequest method.
6388//    req, resp := client.ModifyReplicationGroupShardConfigurationRequest(params)
6389//
6390//    err := req.Send()
6391//    if err == nil { // resp is now filled
6392//        fmt.Println(resp)
6393//    }
6394//
6395// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroupShardConfiguration
6396func (c *ElastiCache) ModifyReplicationGroupShardConfigurationRequest(input *ModifyReplicationGroupShardConfigurationInput) (req *request.Request, output *ModifyReplicationGroupShardConfigurationOutput) {
6397	op := &request.Operation{
6398		Name:       opModifyReplicationGroupShardConfiguration,
6399		HTTPMethod: "POST",
6400		HTTPPath:   "/",
6401	}
6402
6403	if input == nil {
6404		input = &ModifyReplicationGroupShardConfigurationInput{}
6405	}
6406
6407	output = &ModifyReplicationGroupShardConfigurationOutput{}
6408	req = c.newRequest(op, input, output)
6409	return
6410}
6411
6412// ModifyReplicationGroupShardConfiguration API operation for Amazon ElastiCache.
6413//
6414// Modifies a replication group's shards (node groups) by allowing you to add
6415// shards, remove shards, or rebalance the keyspaces among existing shards.
6416//
6417// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6418// with awserr.Error's Code and Message methods to get detailed information about
6419// the error.
6420//
6421// See the AWS API reference guide for Amazon ElastiCache's
6422// API operation ModifyReplicationGroupShardConfiguration for usage and error information.
6423//
6424// Returned Error Codes:
6425//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
6426//   The specified replication group does not exist.
6427//
6428//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
6429//   The requested replication group is not in the available state.
6430//
6431//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
6432//   The requested cluster is not in the available state.
6433//
6434//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
6435//   The VPC network is in an invalid state.
6436//
6437//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
6438//   The requested cache node type is not available in the specified Availability
6439//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
6440//   in the ElastiCache User Guide.
6441//
6442//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
6443//   The request cannot be processed because it would exceed the maximum allowed
6444//   number of node groups (shards) in a single replication group. The default
6445//   maximum is 90
6446//
6447//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
6448//   The request cannot be processed because it would exceed the allowed number
6449//   of cache nodes per customer.
6450//
6451//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
6452//   The KMS key supplied is not valid.
6453//
6454//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6455//   The value for a parameter is invalid.
6456//
6457//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
6458//   Two or more incompatible parameters were specified.
6459//
6460// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroupShardConfiguration
6461func (c *ElastiCache) ModifyReplicationGroupShardConfiguration(input *ModifyReplicationGroupShardConfigurationInput) (*ModifyReplicationGroupShardConfigurationOutput, error) {
6462	req, out := c.ModifyReplicationGroupShardConfigurationRequest(input)
6463	return out, req.Send()
6464}
6465
6466// ModifyReplicationGroupShardConfigurationWithContext is the same as ModifyReplicationGroupShardConfiguration with the addition of
6467// the ability to pass a context and additional request options.
6468//
6469// See ModifyReplicationGroupShardConfiguration for details on how to use this API operation.
6470//
6471// The context must be non-nil and will be used for request cancellation. If
6472// the context is nil a panic will occur. In the future the SDK may create
6473// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6474// for more information on using Contexts.
6475func (c *ElastiCache) ModifyReplicationGroupShardConfigurationWithContext(ctx aws.Context, input *ModifyReplicationGroupShardConfigurationInput, opts ...request.Option) (*ModifyReplicationGroupShardConfigurationOutput, error) {
6476	req, out := c.ModifyReplicationGroupShardConfigurationRequest(input)
6477	req.SetContext(ctx)
6478	req.ApplyOptions(opts...)
6479	return out, req.Send()
6480}
6481
6482const opModifyUser = "ModifyUser"
6483
6484// ModifyUserRequest generates a "aws/request.Request" representing the
6485// client's request for the ModifyUser operation. The "output" return
6486// value will be populated with the request's response once the request completes
6487// successfully.
6488//
6489// Use "Send" method on the returned Request to send the API call to the service.
6490// the "output" return value is not valid until after Send returns without error.
6491//
6492// See ModifyUser for more information on using the ModifyUser
6493// API call, and error handling.
6494//
6495// This method is useful when you want to inject custom logic or configuration
6496// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6497//
6498//
6499//    // Example sending a request using the ModifyUserRequest method.
6500//    req, resp := client.ModifyUserRequest(params)
6501//
6502//    err := req.Send()
6503//    if err == nil { // resp is now filled
6504//        fmt.Println(resp)
6505//    }
6506//
6507// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyUser
6508func (c *ElastiCache) ModifyUserRequest(input *ModifyUserInput) (req *request.Request, output *ModifyUserOutput) {
6509	op := &request.Operation{
6510		Name:       opModifyUser,
6511		HTTPMethod: "POST",
6512		HTTPPath:   "/",
6513	}
6514
6515	if input == nil {
6516		input = &ModifyUserInput{}
6517	}
6518
6519	output = &ModifyUserOutput{}
6520	req = c.newRequest(op, input, output)
6521	return
6522}
6523
6524// ModifyUser API operation for Amazon ElastiCache.
6525//
6526// Changes user password(s) and/or access string.
6527//
6528// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6529// with awserr.Error's Code and Message methods to get detailed information about
6530// the error.
6531//
6532// See the AWS API reference guide for Amazon ElastiCache's
6533// API operation ModifyUser for usage and error information.
6534//
6535// Returned Error Codes:
6536//   * ErrCodeUserNotFoundFault "UserNotFound"
6537//   The user does not exist or could not be found.
6538//
6539//   * ErrCodeInvalidUserStateFault "InvalidUserState"
6540//   The user is not in active state.
6541//
6542//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6543//   The value for a parameter is invalid.
6544//
6545//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
6546//   Two or more incompatible parameters were specified.
6547//
6548// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyUser
6549func (c *ElastiCache) ModifyUser(input *ModifyUserInput) (*ModifyUserOutput, error) {
6550	req, out := c.ModifyUserRequest(input)
6551	return out, req.Send()
6552}
6553
6554// ModifyUserWithContext is the same as ModifyUser with the addition of
6555// the ability to pass a context and additional request options.
6556//
6557// See ModifyUser for details on how to use this API operation.
6558//
6559// The context must be non-nil and will be used for request cancellation. If
6560// the context is nil a panic will occur. In the future the SDK may create
6561// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6562// for more information on using Contexts.
6563func (c *ElastiCache) ModifyUserWithContext(ctx aws.Context, input *ModifyUserInput, opts ...request.Option) (*ModifyUserOutput, error) {
6564	req, out := c.ModifyUserRequest(input)
6565	req.SetContext(ctx)
6566	req.ApplyOptions(opts...)
6567	return out, req.Send()
6568}
6569
6570const opModifyUserGroup = "ModifyUserGroup"
6571
6572// ModifyUserGroupRequest generates a "aws/request.Request" representing the
6573// client's request for the ModifyUserGroup operation. The "output" return
6574// value will be populated with the request's response once the request completes
6575// successfully.
6576//
6577// Use "Send" method on the returned Request to send the API call to the service.
6578// the "output" return value is not valid until after Send returns without error.
6579//
6580// See ModifyUserGroup for more information on using the ModifyUserGroup
6581// API call, and error handling.
6582//
6583// This method is useful when you want to inject custom logic or configuration
6584// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6585//
6586//
6587//    // Example sending a request using the ModifyUserGroupRequest method.
6588//    req, resp := client.ModifyUserGroupRequest(params)
6589//
6590//    err := req.Send()
6591//    if err == nil { // resp is now filled
6592//        fmt.Println(resp)
6593//    }
6594//
6595// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyUserGroup
6596func (c *ElastiCache) ModifyUserGroupRequest(input *ModifyUserGroupInput) (req *request.Request, output *ModifyUserGroupOutput) {
6597	op := &request.Operation{
6598		Name:       opModifyUserGroup,
6599		HTTPMethod: "POST",
6600		HTTPPath:   "/",
6601	}
6602
6603	if input == nil {
6604		input = &ModifyUserGroupInput{}
6605	}
6606
6607	output = &ModifyUserGroupOutput{}
6608	req = c.newRequest(op, input, output)
6609	return
6610}
6611
6612// ModifyUserGroup API operation for Amazon ElastiCache.
6613//
6614// Changes the list of users that belong to the user group.
6615//
6616// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6617// with awserr.Error's Code and Message methods to get detailed information about
6618// the error.
6619//
6620// See the AWS API reference guide for Amazon ElastiCache's
6621// API operation ModifyUserGroup for usage and error information.
6622//
6623// Returned Error Codes:
6624//   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
6625//   The user group was not found or does not exist
6626//
6627//   * ErrCodeUserNotFoundFault "UserNotFound"
6628//   The user does not exist or could not be found.
6629//
6630//   * ErrCodeDuplicateUserNameFault "DuplicateUserName"
6631//   A user with this username already exists.
6632//
6633//   * ErrCodeDefaultUserRequired "DefaultUserRequired"
6634//   You must add default user to a user group.
6635//
6636//   * ErrCodeInvalidUserGroupStateFault "InvalidUserGroupState"
6637//   The user group is not in an active state.
6638//
6639//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6640//   The value for a parameter is invalid.
6641//
6642//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
6643//   Two or more incompatible parameters were specified.
6644//
6645// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyUserGroup
6646func (c *ElastiCache) ModifyUserGroup(input *ModifyUserGroupInput) (*ModifyUserGroupOutput, error) {
6647	req, out := c.ModifyUserGroupRequest(input)
6648	return out, req.Send()
6649}
6650
6651// ModifyUserGroupWithContext is the same as ModifyUserGroup with the addition of
6652// the ability to pass a context and additional request options.
6653//
6654// See ModifyUserGroup for details on how to use this API operation.
6655//
6656// The context must be non-nil and will be used for request cancellation. If
6657// the context is nil a panic will occur. In the future the SDK may create
6658// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6659// for more information on using Contexts.
6660func (c *ElastiCache) ModifyUserGroupWithContext(ctx aws.Context, input *ModifyUserGroupInput, opts ...request.Option) (*ModifyUserGroupOutput, error) {
6661	req, out := c.ModifyUserGroupRequest(input)
6662	req.SetContext(ctx)
6663	req.ApplyOptions(opts...)
6664	return out, req.Send()
6665}
6666
6667const opPurchaseReservedCacheNodesOffering = "PurchaseReservedCacheNodesOffering"
6668
6669// PurchaseReservedCacheNodesOfferingRequest generates a "aws/request.Request" representing the
6670// client's request for the PurchaseReservedCacheNodesOffering operation. The "output" return
6671// value will be populated with the request's response once the request completes
6672// successfully.
6673//
6674// Use "Send" method on the returned Request to send the API call to the service.
6675// the "output" return value is not valid until after Send returns without error.
6676//
6677// See PurchaseReservedCacheNodesOffering for more information on using the PurchaseReservedCacheNodesOffering
6678// API call, and error handling.
6679//
6680// This method is useful when you want to inject custom logic or configuration
6681// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6682//
6683//
6684//    // Example sending a request using the PurchaseReservedCacheNodesOfferingRequest method.
6685//    req, resp := client.PurchaseReservedCacheNodesOfferingRequest(params)
6686//
6687//    err := req.Send()
6688//    if err == nil { // resp is now filled
6689//        fmt.Println(resp)
6690//    }
6691//
6692// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/PurchaseReservedCacheNodesOffering
6693func (c *ElastiCache) PurchaseReservedCacheNodesOfferingRequest(input *PurchaseReservedCacheNodesOfferingInput) (req *request.Request, output *PurchaseReservedCacheNodesOfferingOutput) {
6694	op := &request.Operation{
6695		Name:       opPurchaseReservedCacheNodesOffering,
6696		HTTPMethod: "POST",
6697		HTTPPath:   "/",
6698	}
6699
6700	if input == nil {
6701		input = &PurchaseReservedCacheNodesOfferingInput{}
6702	}
6703
6704	output = &PurchaseReservedCacheNodesOfferingOutput{}
6705	req = c.newRequest(op, input, output)
6706	return
6707}
6708
6709// PurchaseReservedCacheNodesOffering API operation for Amazon ElastiCache.
6710//
6711// Allows you to purchase a reserved cache node offering. Reserved nodes are
6712// not eligible for cancellation and are non-refundable. For more information,
6713// see Managing Costs with Reserved Nodes (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/reserved-nodes.html)
6714// for Redis or Managing Costs with Reserved Nodes (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/reserved-nodes.html)
6715// for Memcached.
6716//
6717// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6718// with awserr.Error's Code and Message methods to get detailed information about
6719// the error.
6720//
6721// See the AWS API reference guide for Amazon ElastiCache's
6722// API operation PurchaseReservedCacheNodesOffering for usage and error information.
6723//
6724// Returned Error Codes:
6725//   * ErrCodeReservedCacheNodesOfferingNotFoundFault "ReservedCacheNodesOfferingNotFound"
6726//   The requested cache node offering does not exist.
6727//
6728//   * ErrCodeReservedCacheNodeAlreadyExistsFault "ReservedCacheNodeAlreadyExists"
6729//   You already have a reservation with the given identifier.
6730//
6731//   * ErrCodeReservedCacheNodeQuotaExceededFault "ReservedCacheNodeQuotaExceeded"
6732//   The request cannot be processed because it would exceed the user's cache
6733//   node quota.
6734//
6735//   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
6736//   The request cannot be processed because it would cause the resource to have
6737//   more than the allowed number of tags. The maximum number of tags permitted
6738//   on a resource is 50.
6739//
6740//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6741//   The value for a parameter is invalid.
6742//
6743//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
6744//   Two or more incompatible parameters were specified.
6745//
6746// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/PurchaseReservedCacheNodesOffering
6747func (c *ElastiCache) PurchaseReservedCacheNodesOffering(input *PurchaseReservedCacheNodesOfferingInput) (*PurchaseReservedCacheNodesOfferingOutput, error) {
6748	req, out := c.PurchaseReservedCacheNodesOfferingRequest(input)
6749	return out, req.Send()
6750}
6751
6752// PurchaseReservedCacheNodesOfferingWithContext is the same as PurchaseReservedCacheNodesOffering with the addition of
6753// the ability to pass a context and additional request options.
6754//
6755// See PurchaseReservedCacheNodesOffering for details on how to use this API operation.
6756//
6757// The context must be non-nil and will be used for request cancellation. If
6758// the context is nil a panic will occur. In the future the SDK may create
6759// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6760// for more information on using Contexts.
6761func (c *ElastiCache) PurchaseReservedCacheNodesOfferingWithContext(ctx aws.Context, input *PurchaseReservedCacheNodesOfferingInput, opts ...request.Option) (*PurchaseReservedCacheNodesOfferingOutput, error) {
6762	req, out := c.PurchaseReservedCacheNodesOfferingRequest(input)
6763	req.SetContext(ctx)
6764	req.ApplyOptions(opts...)
6765	return out, req.Send()
6766}
6767
6768const opRebalanceSlotsInGlobalReplicationGroup = "RebalanceSlotsInGlobalReplicationGroup"
6769
6770// RebalanceSlotsInGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
6771// client's request for the RebalanceSlotsInGlobalReplicationGroup operation. The "output" return
6772// value will be populated with the request's response once the request completes
6773// successfully.
6774//
6775// Use "Send" method on the returned Request to send the API call to the service.
6776// the "output" return value is not valid until after Send returns without error.
6777//
6778// See RebalanceSlotsInGlobalReplicationGroup for more information on using the RebalanceSlotsInGlobalReplicationGroup
6779// API call, and error handling.
6780//
6781// This method is useful when you want to inject custom logic or configuration
6782// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6783//
6784//
6785//    // Example sending a request using the RebalanceSlotsInGlobalReplicationGroupRequest method.
6786//    req, resp := client.RebalanceSlotsInGlobalReplicationGroupRequest(params)
6787//
6788//    err := req.Send()
6789//    if err == nil { // resp is now filled
6790//        fmt.Println(resp)
6791//    }
6792//
6793// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebalanceSlotsInGlobalReplicationGroup
6794func (c *ElastiCache) RebalanceSlotsInGlobalReplicationGroupRequest(input *RebalanceSlotsInGlobalReplicationGroupInput) (req *request.Request, output *RebalanceSlotsInGlobalReplicationGroupOutput) {
6795	op := &request.Operation{
6796		Name:       opRebalanceSlotsInGlobalReplicationGroup,
6797		HTTPMethod: "POST",
6798		HTTPPath:   "/",
6799	}
6800
6801	if input == nil {
6802		input = &RebalanceSlotsInGlobalReplicationGroupInput{}
6803	}
6804
6805	output = &RebalanceSlotsInGlobalReplicationGroupOutput{}
6806	req = c.newRequest(op, input, output)
6807	return
6808}
6809
6810// RebalanceSlotsInGlobalReplicationGroup API operation for Amazon ElastiCache.
6811//
6812// Redistribute slots to ensure uniform distribution across existing shards
6813// in the cluster.
6814//
6815// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6816// with awserr.Error's Code and Message methods to get detailed information about
6817// the error.
6818//
6819// See the AWS API reference guide for Amazon ElastiCache's
6820// API operation RebalanceSlotsInGlobalReplicationGroup for usage and error information.
6821//
6822// Returned Error Codes:
6823//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
6824//   The Global datastore does not exist
6825//
6826//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
6827//   The Global datastore is not available or in primary-only state.
6828//
6829//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6830//   The value for a parameter is invalid.
6831//
6832// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebalanceSlotsInGlobalReplicationGroup
6833func (c *ElastiCache) RebalanceSlotsInGlobalReplicationGroup(input *RebalanceSlotsInGlobalReplicationGroupInput) (*RebalanceSlotsInGlobalReplicationGroupOutput, error) {
6834	req, out := c.RebalanceSlotsInGlobalReplicationGroupRequest(input)
6835	return out, req.Send()
6836}
6837
6838// RebalanceSlotsInGlobalReplicationGroupWithContext is the same as RebalanceSlotsInGlobalReplicationGroup with the addition of
6839// the ability to pass a context and additional request options.
6840//
6841// See RebalanceSlotsInGlobalReplicationGroup for details on how to use this API operation.
6842//
6843// The context must be non-nil and will be used for request cancellation. If
6844// the context is nil a panic will occur. In the future the SDK may create
6845// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6846// for more information on using Contexts.
6847func (c *ElastiCache) RebalanceSlotsInGlobalReplicationGroupWithContext(ctx aws.Context, input *RebalanceSlotsInGlobalReplicationGroupInput, opts ...request.Option) (*RebalanceSlotsInGlobalReplicationGroupOutput, error) {
6848	req, out := c.RebalanceSlotsInGlobalReplicationGroupRequest(input)
6849	req.SetContext(ctx)
6850	req.ApplyOptions(opts...)
6851	return out, req.Send()
6852}
6853
6854const opRebootCacheCluster = "RebootCacheCluster"
6855
6856// RebootCacheClusterRequest generates a "aws/request.Request" representing the
6857// client's request for the RebootCacheCluster operation. The "output" return
6858// value will be populated with the request's response once the request completes
6859// successfully.
6860//
6861// Use "Send" method on the returned Request to send the API call to the service.
6862// the "output" return value is not valid until after Send returns without error.
6863//
6864// See RebootCacheCluster for more information on using the RebootCacheCluster
6865// API call, and error handling.
6866//
6867// This method is useful when you want to inject custom logic or configuration
6868// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6869//
6870//
6871//    // Example sending a request using the RebootCacheClusterRequest method.
6872//    req, resp := client.RebootCacheClusterRequest(params)
6873//
6874//    err := req.Send()
6875//    if err == nil { // resp is now filled
6876//        fmt.Println(resp)
6877//    }
6878//
6879// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebootCacheCluster
6880func (c *ElastiCache) RebootCacheClusterRequest(input *RebootCacheClusterInput) (req *request.Request, output *RebootCacheClusterOutput) {
6881	op := &request.Operation{
6882		Name:       opRebootCacheCluster,
6883		HTTPMethod: "POST",
6884		HTTPPath:   "/",
6885	}
6886
6887	if input == nil {
6888		input = &RebootCacheClusterInput{}
6889	}
6890
6891	output = &RebootCacheClusterOutput{}
6892	req = c.newRequest(op, input, output)
6893	return
6894}
6895
6896// RebootCacheCluster API operation for Amazon ElastiCache.
6897//
6898// Reboots some, or all, of the cache nodes within a provisioned cluster. This
6899// operation applies any modified cache parameter groups to the cluster. The
6900// reboot operation takes place as soon as possible, and results in a momentary
6901// outage to the cluster. During the reboot, the cluster status is set to REBOOTING.
6902//
6903// The reboot causes the contents of the cache (for each cache node being rebooted)
6904// to be lost.
6905//
6906// When the reboot is complete, a cluster event is created.
6907//
6908// Rebooting a cluster is currently supported on Memcached and Redis (cluster
6909// mode disabled) clusters. Rebooting is not supported on Redis (cluster mode
6910// enabled) clusters.
6911//
6912// If you make changes to parameters that require a Redis (cluster mode enabled)
6913// cluster reboot for the changes to be applied, see Rebooting a Cluster (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html)
6914// for an alternate process.
6915//
6916// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6917// with awserr.Error's Code and Message methods to get detailed information about
6918// the error.
6919//
6920// See the AWS API reference guide for Amazon ElastiCache's
6921// API operation RebootCacheCluster for usage and error information.
6922//
6923// Returned Error Codes:
6924//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
6925//   The requested cluster is not in the available state.
6926//
6927//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
6928//   The requested cluster ID does not refer to an existing cluster.
6929//
6930// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebootCacheCluster
6931func (c *ElastiCache) RebootCacheCluster(input *RebootCacheClusterInput) (*RebootCacheClusterOutput, error) {
6932	req, out := c.RebootCacheClusterRequest(input)
6933	return out, req.Send()
6934}
6935
6936// RebootCacheClusterWithContext is the same as RebootCacheCluster with the addition of
6937// the ability to pass a context and additional request options.
6938//
6939// See RebootCacheCluster for details on how to use this API operation.
6940//
6941// The context must be non-nil and will be used for request cancellation. If
6942// the context is nil a panic will occur. In the future the SDK may create
6943// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6944// for more information on using Contexts.
6945func (c *ElastiCache) RebootCacheClusterWithContext(ctx aws.Context, input *RebootCacheClusterInput, opts ...request.Option) (*RebootCacheClusterOutput, error) {
6946	req, out := c.RebootCacheClusterRequest(input)
6947	req.SetContext(ctx)
6948	req.ApplyOptions(opts...)
6949	return out, req.Send()
6950}
6951
6952const opRemoveTagsFromResource = "RemoveTagsFromResource"
6953
6954// RemoveTagsFromResourceRequest generates a "aws/request.Request" representing the
6955// client's request for the RemoveTagsFromResource operation. The "output" return
6956// value will be populated with the request's response once the request completes
6957// successfully.
6958//
6959// Use "Send" method on the returned Request to send the API call to the service.
6960// the "output" return value is not valid until after Send returns without error.
6961//
6962// See RemoveTagsFromResource for more information on using the RemoveTagsFromResource
6963// API call, and error handling.
6964//
6965// This method is useful when you want to inject custom logic or configuration
6966// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6967//
6968//
6969//    // Example sending a request using the RemoveTagsFromResourceRequest method.
6970//    req, resp := client.RemoveTagsFromResourceRequest(params)
6971//
6972//    err := req.Send()
6973//    if err == nil { // resp is now filled
6974//        fmt.Println(resp)
6975//    }
6976//
6977// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RemoveTagsFromResource
6978func (c *ElastiCache) RemoveTagsFromResourceRequest(input *RemoveTagsFromResourceInput) (req *request.Request, output *TagListMessage) {
6979	op := &request.Operation{
6980		Name:       opRemoveTagsFromResource,
6981		HTTPMethod: "POST",
6982		HTTPPath:   "/",
6983	}
6984
6985	if input == nil {
6986		input = &RemoveTagsFromResourceInput{}
6987	}
6988
6989	output = &TagListMessage{}
6990	req = c.newRequest(op, input, output)
6991	return
6992}
6993
6994// RemoveTagsFromResource API operation for Amazon ElastiCache.
6995//
6996// Removes the tags identified by the TagKeys list from the named resource.
6997// A tag is a key-value pair where the key and value are case-sensitive. You
6998// can use tags to categorize and track all your ElastiCache resources, with
6999// the exception of global replication group. When you add or remove tags on
7000// replication groups, those actions will be replicated to all nodes in the
7001// replication group. For more information, see Resource-level permissions (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/IAM.ResourceLevelPermissions.html).
7002//
7003// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7004// with awserr.Error's Code and Message methods to get detailed information about
7005// the error.
7006//
7007// See the AWS API reference guide for Amazon ElastiCache's
7008// API operation RemoveTagsFromResource for usage and error information.
7009//
7010// Returned Error Codes:
7011//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
7012//   The requested cluster ID does not refer to an existing cluster.
7013//
7014//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
7015//   The requested cache parameter group name does not refer to an existing cache
7016//   parameter group.
7017//
7018//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
7019//   The requested cache security group name does not refer to an existing cache
7020//   security group.
7021//
7022//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
7023//   The requested cache subnet group name does not refer to an existing cache
7024//   subnet group.
7025//
7026//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
7027//   The requested replication group is not in the available state.
7028//
7029//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
7030//   The specified replication group does not exist.
7031//
7032//   * ErrCodeReservedCacheNodeNotFoundFault "ReservedCacheNodeNotFound"
7033//   The requested reserved cache node was not found.
7034//
7035//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
7036//   The requested snapshot name does not refer to an existing snapshot.
7037//
7038//   * ErrCodeUserNotFoundFault "UserNotFound"
7039//   The user does not exist or could not be found.
7040//
7041//   * ErrCodeUserGroupNotFoundFault "UserGroupNotFound"
7042//   The user group was not found or does not exist
7043//
7044//   * ErrCodeInvalidARNFault "InvalidARN"
7045//   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
7046//
7047//   * ErrCodeTagNotFoundFault "TagNotFound"
7048//   The requested tag was not found on this resource.
7049//
7050// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RemoveTagsFromResource
7051func (c *ElastiCache) RemoveTagsFromResource(input *RemoveTagsFromResourceInput) (*TagListMessage, error) {
7052	req, out := c.RemoveTagsFromResourceRequest(input)
7053	return out, req.Send()
7054}
7055
7056// RemoveTagsFromResourceWithContext is the same as RemoveTagsFromResource with the addition of
7057// the ability to pass a context and additional request options.
7058//
7059// See RemoveTagsFromResource for details on how to use this API operation.
7060//
7061// The context must be non-nil and will be used for request cancellation. If
7062// the context is nil a panic will occur. In the future the SDK may create
7063// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7064// for more information on using Contexts.
7065func (c *ElastiCache) RemoveTagsFromResourceWithContext(ctx aws.Context, input *RemoveTagsFromResourceInput, opts ...request.Option) (*TagListMessage, error) {
7066	req, out := c.RemoveTagsFromResourceRequest(input)
7067	req.SetContext(ctx)
7068	req.ApplyOptions(opts...)
7069	return out, req.Send()
7070}
7071
7072const opResetCacheParameterGroup = "ResetCacheParameterGroup"
7073
7074// ResetCacheParameterGroupRequest generates a "aws/request.Request" representing the
7075// client's request for the ResetCacheParameterGroup operation. The "output" return
7076// value will be populated with the request's response once the request completes
7077// successfully.
7078//
7079// Use "Send" method on the returned Request to send the API call to the service.
7080// the "output" return value is not valid until after Send returns without error.
7081//
7082// See ResetCacheParameterGroup for more information on using the ResetCacheParameterGroup
7083// API call, and error handling.
7084//
7085// This method is useful when you want to inject custom logic or configuration
7086// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7087//
7088//
7089//    // Example sending a request using the ResetCacheParameterGroupRequest method.
7090//    req, resp := client.ResetCacheParameterGroupRequest(params)
7091//
7092//    err := req.Send()
7093//    if err == nil { // resp is now filled
7094//        fmt.Println(resp)
7095//    }
7096//
7097// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ResetCacheParameterGroup
7098func (c *ElastiCache) ResetCacheParameterGroupRequest(input *ResetCacheParameterGroupInput) (req *request.Request, output *CacheParameterGroupNameMessage) {
7099	op := &request.Operation{
7100		Name:       opResetCacheParameterGroup,
7101		HTTPMethod: "POST",
7102		HTTPPath:   "/",
7103	}
7104
7105	if input == nil {
7106		input = &ResetCacheParameterGroupInput{}
7107	}
7108
7109	output = &CacheParameterGroupNameMessage{}
7110	req = c.newRequest(op, input, output)
7111	return
7112}
7113
7114// ResetCacheParameterGroup API operation for Amazon ElastiCache.
7115//
7116// Modifies the parameters of a cache parameter group to the engine or system
7117// default value. You can reset specific parameters by submitting a list of
7118// parameter names. To reset the entire cache parameter group, specify the ResetAllParameters
7119// and CacheParameterGroupName parameters.
7120//
7121// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7122// with awserr.Error's Code and Message methods to get detailed information about
7123// the error.
7124//
7125// See the AWS API reference guide for Amazon ElastiCache's
7126// API operation ResetCacheParameterGroup for usage and error information.
7127//
7128// Returned Error Codes:
7129//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
7130//   The current state of the cache parameter group does not allow the requested
7131//   operation to occur.
7132//
7133//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
7134//   The requested cache parameter group name does not refer to an existing cache
7135//   parameter group.
7136//
7137//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
7138//   The value for a parameter is invalid.
7139//
7140//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
7141//   Two or more incompatible parameters were specified.
7142//
7143//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
7144//   The Global datastore is not available or in primary-only state.
7145//
7146// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ResetCacheParameterGroup
7147func (c *ElastiCache) ResetCacheParameterGroup(input *ResetCacheParameterGroupInput) (*CacheParameterGroupNameMessage, error) {
7148	req, out := c.ResetCacheParameterGroupRequest(input)
7149	return out, req.Send()
7150}
7151
7152// ResetCacheParameterGroupWithContext is the same as ResetCacheParameterGroup with the addition of
7153// the ability to pass a context and additional request options.
7154//
7155// See ResetCacheParameterGroup for details on how to use this API operation.
7156//
7157// The context must be non-nil and will be used for request cancellation. If
7158// the context is nil a panic will occur. In the future the SDK may create
7159// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7160// for more information on using Contexts.
7161func (c *ElastiCache) ResetCacheParameterGroupWithContext(ctx aws.Context, input *ResetCacheParameterGroupInput, opts ...request.Option) (*CacheParameterGroupNameMessage, error) {
7162	req, out := c.ResetCacheParameterGroupRequest(input)
7163	req.SetContext(ctx)
7164	req.ApplyOptions(opts...)
7165	return out, req.Send()
7166}
7167
7168const opRevokeCacheSecurityGroupIngress = "RevokeCacheSecurityGroupIngress"
7169
7170// RevokeCacheSecurityGroupIngressRequest generates a "aws/request.Request" representing the
7171// client's request for the RevokeCacheSecurityGroupIngress operation. The "output" return
7172// value will be populated with the request's response once the request completes
7173// successfully.
7174//
7175// Use "Send" method on the returned Request to send the API call to the service.
7176// the "output" return value is not valid until after Send returns without error.
7177//
7178// See RevokeCacheSecurityGroupIngress for more information on using the RevokeCacheSecurityGroupIngress
7179// API call, and error handling.
7180//
7181// This method is useful when you want to inject custom logic or configuration
7182// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7183//
7184//
7185//    // Example sending a request using the RevokeCacheSecurityGroupIngressRequest method.
7186//    req, resp := client.RevokeCacheSecurityGroupIngressRequest(params)
7187//
7188//    err := req.Send()
7189//    if err == nil { // resp is now filled
7190//        fmt.Println(resp)
7191//    }
7192//
7193// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RevokeCacheSecurityGroupIngress
7194func (c *ElastiCache) RevokeCacheSecurityGroupIngressRequest(input *RevokeCacheSecurityGroupIngressInput) (req *request.Request, output *RevokeCacheSecurityGroupIngressOutput) {
7195	op := &request.Operation{
7196		Name:       opRevokeCacheSecurityGroupIngress,
7197		HTTPMethod: "POST",
7198		HTTPPath:   "/",
7199	}
7200
7201	if input == nil {
7202		input = &RevokeCacheSecurityGroupIngressInput{}
7203	}
7204
7205	output = &RevokeCacheSecurityGroupIngressOutput{}
7206	req = c.newRequest(op, input, output)
7207	return
7208}
7209
7210// RevokeCacheSecurityGroupIngress API operation for Amazon ElastiCache.
7211//
7212// Revokes ingress from a cache security group. Use this operation to disallow
7213// access from an Amazon EC2 security group that had been previously authorized.
7214//
7215// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7216// with awserr.Error's Code and Message methods to get detailed information about
7217// the error.
7218//
7219// See the AWS API reference guide for Amazon ElastiCache's
7220// API operation RevokeCacheSecurityGroupIngress for usage and error information.
7221//
7222// Returned Error Codes:
7223//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
7224//   The requested cache security group name does not refer to an existing cache
7225//   security group.
7226//
7227//   * ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
7228//   The specified Amazon EC2 security group is not authorized for the specified
7229//   cache security group.
7230//
7231//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
7232//   The current state of the cache security group does not allow deletion.
7233//
7234//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
7235//   The value for a parameter is invalid.
7236//
7237//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
7238//   Two or more incompatible parameters were specified.
7239//
7240// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RevokeCacheSecurityGroupIngress
7241func (c *ElastiCache) RevokeCacheSecurityGroupIngress(input *RevokeCacheSecurityGroupIngressInput) (*RevokeCacheSecurityGroupIngressOutput, error) {
7242	req, out := c.RevokeCacheSecurityGroupIngressRequest(input)
7243	return out, req.Send()
7244}
7245
7246// RevokeCacheSecurityGroupIngressWithContext is the same as RevokeCacheSecurityGroupIngress with the addition of
7247// the ability to pass a context and additional request options.
7248//
7249// See RevokeCacheSecurityGroupIngress for details on how to use this API operation.
7250//
7251// The context must be non-nil and will be used for request cancellation. If
7252// the context is nil a panic will occur. In the future the SDK may create
7253// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7254// for more information on using Contexts.
7255func (c *ElastiCache) RevokeCacheSecurityGroupIngressWithContext(ctx aws.Context, input *RevokeCacheSecurityGroupIngressInput, opts ...request.Option) (*RevokeCacheSecurityGroupIngressOutput, error) {
7256	req, out := c.RevokeCacheSecurityGroupIngressRequest(input)
7257	req.SetContext(ctx)
7258	req.ApplyOptions(opts...)
7259	return out, req.Send()
7260}
7261
7262const opStartMigration = "StartMigration"
7263
7264// StartMigrationRequest generates a "aws/request.Request" representing the
7265// client's request for the StartMigration operation. The "output" return
7266// value will be populated with the request's response once the request completes
7267// successfully.
7268//
7269// Use "Send" method on the returned Request to send the API call to the service.
7270// the "output" return value is not valid until after Send returns without error.
7271//
7272// See StartMigration for more information on using the StartMigration
7273// API call, and error handling.
7274//
7275// This method is useful when you want to inject custom logic or configuration
7276// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7277//
7278//
7279//    // Example sending a request using the StartMigrationRequest method.
7280//    req, resp := client.StartMigrationRequest(params)
7281//
7282//    err := req.Send()
7283//    if err == nil { // resp is now filled
7284//        fmt.Println(resp)
7285//    }
7286//
7287// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/StartMigration
7288func (c *ElastiCache) StartMigrationRequest(input *StartMigrationInput) (req *request.Request, output *StartMigrationOutput) {
7289	op := &request.Operation{
7290		Name:       opStartMigration,
7291		HTTPMethod: "POST",
7292		HTTPPath:   "/",
7293	}
7294
7295	if input == nil {
7296		input = &StartMigrationInput{}
7297	}
7298
7299	output = &StartMigrationOutput{}
7300	req = c.newRequest(op, input, output)
7301	return
7302}
7303
7304// StartMigration API operation for Amazon ElastiCache.
7305//
7306// Start the migration of data.
7307//
7308// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7309// with awserr.Error's Code and Message methods to get detailed information about
7310// the error.
7311//
7312// See the AWS API reference guide for Amazon ElastiCache's
7313// API operation StartMigration for usage and error information.
7314//
7315// Returned Error Codes:
7316//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
7317//   The specified replication group does not exist.
7318//
7319//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
7320//   The requested replication group is not in the available state.
7321//
7322//   * ErrCodeReplicationGroupAlreadyUnderMigrationFault "ReplicationGroupAlreadyUnderMigrationFault"
7323//   The targeted replication group is not available.
7324//
7325//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
7326//   The value for a parameter is invalid.
7327//
7328// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/StartMigration
7329func (c *ElastiCache) StartMigration(input *StartMigrationInput) (*StartMigrationOutput, error) {
7330	req, out := c.StartMigrationRequest(input)
7331	return out, req.Send()
7332}
7333
7334// StartMigrationWithContext is the same as StartMigration with the addition of
7335// the ability to pass a context and additional request options.
7336//
7337// See StartMigration for details on how to use this API operation.
7338//
7339// The context must be non-nil and will be used for request cancellation. If
7340// the context is nil a panic will occur. In the future the SDK may create
7341// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7342// for more information on using Contexts.
7343func (c *ElastiCache) StartMigrationWithContext(ctx aws.Context, input *StartMigrationInput, opts ...request.Option) (*StartMigrationOutput, error) {
7344	req, out := c.StartMigrationRequest(input)
7345	req.SetContext(ctx)
7346	req.ApplyOptions(opts...)
7347	return out, req.Send()
7348}
7349
7350const opTestFailover = "TestFailover"
7351
7352// TestFailoverRequest generates a "aws/request.Request" representing the
7353// client's request for the TestFailover operation. The "output" return
7354// value will be populated with the request's response once the request completes
7355// successfully.
7356//
7357// Use "Send" method on the returned Request to send the API call to the service.
7358// the "output" return value is not valid until after Send returns without error.
7359//
7360// See TestFailover for more information on using the TestFailover
7361// API call, and error handling.
7362//
7363// This method is useful when you want to inject custom logic or configuration
7364// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7365//
7366//
7367//    // Example sending a request using the TestFailoverRequest method.
7368//    req, resp := client.TestFailoverRequest(params)
7369//
7370//    err := req.Send()
7371//    if err == nil { // resp is now filled
7372//        fmt.Println(resp)
7373//    }
7374//
7375// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/TestFailover
7376func (c *ElastiCache) TestFailoverRequest(input *TestFailoverInput) (req *request.Request, output *TestFailoverOutput) {
7377	op := &request.Operation{
7378		Name:       opTestFailover,
7379		HTTPMethod: "POST",
7380		HTTPPath:   "/",
7381	}
7382
7383	if input == nil {
7384		input = &TestFailoverInput{}
7385	}
7386
7387	output = &TestFailoverOutput{}
7388	req = c.newRequest(op, input, output)
7389	return
7390}
7391
7392// TestFailover API operation for Amazon ElastiCache.
7393//
7394// Represents the input of a TestFailover operation which test automatic failover
7395// on a specified node group (called shard in the console) in a replication
7396// group (called cluster in the console).
7397//
7398// Note the following
7399//
7400//    * A customer can use this operation to test automatic failover on up to
7401//    5 shards (called node groups in the ElastiCache API and Amazon CLI) in
7402//    any rolling 24-hour period.
7403//
7404//    * If calling this operation on shards in different clusters (called replication
7405//    groups in the API and CLI), the calls can be made concurrently.
7406//
7407//    * If calling this operation multiple times on different shards in the
7408//    same Redis (cluster mode enabled) replication group, the first node replacement
7409//    must complete before a subsequent call can be made.
7410//
7411//    * To determine whether the node replacement is complete you can check
7412//    Events using the Amazon ElastiCache console, the Amazon CLI, or the ElastiCache
7413//    API. Look for the following automatic failover related events, listed
7414//    here in order of occurrance: Replication group message: Test Failover
7415//    API called for node group <node-group-id> Cache cluster message: Failover
7416//    from primary node <primary-node-id> to replica node <node-id> completed
7417//    Replication group message: Failover from primary node <primary-node-id>
7418//    to replica node <node-id> completed Cache cluster message: Recovering
7419//    cache nodes <node-id> Cache cluster message: Finished recovery for cache
7420//    nodes <node-id> For more information see: Viewing ElastiCache Events (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ECEvents.Viewing.html)
7421//    in the ElastiCache User Guide DescribeEvents (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEvents.html)
7422//    in the ElastiCache API Reference
7423//
7424// Also see, Testing Multi-AZ (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html#auto-failover-test)
7425// in the ElastiCache User Guide.
7426//
7427// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7428// with awserr.Error's Code and Message methods to get detailed information about
7429// the error.
7430//
7431// See the AWS API reference guide for Amazon ElastiCache's
7432// API operation TestFailover for usage and error information.
7433//
7434// Returned Error Codes:
7435//   * ErrCodeAPICallRateForCustomerExceededFault "APICallRateForCustomerExceeded"
7436//   The customer has exceeded the allowed rate of API calls.
7437//
7438//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
7439//   The requested cluster is not in the available state.
7440//
7441//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
7442//   The requested replication group is not in the available state.
7443//
7444//   * ErrCodeNodeGroupNotFoundFault "NodeGroupNotFoundFault"
7445//   The node group specified by the NodeGroupId parameter could not be found.
7446//   Please verify that the node group exists and that you spelled the NodeGroupId
7447//   value correctly.
7448//
7449//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
7450//   The specified replication group does not exist.
7451//
7452//   * ErrCodeTestFailoverNotAvailableFault "TestFailoverNotAvailableFault"
7453//   The TestFailover action is not available.
7454//
7455//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
7456//   The KMS key supplied is not valid.
7457//
7458//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
7459//   The value for a parameter is invalid.
7460//
7461//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
7462//   Two or more incompatible parameters were specified.
7463//
7464// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/TestFailover
7465func (c *ElastiCache) TestFailover(input *TestFailoverInput) (*TestFailoverOutput, error) {
7466	req, out := c.TestFailoverRequest(input)
7467	return out, req.Send()
7468}
7469
7470// TestFailoverWithContext is the same as TestFailover with the addition of
7471// the ability to pass a context and additional request options.
7472//
7473// See TestFailover for details on how to use this API operation.
7474//
7475// The context must be non-nil and will be used for request cancellation. If
7476// the context is nil a panic will occur. In the future the SDK may create
7477// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7478// for more information on using Contexts.
7479func (c *ElastiCache) TestFailoverWithContext(ctx aws.Context, input *TestFailoverInput, opts ...request.Option) (*TestFailoverOutput, error) {
7480	req, out := c.TestFailoverRequest(input)
7481	req.SetContext(ctx)
7482	req.ApplyOptions(opts...)
7483	return out, req.Send()
7484}
7485
7486// Represents the input of an AddTagsToResource operation.
7487type AddTagsToResourceInput struct {
7488	_ struct{} `type:"structure"`
7489
7490	// The Amazon Resource Name (ARN) of the resource to which the tags are to be
7491	// added, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
7492	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot. ElastiCache
7493	// resources are cluster and snapshot.
7494	//
7495	// For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon
7496	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
7497	//
7498	// ResourceName is a required field
7499	ResourceName *string `type:"string" required:"true"`
7500
7501	// A list of tags to be added to this resource. A tag is a key-value pair. A
7502	// tag key must be accompanied by a tag value, although null is accepted.
7503	//
7504	// Tags is a required field
7505	Tags []*Tag `locationNameList:"Tag" type:"list" required:"true"`
7506}
7507
7508// String returns the string representation
7509func (s AddTagsToResourceInput) String() string {
7510	return awsutil.Prettify(s)
7511}
7512
7513// GoString returns the string representation
7514func (s AddTagsToResourceInput) GoString() string {
7515	return s.String()
7516}
7517
7518// Validate inspects the fields of the type to determine if they are valid.
7519func (s *AddTagsToResourceInput) Validate() error {
7520	invalidParams := request.ErrInvalidParams{Context: "AddTagsToResourceInput"}
7521	if s.ResourceName == nil {
7522		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
7523	}
7524	if s.Tags == nil {
7525		invalidParams.Add(request.NewErrParamRequired("Tags"))
7526	}
7527
7528	if invalidParams.Len() > 0 {
7529		return invalidParams
7530	}
7531	return nil
7532}
7533
7534// SetResourceName sets the ResourceName field's value.
7535func (s *AddTagsToResourceInput) SetResourceName(v string) *AddTagsToResourceInput {
7536	s.ResourceName = &v
7537	return s
7538}
7539
7540// SetTags sets the Tags field's value.
7541func (s *AddTagsToResourceInput) SetTags(v []*Tag) *AddTagsToResourceInput {
7542	s.Tags = v
7543	return s
7544}
7545
7546// Indicates whether the user requires a password to authenticate.
7547type Authentication struct {
7548	_ struct{} `type:"structure"`
7549
7550	// The number of passwords belonging to the user. The maximum is two.
7551	PasswordCount *int64 `type:"integer"`
7552
7553	// Indicates whether the user requires a password to authenticate.
7554	Type *string `type:"string" enum:"AuthenticationType"`
7555}
7556
7557// String returns the string representation
7558func (s Authentication) String() string {
7559	return awsutil.Prettify(s)
7560}
7561
7562// GoString returns the string representation
7563func (s Authentication) GoString() string {
7564	return s.String()
7565}
7566
7567// SetPasswordCount sets the PasswordCount field's value.
7568func (s *Authentication) SetPasswordCount(v int64) *Authentication {
7569	s.PasswordCount = &v
7570	return s
7571}
7572
7573// SetType sets the Type field's value.
7574func (s *Authentication) SetType(v string) *Authentication {
7575	s.Type = &v
7576	return s
7577}
7578
7579// Represents the input of an AuthorizeCacheSecurityGroupIngress operation.
7580type AuthorizeCacheSecurityGroupIngressInput struct {
7581	_ struct{} `type:"structure"`
7582
7583	// The cache security group that allows network ingress.
7584	//
7585	// CacheSecurityGroupName is a required field
7586	CacheSecurityGroupName *string `type:"string" required:"true"`
7587
7588	// The Amazon EC2 security group to be authorized for ingress to the cache security
7589	// group.
7590	//
7591	// EC2SecurityGroupName is a required field
7592	EC2SecurityGroupName *string `type:"string" required:"true"`
7593
7594	// The Amazon account number of the Amazon EC2 security group owner. Note that
7595	// this is not the same thing as an Amazon access key ID - you must provide
7596	// a valid Amazon account number for this parameter.
7597	//
7598	// EC2SecurityGroupOwnerId is a required field
7599	EC2SecurityGroupOwnerId *string `type:"string" required:"true"`
7600}
7601
7602// String returns the string representation
7603func (s AuthorizeCacheSecurityGroupIngressInput) String() string {
7604	return awsutil.Prettify(s)
7605}
7606
7607// GoString returns the string representation
7608func (s AuthorizeCacheSecurityGroupIngressInput) GoString() string {
7609	return s.String()
7610}
7611
7612// Validate inspects the fields of the type to determine if they are valid.
7613func (s *AuthorizeCacheSecurityGroupIngressInput) Validate() error {
7614	invalidParams := request.ErrInvalidParams{Context: "AuthorizeCacheSecurityGroupIngressInput"}
7615	if s.CacheSecurityGroupName == nil {
7616		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
7617	}
7618	if s.EC2SecurityGroupName == nil {
7619		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupName"))
7620	}
7621	if s.EC2SecurityGroupOwnerId == nil {
7622		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupOwnerId"))
7623	}
7624
7625	if invalidParams.Len() > 0 {
7626		return invalidParams
7627	}
7628	return nil
7629}
7630
7631// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
7632func (s *AuthorizeCacheSecurityGroupIngressInput) SetCacheSecurityGroupName(v string) *AuthorizeCacheSecurityGroupIngressInput {
7633	s.CacheSecurityGroupName = &v
7634	return s
7635}
7636
7637// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
7638func (s *AuthorizeCacheSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *AuthorizeCacheSecurityGroupIngressInput {
7639	s.EC2SecurityGroupName = &v
7640	return s
7641}
7642
7643// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
7644func (s *AuthorizeCacheSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *AuthorizeCacheSecurityGroupIngressInput {
7645	s.EC2SecurityGroupOwnerId = &v
7646	return s
7647}
7648
7649type AuthorizeCacheSecurityGroupIngressOutput struct {
7650	_ struct{} `type:"structure"`
7651
7652	// Represents the output of one of the following operations:
7653	//
7654	//    * AuthorizeCacheSecurityGroupIngress
7655	//
7656	//    * CreateCacheSecurityGroup
7657	//
7658	//    * RevokeCacheSecurityGroupIngress
7659	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
7660}
7661
7662// String returns the string representation
7663func (s AuthorizeCacheSecurityGroupIngressOutput) String() string {
7664	return awsutil.Prettify(s)
7665}
7666
7667// GoString returns the string representation
7668func (s AuthorizeCacheSecurityGroupIngressOutput) GoString() string {
7669	return s.String()
7670}
7671
7672// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
7673func (s *AuthorizeCacheSecurityGroupIngressOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *AuthorizeCacheSecurityGroupIngressOutput {
7674	s.CacheSecurityGroup = v
7675	return s
7676}
7677
7678// Describes an Availability Zone in which the cluster is launched.
7679type AvailabilityZone struct {
7680	_ struct{} `type:"structure"`
7681
7682	// The name of the Availability Zone.
7683	Name *string `type:"string"`
7684}
7685
7686// String returns the string representation
7687func (s AvailabilityZone) String() string {
7688	return awsutil.Prettify(s)
7689}
7690
7691// GoString returns the string representation
7692func (s AvailabilityZone) GoString() string {
7693	return s.String()
7694}
7695
7696// SetName sets the Name field's value.
7697func (s *AvailabilityZone) SetName(v string) *AvailabilityZone {
7698	s.Name = &v
7699	return s
7700}
7701
7702type BatchApplyUpdateActionInput struct {
7703	_ struct{} `type:"structure"`
7704
7705	// The cache cluster IDs
7706	CacheClusterIds []*string `type:"list"`
7707
7708	// The replication group IDs
7709	ReplicationGroupIds []*string `type:"list"`
7710
7711	// The unique ID of the service update
7712	//
7713	// ServiceUpdateName is a required field
7714	ServiceUpdateName *string `type:"string" required:"true"`
7715}
7716
7717// String returns the string representation
7718func (s BatchApplyUpdateActionInput) String() string {
7719	return awsutil.Prettify(s)
7720}
7721
7722// GoString returns the string representation
7723func (s BatchApplyUpdateActionInput) GoString() string {
7724	return s.String()
7725}
7726
7727// Validate inspects the fields of the type to determine if they are valid.
7728func (s *BatchApplyUpdateActionInput) Validate() error {
7729	invalidParams := request.ErrInvalidParams{Context: "BatchApplyUpdateActionInput"}
7730	if s.ServiceUpdateName == nil {
7731		invalidParams.Add(request.NewErrParamRequired("ServiceUpdateName"))
7732	}
7733
7734	if invalidParams.Len() > 0 {
7735		return invalidParams
7736	}
7737	return nil
7738}
7739
7740// SetCacheClusterIds sets the CacheClusterIds field's value.
7741func (s *BatchApplyUpdateActionInput) SetCacheClusterIds(v []*string) *BatchApplyUpdateActionInput {
7742	s.CacheClusterIds = v
7743	return s
7744}
7745
7746// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
7747func (s *BatchApplyUpdateActionInput) SetReplicationGroupIds(v []*string) *BatchApplyUpdateActionInput {
7748	s.ReplicationGroupIds = v
7749	return s
7750}
7751
7752// SetServiceUpdateName sets the ServiceUpdateName field's value.
7753func (s *BatchApplyUpdateActionInput) SetServiceUpdateName(v string) *BatchApplyUpdateActionInput {
7754	s.ServiceUpdateName = &v
7755	return s
7756}
7757
7758type BatchApplyUpdateActionOutput struct {
7759	_ struct{} `type:"structure"`
7760
7761	// Update actions that have been processed successfully
7762	ProcessedUpdateActions []*ProcessedUpdateAction `locationNameList:"ProcessedUpdateAction" type:"list"`
7763
7764	// Update actions that haven't been processed successfully
7765	UnprocessedUpdateActions []*UnprocessedUpdateAction `locationNameList:"UnprocessedUpdateAction" type:"list"`
7766}
7767
7768// String returns the string representation
7769func (s BatchApplyUpdateActionOutput) String() string {
7770	return awsutil.Prettify(s)
7771}
7772
7773// GoString returns the string representation
7774func (s BatchApplyUpdateActionOutput) GoString() string {
7775	return s.String()
7776}
7777
7778// SetProcessedUpdateActions sets the ProcessedUpdateActions field's value.
7779func (s *BatchApplyUpdateActionOutput) SetProcessedUpdateActions(v []*ProcessedUpdateAction) *BatchApplyUpdateActionOutput {
7780	s.ProcessedUpdateActions = v
7781	return s
7782}
7783
7784// SetUnprocessedUpdateActions sets the UnprocessedUpdateActions field's value.
7785func (s *BatchApplyUpdateActionOutput) SetUnprocessedUpdateActions(v []*UnprocessedUpdateAction) *BatchApplyUpdateActionOutput {
7786	s.UnprocessedUpdateActions = v
7787	return s
7788}
7789
7790type BatchStopUpdateActionInput struct {
7791	_ struct{} `type:"structure"`
7792
7793	// The cache cluster IDs
7794	CacheClusterIds []*string `type:"list"`
7795
7796	// The replication group IDs
7797	ReplicationGroupIds []*string `type:"list"`
7798
7799	// The unique ID of the service update
7800	//
7801	// ServiceUpdateName is a required field
7802	ServiceUpdateName *string `type:"string" required:"true"`
7803}
7804
7805// String returns the string representation
7806func (s BatchStopUpdateActionInput) String() string {
7807	return awsutil.Prettify(s)
7808}
7809
7810// GoString returns the string representation
7811func (s BatchStopUpdateActionInput) GoString() string {
7812	return s.String()
7813}
7814
7815// Validate inspects the fields of the type to determine if they are valid.
7816func (s *BatchStopUpdateActionInput) Validate() error {
7817	invalidParams := request.ErrInvalidParams{Context: "BatchStopUpdateActionInput"}
7818	if s.ServiceUpdateName == nil {
7819		invalidParams.Add(request.NewErrParamRequired("ServiceUpdateName"))
7820	}
7821
7822	if invalidParams.Len() > 0 {
7823		return invalidParams
7824	}
7825	return nil
7826}
7827
7828// SetCacheClusterIds sets the CacheClusterIds field's value.
7829func (s *BatchStopUpdateActionInput) SetCacheClusterIds(v []*string) *BatchStopUpdateActionInput {
7830	s.CacheClusterIds = v
7831	return s
7832}
7833
7834// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
7835func (s *BatchStopUpdateActionInput) SetReplicationGroupIds(v []*string) *BatchStopUpdateActionInput {
7836	s.ReplicationGroupIds = v
7837	return s
7838}
7839
7840// SetServiceUpdateName sets the ServiceUpdateName field's value.
7841func (s *BatchStopUpdateActionInput) SetServiceUpdateName(v string) *BatchStopUpdateActionInput {
7842	s.ServiceUpdateName = &v
7843	return s
7844}
7845
7846type BatchStopUpdateActionOutput struct {
7847	_ struct{} `type:"structure"`
7848
7849	// Update actions that have been processed successfully
7850	ProcessedUpdateActions []*ProcessedUpdateAction `locationNameList:"ProcessedUpdateAction" type:"list"`
7851
7852	// Update actions that haven't been processed successfully
7853	UnprocessedUpdateActions []*UnprocessedUpdateAction `locationNameList:"UnprocessedUpdateAction" type:"list"`
7854}
7855
7856// String returns the string representation
7857func (s BatchStopUpdateActionOutput) String() string {
7858	return awsutil.Prettify(s)
7859}
7860
7861// GoString returns the string representation
7862func (s BatchStopUpdateActionOutput) GoString() string {
7863	return s.String()
7864}
7865
7866// SetProcessedUpdateActions sets the ProcessedUpdateActions field's value.
7867func (s *BatchStopUpdateActionOutput) SetProcessedUpdateActions(v []*ProcessedUpdateAction) *BatchStopUpdateActionOutput {
7868	s.ProcessedUpdateActions = v
7869	return s
7870}
7871
7872// SetUnprocessedUpdateActions sets the UnprocessedUpdateActions field's value.
7873func (s *BatchStopUpdateActionOutput) SetUnprocessedUpdateActions(v []*UnprocessedUpdateAction) *BatchStopUpdateActionOutput {
7874	s.UnprocessedUpdateActions = v
7875	return s
7876}
7877
7878// Contains all of the attributes of a specific cluster.
7879type CacheCluster struct {
7880	_ struct{} `type:"structure"`
7881
7882	// The ARN (Amazon Resource Name) of the cache cluster.
7883	ARN *string `type:"string"`
7884
7885	// A flag that enables encryption at-rest when set to true.
7886	//
7887	// You cannot modify the value of AtRestEncryptionEnabled after the cluster
7888	// is created. To enable at-rest encryption on a cluster you must set AtRestEncryptionEnabled
7889	// to true when you create a cluster.
7890	//
7891	// Required: Only available when creating a replication group in an Amazon VPC
7892	// using redis version 3.2.6, 4.x or later.
7893	//
7894	// Default: false
7895	AtRestEncryptionEnabled *bool `type:"boolean"`
7896
7897	// A flag that enables using an AuthToken (password) when issuing Redis commands.
7898	//
7899	// Default: false
7900	AuthTokenEnabled *bool `type:"boolean"`
7901
7902	// The date the auth token was last modified
7903	AuthTokenLastModifiedDate *time.Time `type:"timestamp"`
7904
7905	// This parameter is currently disabled.
7906	AutoMinorVersionUpgrade *bool `type:"boolean"`
7907
7908	// The date and time when the cluster was created.
7909	CacheClusterCreateTime *time.Time `type:"timestamp"`
7910
7911	// The user-supplied identifier of the cluster. This identifier is a unique
7912	// key that identifies a cluster.
7913	CacheClusterId *string `type:"string"`
7914
7915	// The current state of this cluster, one of the following values: available,
7916	// creating, deleted, deleting, incompatible-network, modifying, rebooting cluster
7917	// nodes, restore-failed, or snapshotting.
7918	CacheClusterStatus *string `type:"string"`
7919
7920	// The name of the compute and memory capacity node type for the cluster.
7921	//
7922	// The following node types are supported by ElastiCache. Generally speaking,
7923	// the current generation types provide more memory and computational power
7924	// at lower cost when compared to their equivalent previous generation counterparts.
7925	//
7926	//    * General purpose: Current generation: M6g node types (available only
7927	//    for Redis engine version 5.0.6 onward and for Memcached engine version
7928	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
7929	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
7930	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
7931	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
7932	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
7933	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
7934	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
7935	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
7936	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
7937	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
7938	//    cache.m3.2xlarge
7939	//
7940	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
7941	//    cache.c1.xlarge
7942	//
7943	//    * Memory optimized: Current generation: R6g node types (available only
7944	//    for Redis engine version 5.0.6 onward and for Memcached engine version
7945	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
7946	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
7947	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
7948	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
7949	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
7950	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
7951	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
7952	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
7953	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
7954	//
7955	// Additional node type info
7956	//
7957	//    * All current generation instance types are created in Amazon VPC by default.
7958	//
7959	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
7960	//
7961	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
7962	//
7963	//    * Redis configuration variables appendonly and appendfsync are not supported
7964	//    on Redis version 2.8.22 and later.
7965	CacheNodeType *string `type:"string"`
7966
7967	// A list of cache nodes that are members of the cluster.
7968	CacheNodes []*CacheNode `locationNameList:"CacheNode" type:"list"`
7969
7970	// Status of the cache parameter group.
7971	CacheParameterGroup *CacheParameterGroupStatus `type:"structure"`
7972
7973	// A list of cache security group elements, composed of name and status sub-elements.
7974	CacheSecurityGroups []*CacheSecurityGroupMembership `locationNameList:"CacheSecurityGroup" type:"list"`
7975
7976	// The name of the cache subnet group associated with the cluster.
7977	CacheSubnetGroupName *string `type:"string"`
7978
7979	// The URL of the web page where you can download the latest ElastiCache client
7980	// library.
7981	ClientDownloadLandingPage *string `type:"string"`
7982
7983	// Represents a Memcached cluster endpoint which can be used by an application
7984	// to connect to any node in the cluster. The configuration endpoint will always
7985	// have .cfg in it.
7986	//
7987	// Example: mem-3.9dvc4r.cfg.usw2.cache.amazonaws.com:11211
7988	ConfigurationEndpoint *Endpoint `type:"structure"`
7989
7990	// The name of the cache engine (memcached or redis) to be used for this cluster.
7991	Engine *string `type:"string"`
7992
7993	// The version of the cache engine that is used in this cluster.
7994	EngineVersion *string `type:"string"`
7995
7996	// Returns the destination, format and type of the logs.
7997	LogDeliveryConfigurations []*LogDeliveryConfiguration `locationNameList:"LogDeliveryConfiguration" type:"list"`
7998
7999	// Describes a notification topic and its status. Notification topics are used
8000	// for publishing ElastiCache events to subscribers using Amazon Simple Notification
8001	// Service (SNS).
8002	NotificationConfiguration *NotificationConfiguration `type:"structure"`
8003
8004	// The number of cache nodes in the cluster.
8005	//
8006	// For clusters running Redis, this value must be 1. For clusters running Memcached,
8007	// this value must be between 1 and 40.
8008	NumCacheNodes *int64 `type:"integer"`
8009
8010	// A group of settings that are applied to the cluster in the future, or that
8011	// are currently being applied.
8012	PendingModifiedValues *PendingModifiedValues `type:"structure"`
8013
8014	// The name of the Availability Zone in which the cluster is located or "Multiple"
8015	// if the cache nodes are located in different Availability Zones.
8016	PreferredAvailabilityZone *string `type:"string"`
8017
8018	// Specifies the weekly time range during which maintenance on the cluster is
8019	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
8020	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
8021	//
8022	// Valid values for ddd are:
8023	//
8024	//    * sun
8025	//
8026	//    * mon
8027	//
8028	//    * tue
8029	//
8030	//    * wed
8031	//
8032	//    * thu
8033	//
8034	//    * fri
8035	//
8036	//    * sat
8037	//
8038	// Example: sun:23:00-mon:01:30
8039	PreferredMaintenanceWindow *string `type:"string"`
8040
8041	// The outpost ARN in which the cache cluster is created.
8042	PreferredOutpostArn *string `type:"string"`
8043
8044	// The replication group to which this cluster belongs. If this field is empty,
8045	// the cluster is not associated with any replication group.
8046	ReplicationGroupId *string `type:"string"`
8047
8048	// A boolean value indicating whether log delivery is enabled for the replication
8049	// group.
8050	ReplicationGroupLogDeliveryEnabled *bool `type:"boolean"`
8051
8052	// A list of VPC Security Groups associated with the cluster.
8053	SecurityGroups []*SecurityGroupMembership `type:"list"`
8054
8055	// The number of days for which ElastiCache retains automatic cluster snapshots
8056	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
8057	// a snapshot that was taken today is retained for 5 days before being deleted.
8058	//
8059	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
8060	// off.
8061	SnapshotRetentionLimit *int64 `type:"integer"`
8062
8063	// The daily time range (in UTC) during which ElastiCache begins taking a daily
8064	// snapshot of your cluster.
8065	//
8066	// Example: 05:00-09:00
8067	SnapshotWindow *string `type:"string"`
8068
8069	// A flag that enables in-transit encryption when set to true.
8070	//
8071	// You cannot modify the value of TransitEncryptionEnabled after the cluster
8072	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
8073	// to true when you create a cluster.
8074	//
8075	// Required: Only available when creating a replication group in an Amazon VPC
8076	// using redis version 3.2.6, 4.x or later.
8077	//
8078	// Default: false
8079	TransitEncryptionEnabled *bool `type:"boolean"`
8080}
8081
8082// String returns the string representation
8083func (s CacheCluster) String() string {
8084	return awsutil.Prettify(s)
8085}
8086
8087// GoString returns the string representation
8088func (s CacheCluster) GoString() string {
8089	return s.String()
8090}
8091
8092// SetARN sets the ARN field's value.
8093func (s *CacheCluster) SetARN(v string) *CacheCluster {
8094	s.ARN = &v
8095	return s
8096}
8097
8098// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
8099func (s *CacheCluster) SetAtRestEncryptionEnabled(v bool) *CacheCluster {
8100	s.AtRestEncryptionEnabled = &v
8101	return s
8102}
8103
8104// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
8105func (s *CacheCluster) SetAuthTokenEnabled(v bool) *CacheCluster {
8106	s.AuthTokenEnabled = &v
8107	return s
8108}
8109
8110// SetAuthTokenLastModifiedDate sets the AuthTokenLastModifiedDate field's value.
8111func (s *CacheCluster) SetAuthTokenLastModifiedDate(v time.Time) *CacheCluster {
8112	s.AuthTokenLastModifiedDate = &v
8113	return s
8114}
8115
8116// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
8117func (s *CacheCluster) SetAutoMinorVersionUpgrade(v bool) *CacheCluster {
8118	s.AutoMinorVersionUpgrade = &v
8119	return s
8120}
8121
8122// SetCacheClusterCreateTime sets the CacheClusterCreateTime field's value.
8123func (s *CacheCluster) SetCacheClusterCreateTime(v time.Time) *CacheCluster {
8124	s.CacheClusterCreateTime = &v
8125	return s
8126}
8127
8128// SetCacheClusterId sets the CacheClusterId field's value.
8129func (s *CacheCluster) SetCacheClusterId(v string) *CacheCluster {
8130	s.CacheClusterId = &v
8131	return s
8132}
8133
8134// SetCacheClusterStatus sets the CacheClusterStatus field's value.
8135func (s *CacheCluster) SetCacheClusterStatus(v string) *CacheCluster {
8136	s.CacheClusterStatus = &v
8137	return s
8138}
8139
8140// SetCacheNodeType sets the CacheNodeType field's value.
8141func (s *CacheCluster) SetCacheNodeType(v string) *CacheCluster {
8142	s.CacheNodeType = &v
8143	return s
8144}
8145
8146// SetCacheNodes sets the CacheNodes field's value.
8147func (s *CacheCluster) SetCacheNodes(v []*CacheNode) *CacheCluster {
8148	s.CacheNodes = v
8149	return s
8150}
8151
8152// SetCacheParameterGroup sets the CacheParameterGroup field's value.
8153func (s *CacheCluster) SetCacheParameterGroup(v *CacheParameterGroupStatus) *CacheCluster {
8154	s.CacheParameterGroup = v
8155	return s
8156}
8157
8158// SetCacheSecurityGroups sets the CacheSecurityGroups field's value.
8159func (s *CacheCluster) SetCacheSecurityGroups(v []*CacheSecurityGroupMembership) *CacheCluster {
8160	s.CacheSecurityGroups = v
8161	return s
8162}
8163
8164// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
8165func (s *CacheCluster) SetCacheSubnetGroupName(v string) *CacheCluster {
8166	s.CacheSubnetGroupName = &v
8167	return s
8168}
8169
8170// SetClientDownloadLandingPage sets the ClientDownloadLandingPage field's value.
8171func (s *CacheCluster) SetClientDownloadLandingPage(v string) *CacheCluster {
8172	s.ClientDownloadLandingPage = &v
8173	return s
8174}
8175
8176// SetConfigurationEndpoint sets the ConfigurationEndpoint field's value.
8177func (s *CacheCluster) SetConfigurationEndpoint(v *Endpoint) *CacheCluster {
8178	s.ConfigurationEndpoint = v
8179	return s
8180}
8181
8182// SetEngine sets the Engine field's value.
8183func (s *CacheCluster) SetEngine(v string) *CacheCluster {
8184	s.Engine = &v
8185	return s
8186}
8187
8188// SetEngineVersion sets the EngineVersion field's value.
8189func (s *CacheCluster) SetEngineVersion(v string) *CacheCluster {
8190	s.EngineVersion = &v
8191	return s
8192}
8193
8194// SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
8195func (s *CacheCluster) SetLogDeliveryConfigurations(v []*LogDeliveryConfiguration) *CacheCluster {
8196	s.LogDeliveryConfigurations = v
8197	return s
8198}
8199
8200// SetNotificationConfiguration sets the NotificationConfiguration field's value.
8201func (s *CacheCluster) SetNotificationConfiguration(v *NotificationConfiguration) *CacheCluster {
8202	s.NotificationConfiguration = v
8203	return s
8204}
8205
8206// SetNumCacheNodes sets the NumCacheNodes field's value.
8207func (s *CacheCluster) SetNumCacheNodes(v int64) *CacheCluster {
8208	s.NumCacheNodes = &v
8209	return s
8210}
8211
8212// SetPendingModifiedValues sets the PendingModifiedValues field's value.
8213func (s *CacheCluster) SetPendingModifiedValues(v *PendingModifiedValues) *CacheCluster {
8214	s.PendingModifiedValues = v
8215	return s
8216}
8217
8218// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
8219func (s *CacheCluster) SetPreferredAvailabilityZone(v string) *CacheCluster {
8220	s.PreferredAvailabilityZone = &v
8221	return s
8222}
8223
8224// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
8225func (s *CacheCluster) SetPreferredMaintenanceWindow(v string) *CacheCluster {
8226	s.PreferredMaintenanceWindow = &v
8227	return s
8228}
8229
8230// SetPreferredOutpostArn sets the PreferredOutpostArn field's value.
8231func (s *CacheCluster) SetPreferredOutpostArn(v string) *CacheCluster {
8232	s.PreferredOutpostArn = &v
8233	return s
8234}
8235
8236// SetReplicationGroupId sets the ReplicationGroupId field's value.
8237func (s *CacheCluster) SetReplicationGroupId(v string) *CacheCluster {
8238	s.ReplicationGroupId = &v
8239	return s
8240}
8241
8242// SetReplicationGroupLogDeliveryEnabled sets the ReplicationGroupLogDeliveryEnabled field's value.
8243func (s *CacheCluster) SetReplicationGroupLogDeliveryEnabled(v bool) *CacheCluster {
8244	s.ReplicationGroupLogDeliveryEnabled = &v
8245	return s
8246}
8247
8248// SetSecurityGroups sets the SecurityGroups field's value.
8249func (s *CacheCluster) SetSecurityGroups(v []*SecurityGroupMembership) *CacheCluster {
8250	s.SecurityGroups = v
8251	return s
8252}
8253
8254// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
8255func (s *CacheCluster) SetSnapshotRetentionLimit(v int64) *CacheCluster {
8256	s.SnapshotRetentionLimit = &v
8257	return s
8258}
8259
8260// SetSnapshotWindow sets the SnapshotWindow field's value.
8261func (s *CacheCluster) SetSnapshotWindow(v string) *CacheCluster {
8262	s.SnapshotWindow = &v
8263	return s
8264}
8265
8266// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
8267func (s *CacheCluster) SetTransitEncryptionEnabled(v bool) *CacheCluster {
8268	s.TransitEncryptionEnabled = &v
8269	return s
8270}
8271
8272// Provides all of the details about a particular cache engine version.
8273type CacheEngineVersion struct {
8274	_ struct{} `type:"structure"`
8275
8276	// The description of the cache engine.
8277	CacheEngineDescription *string `type:"string"`
8278
8279	// The description of the cache engine version.
8280	CacheEngineVersionDescription *string `type:"string"`
8281
8282	// The name of the cache parameter group family associated with this cache engine.
8283	//
8284	// Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 |
8285	// redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |
8286	CacheParameterGroupFamily *string `type:"string"`
8287
8288	// The name of the cache engine.
8289	Engine *string `type:"string"`
8290
8291	// The version number of the cache engine.
8292	EngineVersion *string `type:"string"`
8293}
8294
8295// String returns the string representation
8296func (s CacheEngineVersion) String() string {
8297	return awsutil.Prettify(s)
8298}
8299
8300// GoString returns the string representation
8301func (s CacheEngineVersion) GoString() string {
8302	return s.String()
8303}
8304
8305// SetCacheEngineDescription sets the CacheEngineDescription field's value.
8306func (s *CacheEngineVersion) SetCacheEngineDescription(v string) *CacheEngineVersion {
8307	s.CacheEngineDescription = &v
8308	return s
8309}
8310
8311// SetCacheEngineVersionDescription sets the CacheEngineVersionDescription field's value.
8312func (s *CacheEngineVersion) SetCacheEngineVersionDescription(v string) *CacheEngineVersion {
8313	s.CacheEngineVersionDescription = &v
8314	return s
8315}
8316
8317// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
8318func (s *CacheEngineVersion) SetCacheParameterGroupFamily(v string) *CacheEngineVersion {
8319	s.CacheParameterGroupFamily = &v
8320	return s
8321}
8322
8323// SetEngine sets the Engine field's value.
8324func (s *CacheEngineVersion) SetEngine(v string) *CacheEngineVersion {
8325	s.Engine = &v
8326	return s
8327}
8328
8329// SetEngineVersion sets the EngineVersion field's value.
8330func (s *CacheEngineVersion) SetEngineVersion(v string) *CacheEngineVersion {
8331	s.EngineVersion = &v
8332	return s
8333}
8334
8335// Represents an individual cache node within a cluster. Each cache node runs
8336// its own instance of the cluster's protocol-compliant caching software - either
8337// Memcached or Redis.
8338//
8339// The following node types are supported by ElastiCache. Generally speaking,
8340// the current generation types provide more memory and computational power
8341// at lower cost when compared to their equivalent previous generation counterparts.
8342//
8343//    * General purpose: Current generation: M6g node types (available only
8344//    for Redis engine version 5.0.6 onward and for Memcached engine version
8345//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
8346//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
8347//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
8348//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
8349//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
8350//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
8351//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
8352//    cache.t2.medium Previous generation: (not recommended) T1 node types:
8353//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
8354//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
8355//    cache.m3.2xlarge
8356//
8357//    * Compute optimized: Previous generation: (not recommended) C1 node types:
8358//    cache.c1.xlarge
8359//
8360//    * Memory optimized: Current generation: R6g node types (available only
8361//    for Redis engine version 5.0.6 onward and for Memcached engine version
8362//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
8363//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
8364//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
8365//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
8366//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
8367//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
8368//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
8369//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
8370//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
8371//
8372// Additional node type info
8373//
8374//    * All current generation instance types are created in Amazon VPC by default.
8375//
8376//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
8377//
8378//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
8379//
8380//    * Redis configuration variables appendonly and appendfsync are not supported
8381//    on Redis version 2.8.22 and later.
8382type CacheNode struct {
8383	_ struct{} `type:"structure"`
8384
8385	// The date and time when the cache node was created.
8386	CacheNodeCreateTime *time.Time `type:"timestamp"`
8387
8388	// The cache node identifier. A node ID is a numeric identifier (0001, 0002,
8389	// etc.). The combination of cluster ID and node ID uniquely identifies every
8390	// cache node used in a customer's Amazon account.
8391	CacheNodeId *string `type:"string"`
8392
8393	// The current state of this cache node, one of the following values: available,
8394	// creating, rebooting, or deleting.
8395	CacheNodeStatus *string `type:"string"`
8396
8397	// The Availability Zone where this node was created and now resides.
8398	CustomerAvailabilityZone *string `type:"string"`
8399
8400	// The customer outpost ARN of the cache node.
8401	CustomerOutpostArn *string `type:"string"`
8402
8403	// The hostname for connecting to this cache node.
8404	Endpoint *Endpoint `type:"structure"`
8405
8406	// The status of the parameter group applied to this cache node.
8407	ParameterGroupStatus *string `type:"string"`
8408
8409	// The ID of the primary node to which this read replica node is synchronized.
8410	// If this field is empty, this node is not associated with a primary cluster.
8411	SourceCacheNodeId *string `type:"string"`
8412}
8413
8414// String returns the string representation
8415func (s CacheNode) String() string {
8416	return awsutil.Prettify(s)
8417}
8418
8419// GoString returns the string representation
8420func (s CacheNode) GoString() string {
8421	return s.String()
8422}
8423
8424// SetCacheNodeCreateTime sets the CacheNodeCreateTime field's value.
8425func (s *CacheNode) SetCacheNodeCreateTime(v time.Time) *CacheNode {
8426	s.CacheNodeCreateTime = &v
8427	return s
8428}
8429
8430// SetCacheNodeId sets the CacheNodeId field's value.
8431func (s *CacheNode) SetCacheNodeId(v string) *CacheNode {
8432	s.CacheNodeId = &v
8433	return s
8434}
8435
8436// SetCacheNodeStatus sets the CacheNodeStatus field's value.
8437func (s *CacheNode) SetCacheNodeStatus(v string) *CacheNode {
8438	s.CacheNodeStatus = &v
8439	return s
8440}
8441
8442// SetCustomerAvailabilityZone sets the CustomerAvailabilityZone field's value.
8443func (s *CacheNode) SetCustomerAvailabilityZone(v string) *CacheNode {
8444	s.CustomerAvailabilityZone = &v
8445	return s
8446}
8447
8448// SetCustomerOutpostArn sets the CustomerOutpostArn field's value.
8449func (s *CacheNode) SetCustomerOutpostArn(v string) *CacheNode {
8450	s.CustomerOutpostArn = &v
8451	return s
8452}
8453
8454// SetEndpoint sets the Endpoint field's value.
8455func (s *CacheNode) SetEndpoint(v *Endpoint) *CacheNode {
8456	s.Endpoint = v
8457	return s
8458}
8459
8460// SetParameterGroupStatus sets the ParameterGroupStatus field's value.
8461func (s *CacheNode) SetParameterGroupStatus(v string) *CacheNode {
8462	s.ParameterGroupStatus = &v
8463	return s
8464}
8465
8466// SetSourceCacheNodeId sets the SourceCacheNodeId field's value.
8467func (s *CacheNode) SetSourceCacheNodeId(v string) *CacheNode {
8468	s.SourceCacheNodeId = &v
8469	return s
8470}
8471
8472// A parameter that has a different value for each cache node type it is applied
8473// to. For example, in a Redis cluster, a cache.m1.large cache node type would
8474// have a larger maxmemory value than a cache.m1.small type.
8475type CacheNodeTypeSpecificParameter struct {
8476	_ struct{} `type:"structure"`
8477
8478	// The valid range of values for the parameter.
8479	AllowedValues *string `type:"string"`
8480
8481	// A list of cache node types and their corresponding values for this parameter.
8482	CacheNodeTypeSpecificValues []*CacheNodeTypeSpecificValue `locationNameList:"CacheNodeTypeSpecificValue" type:"list"`
8483
8484	// Indicates whether a change to the parameter is applied immediately or requires
8485	// a reboot for the change to be applied. You can force a reboot or wait until
8486	// the next maintenance window's reboot. For more information, see Rebooting
8487	// a Cluster (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html).
8488	ChangeType *string `type:"string" enum:"ChangeType"`
8489
8490	// The valid data type for the parameter.
8491	DataType *string `type:"string"`
8492
8493	// A description of the parameter.
8494	Description *string `type:"string"`
8495
8496	// Indicates whether (true) or not (false) the parameter can be modified. Some
8497	// parameters have security or operational implications that prevent them from
8498	// being changed.
8499	IsModifiable *bool `type:"boolean"`
8500
8501	// The earliest cache engine version to which the parameter can apply.
8502	MinimumEngineVersion *string `type:"string"`
8503
8504	// The name of the parameter.
8505	ParameterName *string `type:"string"`
8506
8507	// The source of the parameter value.
8508	Source *string `type:"string"`
8509}
8510
8511// String returns the string representation
8512func (s CacheNodeTypeSpecificParameter) String() string {
8513	return awsutil.Prettify(s)
8514}
8515
8516// GoString returns the string representation
8517func (s CacheNodeTypeSpecificParameter) GoString() string {
8518	return s.String()
8519}
8520
8521// SetAllowedValues sets the AllowedValues field's value.
8522func (s *CacheNodeTypeSpecificParameter) SetAllowedValues(v string) *CacheNodeTypeSpecificParameter {
8523	s.AllowedValues = &v
8524	return s
8525}
8526
8527// SetCacheNodeTypeSpecificValues sets the CacheNodeTypeSpecificValues field's value.
8528func (s *CacheNodeTypeSpecificParameter) SetCacheNodeTypeSpecificValues(v []*CacheNodeTypeSpecificValue) *CacheNodeTypeSpecificParameter {
8529	s.CacheNodeTypeSpecificValues = v
8530	return s
8531}
8532
8533// SetChangeType sets the ChangeType field's value.
8534func (s *CacheNodeTypeSpecificParameter) SetChangeType(v string) *CacheNodeTypeSpecificParameter {
8535	s.ChangeType = &v
8536	return s
8537}
8538
8539// SetDataType sets the DataType field's value.
8540func (s *CacheNodeTypeSpecificParameter) SetDataType(v string) *CacheNodeTypeSpecificParameter {
8541	s.DataType = &v
8542	return s
8543}
8544
8545// SetDescription sets the Description field's value.
8546func (s *CacheNodeTypeSpecificParameter) SetDescription(v string) *CacheNodeTypeSpecificParameter {
8547	s.Description = &v
8548	return s
8549}
8550
8551// SetIsModifiable sets the IsModifiable field's value.
8552func (s *CacheNodeTypeSpecificParameter) SetIsModifiable(v bool) *CacheNodeTypeSpecificParameter {
8553	s.IsModifiable = &v
8554	return s
8555}
8556
8557// SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
8558func (s *CacheNodeTypeSpecificParameter) SetMinimumEngineVersion(v string) *CacheNodeTypeSpecificParameter {
8559	s.MinimumEngineVersion = &v
8560	return s
8561}
8562
8563// SetParameterName sets the ParameterName field's value.
8564func (s *CacheNodeTypeSpecificParameter) SetParameterName(v string) *CacheNodeTypeSpecificParameter {
8565	s.ParameterName = &v
8566	return s
8567}
8568
8569// SetSource sets the Source field's value.
8570func (s *CacheNodeTypeSpecificParameter) SetSource(v string) *CacheNodeTypeSpecificParameter {
8571	s.Source = &v
8572	return s
8573}
8574
8575// A value that applies only to a certain cache node type.
8576type CacheNodeTypeSpecificValue struct {
8577	_ struct{} `type:"structure"`
8578
8579	// The cache node type for which this value applies.
8580	CacheNodeType *string `type:"string"`
8581
8582	// The value for the cache node type.
8583	Value *string `type:"string"`
8584}
8585
8586// String returns the string representation
8587func (s CacheNodeTypeSpecificValue) String() string {
8588	return awsutil.Prettify(s)
8589}
8590
8591// GoString returns the string representation
8592func (s CacheNodeTypeSpecificValue) GoString() string {
8593	return s.String()
8594}
8595
8596// SetCacheNodeType sets the CacheNodeType field's value.
8597func (s *CacheNodeTypeSpecificValue) SetCacheNodeType(v string) *CacheNodeTypeSpecificValue {
8598	s.CacheNodeType = &v
8599	return s
8600}
8601
8602// SetValue sets the Value field's value.
8603func (s *CacheNodeTypeSpecificValue) SetValue(v string) *CacheNodeTypeSpecificValue {
8604	s.Value = &v
8605	return s
8606}
8607
8608// The status of the service update on the cache node
8609type CacheNodeUpdateStatus struct {
8610	_ struct{} `type:"structure"`
8611
8612	// The node ID of the cache cluster
8613	CacheNodeId *string `type:"string"`
8614
8615	// The deletion date of the node
8616	NodeDeletionDate *time.Time `type:"timestamp"`
8617
8618	// The end date of the update for a node
8619	NodeUpdateEndDate *time.Time `type:"timestamp"`
8620
8621	// Reflects whether the update was initiated by the customer or automatically
8622	// applied
8623	NodeUpdateInitiatedBy *string `type:"string" enum:"NodeUpdateInitiatedBy"`
8624
8625	// The date when the update is triggered
8626	NodeUpdateInitiatedDate *time.Time `type:"timestamp"`
8627
8628	// The start date of the update for a node
8629	NodeUpdateStartDate *time.Time `type:"timestamp"`
8630
8631	// The update status of the node
8632	NodeUpdateStatus *string `type:"string" enum:"NodeUpdateStatus"`
8633
8634	// The date when the NodeUpdateStatus was last modified>
8635	NodeUpdateStatusModifiedDate *time.Time `type:"timestamp"`
8636}
8637
8638// String returns the string representation
8639func (s CacheNodeUpdateStatus) String() string {
8640	return awsutil.Prettify(s)
8641}
8642
8643// GoString returns the string representation
8644func (s CacheNodeUpdateStatus) GoString() string {
8645	return s.String()
8646}
8647
8648// SetCacheNodeId sets the CacheNodeId field's value.
8649func (s *CacheNodeUpdateStatus) SetCacheNodeId(v string) *CacheNodeUpdateStatus {
8650	s.CacheNodeId = &v
8651	return s
8652}
8653
8654// SetNodeDeletionDate sets the NodeDeletionDate field's value.
8655func (s *CacheNodeUpdateStatus) SetNodeDeletionDate(v time.Time) *CacheNodeUpdateStatus {
8656	s.NodeDeletionDate = &v
8657	return s
8658}
8659
8660// SetNodeUpdateEndDate sets the NodeUpdateEndDate field's value.
8661func (s *CacheNodeUpdateStatus) SetNodeUpdateEndDate(v time.Time) *CacheNodeUpdateStatus {
8662	s.NodeUpdateEndDate = &v
8663	return s
8664}
8665
8666// SetNodeUpdateInitiatedBy sets the NodeUpdateInitiatedBy field's value.
8667func (s *CacheNodeUpdateStatus) SetNodeUpdateInitiatedBy(v string) *CacheNodeUpdateStatus {
8668	s.NodeUpdateInitiatedBy = &v
8669	return s
8670}
8671
8672// SetNodeUpdateInitiatedDate sets the NodeUpdateInitiatedDate field's value.
8673func (s *CacheNodeUpdateStatus) SetNodeUpdateInitiatedDate(v time.Time) *CacheNodeUpdateStatus {
8674	s.NodeUpdateInitiatedDate = &v
8675	return s
8676}
8677
8678// SetNodeUpdateStartDate sets the NodeUpdateStartDate field's value.
8679func (s *CacheNodeUpdateStatus) SetNodeUpdateStartDate(v time.Time) *CacheNodeUpdateStatus {
8680	s.NodeUpdateStartDate = &v
8681	return s
8682}
8683
8684// SetNodeUpdateStatus sets the NodeUpdateStatus field's value.
8685func (s *CacheNodeUpdateStatus) SetNodeUpdateStatus(v string) *CacheNodeUpdateStatus {
8686	s.NodeUpdateStatus = &v
8687	return s
8688}
8689
8690// SetNodeUpdateStatusModifiedDate sets the NodeUpdateStatusModifiedDate field's value.
8691func (s *CacheNodeUpdateStatus) SetNodeUpdateStatusModifiedDate(v time.Time) *CacheNodeUpdateStatus {
8692	s.NodeUpdateStatusModifiedDate = &v
8693	return s
8694}
8695
8696// Represents the output of a CreateCacheParameterGroup operation.
8697type CacheParameterGroup struct {
8698	_ struct{} `type:"structure"`
8699
8700	// The ARN (Amazon Resource Name) of the cache parameter group.
8701	ARN *string `type:"string"`
8702
8703	// The name of the cache parameter group family that this cache parameter group
8704	// is compatible with.
8705	//
8706	// Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 |
8707	// redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |
8708	CacheParameterGroupFamily *string `type:"string"`
8709
8710	// The name of the cache parameter group.
8711	CacheParameterGroupName *string `type:"string"`
8712
8713	// The description for this cache parameter group.
8714	Description *string `type:"string"`
8715
8716	// Indicates whether the parameter group is associated with a Global datastore
8717	IsGlobal *bool `type:"boolean"`
8718}
8719
8720// String returns the string representation
8721func (s CacheParameterGroup) String() string {
8722	return awsutil.Prettify(s)
8723}
8724
8725// GoString returns the string representation
8726func (s CacheParameterGroup) GoString() string {
8727	return s.String()
8728}
8729
8730// SetARN sets the ARN field's value.
8731func (s *CacheParameterGroup) SetARN(v string) *CacheParameterGroup {
8732	s.ARN = &v
8733	return s
8734}
8735
8736// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
8737func (s *CacheParameterGroup) SetCacheParameterGroupFamily(v string) *CacheParameterGroup {
8738	s.CacheParameterGroupFamily = &v
8739	return s
8740}
8741
8742// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
8743func (s *CacheParameterGroup) SetCacheParameterGroupName(v string) *CacheParameterGroup {
8744	s.CacheParameterGroupName = &v
8745	return s
8746}
8747
8748// SetDescription sets the Description field's value.
8749func (s *CacheParameterGroup) SetDescription(v string) *CacheParameterGroup {
8750	s.Description = &v
8751	return s
8752}
8753
8754// SetIsGlobal sets the IsGlobal field's value.
8755func (s *CacheParameterGroup) SetIsGlobal(v bool) *CacheParameterGroup {
8756	s.IsGlobal = &v
8757	return s
8758}
8759
8760// Represents the output of one of the following operations:
8761//
8762//    * ModifyCacheParameterGroup
8763//
8764//    * ResetCacheParameterGroup
8765type CacheParameterGroupNameMessage struct {
8766	_ struct{} `type:"structure"`
8767
8768	// The name of the cache parameter group.
8769	CacheParameterGroupName *string `type:"string"`
8770}
8771
8772// String returns the string representation
8773func (s CacheParameterGroupNameMessage) String() string {
8774	return awsutil.Prettify(s)
8775}
8776
8777// GoString returns the string representation
8778func (s CacheParameterGroupNameMessage) GoString() string {
8779	return s.String()
8780}
8781
8782// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
8783func (s *CacheParameterGroupNameMessage) SetCacheParameterGroupName(v string) *CacheParameterGroupNameMessage {
8784	s.CacheParameterGroupName = &v
8785	return s
8786}
8787
8788// Status of the cache parameter group.
8789type CacheParameterGroupStatus struct {
8790	_ struct{} `type:"structure"`
8791
8792	// A list of the cache node IDs which need to be rebooted for parameter changes
8793	// to be applied. A node ID is a numeric identifier (0001, 0002, etc.).
8794	CacheNodeIdsToReboot []*string `locationNameList:"CacheNodeId" type:"list"`
8795
8796	// The name of the cache parameter group.
8797	CacheParameterGroupName *string `type:"string"`
8798
8799	// The status of parameter updates.
8800	ParameterApplyStatus *string `type:"string"`
8801}
8802
8803// String returns the string representation
8804func (s CacheParameterGroupStatus) String() string {
8805	return awsutil.Prettify(s)
8806}
8807
8808// GoString returns the string representation
8809func (s CacheParameterGroupStatus) GoString() string {
8810	return s.String()
8811}
8812
8813// SetCacheNodeIdsToReboot sets the CacheNodeIdsToReboot field's value.
8814func (s *CacheParameterGroupStatus) SetCacheNodeIdsToReboot(v []*string) *CacheParameterGroupStatus {
8815	s.CacheNodeIdsToReboot = v
8816	return s
8817}
8818
8819// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
8820func (s *CacheParameterGroupStatus) SetCacheParameterGroupName(v string) *CacheParameterGroupStatus {
8821	s.CacheParameterGroupName = &v
8822	return s
8823}
8824
8825// SetParameterApplyStatus sets the ParameterApplyStatus field's value.
8826func (s *CacheParameterGroupStatus) SetParameterApplyStatus(v string) *CacheParameterGroupStatus {
8827	s.ParameterApplyStatus = &v
8828	return s
8829}
8830
8831// Represents the output of one of the following operations:
8832//
8833//    * AuthorizeCacheSecurityGroupIngress
8834//
8835//    * CreateCacheSecurityGroup
8836//
8837//    * RevokeCacheSecurityGroupIngress
8838type CacheSecurityGroup struct {
8839	_ struct{} `type:"structure"`
8840
8841	// The ARN of the cache security group,
8842	ARN *string `type:"string"`
8843
8844	// The name of the cache security group.
8845	CacheSecurityGroupName *string `type:"string"`
8846
8847	// The description of the cache security group.
8848	Description *string `type:"string"`
8849
8850	// A list of Amazon EC2 security groups that are associated with this cache
8851	// security group.
8852	EC2SecurityGroups []*EC2SecurityGroup `locationNameList:"EC2SecurityGroup" type:"list"`
8853
8854	// The Amazon account ID of the cache security group owner.
8855	OwnerId *string `type:"string"`
8856}
8857
8858// String returns the string representation
8859func (s CacheSecurityGroup) String() string {
8860	return awsutil.Prettify(s)
8861}
8862
8863// GoString returns the string representation
8864func (s CacheSecurityGroup) GoString() string {
8865	return s.String()
8866}
8867
8868// SetARN sets the ARN field's value.
8869func (s *CacheSecurityGroup) SetARN(v string) *CacheSecurityGroup {
8870	s.ARN = &v
8871	return s
8872}
8873
8874// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
8875func (s *CacheSecurityGroup) SetCacheSecurityGroupName(v string) *CacheSecurityGroup {
8876	s.CacheSecurityGroupName = &v
8877	return s
8878}
8879
8880// SetDescription sets the Description field's value.
8881func (s *CacheSecurityGroup) SetDescription(v string) *CacheSecurityGroup {
8882	s.Description = &v
8883	return s
8884}
8885
8886// SetEC2SecurityGroups sets the EC2SecurityGroups field's value.
8887func (s *CacheSecurityGroup) SetEC2SecurityGroups(v []*EC2SecurityGroup) *CacheSecurityGroup {
8888	s.EC2SecurityGroups = v
8889	return s
8890}
8891
8892// SetOwnerId sets the OwnerId field's value.
8893func (s *CacheSecurityGroup) SetOwnerId(v string) *CacheSecurityGroup {
8894	s.OwnerId = &v
8895	return s
8896}
8897
8898// Represents a cluster's status within a particular cache security group.
8899type CacheSecurityGroupMembership struct {
8900	_ struct{} `type:"structure"`
8901
8902	// The name of the cache security group.
8903	CacheSecurityGroupName *string `type:"string"`
8904
8905	// The membership status in the cache security group. The status changes when
8906	// a cache security group is modified, or when the cache security groups assigned
8907	// to a cluster are modified.
8908	Status *string `type:"string"`
8909}
8910
8911// String returns the string representation
8912func (s CacheSecurityGroupMembership) String() string {
8913	return awsutil.Prettify(s)
8914}
8915
8916// GoString returns the string representation
8917func (s CacheSecurityGroupMembership) GoString() string {
8918	return s.String()
8919}
8920
8921// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
8922func (s *CacheSecurityGroupMembership) SetCacheSecurityGroupName(v string) *CacheSecurityGroupMembership {
8923	s.CacheSecurityGroupName = &v
8924	return s
8925}
8926
8927// SetStatus sets the Status field's value.
8928func (s *CacheSecurityGroupMembership) SetStatus(v string) *CacheSecurityGroupMembership {
8929	s.Status = &v
8930	return s
8931}
8932
8933// Represents the output of one of the following operations:
8934//
8935//    * CreateCacheSubnetGroup
8936//
8937//    * ModifyCacheSubnetGroup
8938type CacheSubnetGroup struct {
8939	_ struct{} `type:"structure"`
8940
8941	// The ARN (Amazon Resource Name) of the cache subnet group.
8942	ARN *string `type:"string"`
8943
8944	// The description of the cache subnet group.
8945	CacheSubnetGroupDescription *string `type:"string"`
8946
8947	// The name of the cache subnet group.
8948	CacheSubnetGroupName *string `type:"string"`
8949
8950	// A list of subnets associated with the cache subnet group.
8951	Subnets []*Subnet `locationNameList:"Subnet" type:"list"`
8952
8953	// The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet
8954	// group.
8955	VpcId *string `type:"string"`
8956}
8957
8958// String returns the string representation
8959func (s CacheSubnetGroup) String() string {
8960	return awsutil.Prettify(s)
8961}
8962
8963// GoString returns the string representation
8964func (s CacheSubnetGroup) GoString() string {
8965	return s.String()
8966}
8967
8968// SetARN sets the ARN field's value.
8969func (s *CacheSubnetGroup) SetARN(v string) *CacheSubnetGroup {
8970	s.ARN = &v
8971	return s
8972}
8973
8974// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
8975func (s *CacheSubnetGroup) SetCacheSubnetGroupDescription(v string) *CacheSubnetGroup {
8976	s.CacheSubnetGroupDescription = &v
8977	return s
8978}
8979
8980// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
8981func (s *CacheSubnetGroup) SetCacheSubnetGroupName(v string) *CacheSubnetGroup {
8982	s.CacheSubnetGroupName = &v
8983	return s
8984}
8985
8986// SetSubnets sets the Subnets field's value.
8987func (s *CacheSubnetGroup) SetSubnets(v []*Subnet) *CacheSubnetGroup {
8988	s.Subnets = v
8989	return s
8990}
8991
8992// SetVpcId sets the VpcId field's value.
8993func (s *CacheSubnetGroup) SetVpcId(v string) *CacheSubnetGroup {
8994	s.VpcId = &v
8995	return s
8996}
8997
8998// The configuration details of the CloudWatch Logs destination.
8999type CloudWatchLogsDestinationDetails struct {
9000	_ struct{} `type:"structure"`
9001
9002	// The name of the CloudWatch Logs log group.
9003	LogGroup *string `type:"string"`
9004}
9005
9006// String returns the string representation
9007func (s CloudWatchLogsDestinationDetails) String() string {
9008	return awsutil.Prettify(s)
9009}
9010
9011// GoString returns the string representation
9012func (s CloudWatchLogsDestinationDetails) GoString() string {
9013	return s.String()
9014}
9015
9016// SetLogGroup sets the LogGroup field's value.
9017func (s *CloudWatchLogsDestinationDetails) SetLogGroup(v string) *CloudWatchLogsDestinationDetails {
9018	s.LogGroup = &v
9019	return s
9020}
9021
9022type CompleteMigrationInput struct {
9023	_ struct{} `type:"structure"`
9024
9025	// Forces the migration to stop without ensuring that data is in sync. It is
9026	// recommended to use this option only to abort the migration and not recommended
9027	// when application wants to continue migration to ElastiCache.
9028	Force *bool `type:"boolean"`
9029
9030	// The ID of the replication group to which data is being migrated.
9031	//
9032	// ReplicationGroupId is a required field
9033	ReplicationGroupId *string `type:"string" required:"true"`
9034}
9035
9036// String returns the string representation
9037func (s CompleteMigrationInput) String() string {
9038	return awsutil.Prettify(s)
9039}
9040
9041// GoString returns the string representation
9042func (s CompleteMigrationInput) GoString() string {
9043	return s.String()
9044}
9045
9046// Validate inspects the fields of the type to determine if they are valid.
9047func (s *CompleteMigrationInput) Validate() error {
9048	invalidParams := request.ErrInvalidParams{Context: "CompleteMigrationInput"}
9049	if s.ReplicationGroupId == nil {
9050		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
9051	}
9052
9053	if invalidParams.Len() > 0 {
9054		return invalidParams
9055	}
9056	return nil
9057}
9058
9059// SetForce sets the Force field's value.
9060func (s *CompleteMigrationInput) SetForce(v bool) *CompleteMigrationInput {
9061	s.Force = &v
9062	return s
9063}
9064
9065// SetReplicationGroupId sets the ReplicationGroupId field's value.
9066func (s *CompleteMigrationInput) SetReplicationGroupId(v string) *CompleteMigrationInput {
9067	s.ReplicationGroupId = &v
9068	return s
9069}
9070
9071type CompleteMigrationOutput struct {
9072	_ struct{} `type:"structure"`
9073
9074	// Contains all of the attributes of a specific Redis replication group.
9075	ReplicationGroup *ReplicationGroup `type:"structure"`
9076}
9077
9078// String returns the string representation
9079func (s CompleteMigrationOutput) String() string {
9080	return awsutil.Prettify(s)
9081}
9082
9083// GoString returns the string representation
9084func (s CompleteMigrationOutput) GoString() string {
9085	return s.String()
9086}
9087
9088// SetReplicationGroup sets the ReplicationGroup field's value.
9089func (s *CompleteMigrationOutput) SetReplicationGroup(v *ReplicationGroup) *CompleteMigrationOutput {
9090	s.ReplicationGroup = v
9091	return s
9092}
9093
9094// Node group (shard) configuration options when adding or removing replicas.
9095// Each node group (shard) configuration has the following members: NodeGroupId,
9096// NewReplicaCount, and PreferredAvailabilityZones.
9097type ConfigureShard struct {
9098	_ struct{} `type:"structure"`
9099
9100	// The number of replicas you want in this node group at the end of this operation.
9101	// The maximum value for NewReplicaCount is 5. The minimum value depends upon
9102	// the type of Redis replication group you are working with.
9103	//
9104	// The minimum number of replicas in a shard or replication group is:
9105	//
9106	//    * Redis (cluster mode disabled) If Multi-AZ: 1 If Multi-AZ: 0
9107	//
9108	//    * Redis (cluster mode enabled): 0 (though you will not be able to failover
9109	//    to a replica if your primary node fails)
9110	//
9111	// NewReplicaCount is a required field
9112	NewReplicaCount *int64 `type:"integer" required:"true"`
9113
9114	// The 4-digit id for the node group you are configuring. For Redis (cluster
9115	// mode disabled) replication groups, the node group id is always 0001. To find
9116	// a Redis (cluster mode enabled)'s node group's (shard's) id, see Finding a
9117	// Shard's Id (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/shard-find-id.html).
9118	//
9119	// NodeGroupId is a required field
9120	NodeGroupId *string `min:"1" type:"string" required:"true"`
9121
9122	// A list of PreferredAvailabilityZone strings that specify which availability
9123	// zones the replication group's nodes are to be in. The nummber of PreferredAvailabilityZone
9124	// values must equal the value of NewReplicaCount plus 1 to account for the
9125	// primary node. If this member of ReplicaConfiguration is omitted, ElastiCache
9126	// for Redis selects the availability zone for each of the replicas.
9127	PreferredAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
9128
9129	// The outpost ARNs in which the cache cluster is created.
9130	PreferredOutpostArns []*string `locationNameList:"PreferredOutpostArn" type:"list"`
9131}
9132
9133// String returns the string representation
9134func (s ConfigureShard) String() string {
9135	return awsutil.Prettify(s)
9136}
9137
9138// GoString returns the string representation
9139func (s ConfigureShard) GoString() string {
9140	return s.String()
9141}
9142
9143// Validate inspects the fields of the type to determine if they are valid.
9144func (s *ConfigureShard) Validate() error {
9145	invalidParams := request.ErrInvalidParams{Context: "ConfigureShard"}
9146	if s.NewReplicaCount == nil {
9147		invalidParams.Add(request.NewErrParamRequired("NewReplicaCount"))
9148	}
9149	if s.NodeGroupId == nil {
9150		invalidParams.Add(request.NewErrParamRequired("NodeGroupId"))
9151	}
9152	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
9153		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
9154	}
9155
9156	if invalidParams.Len() > 0 {
9157		return invalidParams
9158	}
9159	return nil
9160}
9161
9162// SetNewReplicaCount sets the NewReplicaCount field's value.
9163func (s *ConfigureShard) SetNewReplicaCount(v int64) *ConfigureShard {
9164	s.NewReplicaCount = &v
9165	return s
9166}
9167
9168// SetNodeGroupId sets the NodeGroupId field's value.
9169func (s *ConfigureShard) SetNodeGroupId(v string) *ConfigureShard {
9170	s.NodeGroupId = &v
9171	return s
9172}
9173
9174// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
9175func (s *ConfigureShard) SetPreferredAvailabilityZones(v []*string) *ConfigureShard {
9176	s.PreferredAvailabilityZones = v
9177	return s
9178}
9179
9180// SetPreferredOutpostArns sets the PreferredOutpostArns field's value.
9181func (s *ConfigureShard) SetPreferredOutpostArns(v []*string) *ConfigureShard {
9182	s.PreferredOutpostArns = v
9183	return s
9184}
9185
9186// Represents the input of a CopySnapshotMessage operation.
9187type CopySnapshotInput struct {
9188	_ struct{} `type:"structure"`
9189
9190	// The ID of the KMS key used to encrypt the target snapshot.
9191	KmsKeyId *string `type:"string"`
9192
9193	// The name of an existing snapshot from which to make a copy.
9194	//
9195	// SourceSnapshotName is a required field
9196	SourceSnapshotName *string `type:"string" required:"true"`
9197
9198	// A list of tags to be added to this resource. A tag is a key-value pair. A
9199	// tag key must be accompanied by a tag value, although null is accepted.
9200	Tags []*Tag `locationNameList:"Tag" type:"list"`
9201
9202	// The Amazon S3 bucket to which the snapshot is exported. This parameter is
9203	// used only when exporting a snapshot for external access.
9204	//
9205	// When using this parameter to export a snapshot, be sure Amazon ElastiCache
9206	// has the needed permissions to this S3 bucket. For more information, see Step
9207	// 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)
9208	// in the Amazon ElastiCache User Guide.
9209	//
9210	// For more information, see Exporting a Snapshot (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html)
9211	// in the Amazon ElastiCache User Guide.
9212	TargetBucket *string `type:"string"`
9213
9214	// A name for the snapshot copy. ElastiCache does not permit overwriting a snapshot,
9215	// therefore this name must be unique within its context - ElastiCache or an
9216	// Amazon S3 bucket if exporting.
9217	//
9218	// TargetSnapshotName is a required field
9219	TargetSnapshotName *string `type:"string" required:"true"`
9220}
9221
9222// String returns the string representation
9223func (s CopySnapshotInput) String() string {
9224	return awsutil.Prettify(s)
9225}
9226
9227// GoString returns the string representation
9228func (s CopySnapshotInput) GoString() string {
9229	return s.String()
9230}
9231
9232// Validate inspects the fields of the type to determine if they are valid.
9233func (s *CopySnapshotInput) Validate() error {
9234	invalidParams := request.ErrInvalidParams{Context: "CopySnapshotInput"}
9235	if s.SourceSnapshotName == nil {
9236		invalidParams.Add(request.NewErrParamRequired("SourceSnapshotName"))
9237	}
9238	if s.TargetSnapshotName == nil {
9239		invalidParams.Add(request.NewErrParamRequired("TargetSnapshotName"))
9240	}
9241
9242	if invalidParams.Len() > 0 {
9243		return invalidParams
9244	}
9245	return nil
9246}
9247
9248// SetKmsKeyId sets the KmsKeyId field's value.
9249func (s *CopySnapshotInput) SetKmsKeyId(v string) *CopySnapshotInput {
9250	s.KmsKeyId = &v
9251	return s
9252}
9253
9254// SetSourceSnapshotName sets the SourceSnapshotName field's value.
9255func (s *CopySnapshotInput) SetSourceSnapshotName(v string) *CopySnapshotInput {
9256	s.SourceSnapshotName = &v
9257	return s
9258}
9259
9260// SetTags sets the Tags field's value.
9261func (s *CopySnapshotInput) SetTags(v []*Tag) *CopySnapshotInput {
9262	s.Tags = v
9263	return s
9264}
9265
9266// SetTargetBucket sets the TargetBucket field's value.
9267func (s *CopySnapshotInput) SetTargetBucket(v string) *CopySnapshotInput {
9268	s.TargetBucket = &v
9269	return s
9270}
9271
9272// SetTargetSnapshotName sets the TargetSnapshotName field's value.
9273func (s *CopySnapshotInput) SetTargetSnapshotName(v string) *CopySnapshotInput {
9274	s.TargetSnapshotName = &v
9275	return s
9276}
9277
9278type CopySnapshotOutput struct {
9279	_ struct{} `type:"structure"`
9280
9281	// Represents a copy of an entire Redis cluster as of the time when the snapshot
9282	// was taken.
9283	Snapshot *Snapshot `type:"structure"`
9284}
9285
9286// String returns the string representation
9287func (s CopySnapshotOutput) String() string {
9288	return awsutil.Prettify(s)
9289}
9290
9291// GoString returns the string representation
9292func (s CopySnapshotOutput) GoString() string {
9293	return s.String()
9294}
9295
9296// SetSnapshot sets the Snapshot field's value.
9297func (s *CopySnapshotOutput) SetSnapshot(v *Snapshot) *CopySnapshotOutput {
9298	s.Snapshot = v
9299	return s
9300}
9301
9302// Represents the input of a CreateCacheCluster operation.
9303type CreateCacheClusterInput struct {
9304	_ struct{} `type:"structure"`
9305
9306	// Specifies whether the nodes in this Memcached cluster are created in a single
9307	// Availability Zone or created across multiple Availability Zones in the cluster's
9308	// region.
9309	//
9310	// This parameter is only supported for Memcached clusters.
9311	//
9312	// If the AZMode and PreferredAvailabilityZones are not specified, ElastiCache
9313	// assumes single-az mode.
9314	AZMode *string `type:"string" enum:"AZMode"`
9315
9316	// Reserved parameter. The password used to access a password protected server.
9317	//
9318	// Password constraints:
9319	//
9320	//    * Must be only printable ASCII characters.
9321	//
9322	//    * Must be at least 16 characters and no more than 128 characters in length.
9323	//
9324	//    * The only permitted printable special characters are !, &, #, $, ^, <,
9325	//    >, and -. Other printable special characters cannot be used in the AUTH
9326	//    token.
9327	//
9328	// For more information, see AUTH password (http://redis.io/commands/AUTH) at
9329	// http://redis.io/commands/AUTH.
9330	AuthToken *string `type:"string"`
9331
9332	// This parameter is currently disabled.
9333	AutoMinorVersionUpgrade *bool `type:"boolean"`
9334
9335	// The node group (shard) identifier. This parameter is stored as a lowercase
9336	// string.
9337	//
9338	// Constraints:
9339	//
9340	//    * A name must contain from 1 to 50 alphanumeric characters or hyphens.
9341	//
9342	//    * The first character must be a letter.
9343	//
9344	//    * A name cannot end with a hyphen or contain two consecutive hyphens.
9345	//
9346	// CacheClusterId is a required field
9347	CacheClusterId *string `type:"string" required:"true"`
9348
9349	// The compute and memory capacity of the nodes in the node group (shard).
9350	//
9351	// The following node types are supported by ElastiCache. Generally speaking,
9352	// the current generation types provide more memory and computational power
9353	// at lower cost when compared to their equivalent previous generation counterparts.
9354	//
9355	//    * General purpose: Current generation: M6g node types (available only
9356	//    for Redis engine version 5.0.6 onward and for Memcached engine version
9357	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
9358	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
9359	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
9360	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
9361	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
9362	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
9363	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
9364	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
9365	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
9366	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
9367	//    cache.m3.2xlarge
9368	//
9369	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
9370	//    cache.c1.xlarge
9371	//
9372	//    * Memory optimized: Current generation: R6g node types (available only
9373	//    for Redis engine version 5.0.6 onward and for Memcached engine version
9374	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
9375	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
9376	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
9377	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
9378	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
9379	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
9380	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
9381	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
9382	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
9383	//
9384	// Additional node type info
9385	//
9386	//    * All current generation instance types are created in Amazon VPC by default.
9387	//
9388	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
9389	//
9390	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
9391	//
9392	//    * Redis configuration variables appendonly and appendfsync are not supported
9393	//    on Redis version 2.8.22 and later.
9394	CacheNodeType *string `type:"string"`
9395
9396	// The name of the parameter group to associate with this cluster. If this argument
9397	// is omitted, the default parameter group for the specified engine is used.
9398	// You cannot use any parameter group which has cluster-enabled='yes' when creating
9399	// a cluster.
9400	CacheParameterGroupName *string `type:"string"`
9401
9402	// A list of security group names to associate with this cluster.
9403	//
9404	// Use this parameter only when you are creating a cluster outside of an Amazon
9405	// Virtual Private Cloud (Amazon VPC).
9406	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
9407
9408	// The name of the subnet group to be used for the cluster.
9409	//
9410	// Use this parameter only when you are creating a cluster in an Amazon Virtual
9411	// Private Cloud (Amazon VPC).
9412	//
9413	// If you're going to launch your cluster in an Amazon VPC, you need to create
9414	// a subnet group before you start creating a cluster. For more information,
9415	// see Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.html).
9416	CacheSubnetGroupName *string `type:"string"`
9417
9418	// The name of the cache engine to be used for this cluster.
9419	//
9420	// Valid values for this parameter are: memcached | redis
9421	Engine *string `type:"string"`
9422
9423	// The version number of the cache engine to be used for this cluster. To view
9424	// the supported cache engine versions, use the DescribeCacheEngineVersions
9425	// operation.
9426	//
9427	// Important: You can upgrade to a newer engine version (see Selecting a Cache
9428	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
9429	// but you cannot downgrade to an earlier engine version. If you want to use
9430	// an earlier engine version, you must delete the existing cluster or replication
9431	// group and create it anew with the earlier engine version.
9432	EngineVersion *string `type:"string"`
9433
9434	// Specifies the destination, format and type of the logs.
9435	LogDeliveryConfigurations []*LogDeliveryConfigurationRequest `locationNameList:"LogDeliveryConfigurationRequest" type:"list"`
9436
9437	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
9438	// (SNS) topic to which notifications are sent.
9439	//
9440	// The Amazon SNS topic owner must be the same as the cluster owner.
9441	NotificationTopicArn *string `type:"string"`
9442
9443	// The initial number of cache nodes that the cluster has.
9444	//
9445	// For clusters running Redis, this value must be 1. For clusters running Memcached,
9446	// this value must be between 1 and 40.
9447	//
9448	// If you need more than 40 nodes for your Memcached cluster, please fill out
9449	// the ElastiCache Limit Increase Request form at http://aws.amazon.com/contact-us/elasticache-node-limit-request/
9450	// (http://aws.amazon.com/contact-us/elasticache-node-limit-request/).
9451	NumCacheNodes *int64 `type:"integer"`
9452
9453	// Specifies whether the nodes in the cluster are created in a single outpost
9454	// or across multiple outposts.
9455	OutpostMode *string `type:"string" enum:"OutpostMode"`
9456
9457	// The port number on which each of the cache nodes accepts connections.
9458	Port *int64 `type:"integer"`
9459
9460	// The EC2 Availability Zone in which the cluster is created.
9461	//
9462	// All nodes belonging to this cluster are placed in the preferred Availability
9463	// Zone. If you want to create your nodes across multiple Availability Zones,
9464	// use PreferredAvailabilityZones.
9465	//
9466	// Default: System chosen Availability Zone.
9467	PreferredAvailabilityZone *string `type:"string"`
9468
9469	// A list of the Availability Zones in which cache nodes are created. The order
9470	// of the zones in the list is not important.
9471	//
9472	// This option is only supported on Memcached.
9473	//
9474	// If you are creating your cluster in an Amazon VPC (recommended) you can only
9475	// locate nodes in Availability Zones that are associated with the subnets in
9476	// the selected subnet group.
9477	//
9478	// The number of Availability Zones listed must equal the value of NumCacheNodes.
9479	//
9480	// If you want all the nodes in the same Availability Zone, use PreferredAvailabilityZone
9481	// instead, or repeat the Availability Zone multiple times in the list.
9482	//
9483	// Default: System chosen Availability Zones.
9484	PreferredAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
9485
9486	// Specifies the weekly time range during which maintenance on the cluster is
9487	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
9488	// (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid
9489	// values for ddd are:
9490	PreferredMaintenanceWindow *string `type:"string"`
9491
9492	// The outpost ARN in which the cache cluster is created.
9493	PreferredOutpostArn *string `type:"string"`
9494
9495	// The outpost ARNs in which the cache cluster is created.
9496	PreferredOutpostArns []*string `locationNameList:"PreferredOutpostArn" type:"list"`
9497
9498	// The ID of the replication group to which this cluster should belong. If this
9499	// parameter is specified, the cluster is added to the specified replication
9500	// group as a read replica; otherwise, the cluster is a standalone primary that
9501	// is not part of any replication group.
9502	//
9503	// If the specified replication group is Multi-AZ enabled and the Availability
9504	// Zone is not specified, the cluster is created in Availability Zones that
9505	// provide the best spread of read replicas across Availability Zones.
9506	//
9507	// This parameter is only valid if the Engine parameter is redis.
9508	ReplicationGroupId *string `type:"string"`
9509
9510	// One or more VPC security groups associated with the cluster.
9511	//
9512	// Use this parameter only when you are creating a cluster in an Amazon Virtual
9513	// Private Cloud (Amazon VPC).
9514	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
9515
9516	// A single-element string list containing an Amazon Resource Name (ARN) that
9517	// uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot
9518	// file is used to populate the node group (shard). The Amazon S3 object name
9519	// in the ARN cannot contain any commas.
9520	//
9521	// This parameter is only valid if the Engine parameter is redis.
9522	//
9523	// Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
9524	SnapshotArns []*string `locationNameList:"SnapshotArn" type:"list"`
9525
9526	// The name of a Redis snapshot from which to restore data into the new node
9527	// group (shard). The snapshot status changes to restoring while the new node
9528	// group (shard) is being created.
9529	//
9530	// This parameter is only valid if the Engine parameter is redis.
9531	SnapshotName *string `type:"string"`
9532
9533	// The number of days for which ElastiCache retains automatic snapshots before
9534	// deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot
9535	// taken today is retained for 5 days before being deleted.
9536	//
9537	// This parameter is only valid if the Engine parameter is redis.
9538	//
9539	// Default: 0 (i.e., automatic backups are disabled for this cache cluster).
9540	SnapshotRetentionLimit *int64 `type:"integer"`
9541
9542	// The daily time range (in UTC) during which ElastiCache begins taking a daily
9543	// snapshot of your node group (shard).
9544	//
9545	// Example: 05:00-09:00
9546	//
9547	// If you do not specify this parameter, ElastiCache automatically chooses an
9548	// appropriate time range.
9549	//
9550	// This parameter is only valid if the Engine parameter is redis.
9551	SnapshotWindow *string `type:"string"`
9552
9553	// A list of tags to be added to this resource.
9554	Tags []*Tag `locationNameList:"Tag" type:"list"`
9555}
9556
9557// String returns the string representation
9558func (s CreateCacheClusterInput) String() string {
9559	return awsutil.Prettify(s)
9560}
9561
9562// GoString returns the string representation
9563func (s CreateCacheClusterInput) GoString() string {
9564	return s.String()
9565}
9566
9567// Validate inspects the fields of the type to determine if they are valid.
9568func (s *CreateCacheClusterInput) Validate() error {
9569	invalidParams := request.ErrInvalidParams{Context: "CreateCacheClusterInput"}
9570	if s.CacheClusterId == nil {
9571		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
9572	}
9573
9574	if invalidParams.Len() > 0 {
9575		return invalidParams
9576	}
9577	return nil
9578}
9579
9580// SetAZMode sets the AZMode field's value.
9581func (s *CreateCacheClusterInput) SetAZMode(v string) *CreateCacheClusterInput {
9582	s.AZMode = &v
9583	return s
9584}
9585
9586// SetAuthToken sets the AuthToken field's value.
9587func (s *CreateCacheClusterInput) SetAuthToken(v string) *CreateCacheClusterInput {
9588	s.AuthToken = &v
9589	return s
9590}
9591
9592// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
9593func (s *CreateCacheClusterInput) SetAutoMinorVersionUpgrade(v bool) *CreateCacheClusterInput {
9594	s.AutoMinorVersionUpgrade = &v
9595	return s
9596}
9597
9598// SetCacheClusterId sets the CacheClusterId field's value.
9599func (s *CreateCacheClusterInput) SetCacheClusterId(v string) *CreateCacheClusterInput {
9600	s.CacheClusterId = &v
9601	return s
9602}
9603
9604// SetCacheNodeType sets the CacheNodeType field's value.
9605func (s *CreateCacheClusterInput) SetCacheNodeType(v string) *CreateCacheClusterInput {
9606	s.CacheNodeType = &v
9607	return s
9608}
9609
9610// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
9611func (s *CreateCacheClusterInput) SetCacheParameterGroupName(v string) *CreateCacheClusterInput {
9612	s.CacheParameterGroupName = &v
9613	return s
9614}
9615
9616// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
9617func (s *CreateCacheClusterInput) SetCacheSecurityGroupNames(v []*string) *CreateCacheClusterInput {
9618	s.CacheSecurityGroupNames = v
9619	return s
9620}
9621
9622// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
9623func (s *CreateCacheClusterInput) SetCacheSubnetGroupName(v string) *CreateCacheClusterInput {
9624	s.CacheSubnetGroupName = &v
9625	return s
9626}
9627
9628// SetEngine sets the Engine field's value.
9629func (s *CreateCacheClusterInput) SetEngine(v string) *CreateCacheClusterInput {
9630	s.Engine = &v
9631	return s
9632}
9633
9634// SetEngineVersion sets the EngineVersion field's value.
9635func (s *CreateCacheClusterInput) SetEngineVersion(v string) *CreateCacheClusterInput {
9636	s.EngineVersion = &v
9637	return s
9638}
9639
9640// SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
9641func (s *CreateCacheClusterInput) SetLogDeliveryConfigurations(v []*LogDeliveryConfigurationRequest) *CreateCacheClusterInput {
9642	s.LogDeliveryConfigurations = v
9643	return s
9644}
9645
9646// SetNotificationTopicArn sets the NotificationTopicArn field's value.
9647func (s *CreateCacheClusterInput) SetNotificationTopicArn(v string) *CreateCacheClusterInput {
9648	s.NotificationTopicArn = &v
9649	return s
9650}
9651
9652// SetNumCacheNodes sets the NumCacheNodes field's value.
9653func (s *CreateCacheClusterInput) SetNumCacheNodes(v int64) *CreateCacheClusterInput {
9654	s.NumCacheNodes = &v
9655	return s
9656}
9657
9658// SetOutpostMode sets the OutpostMode field's value.
9659func (s *CreateCacheClusterInput) SetOutpostMode(v string) *CreateCacheClusterInput {
9660	s.OutpostMode = &v
9661	return s
9662}
9663
9664// SetPort sets the Port field's value.
9665func (s *CreateCacheClusterInput) SetPort(v int64) *CreateCacheClusterInput {
9666	s.Port = &v
9667	return s
9668}
9669
9670// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
9671func (s *CreateCacheClusterInput) SetPreferredAvailabilityZone(v string) *CreateCacheClusterInput {
9672	s.PreferredAvailabilityZone = &v
9673	return s
9674}
9675
9676// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
9677func (s *CreateCacheClusterInput) SetPreferredAvailabilityZones(v []*string) *CreateCacheClusterInput {
9678	s.PreferredAvailabilityZones = v
9679	return s
9680}
9681
9682// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
9683func (s *CreateCacheClusterInput) SetPreferredMaintenanceWindow(v string) *CreateCacheClusterInput {
9684	s.PreferredMaintenanceWindow = &v
9685	return s
9686}
9687
9688// SetPreferredOutpostArn sets the PreferredOutpostArn field's value.
9689func (s *CreateCacheClusterInput) SetPreferredOutpostArn(v string) *CreateCacheClusterInput {
9690	s.PreferredOutpostArn = &v
9691	return s
9692}
9693
9694// SetPreferredOutpostArns sets the PreferredOutpostArns field's value.
9695func (s *CreateCacheClusterInput) SetPreferredOutpostArns(v []*string) *CreateCacheClusterInput {
9696	s.PreferredOutpostArns = v
9697	return s
9698}
9699
9700// SetReplicationGroupId sets the ReplicationGroupId field's value.
9701func (s *CreateCacheClusterInput) SetReplicationGroupId(v string) *CreateCacheClusterInput {
9702	s.ReplicationGroupId = &v
9703	return s
9704}
9705
9706// SetSecurityGroupIds sets the SecurityGroupIds field's value.
9707func (s *CreateCacheClusterInput) SetSecurityGroupIds(v []*string) *CreateCacheClusterInput {
9708	s.SecurityGroupIds = v
9709	return s
9710}
9711
9712// SetSnapshotArns sets the SnapshotArns field's value.
9713func (s *CreateCacheClusterInput) SetSnapshotArns(v []*string) *CreateCacheClusterInput {
9714	s.SnapshotArns = v
9715	return s
9716}
9717
9718// SetSnapshotName sets the SnapshotName field's value.
9719func (s *CreateCacheClusterInput) SetSnapshotName(v string) *CreateCacheClusterInput {
9720	s.SnapshotName = &v
9721	return s
9722}
9723
9724// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
9725func (s *CreateCacheClusterInput) SetSnapshotRetentionLimit(v int64) *CreateCacheClusterInput {
9726	s.SnapshotRetentionLimit = &v
9727	return s
9728}
9729
9730// SetSnapshotWindow sets the SnapshotWindow field's value.
9731func (s *CreateCacheClusterInput) SetSnapshotWindow(v string) *CreateCacheClusterInput {
9732	s.SnapshotWindow = &v
9733	return s
9734}
9735
9736// SetTags sets the Tags field's value.
9737func (s *CreateCacheClusterInput) SetTags(v []*Tag) *CreateCacheClusterInput {
9738	s.Tags = v
9739	return s
9740}
9741
9742type CreateCacheClusterOutput struct {
9743	_ struct{} `type:"structure"`
9744
9745	// Contains all of the attributes of a specific cluster.
9746	CacheCluster *CacheCluster `type:"structure"`
9747}
9748
9749// String returns the string representation
9750func (s CreateCacheClusterOutput) String() string {
9751	return awsutil.Prettify(s)
9752}
9753
9754// GoString returns the string representation
9755func (s CreateCacheClusterOutput) GoString() string {
9756	return s.String()
9757}
9758
9759// SetCacheCluster sets the CacheCluster field's value.
9760func (s *CreateCacheClusterOutput) SetCacheCluster(v *CacheCluster) *CreateCacheClusterOutput {
9761	s.CacheCluster = v
9762	return s
9763}
9764
9765// Represents the input of a CreateCacheParameterGroup operation.
9766type CreateCacheParameterGroupInput struct {
9767	_ struct{} `type:"structure"`
9768
9769	// The name of the cache parameter group family that the cache parameter group
9770	// can be used with.
9771	//
9772	// Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 |
9773	// redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |
9774	//
9775	// CacheParameterGroupFamily is a required field
9776	CacheParameterGroupFamily *string `type:"string" required:"true"`
9777
9778	// A user-specified name for the cache parameter group.
9779	//
9780	// CacheParameterGroupName is a required field
9781	CacheParameterGroupName *string `type:"string" required:"true"`
9782
9783	// A user-specified description for the cache parameter group.
9784	//
9785	// Description is a required field
9786	Description *string `type:"string" required:"true"`
9787
9788	// A list of tags to be added to this resource. A tag is a key-value pair. A
9789	// tag key must be accompanied by a tag value, although null is accepted.
9790	Tags []*Tag `locationNameList:"Tag" type:"list"`
9791}
9792
9793// String returns the string representation
9794func (s CreateCacheParameterGroupInput) String() string {
9795	return awsutil.Prettify(s)
9796}
9797
9798// GoString returns the string representation
9799func (s CreateCacheParameterGroupInput) GoString() string {
9800	return s.String()
9801}
9802
9803// Validate inspects the fields of the type to determine if they are valid.
9804func (s *CreateCacheParameterGroupInput) Validate() error {
9805	invalidParams := request.ErrInvalidParams{Context: "CreateCacheParameterGroupInput"}
9806	if s.CacheParameterGroupFamily == nil {
9807		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupFamily"))
9808	}
9809	if s.CacheParameterGroupName == nil {
9810		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
9811	}
9812	if s.Description == nil {
9813		invalidParams.Add(request.NewErrParamRequired("Description"))
9814	}
9815
9816	if invalidParams.Len() > 0 {
9817		return invalidParams
9818	}
9819	return nil
9820}
9821
9822// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
9823func (s *CreateCacheParameterGroupInput) SetCacheParameterGroupFamily(v string) *CreateCacheParameterGroupInput {
9824	s.CacheParameterGroupFamily = &v
9825	return s
9826}
9827
9828// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
9829func (s *CreateCacheParameterGroupInput) SetCacheParameterGroupName(v string) *CreateCacheParameterGroupInput {
9830	s.CacheParameterGroupName = &v
9831	return s
9832}
9833
9834// SetDescription sets the Description field's value.
9835func (s *CreateCacheParameterGroupInput) SetDescription(v string) *CreateCacheParameterGroupInput {
9836	s.Description = &v
9837	return s
9838}
9839
9840// SetTags sets the Tags field's value.
9841func (s *CreateCacheParameterGroupInput) SetTags(v []*Tag) *CreateCacheParameterGroupInput {
9842	s.Tags = v
9843	return s
9844}
9845
9846type CreateCacheParameterGroupOutput struct {
9847	_ struct{} `type:"structure"`
9848
9849	// Represents the output of a CreateCacheParameterGroup operation.
9850	CacheParameterGroup *CacheParameterGroup `type:"structure"`
9851}
9852
9853// String returns the string representation
9854func (s CreateCacheParameterGroupOutput) String() string {
9855	return awsutil.Prettify(s)
9856}
9857
9858// GoString returns the string representation
9859func (s CreateCacheParameterGroupOutput) GoString() string {
9860	return s.String()
9861}
9862
9863// SetCacheParameterGroup sets the CacheParameterGroup field's value.
9864func (s *CreateCacheParameterGroupOutput) SetCacheParameterGroup(v *CacheParameterGroup) *CreateCacheParameterGroupOutput {
9865	s.CacheParameterGroup = v
9866	return s
9867}
9868
9869// Represents the input of a CreateCacheSecurityGroup operation.
9870type CreateCacheSecurityGroupInput struct {
9871	_ struct{} `type:"structure"`
9872
9873	// A name for the cache security group. This value is stored as a lowercase
9874	// string.
9875	//
9876	// Constraints: Must contain no more than 255 alphanumeric characters. Cannot
9877	// be the word "Default".
9878	//
9879	// Example: mysecuritygroup
9880	//
9881	// CacheSecurityGroupName is a required field
9882	CacheSecurityGroupName *string `type:"string" required:"true"`
9883
9884	// A description for the cache security group.
9885	//
9886	// Description is a required field
9887	Description *string `type:"string" required:"true"`
9888
9889	// A list of tags to be added to this resource. A tag is a key-value pair. A
9890	// tag key must be accompanied by a tag value, although null is accepted.
9891	Tags []*Tag `locationNameList:"Tag" type:"list"`
9892}
9893
9894// String returns the string representation
9895func (s CreateCacheSecurityGroupInput) String() string {
9896	return awsutil.Prettify(s)
9897}
9898
9899// GoString returns the string representation
9900func (s CreateCacheSecurityGroupInput) GoString() string {
9901	return s.String()
9902}
9903
9904// Validate inspects the fields of the type to determine if they are valid.
9905func (s *CreateCacheSecurityGroupInput) Validate() error {
9906	invalidParams := request.ErrInvalidParams{Context: "CreateCacheSecurityGroupInput"}
9907	if s.CacheSecurityGroupName == nil {
9908		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
9909	}
9910	if s.Description == nil {
9911		invalidParams.Add(request.NewErrParamRequired("Description"))
9912	}
9913
9914	if invalidParams.Len() > 0 {
9915		return invalidParams
9916	}
9917	return nil
9918}
9919
9920// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
9921func (s *CreateCacheSecurityGroupInput) SetCacheSecurityGroupName(v string) *CreateCacheSecurityGroupInput {
9922	s.CacheSecurityGroupName = &v
9923	return s
9924}
9925
9926// SetDescription sets the Description field's value.
9927func (s *CreateCacheSecurityGroupInput) SetDescription(v string) *CreateCacheSecurityGroupInput {
9928	s.Description = &v
9929	return s
9930}
9931
9932// SetTags sets the Tags field's value.
9933func (s *CreateCacheSecurityGroupInput) SetTags(v []*Tag) *CreateCacheSecurityGroupInput {
9934	s.Tags = v
9935	return s
9936}
9937
9938type CreateCacheSecurityGroupOutput struct {
9939	_ struct{} `type:"structure"`
9940
9941	// Represents the output of one of the following operations:
9942	//
9943	//    * AuthorizeCacheSecurityGroupIngress
9944	//
9945	//    * CreateCacheSecurityGroup
9946	//
9947	//    * RevokeCacheSecurityGroupIngress
9948	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
9949}
9950
9951// String returns the string representation
9952func (s CreateCacheSecurityGroupOutput) String() string {
9953	return awsutil.Prettify(s)
9954}
9955
9956// GoString returns the string representation
9957func (s CreateCacheSecurityGroupOutput) GoString() string {
9958	return s.String()
9959}
9960
9961// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
9962func (s *CreateCacheSecurityGroupOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *CreateCacheSecurityGroupOutput {
9963	s.CacheSecurityGroup = v
9964	return s
9965}
9966
9967// Represents the input of a CreateCacheSubnetGroup operation.
9968type CreateCacheSubnetGroupInput struct {
9969	_ struct{} `type:"structure"`
9970
9971	// A description for the cache subnet group.
9972	//
9973	// CacheSubnetGroupDescription is a required field
9974	CacheSubnetGroupDescription *string `type:"string" required:"true"`
9975
9976	// A name for the cache subnet group. This value is stored as a lowercase string.
9977	//
9978	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
9979	//
9980	// Example: mysubnetgroup
9981	//
9982	// CacheSubnetGroupName is a required field
9983	CacheSubnetGroupName *string `type:"string" required:"true"`
9984
9985	// A list of VPC subnet IDs for the cache subnet group.
9986	//
9987	// SubnetIds is a required field
9988	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list" required:"true"`
9989
9990	// A list of tags to be added to this resource. A tag is a key-value pair. A
9991	// tag key must be accompanied by a tag value, although null is accepted.
9992	Tags []*Tag `locationNameList:"Tag" type:"list"`
9993}
9994
9995// String returns the string representation
9996func (s CreateCacheSubnetGroupInput) String() string {
9997	return awsutil.Prettify(s)
9998}
9999
10000// GoString returns the string representation
10001func (s CreateCacheSubnetGroupInput) GoString() string {
10002	return s.String()
10003}
10004
10005// Validate inspects the fields of the type to determine if they are valid.
10006func (s *CreateCacheSubnetGroupInput) Validate() error {
10007	invalidParams := request.ErrInvalidParams{Context: "CreateCacheSubnetGroupInput"}
10008	if s.CacheSubnetGroupDescription == nil {
10009		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupDescription"))
10010	}
10011	if s.CacheSubnetGroupName == nil {
10012		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
10013	}
10014	if s.SubnetIds == nil {
10015		invalidParams.Add(request.NewErrParamRequired("SubnetIds"))
10016	}
10017
10018	if invalidParams.Len() > 0 {
10019		return invalidParams
10020	}
10021	return nil
10022}
10023
10024// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
10025func (s *CreateCacheSubnetGroupInput) SetCacheSubnetGroupDescription(v string) *CreateCacheSubnetGroupInput {
10026	s.CacheSubnetGroupDescription = &v
10027	return s
10028}
10029
10030// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
10031func (s *CreateCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *CreateCacheSubnetGroupInput {
10032	s.CacheSubnetGroupName = &v
10033	return s
10034}
10035
10036// SetSubnetIds sets the SubnetIds field's value.
10037func (s *CreateCacheSubnetGroupInput) SetSubnetIds(v []*string) *CreateCacheSubnetGroupInput {
10038	s.SubnetIds = v
10039	return s
10040}
10041
10042// SetTags sets the Tags field's value.
10043func (s *CreateCacheSubnetGroupInput) SetTags(v []*Tag) *CreateCacheSubnetGroupInput {
10044	s.Tags = v
10045	return s
10046}
10047
10048type CreateCacheSubnetGroupOutput struct {
10049	_ struct{} `type:"structure"`
10050
10051	// Represents the output of one of the following operations:
10052	//
10053	//    * CreateCacheSubnetGroup
10054	//
10055	//    * ModifyCacheSubnetGroup
10056	CacheSubnetGroup *CacheSubnetGroup `type:"structure"`
10057}
10058
10059// String returns the string representation
10060func (s CreateCacheSubnetGroupOutput) String() string {
10061	return awsutil.Prettify(s)
10062}
10063
10064// GoString returns the string representation
10065func (s CreateCacheSubnetGroupOutput) GoString() string {
10066	return s.String()
10067}
10068
10069// SetCacheSubnetGroup sets the CacheSubnetGroup field's value.
10070func (s *CreateCacheSubnetGroupOutput) SetCacheSubnetGroup(v *CacheSubnetGroup) *CreateCacheSubnetGroupOutput {
10071	s.CacheSubnetGroup = v
10072	return s
10073}
10074
10075type CreateGlobalReplicationGroupInput struct {
10076	_ struct{} `type:"structure"`
10077
10078	// Provides details of the Global datastore
10079	GlobalReplicationGroupDescription *string `type:"string"`
10080
10081	// The suffix name of a Global datastore. Amazon ElastiCache automatically applies
10082	// a prefix to the Global datastore ID when it is created. Each Amazon Region
10083	// has its own prefix. For instance, a Global datastore ID created in the US-West-1
10084	// region will begin with "dsdfu" along with the suffix name you provide. The
10085	// suffix, combined with the auto-generated prefix, guarantees uniqueness of
10086	// the Global datastore name across multiple regions.
10087	//
10088	// For a full list of Amazon Regions and their respective Global datastore iD
10089	// prefixes, see Using the Amazon CLI with Global datastores (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Redis-Global-Datastores-CLI.html).
10090	//
10091	// GlobalReplicationGroupIdSuffix is a required field
10092	GlobalReplicationGroupIdSuffix *string `type:"string" required:"true"`
10093
10094	// The name of the primary cluster that accepts writes and will replicate updates
10095	// to the secondary cluster.
10096	//
10097	// PrimaryReplicationGroupId is a required field
10098	PrimaryReplicationGroupId *string `type:"string" required:"true"`
10099}
10100
10101// String returns the string representation
10102func (s CreateGlobalReplicationGroupInput) String() string {
10103	return awsutil.Prettify(s)
10104}
10105
10106// GoString returns the string representation
10107func (s CreateGlobalReplicationGroupInput) GoString() string {
10108	return s.String()
10109}
10110
10111// Validate inspects the fields of the type to determine if they are valid.
10112func (s *CreateGlobalReplicationGroupInput) Validate() error {
10113	invalidParams := request.ErrInvalidParams{Context: "CreateGlobalReplicationGroupInput"}
10114	if s.GlobalReplicationGroupIdSuffix == nil {
10115		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupIdSuffix"))
10116	}
10117	if s.PrimaryReplicationGroupId == nil {
10118		invalidParams.Add(request.NewErrParamRequired("PrimaryReplicationGroupId"))
10119	}
10120
10121	if invalidParams.Len() > 0 {
10122		return invalidParams
10123	}
10124	return nil
10125}
10126
10127// SetGlobalReplicationGroupDescription sets the GlobalReplicationGroupDescription field's value.
10128func (s *CreateGlobalReplicationGroupInput) SetGlobalReplicationGroupDescription(v string) *CreateGlobalReplicationGroupInput {
10129	s.GlobalReplicationGroupDescription = &v
10130	return s
10131}
10132
10133// SetGlobalReplicationGroupIdSuffix sets the GlobalReplicationGroupIdSuffix field's value.
10134func (s *CreateGlobalReplicationGroupInput) SetGlobalReplicationGroupIdSuffix(v string) *CreateGlobalReplicationGroupInput {
10135	s.GlobalReplicationGroupIdSuffix = &v
10136	return s
10137}
10138
10139// SetPrimaryReplicationGroupId sets the PrimaryReplicationGroupId field's value.
10140func (s *CreateGlobalReplicationGroupInput) SetPrimaryReplicationGroupId(v string) *CreateGlobalReplicationGroupInput {
10141	s.PrimaryReplicationGroupId = &v
10142	return s
10143}
10144
10145type CreateGlobalReplicationGroupOutput struct {
10146	_ struct{} `type:"structure"`
10147
10148	// Consists of a primary cluster that accepts writes and an associated secondary
10149	// cluster that resides in a different Amazon region. The secondary cluster
10150	// accepts only reads. The primary cluster automatically replicates updates
10151	// to the secondary cluster.
10152	//
10153	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
10154	//    datastore, which is what you use to associate a secondary cluster.
10155	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
10156}
10157
10158// String returns the string representation
10159func (s CreateGlobalReplicationGroupOutput) String() string {
10160	return awsutil.Prettify(s)
10161}
10162
10163// GoString returns the string representation
10164func (s CreateGlobalReplicationGroupOutput) GoString() string {
10165	return s.String()
10166}
10167
10168// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
10169func (s *CreateGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *CreateGlobalReplicationGroupOutput {
10170	s.GlobalReplicationGroup = v
10171	return s
10172}
10173
10174// Represents the input of a CreateReplicationGroup operation.
10175type CreateReplicationGroupInput struct {
10176	_ struct{} `type:"structure"`
10177
10178	// A flag that enables encryption at rest when set to true.
10179	//
10180	// You cannot modify the value of AtRestEncryptionEnabled after the replication
10181	// group is created. To enable encryption at rest on a replication group you
10182	// must set AtRestEncryptionEnabled to true when you create the replication
10183	// group.
10184	//
10185	// Required: Only available when creating a replication group in an Amazon VPC
10186	// using redis version 3.2.6, 4.x or later.
10187	//
10188	// Default: false
10189	AtRestEncryptionEnabled *bool `type:"boolean"`
10190
10191	// Reserved parameter. The password used to access a password protected server.
10192	//
10193	// AuthToken can be specified only on replication groups where TransitEncryptionEnabled
10194	// is true.
10195	//
10196	// For HIPAA compliance, you must specify TransitEncryptionEnabled as true,
10197	// an AuthToken, and a CacheSubnetGroup.
10198	//
10199	// Password constraints:
10200	//
10201	//    * Must be only printable ASCII characters.
10202	//
10203	//    * Must be at least 16 characters and no more than 128 characters in length.
10204	//
10205	//    * The only permitted printable special characters are !, &, #, $, ^, <,
10206	//    >, and -. Other printable special characters cannot be used in the AUTH
10207	//    token.
10208	//
10209	// For more information, see AUTH password (http://redis.io/commands/AUTH) at
10210	// http://redis.io/commands/AUTH.
10211	AuthToken *string `type:"string"`
10212
10213	// This parameter is currently disabled.
10214	AutoMinorVersionUpgrade *bool `type:"boolean"`
10215
10216	// Specifies whether a read-only replica is automatically promoted to read/write
10217	// primary if the existing primary fails.
10218	//
10219	// AutomaticFailoverEnabled must be enabled for Redis (cluster mode enabled)
10220	// replication groups.
10221	//
10222	// Default: false
10223	AutomaticFailoverEnabled *bool `type:"boolean"`
10224
10225	// The compute and memory capacity of the nodes in the node group (shard).
10226	//
10227	// The following node types are supported by ElastiCache. Generally speaking,
10228	// the current generation types provide more memory and computational power
10229	// at lower cost when compared to their equivalent previous generation counterparts.
10230	//
10231	//    * General purpose: Current generation: M6g node types (available only
10232	//    for Redis engine version 5.0.6 onward and for Memcached engine version
10233	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
10234	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
10235	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
10236	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
10237	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
10238	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
10239	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
10240	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
10241	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
10242	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
10243	//    cache.m3.2xlarge
10244	//
10245	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
10246	//    cache.c1.xlarge
10247	//
10248	//    * Memory optimized: Current generation: R6g node types (available only
10249	//    for Redis engine version 5.0.6 onward and for Memcached engine version
10250	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
10251	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
10252	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
10253	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
10254	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
10255	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
10256	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
10257	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
10258	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
10259	//
10260	// Additional node type info
10261	//
10262	//    * All current generation instance types are created in Amazon VPC by default.
10263	//
10264	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
10265	//
10266	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
10267	//
10268	//    * Redis configuration variables appendonly and appendfsync are not supported
10269	//    on Redis version 2.8.22 and later.
10270	CacheNodeType *string `type:"string"`
10271
10272	// The name of the parameter group to associate with this replication group.
10273	// If this argument is omitted, the default cache parameter group for the specified
10274	// engine is used.
10275	//
10276	// If you are running Redis version 3.2.4 or later, only one node group (shard),
10277	// and want to use a default parameter group, we recommend that you specify
10278	// the parameter group by name.
10279	//
10280	//    * To create a Redis (cluster mode disabled) replication group, use CacheParameterGroupName=default.redis3.2.
10281	//
10282	//    * To create a Redis (cluster mode enabled) replication group, use CacheParameterGroupName=default.redis3.2.cluster.on.
10283	CacheParameterGroupName *string `type:"string"`
10284
10285	// A list of cache security group names to associate with this replication group.
10286	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
10287
10288	// The name of the cache subnet group to be used for the replication group.
10289	//
10290	// If you're going to launch your cluster in an Amazon VPC, you need to create
10291	// a subnet group before you start creating a cluster. For more information,
10292	// see Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.html).
10293	CacheSubnetGroupName *string `type:"string"`
10294
10295	// The name of the cache engine to be used for the clusters in this replication
10296	// group. Must be Redis.
10297	Engine *string `type:"string"`
10298
10299	// The version number of the cache engine to be used for the clusters in this
10300	// replication group. To view the supported cache engine versions, use the DescribeCacheEngineVersions
10301	// operation.
10302	//
10303	// Important: You can upgrade to a newer engine version (see Selecting a Cache
10304	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement))
10305	// in the ElastiCache User Guide, but you cannot downgrade to an earlier engine
10306	// version. If you want to use an earlier engine version, you must delete the
10307	// existing cluster or replication group and create it anew with the earlier
10308	// engine version.
10309	EngineVersion *string `type:"string"`
10310
10311	// The name of the Global datastore
10312	GlobalReplicationGroupId *string `type:"string"`
10313
10314	// The ID of the KMS key used to encrypt the disk in the cluster.
10315	KmsKeyId *string `type:"string"`
10316
10317	// Specifies the destination, format and type of the logs.
10318	LogDeliveryConfigurations []*LogDeliveryConfigurationRequest `locationNameList:"LogDeliveryConfigurationRequest" type:"list"`
10319
10320	// A flag indicating if you have Multi-AZ enabled to enhance fault tolerance.
10321	// For more information, see Minimizing Downtime: Multi-AZ (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html).
10322	MultiAZEnabled *bool `type:"boolean"`
10323
10324	// A list of node group (shard) configuration options. Each node group (shard)
10325	// configuration has the following members: PrimaryAvailabilityZone, ReplicaAvailabilityZones,
10326	// ReplicaCount, and Slots.
10327	//
10328	// If you're creating a Redis (cluster mode disabled) or a Redis (cluster mode
10329	// enabled) replication group, you can use this parameter to individually configure
10330	// each node group (shard), or you can omit this parameter. However, it is required
10331	// when seeding a Redis (cluster mode enabled) cluster from a S3 rdb file. You
10332	// must configure each node group (shard) using this parameter because you must
10333	// specify the slots for each node group.
10334	NodeGroupConfiguration []*NodeGroupConfiguration `locationNameList:"NodeGroupConfiguration" type:"list"`
10335
10336	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
10337	// (SNS) topic to which notifications are sent.
10338	//
10339	// The Amazon SNS topic owner must be the same as the cluster owner.
10340	NotificationTopicArn *string `type:"string"`
10341
10342	// The number of clusters this replication group initially has.
10343	//
10344	// This parameter is not used if there is more than one node group (shard).
10345	// You should use ReplicasPerNodeGroup instead.
10346	//
10347	// If AutomaticFailoverEnabled is true, the value of this parameter must be
10348	// at least 2. If AutomaticFailoverEnabled is false you can omit this parameter
10349	// (it will default to 1), or you can explicitly set it to a value between 2
10350	// and 6.
10351	//
10352	// The maximum permitted value for NumCacheClusters is 6 (1 primary plus 5 replicas).
10353	NumCacheClusters *int64 `type:"integer"`
10354
10355	// An optional parameter that specifies the number of node groups (shards) for
10356	// this Redis (cluster mode enabled) replication group. For Redis (cluster mode
10357	// disabled) either omit this parameter or set it to 1.
10358	//
10359	// Default: 1
10360	NumNodeGroups *int64 `type:"integer"`
10361
10362	// The port number on which each member of the replication group accepts connections.
10363	Port *int64 `type:"integer"`
10364
10365	// A list of EC2 Availability Zones in which the replication group's clusters
10366	// are created. The order of the Availability Zones in the list is the order
10367	// in which clusters are allocated. The primary cluster is created in the first
10368	// AZ in the list.
10369	//
10370	// This parameter is not used if there is more than one node group (shard).
10371	// You should use NodeGroupConfiguration instead.
10372	//
10373	// If you are creating your replication group in an Amazon VPC (recommended),
10374	// you can only locate clusters in Availability Zones associated with the subnets
10375	// in the selected subnet group.
10376	//
10377	// The number of Availability Zones listed must equal the value of NumCacheClusters.
10378	//
10379	// Default: system chosen Availability Zones.
10380	PreferredCacheClusterAZs []*string `locationNameList:"AvailabilityZone" type:"list"`
10381
10382	// Specifies the weekly time range during which maintenance on the cluster is
10383	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
10384	// (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid
10385	// values for ddd are:
10386	//
10387	// Specifies the weekly time range during which maintenance on the cluster is
10388	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
10389	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
10390	//
10391	// Valid values for ddd are:
10392	//
10393	//    * sun
10394	//
10395	//    * mon
10396	//
10397	//    * tue
10398	//
10399	//    * wed
10400	//
10401	//    * thu
10402	//
10403	//    * fri
10404	//
10405	//    * sat
10406	//
10407	// Example: sun:23:00-mon:01:30
10408	PreferredMaintenanceWindow *string `type:"string"`
10409
10410	// The identifier of the cluster that serves as the primary for this replication
10411	// group. This cluster must already exist and have a status of available.
10412	//
10413	// This parameter is not required if NumCacheClusters, NumNodeGroups, or ReplicasPerNodeGroup
10414	// is specified.
10415	PrimaryClusterId *string `type:"string"`
10416
10417	// An optional parameter that specifies the number of replica nodes in each
10418	// node group (shard). Valid values are 0 to 5.
10419	ReplicasPerNodeGroup *int64 `type:"integer"`
10420
10421	// A user-created description for the replication group.
10422	//
10423	// ReplicationGroupDescription is a required field
10424	ReplicationGroupDescription *string `type:"string" required:"true"`
10425
10426	// The replication group identifier. This parameter is stored as a lowercase
10427	// string.
10428	//
10429	// Constraints:
10430	//
10431	//    * A name must contain from 1 to 40 alphanumeric characters or hyphens.
10432	//
10433	//    * The first character must be a letter.
10434	//
10435	//    * A name cannot end with a hyphen or contain two consecutive hyphens.
10436	//
10437	// ReplicationGroupId is a required field
10438	ReplicationGroupId *string `type:"string" required:"true"`
10439
10440	// One or more Amazon VPC security groups associated with this replication group.
10441	//
10442	// Use this parameter only when you are creating a replication group in an Amazon
10443	// Virtual Private Cloud (Amazon VPC).
10444	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
10445
10446	// A list of Amazon Resource Names (ARN) that uniquely identify the Redis RDB
10447	// snapshot files stored in Amazon S3. The snapshot files are used to populate
10448	// the new replication group. The Amazon S3 object name in the ARN cannot contain
10449	// any commas. The new replication group will have the number of node groups
10450	// (console: shards) specified by the parameter NumNodeGroups or the number
10451	// of node groups configured by NodeGroupConfiguration regardless of the number
10452	// of ARNs specified here.
10453	//
10454	// Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
10455	SnapshotArns []*string `locationNameList:"SnapshotArn" type:"list"`
10456
10457	// The name of a snapshot from which to restore data into the new replication
10458	// group. The snapshot status changes to restoring while the new replication
10459	// group is being created.
10460	SnapshotName *string `type:"string"`
10461
10462	// The number of days for which ElastiCache retains automatic snapshots before
10463	// deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot
10464	// that was taken today is retained for 5 days before being deleted.
10465	//
10466	// Default: 0 (i.e., automatic backups are disabled for this cluster).
10467	SnapshotRetentionLimit *int64 `type:"integer"`
10468
10469	// The daily time range (in UTC) during which ElastiCache begins taking a daily
10470	// snapshot of your node group (shard).
10471	//
10472	// Example: 05:00-09:00
10473	//
10474	// If you do not specify this parameter, ElastiCache automatically chooses an
10475	// appropriate time range.
10476	SnapshotWindow *string `type:"string"`
10477
10478	// A list of tags to be added to this resource. Tags are comma-separated key,value
10479	// pairs (e.g. Key=myKey, Value=myKeyValue. You can include multiple tags as
10480	// shown following: Key=myKey, Value=myKeyValue Key=mySecondKey, Value=mySecondKeyValue.
10481	// Tags on replication groups will be replicated to all nodes.
10482	Tags []*Tag `locationNameList:"Tag" type:"list"`
10483
10484	// A flag that enables in-transit encryption when set to true.
10485	//
10486	// You cannot modify the value of TransitEncryptionEnabled after the cluster
10487	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
10488	// to true when you create a cluster.
10489	//
10490	// This parameter is valid only if the Engine parameter is redis, the EngineVersion
10491	// parameter is 3.2.6, 4.x or later, and the cluster is being created in an
10492	// Amazon VPC.
10493	//
10494	// If you enable in-transit encryption, you must also specify a value for CacheSubnetGroup.
10495	//
10496	// Required: Only available when creating a replication group in an Amazon VPC
10497	// using redis version 3.2.6, 4.x or later.
10498	//
10499	// Default: false
10500	//
10501	// For HIPAA compliance, you must specify TransitEncryptionEnabled as true,
10502	// an AuthToken, and a CacheSubnetGroup.
10503	TransitEncryptionEnabled *bool `type:"boolean"`
10504
10505	// The user group to associate with the replication group.
10506	UserGroupIds []*string `min:"1" type:"list"`
10507}
10508
10509// String returns the string representation
10510func (s CreateReplicationGroupInput) String() string {
10511	return awsutil.Prettify(s)
10512}
10513
10514// GoString returns the string representation
10515func (s CreateReplicationGroupInput) GoString() string {
10516	return s.String()
10517}
10518
10519// Validate inspects the fields of the type to determine if they are valid.
10520func (s *CreateReplicationGroupInput) Validate() error {
10521	invalidParams := request.ErrInvalidParams{Context: "CreateReplicationGroupInput"}
10522	if s.ReplicationGroupDescription == nil {
10523		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupDescription"))
10524	}
10525	if s.ReplicationGroupId == nil {
10526		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
10527	}
10528	if s.UserGroupIds != nil && len(s.UserGroupIds) < 1 {
10529		invalidParams.Add(request.NewErrParamMinLen("UserGroupIds", 1))
10530	}
10531	if s.NodeGroupConfiguration != nil {
10532		for i, v := range s.NodeGroupConfiguration {
10533			if v == nil {
10534				continue
10535			}
10536			if err := v.Validate(); err != nil {
10537				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "NodeGroupConfiguration", i), err.(request.ErrInvalidParams))
10538			}
10539		}
10540	}
10541
10542	if invalidParams.Len() > 0 {
10543		return invalidParams
10544	}
10545	return nil
10546}
10547
10548// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
10549func (s *CreateReplicationGroupInput) SetAtRestEncryptionEnabled(v bool) *CreateReplicationGroupInput {
10550	s.AtRestEncryptionEnabled = &v
10551	return s
10552}
10553
10554// SetAuthToken sets the AuthToken field's value.
10555func (s *CreateReplicationGroupInput) SetAuthToken(v string) *CreateReplicationGroupInput {
10556	s.AuthToken = &v
10557	return s
10558}
10559
10560// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
10561func (s *CreateReplicationGroupInput) SetAutoMinorVersionUpgrade(v bool) *CreateReplicationGroupInput {
10562	s.AutoMinorVersionUpgrade = &v
10563	return s
10564}
10565
10566// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
10567func (s *CreateReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *CreateReplicationGroupInput {
10568	s.AutomaticFailoverEnabled = &v
10569	return s
10570}
10571
10572// SetCacheNodeType sets the CacheNodeType field's value.
10573func (s *CreateReplicationGroupInput) SetCacheNodeType(v string) *CreateReplicationGroupInput {
10574	s.CacheNodeType = &v
10575	return s
10576}
10577
10578// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
10579func (s *CreateReplicationGroupInput) SetCacheParameterGroupName(v string) *CreateReplicationGroupInput {
10580	s.CacheParameterGroupName = &v
10581	return s
10582}
10583
10584// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
10585func (s *CreateReplicationGroupInput) SetCacheSecurityGroupNames(v []*string) *CreateReplicationGroupInput {
10586	s.CacheSecurityGroupNames = v
10587	return s
10588}
10589
10590// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
10591func (s *CreateReplicationGroupInput) SetCacheSubnetGroupName(v string) *CreateReplicationGroupInput {
10592	s.CacheSubnetGroupName = &v
10593	return s
10594}
10595
10596// SetEngine sets the Engine field's value.
10597func (s *CreateReplicationGroupInput) SetEngine(v string) *CreateReplicationGroupInput {
10598	s.Engine = &v
10599	return s
10600}
10601
10602// SetEngineVersion sets the EngineVersion field's value.
10603func (s *CreateReplicationGroupInput) SetEngineVersion(v string) *CreateReplicationGroupInput {
10604	s.EngineVersion = &v
10605	return s
10606}
10607
10608// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
10609func (s *CreateReplicationGroupInput) SetGlobalReplicationGroupId(v string) *CreateReplicationGroupInput {
10610	s.GlobalReplicationGroupId = &v
10611	return s
10612}
10613
10614// SetKmsKeyId sets the KmsKeyId field's value.
10615func (s *CreateReplicationGroupInput) SetKmsKeyId(v string) *CreateReplicationGroupInput {
10616	s.KmsKeyId = &v
10617	return s
10618}
10619
10620// SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
10621func (s *CreateReplicationGroupInput) SetLogDeliveryConfigurations(v []*LogDeliveryConfigurationRequest) *CreateReplicationGroupInput {
10622	s.LogDeliveryConfigurations = v
10623	return s
10624}
10625
10626// SetMultiAZEnabled sets the MultiAZEnabled field's value.
10627func (s *CreateReplicationGroupInput) SetMultiAZEnabled(v bool) *CreateReplicationGroupInput {
10628	s.MultiAZEnabled = &v
10629	return s
10630}
10631
10632// SetNodeGroupConfiguration sets the NodeGroupConfiguration field's value.
10633func (s *CreateReplicationGroupInput) SetNodeGroupConfiguration(v []*NodeGroupConfiguration) *CreateReplicationGroupInput {
10634	s.NodeGroupConfiguration = v
10635	return s
10636}
10637
10638// SetNotificationTopicArn sets the NotificationTopicArn field's value.
10639func (s *CreateReplicationGroupInput) SetNotificationTopicArn(v string) *CreateReplicationGroupInput {
10640	s.NotificationTopicArn = &v
10641	return s
10642}
10643
10644// SetNumCacheClusters sets the NumCacheClusters field's value.
10645func (s *CreateReplicationGroupInput) SetNumCacheClusters(v int64) *CreateReplicationGroupInput {
10646	s.NumCacheClusters = &v
10647	return s
10648}
10649
10650// SetNumNodeGroups sets the NumNodeGroups field's value.
10651func (s *CreateReplicationGroupInput) SetNumNodeGroups(v int64) *CreateReplicationGroupInput {
10652	s.NumNodeGroups = &v
10653	return s
10654}
10655
10656// SetPort sets the Port field's value.
10657func (s *CreateReplicationGroupInput) SetPort(v int64) *CreateReplicationGroupInput {
10658	s.Port = &v
10659	return s
10660}
10661
10662// SetPreferredCacheClusterAZs sets the PreferredCacheClusterAZs field's value.
10663func (s *CreateReplicationGroupInput) SetPreferredCacheClusterAZs(v []*string) *CreateReplicationGroupInput {
10664	s.PreferredCacheClusterAZs = v
10665	return s
10666}
10667
10668// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
10669func (s *CreateReplicationGroupInput) SetPreferredMaintenanceWindow(v string) *CreateReplicationGroupInput {
10670	s.PreferredMaintenanceWindow = &v
10671	return s
10672}
10673
10674// SetPrimaryClusterId sets the PrimaryClusterId field's value.
10675func (s *CreateReplicationGroupInput) SetPrimaryClusterId(v string) *CreateReplicationGroupInput {
10676	s.PrimaryClusterId = &v
10677	return s
10678}
10679
10680// SetReplicasPerNodeGroup sets the ReplicasPerNodeGroup field's value.
10681func (s *CreateReplicationGroupInput) SetReplicasPerNodeGroup(v int64) *CreateReplicationGroupInput {
10682	s.ReplicasPerNodeGroup = &v
10683	return s
10684}
10685
10686// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
10687func (s *CreateReplicationGroupInput) SetReplicationGroupDescription(v string) *CreateReplicationGroupInput {
10688	s.ReplicationGroupDescription = &v
10689	return s
10690}
10691
10692// SetReplicationGroupId sets the ReplicationGroupId field's value.
10693func (s *CreateReplicationGroupInput) SetReplicationGroupId(v string) *CreateReplicationGroupInput {
10694	s.ReplicationGroupId = &v
10695	return s
10696}
10697
10698// SetSecurityGroupIds sets the SecurityGroupIds field's value.
10699func (s *CreateReplicationGroupInput) SetSecurityGroupIds(v []*string) *CreateReplicationGroupInput {
10700	s.SecurityGroupIds = v
10701	return s
10702}
10703
10704// SetSnapshotArns sets the SnapshotArns field's value.
10705func (s *CreateReplicationGroupInput) SetSnapshotArns(v []*string) *CreateReplicationGroupInput {
10706	s.SnapshotArns = v
10707	return s
10708}
10709
10710// SetSnapshotName sets the SnapshotName field's value.
10711func (s *CreateReplicationGroupInput) SetSnapshotName(v string) *CreateReplicationGroupInput {
10712	s.SnapshotName = &v
10713	return s
10714}
10715
10716// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
10717func (s *CreateReplicationGroupInput) SetSnapshotRetentionLimit(v int64) *CreateReplicationGroupInput {
10718	s.SnapshotRetentionLimit = &v
10719	return s
10720}
10721
10722// SetSnapshotWindow sets the SnapshotWindow field's value.
10723func (s *CreateReplicationGroupInput) SetSnapshotWindow(v string) *CreateReplicationGroupInput {
10724	s.SnapshotWindow = &v
10725	return s
10726}
10727
10728// SetTags sets the Tags field's value.
10729func (s *CreateReplicationGroupInput) SetTags(v []*Tag) *CreateReplicationGroupInput {
10730	s.Tags = v
10731	return s
10732}
10733
10734// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
10735func (s *CreateReplicationGroupInput) SetTransitEncryptionEnabled(v bool) *CreateReplicationGroupInput {
10736	s.TransitEncryptionEnabled = &v
10737	return s
10738}
10739
10740// SetUserGroupIds sets the UserGroupIds field's value.
10741func (s *CreateReplicationGroupInput) SetUserGroupIds(v []*string) *CreateReplicationGroupInput {
10742	s.UserGroupIds = v
10743	return s
10744}
10745
10746type CreateReplicationGroupOutput struct {
10747	_ struct{} `type:"structure"`
10748
10749	// Contains all of the attributes of a specific Redis replication group.
10750	ReplicationGroup *ReplicationGroup `type:"structure"`
10751}
10752
10753// String returns the string representation
10754func (s CreateReplicationGroupOutput) String() string {
10755	return awsutil.Prettify(s)
10756}
10757
10758// GoString returns the string representation
10759func (s CreateReplicationGroupOutput) GoString() string {
10760	return s.String()
10761}
10762
10763// SetReplicationGroup sets the ReplicationGroup field's value.
10764func (s *CreateReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *CreateReplicationGroupOutput {
10765	s.ReplicationGroup = v
10766	return s
10767}
10768
10769// Represents the input of a CreateSnapshot operation.
10770type CreateSnapshotInput struct {
10771	_ struct{} `type:"structure"`
10772
10773	// The identifier of an existing cluster. The snapshot is created from this
10774	// cluster.
10775	CacheClusterId *string `type:"string"`
10776
10777	// The ID of the KMS key used to encrypt the snapshot.
10778	KmsKeyId *string `type:"string"`
10779
10780	// The identifier of an existing replication group. The snapshot is created
10781	// from this replication group.
10782	ReplicationGroupId *string `type:"string"`
10783
10784	// A name for the snapshot being created.
10785	//
10786	// SnapshotName is a required field
10787	SnapshotName *string `type:"string" required:"true"`
10788
10789	// A list of tags to be added to this resource. A tag is a key-value pair. A
10790	// tag key must be accompanied by a tag value, although null is accepted.
10791	Tags []*Tag `locationNameList:"Tag" type:"list"`
10792}
10793
10794// String returns the string representation
10795func (s CreateSnapshotInput) String() string {
10796	return awsutil.Prettify(s)
10797}
10798
10799// GoString returns the string representation
10800func (s CreateSnapshotInput) GoString() string {
10801	return s.String()
10802}
10803
10804// Validate inspects the fields of the type to determine if they are valid.
10805func (s *CreateSnapshotInput) Validate() error {
10806	invalidParams := request.ErrInvalidParams{Context: "CreateSnapshotInput"}
10807	if s.SnapshotName == nil {
10808		invalidParams.Add(request.NewErrParamRequired("SnapshotName"))
10809	}
10810
10811	if invalidParams.Len() > 0 {
10812		return invalidParams
10813	}
10814	return nil
10815}
10816
10817// SetCacheClusterId sets the CacheClusterId field's value.
10818func (s *CreateSnapshotInput) SetCacheClusterId(v string) *CreateSnapshotInput {
10819	s.CacheClusterId = &v
10820	return s
10821}
10822
10823// SetKmsKeyId sets the KmsKeyId field's value.
10824func (s *CreateSnapshotInput) SetKmsKeyId(v string) *CreateSnapshotInput {
10825	s.KmsKeyId = &v
10826	return s
10827}
10828
10829// SetReplicationGroupId sets the ReplicationGroupId field's value.
10830func (s *CreateSnapshotInput) SetReplicationGroupId(v string) *CreateSnapshotInput {
10831	s.ReplicationGroupId = &v
10832	return s
10833}
10834
10835// SetSnapshotName sets the SnapshotName field's value.
10836func (s *CreateSnapshotInput) SetSnapshotName(v string) *CreateSnapshotInput {
10837	s.SnapshotName = &v
10838	return s
10839}
10840
10841// SetTags sets the Tags field's value.
10842func (s *CreateSnapshotInput) SetTags(v []*Tag) *CreateSnapshotInput {
10843	s.Tags = v
10844	return s
10845}
10846
10847type CreateSnapshotOutput struct {
10848	_ struct{} `type:"structure"`
10849
10850	// Represents a copy of an entire Redis cluster as of the time when the snapshot
10851	// was taken.
10852	Snapshot *Snapshot `type:"structure"`
10853}
10854
10855// String returns the string representation
10856func (s CreateSnapshotOutput) String() string {
10857	return awsutil.Prettify(s)
10858}
10859
10860// GoString returns the string representation
10861func (s CreateSnapshotOutput) GoString() string {
10862	return s.String()
10863}
10864
10865// SetSnapshot sets the Snapshot field's value.
10866func (s *CreateSnapshotOutput) SetSnapshot(v *Snapshot) *CreateSnapshotOutput {
10867	s.Snapshot = v
10868	return s
10869}
10870
10871type CreateUserGroupInput struct {
10872	_ struct{} `type:"structure"`
10873
10874	// The current supported value is Redis.
10875	//
10876	// Engine is a required field
10877	Engine *string `type:"string" required:"true"`
10878
10879	// A list of tags to be added to this resource. A tag is a key-value pair. A
10880	// tag key must be accompanied by a tag value, although null is accepted.
10881	Tags []*Tag `locationNameList:"Tag" type:"list"`
10882
10883	// The ID of the user group.
10884	//
10885	// UserGroupId is a required field
10886	UserGroupId *string `type:"string" required:"true"`
10887
10888	// The list of user IDs that belong to the user group.
10889	UserIds []*string `min:"1" type:"list"`
10890}
10891
10892// String returns the string representation
10893func (s CreateUserGroupInput) String() string {
10894	return awsutil.Prettify(s)
10895}
10896
10897// GoString returns the string representation
10898func (s CreateUserGroupInput) GoString() string {
10899	return s.String()
10900}
10901
10902// Validate inspects the fields of the type to determine if they are valid.
10903func (s *CreateUserGroupInput) Validate() error {
10904	invalidParams := request.ErrInvalidParams{Context: "CreateUserGroupInput"}
10905	if s.Engine == nil {
10906		invalidParams.Add(request.NewErrParamRequired("Engine"))
10907	}
10908	if s.UserGroupId == nil {
10909		invalidParams.Add(request.NewErrParamRequired("UserGroupId"))
10910	}
10911	if s.UserIds != nil && len(s.UserIds) < 1 {
10912		invalidParams.Add(request.NewErrParamMinLen("UserIds", 1))
10913	}
10914
10915	if invalidParams.Len() > 0 {
10916		return invalidParams
10917	}
10918	return nil
10919}
10920
10921// SetEngine sets the Engine field's value.
10922func (s *CreateUserGroupInput) SetEngine(v string) *CreateUserGroupInput {
10923	s.Engine = &v
10924	return s
10925}
10926
10927// SetTags sets the Tags field's value.
10928func (s *CreateUserGroupInput) SetTags(v []*Tag) *CreateUserGroupInput {
10929	s.Tags = v
10930	return s
10931}
10932
10933// SetUserGroupId sets the UserGroupId field's value.
10934func (s *CreateUserGroupInput) SetUserGroupId(v string) *CreateUserGroupInput {
10935	s.UserGroupId = &v
10936	return s
10937}
10938
10939// SetUserIds sets the UserIds field's value.
10940func (s *CreateUserGroupInput) SetUserIds(v []*string) *CreateUserGroupInput {
10941	s.UserIds = v
10942	return s
10943}
10944
10945type CreateUserGroupOutput struct {
10946	_ struct{} `type:"structure"`
10947
10948	// The Amazon Resource Name (ARN) of the user group.
10949	ARN *string `type:"string"`
10950
10951	// The current supported value is Redis.
10952	Engine *string `type:"string"`
10953
10954	// A list of updates being applied to the user groups.
10955	PendingChanges *UserGroupPendingChanges `type:"structure"`
10956
10957	// A list of replication groups that the user group can access.
10958	ReplicationGroups []*string `type:"list"`
10959
10960	// Indicates user group status. Can be "creating", "active", "modifying", "deleting".
10961	Status *string `type:"string"`
10962
10963	// The ID of the user group.
10964	UserGroupId *string `type:"string"`
10965
10966	// The list of user IDs that belong to the user group.
10967	UserIds []*string `type:"list"`
10968}
10969
10970// String returns the string representation
10971func (s CreateUserGroupOutput) String() string {
10972	return awsutil.Prettify(s)
10973}
10974
10975// GoString returns the string representation
10976func (s CreateUserGroupOutput) GoString() string {
10977	return s.String()
10978}
10979
10980// SetARN sets the ARN field's value.
10981func (s *CreateUserGroupOutput) SetARN(v string) *CreateUserGroupOutput {
10982	s.ARN = &v
10983	return s
10984}
10985
10986// SetEngine sets the Engine field's value.
10987func (s *CreateUserGroupOutput) SetEngine(v string) *CreateUserGroupOutput {
10988	s.Engine = &v
10989	return s
10990}
10991
10992// SetPendingChanges sets the PendingChanges field's value.
10993func (s *CreateUserGroupOutput) SetPendingChanges(v *UserGroupPendingChanges) *CreateUserGroupOutput {
10994	s.PendingChanges = v
10995	return s
10996}
10997
10998// SetReplicationGroups sets the ReplicationGroups field's value.
10999func (s *CreateUserGroupOutput) SetReplicationGroups(v []*string) *CreateUserGroupOutput {
11000	s.ReplicationGroups = v
11001	return s
11002}
11003
11004// SetStatus sets the Status field's value.
11005func (s *CreateUserGroupOutput) SetStatus(v string) *CreateUserGroupOutput {
11006	s.Status = &v
11007	return s
11008}
11009
11010// SetUserGroupId sets the UserGroupId field's value.
11011func (s *CreateUserGroupOutput) SetUserGroupId(v string) *CreateUserGroupOutput {
11012	s.UserGroupId = &v
11013	return s
11014}
11015
11016// SetUserIds sets the UserIds field's value.
11017func (s *CreateUserGroupOutput) SetUserIds(v []*string) *CreateUserGroupOutput {
11018	s.UserIds = v
11019	return s
11020}
11021
11022type CreateUserInput struct {
11023	_ struct{} `type:"structure"`
11024
11025	// Access permissions string used for this user.
11026	//
11027	// AccessString is a required field
11028	AccessString *string `type:"string" required:"true"`
11029
11030	// The current supported value is Redis.
11031	//
11032	// Engine is a required field
11033	Engine *string `type:"string" required:"true"`
11034
11035	// Indicates a password is not required for this user.
11036	NoPasswordRequired *bool `type:"boolean"`
11037
11038	// Passwords used for this user. You can create up to two passwords for each
11039	// user.
11040	Passwords []*string `min:"1" type:"list"`
11041
11042	// A list of tags to be added to this resource. A tag is a key-value pair. A
11043	// tag key must be accompanied by a tag value, although null is accepted.
11044	Tags []*Tag `locationNameList:"Tag" type:"list"`
11045
11046	// The ID of the user.
11047	//
11048	// UserId is a required field
11049	UserId *string `min:"1" type:"string" required:"true"`
11050
11051	// The username of the user.
11052	//
11053	// UserName is a required field
11054	UserName *string `min:"1" type:"string" required:"true"`
11055}
11056
11057// String returns the string representation
11058func (s CreateUserInput) String() string {
11059	return awsutil.Prettify(s)
11060}
11061
11062// GoString returns the string representation
11063func (s CreateUserInput) GoString() string {
11064	return s.String()
11065}
11066
11067// Validate inspects the fields of the type to determine if they are valid.
11068func (s *CreateUserInput) Validate() error {
11069	invalidParams := request.ErrInvalidParams{Context: "CreateUserInput"}
11070	if s.AccessString == nil {
11071		invalidParams.Add(request.NewErrParamRequired("AccessString"))
11072	}
11073	if s.Engine == nil {
11074		invalidParams.Add(request.NewErrParamRequired("Engine"))
11075	}
11076	if s.Passwords != nil && len(s.Passwords) < 1 {
11077		invalidParams.Add(request.NewErrParamMinLen("Passwords", 1))
11078	}
11079	if s.UserId == nil {
11080		invalidParams.Add(request.NewErrParamRequired("UserId"))
11081	}
11082	if s.UserId != nil && len(*s.UserId) < 1 {
11083		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
11084	}
11085	if s.UserName == nil {
11086		invalidParams.Add(request.NewErrParamRequired("UserName"))
11087	}
11088	if s.UserName != nil && len(*s.UserName) < 1 {
11089		invalidParams.Add(request.NewErrParamMinLen("UserName", 1))
11090	}
11091
11092	if invalidParams.Len() > 0 {
11093		return invalidParams
11094	}
11095	return nil
11096}
11097
11098// SetAccessString sets the AccessString field's value.
11099func (s *CreateUserInput) SetAccessString(v string) *CreateUserInput {
11100	s.AccessString = &v
11101	return s
11102}
11103
11104// SetEngine sets the Engine field's value.
11105func (s *CreateUserInput) SetEngine(v string) *CreateUserInput {
11106	s.Engine = &v
11107	return s
11108}
11109
11110// SetNoPasswordRequired sets the NoPasswordRequired field's value.
11111func (s *CreateUserInput) SetNoPasswordRequired(v bool) *CreateUserInput {
11112	s.NoPasswordRequired = &v
11113	return s
11114}
11115
11116// SetPasswords sets the Passwords field's value.
11117func (s *CreateUserInput) SetPasswords(v []*string) *CreateUserInput {
11118	s.Passwords = v
11119	return s
11120}
11121
11122// SetTags sets the Tags field's value.
11123func (s *CreateUserInput) SetTags(v []*Tag) *CreateUserInput {
11124	s.Tags = v
11125	return s
11126}
11127
11128// SetUserId sets the UserId field's value.
11129func (s *CreateUserInput) SetUserId(v string) *CreateUserInput {
11130	s.UserId = &v
11131	return s
11132}
11133
11134// SetUserName sets the UserName field's value.
11135func (s *CreateUserInput) SetUserName(v string) *CreateUserInput {
11136	s.UserName = &v
11137	return s
11138}
11139
11140type CreateUserOutput struct {
11141	_ struct{} `type:"structure"`
11142
11143	// The Amazon Resource Name (ARN) of the user.
11144	ARN *string `type:"string"`
11145
11146	// Access permissions string used for this user.
11147	AccessString *string `type:"string"`
11148
11149	// Denotes whether the user requires a password to authenticate.
11150	Authentication *Authentication `type:"structure"`
11151
11152	// The current supported value is Redis.
11153	Engine *string `type:"string"`
11154
11155	// Indicates the user status. Can be "active", "modifying" or "deleting".
11156	Status *string `type:"string"`
11157
11158	// Returns a list of the user group IDs the user belongs to.
11159	UserGroupIds []*string `type:"list"`
11160
11161	// The ID of the user.
11162	UserId *string `type:"string"`
11163
11164	// The username of the user.
11165	UserName *string `type:"string"`
11166}
11167
11168// String returns the string representation
11169func (s CreateUserOutput) String() string {
11170	return awsutil.Prettify(s)
11171}
11172
11173// GoString returns the string representation
11174func (s CreateUserOutput) GoString() string {
11175	return s.String()
11176}
11177
11178// SetARN sets the ARN field's value.
11179func (s *CreateUserOutput) SetARN(v string) *CreateUserOutput {
11180	s.ARN = &v
11181	return s
11182}
11183
11184// SetAccessString sets the AccessString field's value.
11185func (s *CreateUserOutput) SetAccessString(v string) *CreateUserOutput {
11186	s.AccessString = &v
11187	return s
11188}
11189
11190// SetAuthentication sets the Authentication field's value.
11191func (s *CreateUserOutput) SetAuthentication(v *Authentication) *CreateUserOutput {
11192	s.Authentication = v
11193	return s
11194}
11195
11196// SetEngine sets the Engine field's value.
11197func (s *CreateUserOutput) SetEngine(v string) *CreateUserOutput {
11198	s.Engine = &v
11199	return s
11200}
11201
11202// SetStatus sets the Status field's value.
11203func (s *CreateUserOutput) SetStatus(v string) *CreateUserOutput {
11204	s.Status = &v
11205	return s
11206}
11207
11208// SetUserGroupIds sets the UserGroupIds field's value.
11209func (s *CreateUserOutput) SetUserGroupIds(v []*string) *CreateUserOutput {
11210	s.UserGroupIds = v
11211	return s
11212}
11213
11214// SetUserId sets the UserId field's value.
11215func (s *CreateUserOutput) SetUserId(v string) *CreateUserOutput {
11216	s.UserId = &v
11217	return s
11218}
11219
11220// SetUserName sets the UserName field's value.
11221func (s *CreateUserOutput) SetUserName(v string) *CreateUserOutput {
11222	s.UserName = &v
11223	return s
11224}
11225
11226// The endpoint from which data should be migrated.
11227type CustomerNodeEndpoint struct {
11228	_ struct{} `type:"structure"`
11229
11230	// The address of the node endpoint
11231	Address *string `type:"string"`
11232
11233	// The port of the node endpoint
11234	Port *int64 `type:"integer"`
11235}
11236
11237// String returns the string representation
11238func (s CustomerNodeEndpoint) String() string {
11239	return awsutil.Prettify(s)
11240}
11241
11242// GoString returns the string representation
11243func (s CustomerNodeEndpoint) GoString() string {
11244	return s.String()
11245}
11246
11247// SetAddress sets the Address field's value.
11248func (s *CustomerNodeEndpoint) SetAddress(v string) *CustomerNodeEndpoint {
11249	s.Address = &v
11250	return s
11251}
11252
11253// SetPort sets the Port field's value.
11254func (s *CustomerNodeEndpoint) SetPort(v int64) *CustomerNodeEndpoint {
11255	s.Port = &v
11256	return s
11257}
11258
11259type DecreaseNodeGroupsInGlobalReplicationGroupInput struct {
11260	_ struct{} `type:"structure"`
11261
11262	// Indicates that the shard reconfiguration process begins immediately. At present,
11263	// the only permitted value for this parameter is true.
11264	//
11265	// ApplyImmediately is a required field
11266	ApplyImmediately *bool `type:"boolean" required:"true"`
11267
11268	// If the value of NodeGroupCount is less than the current number of node groups
11269	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
11270	// GlobalNodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster.
11271	// ElastiCache for Redis will attempt to remove all node groups listed by GlobalNodeGroupsToRemove
11272	// from the cluster.
11273	GlobalNodeGroupsToRemove []*string `locationNameList:"GlobalNodeGroupId" type:"list"`
11274
11275	// If the value of NodeGroupCount is less than the current number of node groups
11276	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
11277	// GlobalNodeGroupsToRetain is a list of NodeGroupIds to retain from the cluster.
11278	// ElastiCache for Redis will attempt to retain all node groups listed by GlobalNodeGroupsToRetain
11279	// from the cluster.
11280	GlobalNodeGroupsToRetain []*string `locationNameList:"GlobalNodeGroupId" type:"list"`
11281
11282	// The name of the Global datastore
11283	//
11284	// GlobalReplicationGroupId is a required field
11285	GlobalReplicationGroupId *string `type:"string" required:"true"`
11286
11287	// The number of node groups (shards) that results from the modification of
11288	// the shard configuration
11289	//
11290	// NodeGroupCount is a required field
11291	NodeGroupCount *int64 `type:"integer" required:"true"`
11292}
11293
11294// String returns the string representation
11295func (s DecreaseNodeGroupsInGlobalReplicationGroupInput) String() string {
11296	return awsutil.Prettify(s)
11297}
11298
11299// GoString returns the string representation
11300func (s DecreaseNodeGroupsInGlobalReplicationGroupInput) GoString() string {
11301	return s.String()
11302}
11303
11304// Validate inspects the fields of the type to determine if they are valid.
11305func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) Validate() error {
11306	invalidParams := request.ErrInvalidParams{Context: "DecreaseNodeGroupsInGlobalReplicationGroupInput"}
11307	if s.ApplyImmediately == nil {
11308		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
11309	}
11310	if s.GlobalReplicationGroupId == nil {
11311		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
11312	}
11313	if s.NodeGroupCount == nil {
11314		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
11315	}
11316
11317	if invalidParams.Len() > 0 {
11318		return invalidParams
11319	}
11320	return nil
11321}
11322
11323// SetApplyImmediately sets the ApplyImmediately field's value.
11324func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetApplyImmediately(v bool) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
11325	s.ApplyImmediately = &v
11326	return s
11327}
11328
11329// SetGlobalNodeGroupsToRemove sets the GlobalNodeGroupsToRemove field's value.
11330func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalNodeGroupsToRemove(v []*string) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
11331	s.GlobalNodeGroupsToRemove = v
11332	return s
11333}
11334
11335// SetGlobalNodeGroupsToRetain sets the GlobalNodeGroupsToRetain field's value.
11336func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalNodeGroupsToRetain(v []*string) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
11337	s.GlobalNodeGroupsToRetain = v
11338	return s
11339}
11340
11341// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
11342func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
11343	s.GlobalReplicationGroupId = &v
11344	return s
11345}
11346
11347// SetNodeGroupCount sets the NodeGroupCount field's value.
11348func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetNodeGroupCount(v int64) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
11349	s.NodeGroupCount = &v
11350	return s
11351}
11352
11353type DecreaseNodeGroupsInGlobalReplicationGroupOutput struct {
11354	_ struct{} `type:"structure"`
11355
11356	// Consists of a primary cluster that accepts writes and an associated secondary
11357	// cluster that resides in a different Amazon region. The secondary cluster
11358	// accepts only reads. The primary cluster automatically replicates updates
11359	// to the secondary cluster.
11360	//
11361	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
11362	//    datastore, which is what you use to associate a secondary cluster.
11363	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
11364}
11365
11366// String returns the string representation
11367func (s DecreaseNodeGroupsInGlobalReplicationGroupOutput) String() string {
11368	return awsutil.Prettify(s)
11369}
11370
11371// GoString returns the string representation
11372func (s DecreaseNodeGroupsInGlobalReplicationGroupOutput) GoString() string {
11373	return s.String()
11374}
11375
11376// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
11377func (s *DecreaseNodeGroupsInGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *DecreaseNodeGroupsInGlobalReplicationGroupOutput {
11378	s.GlobalReplicationGroup = v
11379	return s
11380}
11381
11382type DecreaseReplicaCountInput struct {
11383	_ struct{} `type:"structure"`
11384
11385	// If True, the number of replica nodes is decreased immediately. ApplyImmediately=False
11386	// is not currently supported.
11387	//
11388	// ApplyImmediately is a required field
11389	ApplyImmediately *bool `type:"boolean" required:"true"`
11390
11391	// The number of read replica nodes you want at the completion of this operation.
11392	// For Redis (cluster mode disabled) replication groups, this is the number
11393	// of replica nodes in the replication group. For Redis (cluster mode enabled)
11394	// replication groups, this is the number of replica nodes in each of the replication
11395	// group's node groups.
11396	//
11397	// The minimum number of replicas in a shard or replication group is:
11398	//
11399	//    * Redis (cluster mode disabled) If Multi-AZ is enabled: 1 If Multi-AZ
11400	//    is not enabled: 0
11401	//
11402	//    * Redis (cluster mode enabled): 0 (though you will not be able to failover
11403	//    to a replica if your primary node fails)
11404	NewReplicaCount *int64 `type:"integer"`
11405
11406	// A list of ConfigureShard objects that can be used to configure each shard
11407	// in a Redis (cluster mode enabled) replication group. The ConfigureShard has
11408	// three members: NewReplicaCount, NodeGroupId, and PreferredAvailabilityZones.
11409	ReplicaConfiguration []*ConfigureShard `locationNameList:"ConfigureShard" type:"list"`
11410
11411	// A list of the node ids to remove from the replication group or node group
11412	// (shard).
11413	ReplicasToRemove []*string `type:"list"`
11414
11415	// The id of the replication group from which you want to remove replica nodes.
11416	//
11417	// ReplicationGroupId is a required field
11418	ReplicationGroupId *string `type:"string" required:"true"`
11419}
11420
11421// String returns the string representation
11422func (s DecreaseReplicaCountInput) String() string {
11423	return awsutil.Prettify(s)
11424}
11425
11426// GoString returns the string representation
11427func (s DecreaseReplicaCountInput) GoString() string {
11428	return s.String()
11429}
11430
11431// Validate inspects the fields of the type to determine if they are valid.
11432func (s *DecreaseReplicaCountInput) Validate() error {
11433	invalidParams := request.ErrInvalidParams{Context: "DecreaseReplicaCountInput"}
11434	if s.ApplyImmediately == nil {
11435		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
11436	}
11437	if s.ReplicationGroupId == nil {
11438		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
11439	}
11440	if s.ReplicaConfiguration != nil {
11441		for i, v := range s.ReplicaConfiguration {
11442			if v == nil {
11443				continue
11444			}
11445			if err := v.Validate(); err != nil {
11446				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaConfiguration", i), err.(request.ErrInvalidParams))
11447			}
11448		}
11449	}
11450
11451	if invalidParams.Len() > 0 {
11452		return invalidParams
11453	}
11454	return nil
11455}
11456
11457// SetApplyImmediately sets the ApplyImmediately field's value.
11458func (s *DecreaseReplicaCountInput) SetApplyImmediately(v bool) *DecreaseReplicaCountInput {
11459	s.ApplyImmediately = &v
11460	return s
11461}
11462
11463// SetNewReplicaCount sets the NewReplicaCount field's value.
11464func (s *DecreaseReplicaCountInput) SetNewReplicaCount(v int64) *DecreaseReplicaCountInput {
11465	s.NewReplicaCount = &v
11466	return s
11467}
11468
11469// SetReplicaConfiguration sets the ReplicaConfiguration field's value.
11470func (s *DecreaseReplicaCountInput) SetReplicaConfiguration(v []*ConfigureShard) *DecreaseReplicaCountInput {
11471	s.ReplicaConfiguration = v
11472	return s
11473}
11474
11475// SetReplicasToRemove sets the ReplicasToRemove field's value.
11476func (s *DecreaseReplicaCountInput) SetReplicasToRemove(v []*string) *DecreaseReplicaCountInput {
11477	s.ReplicasToRemove = v
11478	return s
11479}
11480
11481// SetReplicationGroupId sets the ReplicationGroupId field's value.
11482func (s *DecreaseReplicaCountInput) SetReplicationGroupId(v string) *DecreaseReplicaCountInput {
11483	s.ReplicationGroupId = &v
11484	return s
11485}
11486
11487type DecreaseReplicaCountOutput struct {
11488	_ struct{} `type:"structure"`
11489
11490	// Contains all of the attributes of a specific Redis replication group.
11491	ReplicationGroup *ReplicationGroup `type:"structure"`
11492}
11493
11494// String returns the string representation
11495func (s DecreaseReplicaCountOutput) String() string {
11496	return awsutil.Prettify(s)
11497}
11498
11499// GoString returns the string representation
11500func (s DecreaseReplicaCountOutput) GoString() string {
11501	return s.String()
11502}
11503
11504// SetReplicationGroup sets the ReplicationGroup field's value.
11505func (s *DecreaseReplicaCountOutput) SetReplicationGroup(v *ReplicationGroup) *DecreaseReplicaCountOutput {
11506	s.ReplicationGroup = v
11507	return s
11508}
11509
11510// Represents the input of a DeleteCacheCluster operation.
11511type DeleteCacheClusterInput struct {
11512	_ struct{} `type:"structure"`
11513
11514	// The cluster identifier for the cluster to be deleted. This parameter is not
11515	// case sensitive.
11516	//
11517	// CacheClusterId is a required field
11518	CacheClusterId *string `type:"string" required:"true"`
11519
11520	// The user-supplied name of a final cluster snapshot. This is the unique name
11521	// that identifies the snapshot. ElastiCache creates the snapshot, and then
11522	// deletes the cluster immediately afterward.
11523	FinalSnapshotIdentifier *string `type:"string"`
11524}
11525
11526// String returns the string representation
11527func (s DeleteCacheClusterInput) String() string {
11528	return awsutil.Prettify(s)
11529}
11530
11531// GoString returns the string representation
11532func (s DeleteCacheClusterInput) GoString() string {
11533	return s.String()
11534}
11535
11536// Validate inspects the fields of the type to determine if they are valid.
11537func (s *DeleteCacheClusterInput) Validate() error {
11538	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheClusterInput"}
11539	if s.CacheClusterId == nil {
11540		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
11541	}
11542
11543	if invalidParams.Len() > 0 {
11544		return invalidParams
11545	}
11546	return nil
11547}
11548
11549// SetCacheClusterId sets the CacheClusterId field's value.
11550func (s *DeleteCacheClusterInput) SetCacheClusterId(v string) *DeleteCacheClusterInput {
11551	s.CacheClusterId = &v
11552	return s
11553}
11554
11555// SetFinalSnapshotIdentifier sets the FinalSnapshotIdentifier field's value.
11556func (s *DeleteCacheClusterInput) SetFinalSnapshotIdentifier(v string) *DeleteCacheClusterInput {
11557	s.FinalSnapshotIdentifier = &v
11558	return s
11559}
11560
11561type DeleteCacheClusterOutput struct {
11562	_ struct{} `type:"structure"`
11563
11564	// Contains all of the attributes of a specific cluster.
11565	CacheCluster *CacheCluster `type:"structure"`
11566}
11567
11568// String returns the string representation
11569func (s DeleteCacheClusterOutput) String() string {
11570	return awsutil.Prettify(s)
11571}
11572
11573// GoString returns the string representation
11574func (s DeleteCacheClusterOutput) GoString() string {
11575	return s.String()
11576}
11577
11578// SetCacheCluster sets the CacheCluster field's value.
11579func (s *DeleteCacheClusterOutput) SetCacheCluster(v *CacheCluster) *DeleteCacheClusterOutput {
11580	s.CacheCluster = v
11581	return s
11582}
11583
11584// Represents the input of a DeleteCacheParameterGroup operation.
11585type DeleteCacheParameterGroupInput struct {
11586	_ struct{} `type:"structure"`
11587
11588	// The name of the cache parameter group to delete.
11589	//
11590	// The specified cache security group must not be associated with any clusters.
11591	//
11592	// CacheParameterGroupName is a required field
11593	CacheParameterGroupName *string `type:"string" required:"true"`
11594}
11595
11596// String returns the string representation
11597func (s DeleteCacheParameterGroupInput) String() string {
11598	return awsutil.Prettify(s)
11599}
11600
11601// GoString returns the string representation
11602func (s DeleteCacheParameterGroupInput) GoString() string {
11603	return s.String()
11604}
11605
11606// Validate inspects the fields of the type to determine if they are valid.
11607func (s *DeleteCacheParameterGroupInput) Validate() error {
11608	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheParameterGroupInput"}
11609	if s.CacheParameterGroupName == nil {
11610		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
11611	}
11612
11613	if invalidParams.Len() > 0 {
11614		return invalidParams
11615	}
11616	return nil
11617}
11618
11619// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
11620func (s *DeleteCacheParameterGroupInput) SetCacheParameterGroupName(v string) *DeleteCacheParameterGroupInput {
11621	s.CacheParameterGroupName = &v
11622	return s
11623}
11624
11625type DeleteCacheParameterGroupOutput struct {
11626	_ struct{} `type:"structure"`
11627}
11628
11629// String returns the string representation
11630func (s DeleteCacheParameterGroupOutput) String() string {
11631	return awsutil.Prettify(s)
11632}
11633
11634// GoString returns the string representation
11635func (s DeleteCacheParameterGroupOutput) GoString() string {
11636	return s.String()
11637}
11638
11639// Represents the input of a DeleteCacheSecurityGroup operation.
11640type DeleteCacheSecurityGroupInput struct {
11641	_ struct{} `type:"structure"`
11642
11643	// The name of the cache security group to delete.
11644	//
11645	// You cannot delete the default security group.
11646	//
11647	// CacheSecurityGroupName is a required field
11648	CacheSecurityGroupName *string `type:"string" required:"true"`
11649}
11650
11651// String returns the string representation
11652func (s DeleteCacheSecurityGroupInput) String() string {
11653	return awsutil.Prettify(s)
11654}
11655
11656// GoString returns the string representation
11657func (s DeleteCacheSecurityGroupInput) GoString() string {
11658	return s.String()
11659}
11660
11661// Validate inspects the fields of the type to determine if they are valid.
11662func (s *DeleteCacheSecurityGroupInput) Validate() error {
11663	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheSecurityGroupInput"}
11664	if s.CacheSecurityGroupName == nil {
11665		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
11666	}
11667
11668	if invalidParams.Len() > 0 {
11669		return invalidParams
11670	}
11671	return nil
11672}
11673
11674// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
11675func (s *DeleteCacheSecurityGroupInput) SetCacheSecurityGroupName(v string) *DeleteCacheSecurityGroupInput {
11676	s.CacheSecurityGroupName = &v
11677	return s
11678}
11679
11680type DeleteCacheSecurityGroupOutput struct {
11681	_ struct{} `type:"structure"`
11682}
11683
11684// String returns the string representation
11685func (s DeleteCacheSecurityGroupOutput) String() string {
11686	return awsutil.Prettify(s)
11687}
11688
11689// GoString returns the string representation
11690func (s DeleteCacheSecurityGroupOutput) GoString() string {
11691	return s.String()
11692}
11693
11694// Represents the input of a DeleteCacheSubnetGroup operation.
11695type DeleteCacheSubnetGroupInput struct {
11696	_ struct{} `type:"structure"`
11697
11698	// The name of the cache subnet group to delete.
11699	//
11700	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
11701	//
11702	// CacheSubnetGroupName is a required field
11703	CacheSubnetGroupName *string `type:"string" required:"true"`
11704}
11705
11706// String returns the string representation
11707func (s DeleteCacheSubnetGroupInput) String() string {
11708	return awsutil.Prettify(s)
11709}
11710
11711// GoString returns the string representation
11712func (s DeleteCacheSubnetGroupInput) GoString() string {
11713	return s.String()
11714}
11715
11716// Validate inspects the fields of the type to determine if they are valid.
11717func (s *DeleteCacheSubnetGroupInput) Validate() error {
11718	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheSubnetGroupInput"}
11719	if s.CacheSubnetGroupName == nil {
11720		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
11721	}
11722
11723	if invalidParams.Len() > 0 {
11724		return invalidParams
11725	}
11726	return nil
11727}
11728
11729// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
11730func (s *DeleteCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *DeleteCacheSubnetGroupInput {
11731	s.CacheSubnetGroupName = &v
11732	return s
11733}
11734
11735type DeleteCacheSubnetGroupOutput struct {
11736	_ struct{} `type:"structure"`
11737}
11738
11739// String returns the string representation
11740func (s DeleteCacheSubnetGroupOutput) String() string {
11741	return awsutil.Prettify(s)
11742}
11743
11744// GoString returns the string representation
11745func (s DeleteCacheSubnetGroupOutput) GoString() string {
11746	return s.String()
11747}
11748
11749type DeleteGlobalReplicationGroupInput struct {
11750	_ struct{} `type:"structure"`
11751
11752	// The name of the Global datastore
11753	//
11754	// GlobalReplicationGroupId is a required field
11755	GlobalReplicationGroupId *string `type:"string" required:"true"`
11756
11757	// The primary replication group is retained as a standalone replication group.
11758	//
11759	// RetainPrimaryReplicationGroup is a required field
11760	RetainPrimaryReplicationGroup *bool `type:"boolean" required:"true"`
11761}
11762
11763// String returns the string representation
11764func (s DeleteGlobalReplicationGroupInput) String() string {
11765	return awsutil.Prettify(s)
11766}
11767
11768// GoString returns the string representation
11769func (s DeleteGlobalReplicationGroupInput) GoString() string {
11770	return s.String()
11771}
11772
11773// Validate inspects the fields of the type to determine if they are valid.
11774func (s *DeleteGlobalReplicationGroupInput) Validate() error {
11775	invalidParams := request.ErrInvalidParams{Context: "DeleteGlobalReplicationGroupInput"}
11776	if s.GlobalReplicationGroupId == nil {
11777		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
11778	}
11779	if s.RetainPrimaryReplicationGroup == nil {
11780		invalidParams.Add(request.NewErrParamRequired("RetainPrimaryReplicationGroup"))
11781	}
11782
11783	if invalidParams.Len() > 0 {
11784		return invalidParams
11785	}
11786	return nil
11787}
11788
11789// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
11790func (s *DeleteGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *DeleteGlobalReplicationGroupInput {
11791	s.GlobalReplicationGroupId = &v
11792	return s
11793}
11794
11795// SetRetainPrimaryReplicationGroup sets the RetainPrimaryReplicationGroup field's value.
11796func (s *DeleteGlobalReplicationGroupInput) SetRetainPrimaryReplicationGroup(v bool) *DeleteGlobalReplicationGroupInput {
11797	s.RetainPrimaryReplicationGroup = &v
11798	return s
11799}
11800
11801type DeleteGlobalReplicationGroupOutput struct {
11802	_ struct{} `type:"structure"`
11803
11804	// Consists of a primary cluster that accepts writes and an associated secondary
11805	// cluster that resides in a different Amazon region. The secondary cluster
11806	// accepts only reads. The primary cluster automatically replicates updates
11807	// to the secondary cluster.
11808	//
11809	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
11810	//    datastore, which is what you use to associate a secondary cluster.
11811	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
11812}
11813
11814// String returns the string representation
11815func (s DeleteGlobalReplicationGroupOutput) String() string {
11816	return awsutil.Prettify(s)
11817}
11818
11819// GoString returns the string representation
11820func (s DeleteGlobalReplicationGroupOutput) GoString() string {
11821	return s.String()
11822}
11823
11824// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
11825func (s *DeleteGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *DeleteGlobalReplicationGroupOutput {
11826	s.GlobalReplicationGroup = v
11827	return s
11828}
11829
11830// Represents the input of a DeleteReplicationGroup operation.
11831type DeleteReplicationGroupInput struct {
11832	_ struct{} `type:"structure"`
11833
11834	// The name of a final node group (shard) snapshot. ElastiCache creates the
11835	// snapshot from the primary node in the cluster, rather than one of the replicas;
11836	// this is to ensure that it captures the freshest data. After the final snapshot
11837	// is taken, the replication group is immediately deleted.
11838	FinalSnapshotIdentifier *string `type:"string"`
11839
11840	// The identifier for the cluster to be deleted. This parameter is not case
11841	// sensitive.
11842	//
11843	// ReplicationGroupId is a required field
11844	ReplicationGroupId *string `type:"string" required:"true"`
11845
11846	// If set to true, all of the read replicas are deleted, but the primary node
11847	// is retained.
11848	RetainPrimaryCluster *bool `type:"boolean"`
11849}
11850
11851// String returns the string representation
11852func (s DeleteReplicationGroupInput) String() string {
11853	return awsutil.Prettify(s)
11854}
11855
11856// GoString returns the string representation
11857func (s DeleteReplicationGroupInput) GoString() string {
11858	return s.String()
11859}
11860
11861// Validate inspects the fields of the type to determine if they are valid.
11862func (s *DeleteReplicationGroupInput) Validate() error {
11863	invalidParams := request.ErrInvalidParams{Context: "DeleteReplicationGroupInput"}
11864	if s.ReplicationGroupId == nil {
11865		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
11866	}
11867
11868	if invalidParams.Len() > 0 {
11869		return invalidParams
11870	}
11871	return nil
11872}
11873
11874// SetFinalSnapshotIdentifier sets the FinalSnapshotIdentifier field's value.
11875func (s *DeleteReplicationGroupInput) SetFinalSnapshotIdentifier(v string) *DeleteReplicationGroupInput {
11876	s.FinalSnapshotIdentifier = &v
11877	return s
11878}
11879
11880// SetReplicationGroupId sets the ReplicationGroupId field's value.
11881func (s *DeleteReplicationGroupInput) SetReplicationGroupId(v string) *DeleteReplicationGroupInput {
11882	s.ReplicationGroupId = &v
11883	return s
11884}
11885
11886// SetRetainPrimaryCluster sets the RetainPrimaryCluster field's value.
11887func (s *DeleteReplicationGroupInput) SetRetainPrimaryCluster(v bool) *DeleteReplicationGroupInput {
11888	s.RetainPrimaryCluster = &v
11889	return s
11890}
11891
11892type DeleteReplicationGroupOutput struct {
11893	_ struct{} `type:"structure"`
11894
11895	// Contains all of the attributes of a specific Redis replication group.
11896	ReplicationGroup *ReplicationGroup `type:"structure"`
11897}
11898
11899// String returns the string representation
11900func (s DeleteReplicationGroupOutput) String() string {
11901	return awsutil.Prettify(s)
11902}
11903
11904// GoString returns the string representation
11905func (s DeleteReplicationGroupOutput) GoString() string {
11906	return s.String()
11907}
11908
11909// SetReplicationGroup sets the ReplicationGroup field's value.
11910func (s *DeleteReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *DeleteReplicationGroupOutput {
11911	s.ReplicationGroup = v
11912	return s
11913}
11914
11915// Represents the input of a DeleteSnapshot operation.
11916type DeleteSnapshotInput struct {
11917	_ struct{} `type:"structure"`
11918
11919	// The name of the snapshot to be deleted.
11920	//
11921	// SnapshotName is a required field
11922	SnapshotName *string `type:"string" required:"true"`
11923}
11924
11925// String returns the string representation
11926func (s DeleteSnapshotInput) String() string {
11927	return awsutil.Prettify(s)
11928}
11929
11930// GoString returns the string representation
11931func (s DeleteSnapshotInput) GoString() string {
11932	return s.String()
11933}
11934
11935// Validate inspects the fields of the type to determine if they are valid.
11936func (s *DeleteSnapshotInput) Validate() error {
11937	invalidParams := request.ErrInvalidParams{Context: "DeleteSnapshotInput"}
11938	if s.SnapshotName == nil {
11939		invalidParams.Add(request.NewErrParamRequired("SnapshotName"))
11940	}
11941
11942	if invalidParams.Len() > 0 {
11943		return invalidParams
11944	}
11945	return nil
11946}
11947
11948// SetSnapshotName sets the SnapshotName field's value.
11949func (s *DeleteSnapshotInput) SetSnapshotName(v string) *DeleteSnapshotInput {
11950	s.SnapshotName = &v
11951	return s
11952}
11953
11954type DeleteSnapshotOutput struct {
11955	_ struct{} `type:"structure"`
11956
11957	// Represents a copy of an entire Redis cluster as of the time when the snapshot
11958	// was taken.
11959	Snapshot *Snapshot `type:"structure"`
11960}
11961
11962// String returns the string representation
11963func (s DeleteSnapshotOutput) String() string {
11964	return awsutil.Prettify(s)
11965}
11966
11967// GoString returns the string representation
11968func (s DeleteSnapshotOutput) GoString() string {
11969	return s.String()
11970}
11971
11972// SetSnapshot sets the Snapshot field's value.
11973func (s *DeleteSnapshotOutput) SetSnapshot(v *Snapshot) *DeleteSnapshotOutput {
11974	s.Snapshot = v
11975	return s
11976}
11977
11978type DeleteUserGroupInput struct {
11979	_ struct{} `type:"structure"`
11980
11981	// The ID of the user group.
11982	//
11983	// UserGroupId is a required field
11984	UserGroupId *string `type:"string" required:"true"`
11985}
11986
11987// String returns the string representation
11988func (s DeleteUserGroupInput) String() string {
11989	return awsutil.Prettify(s)
11990}
11991
11992// GoString returns the string representation
11993func (s DeleteUserGroupInput) GoString() string {
11994	return s.String()
11995}
11996
11997// Validate inspects the fields of the type to determine if they are valid.
11998func (s *DeleteUserGroupInput) Validate() error {
11999	invalidParams := request.ErrInvalidParams{Context: "DeleteUserGroupInput"}
12000	if s.UserGroupId == nil {
12001		invalidParams.Add(request.NewErrParamRequired("UserGroupId"))
12002	}
12003
12004	if invalidParams.Len() > 0 {
12005		return invalidParams
12006	}
12007	return nil
12008}
12009
12010// SetUserGroupId sets the UserGroupId field's value.
12011func (s *DeleteUserGroupInput) SetUserGroupId(v string) *DeleteUserGroupInput {
12012	s.UserGroupId = &v
12013	return s
12014}
12015
12016type DeleteUserGroupOutput struct {
12017	_ struct{} `type:"structure"`
12018
12019	// The Amazon Resource Name (ARN) of the user group.
12020	ARN *string `type:"string"`
12021
12022	// The current supported value is Redis.
12023	Engine *string `type:"string"`
12024
12025	// A list of updates being applied to the user groups.
12026	PendingChanges *UserGroupPendingChanges `type:"structure"`
12027
12028	// A list of replication groups that the user group can access.
12029	ReplicationGroups []*string `type:"list"`
12030
12031	// Indicates user group status. Can be "creating", "active", "modifying", "deleting".
12032	Status *string `type:"string"`
12033
12034	// The ID of the user group.
12035	UserGroupId *string `type:"string"`
12036
12037	// The list of user IDs that belong to the user group.
12038	UserIds []*string `type:"list"`
12039}
12040
12041// String returns the string representation
12042func (s DeleteUserGroupOutput) String() string {
12043	return awsutil.Prettify(s)
12044}
12045
12046// GoString returns the string representation
12047func (s DeleteUserGroupOutput) GoString() string {
12048	return s.String()
12049}
12050
12051// SetARN sets the ARN field's value.
12052func (s *DeleteUserGroupOutput) SetARN(v string) *DeleteUserGroupOutput {
12053	s.ARN = &v
12054	return s
12055}
12056
12057// SetEngine sets the Engine field's value.
12058func (s *DeleteUserGroupOutput) SetEngine(v string) *DeleteUserGroupOutput {
12059	s.Engine = &v
12060	return s
12061}
12062
12063// SetPendingChanges sets the PendingChanges field's value.
12064func (s *DeleteUserGroupOutput) SetPendingChanges(v *UserGroupPendingChanges) *DeleteUserGroupOutput {
12065	s.PendingChanges = v
12066	return s
12067}
12068
12069// SetReplicationGroups sets the ReplicationGroups field's value.
12070func (s *DeleteUserGroupOutput) SetReplicationGroups(v []*string) *DeleteUserGroupOutput {
12071	s.ReplicationGroups = v
12072	return s
12073}
12074
12075// SetStatus sets the Status field's value.
12076func (s *DeleteUserGroupOutput) SetStatus(v string) *DeleteUserGroupOutput {
12077	s.Status = &v
12078	return s
12079}
12080
12081// SetUserGroupId sets the UserGroupId field's value.
12082func (s *DeleteUserGroupOutput) SetUserGroupId(v string) *DeleteUserGroupOutput {
12083	s.UserGroupId = &v
12084	return s
12085}
12086
12087// SetUserIds sets the UserIds field's value.
12088func (s *DeleteUserGroupOutput) SetUserIds(v []*string) *DeleteUserGroupOutput {
12089	s.UserIds = v
12090	return s
12091}
12092
12093type DeleteUserInput struct {
12094	_ struct{} `type:"structure"`
12095
12096	// The ID of the user.
12097	//
12098	// UserId is a required field
12099	UserId *string `min:"1" type:"string" required:"true"`
12100}
12101
12102// String returns the string representation
12103func (s DeleteUserInput) String() string {
12104	return awsutil.Prettify(s)
12105}
12106
12107// GoString returns the string representation
12108func (s DeleteUserInput) GoString() string {
12109	return s.String()
12110}
12111
12112// Validate inspects the fields of the type to determine if they are valid.
12113func (s *DeleteUserInput) Validate() error {
12114	invalidParams := request.ErrInvalidParams{Context: "DeleteUserInput"}
12115	if s.UserId == nil {
12116		invalidParams.Add(request.NewErrParamRequired("UserId"))
12117	}
12118	if s.UserId != nil && len(*s.UserId) < 1 {
12119		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
12120	}
12121
12122	if invalidParams.Len() > 0 {
12123		return invalidParams
12124	}
12125	return nil
12126}
12127
12128// SetUserId sets the UserId field's value.
12129func (s *DeleteUserInput) SetUserId(v string) *DeleteUserInput {
12130	s.UserId = &v
12131	return s
12132}
12133
12134type DeleteUserOutput struct {
12135	_ struct{} `type:"structure"`
12136
12137	// The Amazon Resource Name (ARN) of the user.
12138	ARN *string `type:"string"`
12139
12140	// Access permissions string used for this user.
12141	AccessString *string `type:"string"`
12142
12143	// Denotes whether the user requires a password to authenticate.
12144	Authentication *Authentication `type:"structure"`
12145
12146	// The current supported value is Redis.
12147	Engine *string `type:"string"`
12148
12149	// Indicates the user status. Can be "active", "modifying" or "deleting".
12150	Status *string `type:"string"`
12151
12152	// Returns a list of the user group IDs the user belongs to.
12153	UserGroupIds []*string `type:"list"`
12154
12155	// The ID of the user.
12156	UserId *string `type:"string"`
12157
12158	// The username of the user.
12159	UserName *string `type:"string"`
12160}
12161
12162// String returns the string representation
12163func (s DeleteUserOutput) String() string {
12164	return awsutil.Prettify(s)
12165}
12166
12167// GoString returns the string representation
12168func (s DeleteUserOutput) GoString() string {
12169	return s.String()
12170}
12171
12172// SetARN sets the ARN field's value.
12173func (s *DeleteUserOutput) SetARN(v string) *DeleteUserOutput {
12174	s.ARN = &v
12175	return s
12176}
12177
12178// SetAccessString sets the AccessString field's value.
12179func (s *DeleteUserOutput) SetAccessString(v string) *DeleteUserOutput {
12180	s.AccessString = &v
12181	return s
12182}
12183
12184// SetAuthentication sets the Authentication field's value.
12185func (s *DeleteUserOutput) SetAuthentication(v *Authentication) *DeleteUserOutput {
12186	s.Authentication = v
12187	return s
12188}
12189
12190// SetEngine sets the Engine field's value.
12191func (s *DeleteUserOutput) SetEngine(v string) *DeleteUserOutput {
12192	s.Engine = &v
12193	return s
12194}
12195
12196// SetStatus sets the Status field's value.
12197func (s *DeleteUserOutput) SetStatus(v string) *DeleteUserOutput {
12198	s.Status = &v
12199	return s
12200}
12201
12202// SetUserGroupIds sets the UserGroupIds field's value.
12203func (s *DeleteUserOutput) SetUserGroupIds(v []*string) *DeleteUserOutput {
12204	s.UserGroupIds = v
12205	return s
12206}
12207
12208// SetUserId sets the UserId field's value.
12209func (s *DeleteUserOutput) SetUserId(v string) *DeleteUserOutput {
12210	s.UserId = &v
12211	return s
12212}
12213
12214// SetUserName sets the UserName field's value.
12215func (s *DeleteUserOutput) SetUserName(v string) *DeleteUserOutput {
12216	s.UserName = &v
12217	return s
12218}
12219
12220// Represents the input of a DescribeCacheClusters operation.
12221type DescribeCacheClustersInput struct {
12222	_ struct{} `type:"structure"`
12223
12224	// The user-supplied cluster identifier. If this parameter is specified, only
12225	// information about that specific cluster is returned. This parameter isn't
12226	// case sensitive.
12227	CacheClusterId *string `type:"string"`
12228
12229	// An optional marker returned from a prior request. Use this marker for pagination
12230	// of results from this operation. If this parameter is specified, the response
12231	// includes only records beyond the marker, up to the value specified by MaxRecords.
12232	Marker *string `type:"string"`
12233
12234	// The maximum number of records to include in the response. If more records
12235	// exist than the specified MaxRecords value, a marker is included in the response
12236	// so that the remaining results can be retrieved.
12237	//
12238	// Default: 100
12239	//
12240	// Constraints: minimum 20; maximum 100.
12241	MaxRecords *int64 `type:"integer"`
12242
12243	// An optional flag that can be included in the DescribeCacheCluster request
12244	// to show only nodes (API/CLI: clusters) that are not members of a replication
12245	// group. In practice, this mean Memcached and single node Redis clusters.
12246	ShowCacheClustersNotInReplicationGroups *bool `type:"boolean"`
12247
12248	// An optional flag that can be included in the DescribeCacheCluster request
12249	// to retrieve information about the individual cache nodes.
12250	ShowCacheNodeInfo *bool `type:"boolean"`
12251}
12252
12253// String returns the string representation
12254func (s DescribeCacheClustersInput) String() string {
12255	return awsutil.Prettify(s)
12256}
12257
12258// GoString returns the string representation
12259func (s DescribeCacheClustersInput) GoString() string {
12260	return s.String()
12261}
12262
12263// SetCacheClusterId sets the CacheClusterId field's value.
12264func (s *DescribeCacheClustersInput) SetCacheClusterId(v string) *DescribeCacheClustersInput {
12265	s.CacheClusterId = &v
12266	return s
12267}
12268
12269// SetMarker sets the Marker field's value.
12270func (s *DescribeCacheClustersInput) SetMarker(v string) *DescribeCacheClustersInput {
12271	s.Marker = &v
12272	return s
12273}
12274
12275// SetMaxRecords sets the MaxRecords field's value.
12276func (s *DescribeCacheClustersInput) SetMaxRecords(v int64) *DescribeCacheClustersInput {
12277	s.MaxRecords = &v
12278	return s
12279}
12280
12281// SetShowCacheClustersNotInReplicationGroups sets the ShowCacheClustersNotInReplicationGroups field's value.
12282func (s *DescribeCacheClustersInput) SetShowCacheClustersNotInReplicationGroups(v bool) *DescribeCacheClustersInput {
12283	s.ShowCacheClustersNotInReplicationGroups = &v
12284	return s
12285}
12286
12287// SetShowCacheNodeInfo sets the ShowCacheNodeInfo field's value.
12288func (s *DescribeCacheClustersInput) SetShowCacheNodeInfo(v bool) *DescribeCacheClustersInput {
12289	s.ShowCacheNodeInfo = &v
12290	return s
12291}
12292
12293// Represents the output of a DescribeCacheClusters operation.
12294type DescribeCacheClustersOutput struct {
12295	_ struct{} `type:"structure"`
12296
12297	// A list of clusters. Each item in the list contains detailed information about
12298	// one cluster.
12299	CacheClusters []*CacheCluster `locationNameList:"CacheCluster" type:"list"`
12300
12301	// Provides an identifier to allow retrieval of paginated results.
12302	Marker *string `type:"string"`
12303}
12304
12305// String returns the string representation
12306func (s DescribeCacheClustersOutput) String() string {
12307	return awsutil.Prettify(s)
12308}
12309
12310// GoString returns the string representation
12311func (s DescribeCacheClustersOutput) GoString() string {
12312	return s.String()
12313}
12314
12315// SetCacheClusters sets the CacheClusters field's value.
12316func (s *DescribeCacheClustersOutput) SetCacheClusters(v []*CacheCluster) *DescribeCacheClustersOutput {
12317	s.CacheClusters = v
12318	return s
12319}
12320
12321// SetMarker sets the Marker field's value.
12322func (s *DescribeCacheClustersOutput) SetMarker(v string) *DescribeCacheClustersOutput {
12323	s.Marker = &v
12324	return s
12325}
12326
12327// Represents the input of a DescribeCacheEngineVersions operation.
12328type DescribeCacheEngineVersionsInput struct {
12329	_ struct{} `type:"structure"`
12330
12331	// The name of a specific cache parameter group family to return details for.
12332	//
12333	// Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 |
12334	// redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |
12335	//
12336	// Constraints:
12337	//
12338	//    * Must be 1 to 255 alphanumeric characters
12339	//
12340	//    * First character must be a letter
12341	//
12342	//    * Cannot end with a hyphen or contain two consecutive hyphens
12343	CacheParameterGroupFamily *string `type:"string"`
12344
12345	// If true, specifies that only the default version of the specified engine
12346	// or engine and major version combination is to be returned.
12347	DefaultOnly *bool `type:"boolean"`
12348
12349	// The cache engine to return. Valid values: memcached | redis
12350	Engine *string `type:"string"`
12351
12352	// The cache engine version to return.
12353	//
12354	// Example: 1.4.14
12355	EngineVersion *string `type:"string"`
12356
12357	// An optional marker returned from a prior request. Use this marker for pagination
12358	// of results from this operation. If this parameter is specified, the response
12359	// includes only records beyond the marker, up to the value specified by MaxRecords.
12360	Marker *string `type:"string"`
12361
12362	// The maximum number of records to include in the response. If more records
12363	// exist than the specified MaxRecords value, a marker is included in the response
12364	// so that the remaining results can be retrieved.
12365	//
12366	// Default: 100
12367	//
12368	// Constraints: minimum 20; maximum 100.
12369	MaxRecords *int64 `type:"integer"`
12370}
12371
12372// String returns the string representation
12373func (s DescribeCacheEngineVersionsInput) String() string {
12374	return awsutil.Prettify(s)
12375}
12376
12377// GoString returns the string representation
12378func (s DescribeCacheEngineVersionsInput) GoString() string {
12379	return s.String()
12380}
12381
12382// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
12383func (s *DescribeCacheEngineVersionsInput) SetCacheParameterGroupFamily(v string) *DescribeCacheEngineVersionsInput {
12384	s.CacheParameterGroupFamily = &v
12385	return s
12386}
12387
12388// SetDefaultOnly sets the DefaultOnly field's value.
12389func (s *DescribeCacheEngineVersionsInput) SetDefaultOnly(v bool) *DescribeCacheEngineVersionsInput {
12390	s.DefaultOnly = &v
12391	return s
12392}
12393
12394// SetEngine sets the Engine field's value.
12395func (s *DescribeCacheEngineVersionsInput) SetEngine(v string) *DescribeCacheEngineVersionsInput {
12396	s.Engine = &v
12397	return s
12398}
12399
12400// SetEngineVersion sets the EngineVersion field's value.
12401func (s *DescribeCacheEngineVersionsInput) SetEngineVersion(v string) *DescribeCacheEngineVersionsInput {
12402	s.EngineVersion = &v
12403	return s
12404}
12405
12406// SetMarker sets the Marker field's value.
12407func (s *DescribeCacheEngineVersionsInput) SetMarker(v string) *DescribeCacheEngineVersionsInput {
12408	s.Marker = &v
12409	return s
12410}
12411
12412// SetMaxRecords sets the MaxRecords field's value.
12413func (s *DescribeCacheEngineVersionsInput) SetMaxRecords(v int64) *DescribeCacheEngineVersionsInput {
12414	s.MaxRecords = &v
12415	return s
12416}
12417
12418// Represents the output of a DescribeCacheEngineVersions operation.
12419type DescribeCacheEngineVersionsOutput struct {
12420	_ struct{} `type:"structure"`
12421
12422	// A list of cache engine version details. Each element in the list contains
12423	// detailed information about one cache engine version.
12424	CacheEngineVersions []*CacheEngineVersion `locationNameList:"CacheEngineVersion" type:"list"`
12425
12426	// Provides an identifier to allow retrieval of paginated results.
12427	Marker *string `type:"string"`
12428}
12429
12430// String returns the string representation
12431func (s DescribeCacheEngineVersionsOutput) String() string {
12432	return awsutil.Prettify(s)
12433}
12434
12435// GoString returns the string representation
12436func (s DescribeCacheEngineVersionsOutput) GoString() string {
12437	return s.String()
12438}
12439
12440// SetCacheEngineVersions sets the CacheEngineVersions field's value.
12441func (s *DescribeCacheEngineVersionsOutput) SetCacheEngineVersions(v []*CacheEngineVersion) *DescribeCacheEngineVersionsOutput {
12442	s.CacheEngineVersions = v
12443	return s
12444}
12445
12446// SetMarker sets the Marker field's value.
12447func (s *DescribeCacheEngineVersionsOutput) SetMarker(v string) *DescribeCacheEngineVersionsOutput {
12448	s.Marker = &v
12449	return s
12450}
12451
12452// Represents the input of a DescribeCacheParameterGroups operation.
12453type DescribeCacheParameterGroupsInput struct {
12454	_ struct{} `type:"structure"`
12455
12456	// The name of a specific cache parameter group to return details for.
12457	CacheParameterGroupName *string `type:"string"`
12458
12459	// An optional marker returned from a prior request. Use this marker for pagination
12460	// of results from this operation. If this parameter is specified, the response
12461	// includes only records beyond the marker, up to the value specified by MaxRecords.
12462	Marker *string `type:"string"`
12463
12464	// The maximum number of records to include in the response. If more records
12465	// exist than the specified MaxRecords value, a marker is included in the response
12466	// so that the remaining results can be retrieved.
12467	//
12468	// Default: 100
12469	//
12470	// Constraints: minimum 20; maximum 100.
12471	MaxRecords *int64 `type:"integer"`
12472}
12473
12474// String returns the string representation
12475func (s DescribeCacheParameterGroupsInput) String() string {
12476	return awsutil.Prettify(s)
12477}
12478
12479// GoString returns the string representation
12480func (s DescribeCacheParameterGroupsInput) GoString() string {
12481	return s.String()
12482}
12483
12484// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
12485func (s *DescribeCacheParameterGroupsInput) SetCacheParameterGroupName(v string) *DescribeCacheParameterGroupsInput {
12486	s.CacheParameterGroupName = &v
12487	return s
12488}
12489
12490// SetMarker sets the Marker field's value.
12491func (s *DescribeCacheParameterGroupsInput) SetMarker(v string) *DescribeCacheParameterGroupsInput {
12492	s.Marker = &v
12493	return s
12494}
12495
12496// SetMaxRecords sets the MaxRecords field's value.
12497func (s *DescribeCacheParameterGroupsInput) SetMaxRecords(v int64) *DescribeCacheParameterGroupsInput {
12498	s.MaxRecords = &v
12499	return s
12500}
12501
12502// Represents the output of a DescribeCacheParameterGroups operation.
12503type DescribeCacheParameterGroupsOutput struct {
12504	_ struct{} `type:"structure"`
12505
12506	// A list of cache parameter groups. Each element in the list contains detailed
12507	// information about one cache parameter group.
12508	CacheParameterGroups []*CacheParameterGroup `locationNameList:"CacheParameterGroup" type:"list"`
12509
12510	// Provides an identifier to allow retrieval of paginated results.
12511	Marker *string `type:"string"`
12512}
12513
12514// String returns the string representation
12515func (s DescribeCacheParameterGroupsOutput) String() string {
12516	return awsutil.Prettify(s)
12517}
12518
12519// GoString returns the string representation
12520func (s DescribeCacheParameterGroupsOutput) GoString() string {
12521	return s.String()
12522}
12523
12524// SetCacheParameterGroups sets the CacheParameterGroups field's value.
12525func (s *DescribeCacheParameterGroupsOutput) SetCacheParameterGroups(v []*CacheParameterGroup) *DescribeCacheParameterGroupsOutput {
12526	s.CacheParameterGroups = v
12527	return s
12528}
12529
12530// SetMarker sets the Marker field's value.
12531func (s *DescribeCacheParameterGroupsOutput) SetMarker(v string) *DescribeCacheParameterGroupsOutput {
12532	s.Marker = &v
12533	return s
12534}
12535
12536// Represents the input of a DescribeCacheParameters operation.
12537type DescribeCacheParametersInput struct {
12538	_ struct{} `type:"structure"`
12539
12540	// The name of a specific cache parameter group to return details for.
12541	//
12542	// CacheParameterGroupName is a required field
12543	CacheParameterGroupName *string `type:"string" required:"true"`
12544
12545	// An optional marker returned from a prior request. Use this marker for pagination
12546	// of results from this operation. If this parameter is specified, the response
12547	// includes only records beyond the marker, up to the value specified by MaxRecords.
12548	Marker *string `type:"string"`
12549
12550	// The maximum number of records to include in the response. If more records
12551	// exist than the specified MaxRecords value, a marker is included in the response
12552	// so that the remaining results can be retrieved.
12553	//
12554	// Default: 100
12555	//
12556	// Constraints: minimum 20; maximum 100.
12557	MaxRecords *int64 `type:"integer"`
12558
12559	// The parameter types to return.
12560	//
12561	// Valid values: user | system | engine-default
12562	Source *string `type:"string"`
12563}
12564
12565// String returns the string representation
12566func (s DescribeCacheParametersInput) String() string {
12567	return awsutil.Prettify(s)
12568}
12569
12570// GoString returns the string representation
12571func (s DescribeCacheParametersInput) GoString() string {
12572	return s.String()
12573}
12574
12575// Validate inspects the fields of the type to determine if they are valid.
12576func (s *DescribeCacheParametersInput) Validate() error {
12577	invalidParams := request.ErrInvalidParams{Context: "DescribeCacheParametersInput"}
12578	if s.CacheParameterGroupName == nil {
12579		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
12580	}
12581
12582	if invalidParams.Len() > 0 {
12583		return invalidParams
12584	}
12585	return nil
12586}
12587
12588// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
12589func (s *DescribeCacheParametersInput) SetCacheParameterGroupName(v string) *DescribeCacheParametersInput {
12590	s.CacheParameterGroupName = &v
12591	return s
12592}
12593
12594// SetMarker sets the Marker field's value.
12595func (s *DescribeCacheParametersInput) SetMarker(v string) *DescribeCacheParametersInput {
12596	s.Marker = &v
12597	return s
12598}
12599
12600// SetMaxRecords sets the MaxRecords field's value.
12601func (s *DescribeCacheParametersInput) SetMaxRecords(v int64) *DescribeCacheParametersInput {
12602	s.MaxRecords = &v
12603	return s
12604}
12605
12606// SetSource sets the Source field's value.
12607func (s *DescribeCacheParametersInput) SetSource(v string) *DescribeCacheParametersInput {
12608	s.Source = &v
12609	return s
12610}
12611
12612// Represents the output of a DescribeCacheParameters operation.
12613type DescribeCacheParametersOutput struct {
12614	_ struct{} `type:"structure"`
12615
12616	// A list of parameters specific to a particular cache node type. Each element
12617	// in the list contains detailed information about one parameter.
12618	CacheNodeTypeSpecificParameters []*CacheNodeTypeSpecificParameter `locationNameList:"CacheNodeTypeSpecificParameter" type:"list"`
12619
12620	// Provides an identifier to allow retrieval of paginated results.
12621	Marker *string `type:"string"`
12622
12623	// A list of Parameter instances.
12624	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`
12625}
12626
12627// String returns the string representation
12628func (s DescribeCacheParametersOutput) String() string {
12629	return awsutil.Prettify(s)
12630}
12631
12632// GoString returns the string representation
12633func (s DescribeCacheParametersOutput) GoString() string {
12634	return s.String()
12635}
12636
12637// SetCacheNodeTypeSpecificParameters sets the CacheNodeTypeSpecificParameters field's value.
12638func (s *DescribeCacheParametersOutput) SetCacheNodeTypeSpecificParameters(v []*CacheNodeTypeSpecificParameter) *DescribeCacheParametersOutput {
12639	s.CacheNodeTypeSpecificParameters = v
12640	return s
12641}
12642
12643// SetMarker sets the Marker field's value.
12644func (s *DescribeCacheParametersOutput) SetMarker(v string) *DescribeCacheParametersOutput {
12645	s.Marker = &v
12646	return s
12647}
12648
12649// SetParameters sets the Parameters field's value.
12650func (s *DescribeCacheParametersOutput) SetParameters(v []*Parameter) *DescribeCacheParametersOutput {
12651	s.Parameters = v
12652	return s
12653}
12654
12655// Represents the input of a DescribeCacheSecurityGroups operation.
12656type DescribeCacheSecurityGroupsInput struct {
12657	_ struct{} `type:"structure"`
12658
12659	// The name of the cache security group to return details for.
12660	CacheSecurityGroupName *string `type:"string"`
12661
12662	// An optional marker returned from a prior request. Use this marker for pagination
12663	// of results from this operation. If this parameter is specified, the response
12664	// includes only records beyond the marker, up to the value specified by MaxRecords.
12665	Marker *string `type:"string"`
12666
12667	// The maximum number of records to include in the response. If more records
12668	// exist than the specified MaxRecords value, a marker is included in the response
12669	// so that the remaining results can be retrieved.
12670	//
12671	// Default: 100
12672	//
12673	// Constraints: minimum 20; maximum 100.
12674	MaxRecords *int64 `type:"integer"`
12675}
12676
12677// String returns the string representation
12678func (s DescribeCacheSecurityGroupsInput) String() string {
12679	return awsutil.Prettify(s)
12680}
12681
12682// GoString returns the string representation
12683func (s DescribeCacheSecurityGroupsInput) GoString() string {
12684	return s.String()
12685}
12686
12687// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
12688func (s *DescribeCacheSecurityGroupsInput) SetCacheSecurityGroupName(v string) *DescribeCacheSecurityGroupsInput {
12689	s.CacheSecurityGroupName = &v
12690	return s
12691}
12692
12693// SetMarker sets the Marker field's value.
12694func (s *DescribeCacheSecurityGroupsInput) SetMarker(v string) *DescribeCacheSecurityGroupsInput {
12695	s.Marker = &v
12696	return s
12697}
12698
12699// SetMaxRecords sets the MaxRecords field's value.
12700func (s *DescribeCacheSecurityGroupsInput) SetMaxRecords(v int64) *DescribeCacheSecurityGroupsInput {
12701	s.MaxRecords = &v
12702	return s
12703}
12704
12705// Represents the output of a DescribeCacheSecurityGroups operation.
12706type DescribeCacheSecurityGroupsOutput struct {
12707	_ struct{} `type:"structure"`
12708
12709	// A list of cache security groups. Each element in the list contains detailed
12710	// information about one group.
12711	CacheSecurityGroups []*CacheSecurityGroup `locationNameList:"CacheSecurityGroup" type:"list"`
12712
12713	// Provides an identifier to allow retrieval of paginated results.
12714	Marker *string `type:"string"`
12715}
12716
12717// String returns the string representation
12718func (s DescribeCacheSecurityGroupsOutput) String() string {
12719	return awsutil.Prettify(s)
12720}
12721
12722// GoString returns the string representation
12723func (s DescribeCacheSecurityGroupsOutput) GoString() string {
12724	return s.String()
12725}
12726
12727// SetCacheSecurityGroups sets the CacheSecurityGroups field's value.
12728func (s *DescribeCacheSecurityGroupsOutput) SetCacheSecurityGroups(v []*CacheSecurityGroup) *DescribeCacheSecurityGroupsOutput {
12729	s.CacheSecurityGroups = v
12730	return s
12731}
12732
12733// SetMarker sets the Marker field's value.
12734func (s *DescribeCacheSecurityGroupsOutput) SetMarker(v string) *DescribeCacheSecurityGroupsOutput {
12735	s.Marker = &v
12736	return s
12737}
12738
12739// Represents the input of a DescribeCacheSubnetGroups operation.
12740type DescribeCacheSubnetGroupsInput struct {
12741	_ struct{} `type:"structure"`
12742
12743	// The name of the cache subnet group to return details for.
12744	CacheSubnetGroupName *string `type:"string"`
12745
12746	// An optional marker returned from a prior request. Use this marker for pagination
12747	// of results from this operation. If this parameter is specified, the response
12748	// includes only records beyond the marker, up to the value specified by MaxRecords.
12749	Marker *string `type:"string"`
12750
12751	// The maximum number of records to include in the response. If more records
12752	// exist than the specified MaxRecords value, a marker is included in the response
12753	// so that the remaining results can be retrieved.
12754	//
12755	// Default: 100
12756	//
12757	// Constraints: minimum 20; maximum 100.
12758	MaxRecords *int64 `type:"integer"`
12759}
12760
12761// String returns the string representation
12762func (s DescribeCacheSubnetGroupsInput) String() string {
12763	return awsutil.Prettify(s)
12764}
12765
12766// GoString returns the string representation
12767func (s DescribeCacheSubnetGroupsInput) GoString() string {
12768	return s.String()
12769}
12770
12771// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
12772func (s *DescribeCacheSubnetGroupsInput) SetCacheSubnetGroupName(v string) *DescribeCacheSubnetGroupsInput {
12773	s.CacheSubnetGroupName = &v
12774	return s
12775}
12776
12777// SetMarker sets the Marker field's value.
12778func (s *DescribeCacheSubnetGroupsInput) SetMarker(v string) *DescribeCacheSubnetGroupsInput {
12779	s.Marker = &v
12780	return s
12781}
12782
12783// SetMaxRecords sets the MaxRecords field's value.
12784func (s *DescribeCacheSubnetGroupsInput) SetMaxRecords(v int64) *DescribeCacheSubnetGroupsInput {
12785	s.MaxRecords = &v
12786	return s
12787}
12788
12789// Represents the output of a DescribeCacheSubnetGroups operation.
12790type DescribeCacheSubnetGroupsOutput struct {
12791	_ struct{} `type:"structure"`
12792
12793	// A list of cache subnet groups. Each element in the list contains detailed
12794	// information about one group.
12795	CacheSubnetGroups []*CacheSubnetGroup `locationNameList:"CacheSubnetGroup" type:"list"`
12796
12797	// Provides an identifier to allow retrieval of paginated results.
12798	Marker *string `type:"string"`
12799}
12800
12801// String returns the string representation
12802func (s DescribeCacheSubnetGroupsOutput) String() string {
12803	return awsutil.Prettify(s)
12804}
12805
12806// GoString returns the string representation
12807func (s DescribeCacheSubnetGroupsOutput) GoString() string {
12808	return s.String()
12809}
12810
12811// SetCacheSubnetGroups sets the CacheSubnetGroups field's value.
12812func (s *DescribeCacheSubnetGroupsOutput) SetCacheSubnetGroups(v []*CacheSubnetGroup) *DescribeCacheSubnetGroupsOutput {
12813	s.CacheSubnetGroups = v
12814	return s
12815}
12816
12817// SetMarker sets the Marker field's value.
12818func (s *DescribeCacheSubnetGroupsOutput) SetMarker(v string) *DescribeCacheSubnetGroupsOutput {
12819	s.Marker = &v
12820	return s
12821}
12822
12823// Represents the input of a DescribeEngineDefaultParameters operation.
12824type DescribeEngineDefaultParametersInput struct {
12825	_ struct{} `type:"structure"`
12826
12827	// The name of the cache parameter group family.
12828	//
12829	// Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 |
12830	// redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |
12831	//
12832	// CacheParameterGroupFamily is a required field
12833	CacheParameterGroupFamily *string `type:"string" required:"true"`
12834
12835	// An optional marker returned from a prior request. Use this marker for pagination
12836	// of results from this operation. If this parameter is specified, the response
12837	// includes only records beyond the marker, up to the value specified by MaxRecords.
12838	Marker *string `type:"string"`
12839
12840	// The maximum number of records to include in the response. If more records
12841	// exist than the specified MaxRecords value, a marker is included in the response
12842	// so that the remaining results can be retrieved.
12843	//
12844	// Default: 100
12845	//
12846	// Constraints: minimum 20; maximum 100.
12847	MaxRecords *int64 `type:"integer"`
12848}
12849
12850// String returns the string representation
12851func (s DescribeEngineDefaultParametersInput) String() string {
12852	return awsutil.Prettify(s)
12853}
12854
12855// GoString returns the string representation
12856func (s DescribeEngineDefaultParametersInput) GoString() string {
12857	return s.String()
12858}
12859
12860// Validate inspects the fields of the type to determine if they are valid.
12861func (s *DescribeEngineDefaultParametersInput) Validate() error {
12862	invalidParams := request.ErrInvalidParams{Context: "DescribeEngineDefaultParametersInput"}
12863	if s.CacheParameterGroupFamily == nil {
12864		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupFamily"))
12865	}
12866
12867	if invalidParams.Len() > 0 {
12868		return invalidParams
12869	}
12870	return nil
12871}
12872
12873// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
12874func (s *DescribeEngineDefaultParametersInput) SetCacheParameterGroupFamily(v string) *DescribeEngineDefaultParametersInput {
12875	s.CacheParameterGroupFamily = &v
12876	return s
12877}
12878
12879// SetMarker sets the Marker field's value.
12880func (s *DescribeEngineDefaultParametersInput) SetMarker(v string) *DescribeEngineDefaultParametersInput {
12881	s.Marker = &v
12882	return s
12883}
12884
12885// SetMaxRecords sets the MaxRecords field's value.
12886func (s *DescribeEngineDefaultParametersInput) SetMaxRecords(v int64) *DescribeEngineDefaultParametersInput {
12887	s.MaxRecords = &v
12888	return s
12889}
12890
12891type DescribeEngineDefaultParametersOutput struct {
12892	_ struct{} `type:"structure"`
12893
12894	// Represents the output of a DescribeEngineDefaultParameters operation.
12895	EngineDefaults *EngineDefaults `type:"structure"`
12896}
12897
12898// String returns the string representation
12899func (s DescribeEngineDefaultParametersOutput) String() string {
12900	return awsutil.Prettify(s)
12901}
12902
12903// GoString returns the string representation
12904func (s DescribeEngineDefaultParametersOutput) GoString() string {
12905	return s.String()
12906}
12907
12908// SetEngineDefaults sets the EngineDefaults field's value.
12909func (s *DescribeEngineDefaultParametersOutput) SetEngineDefaults(v *EngineDefaults) *DescribeEngineDefaultParametersOutput {
12910	s.EngineDefaults = v
12911	return s
12912}
12913
12914// Represents the input of a DescribeEvents operation.
12915type DescribeEventsInput struct {
12916	_ struct{} `type:"structure"`
12917
12918	// The number of minutes worth of events to retrieve.
12919	Duration *int64 `type:"integer"`
12920
12921	// The end of the time interval for which to retrieve events, specified in ISO
12922	// 8601 format.
12923	//
12924	// Example: 2017-03-30T07:03:49.555Z
12925	EndTime *time.Time `type:"timestamp"`
12926
12927	// An optional marker returned from a prior request. Use this marker for pagination
12928	// of results from this operation. If this parameter is specified, the response
12929	// includes only records beyond the marker, up to the value specified by MaxRecords.
12930	Marker *string `type:"string"`
12931
12932	// The maximum number of records to include in the response. If more records
12933	// exist than the specified MaxRecords value, a marker is included in the response
12934	// so that the remaining results can be retrieved.
12935	//
12936	// Default: 100
12937	//
12938	// Constraints: minimum 20; maximum 100.
12939	MaxRecords *int64 `type:"integer"`
12940
12941	// The identifier of the event source for which events are returned. If not
12942	// specified, all sources are included in the response.
12943	SourceIdentifier *string `type:"string"`
12944
12945	// The event source to retrieve events for. If no value is specified, all events
12946	// are returned.
12947	SourceType *string `type:"string" enum:"SourceType"`
12948
12949	// The beginning of the time interval to retrieve events for, specified in ISO
12950	// 8601 format.
12951	//
12952	// Example: 2017-03-30T07:03:49.555Z
12953	StartTime *time.Time `type:"timestamp"`
12954}
12955
12956// String returns the string representation
12957func (s DescribeEventsInput) String() string {
12958	return awsutil.Prettify(s)
12959}
12960
12961// GoString returns the string representation
12962func (s DescribeEventsInput) GoString() string {
12963	return s.String()
12964}
12965
12966// SetDuration sets the Duration field's value.
12967func (s *DescribeEventsInput) SetDuration(v int64) *DescribeEventsInput {
12968	s.Duration = &v
12969	return s
12970}
12971
12972// SetEndTime sets the EndTime field's value.
12973func (s *DescribeEventsInput) SetEndTime(v time.Time) *DescribeEventsInput {
12974	s.EndTime = &v
12975	return s
12976}
12977
12978// SetMarker sets the Marker field's value.
12979func (s *DescribeEventsInput) SetMarker(v string) *DescribeEventsInput {
12980	s.Marker = &v
12981	return s
12982}
12983
12984// SetMaxRecords sets the MaxRecords field's value.
12985func (s *DescribeEventsInput) SetMaxRecords(v int64) *DescribeEventsInput {
12986	s.MaxRecords = &v
12987	return s
12988}
12989
12990// SetSourceIdentifier sets the SourceIdentifier field's value.
12991func (s *DescribeEventsInput) SetSourceIdentifier(v string) *DescribeEventsInput {
12992	s.SourceIdentifier = &v
12993	return s
12994}
12995
12996// SetSourceType sets the SourceType field's value.
12997func (s *DescribeEventsInput) SetSourceType(v string) *DescribeEventsInput {
12998	s.SourceType = &v
12999	return s
13000}
13001
13002// SetStartTime sets the StartTime field's value.
13003func (s *DescribeEventsInput) SetStartTime(v time.Time) *DescribeEventsInput {
13004	s.StartTime = &v
13005	return s
13006}
13007
13008// Represents the output of a DescribeEvents operation.
13009type DescribeEventsOutput struct {
13010	_ struct{} `type:"structure"`
13011
13012	// A list of events. Each element in the list contains detailed information
13013	// about one event.
13014	Events []*Event `locationNameList:"Event" type:"list"`
13015
13016	// Provides an identifier to allow retrieval of paginated results.
13017	Marker *string `type:"string"`
13018}
13019
13020// String returns the string representation
13021func (s DescribeEventsOutput) String() string {
13022	return awsutil.Prettify(s)
13023}
13024
13025// GoString returns the string representation
13026func (s DescribeEventsOutput) GoString() string {
13027	return s.String()
13028}
13029
13030// SetEvents sets the Events field's value.
13031func (s *DescribeEventsOutput) SetEvents(v []*Event) *DescribeEventsOutput {
13032	s.Events = v
13033	return s
13034}
13035
13036// SetMarker sets the Marker field's value.
13037func (s *DescribeEventsOutput) SetMarker(v string) *DescribeEventsOutput {
13038	s.Marker = &v
13039	return s
13040}
13041
13042type DescribeGlobalReplicationGroupsInput struct {
13043	_ struct{} `type:"structure"`
13044
13045	// The name of the Global datastore
13046	GlobalReplicationGroupId *string `type:"string"`
13047
13048	// An optional marker returned from a prior request. Use this marker for pagination
13049	// of results from this operation. If this parameter is specified, the response
13050	// includes only records beyond the marker, up to the value specified by MaxRecords.
13051	Marker *string `type:"string"`
13052
13053	// The maximum number of records to include in the response. If more records
13054	// exist than the specified MaxRecords value, a marker is included in the response
13055	// so that the remaining results can be retrieved.
13056	MaxRecords *int64 `type:"integer"`
13057
13058	// Returns the list of members that comprise the Global datastore.
13059	ShowMemberInfo *bool `type:"boolean"`
13060}
13061
13062// String returns the string representation
13063func (s DescribeGlobalReplicationGroupsInput) String() string {
13064	return awsutil.Prettify(s)
13065}
13066
13067// GoString returns the string representation
13068func (s DescribeGlobalReplicationGroupsInput) GoString() string {
13069	return s.String()
13070}
13071
13072// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
13073func (s *DescribeGlobalReplicationGroupsInput) SetGlobalReplicationGroupId(v string) *DescribeGlobalReplicationGroupsInput {
13074	s.GlobalReplicationGroupId = &v
13075	return s
13076}
13077
13078// SetMarker sets the Marker field's value.
13079func (s *DescribeGlobalReplicationGroupsInput) SetMarker(v string) *DescribeGlobalReplicationGroupsInput {
13080	s.Marker = &v
13081	return s
13082}
13083
13084// SetMaxRecords sets the MaxRecords field's value.
13085func (s *DescribeGlobalReplicationGroupsInput) SetMaxRecords(v int64) *DescribeGlobalReplicationGroupsInput {
13086	s.MaxRecords = &v
13087	return s
13088}
13089
13090// SetShowMemberInfo sets the ShowMemberInfo field's value.
13091func (s *DescribeGlobalReplicationGroupsInput) SetShowMemberInfo(v bool) *DescribeGlobalReplicationGroupsInput {
13092	s.ShowMemberInfo = &v
13093	return s
13094}
13095
13096type DescribeGlobalReplicationGroupsOutput struct {
13097	_ struct{} `type:"structure"`
13098
13099	// Indicates the slot configuration and global identifier for each slice group.
13100	GlobalReplicationGroups []*GlobalReplicationGroup `locationNameList:"GlobalReplicationGroup" type:"list"`
13101
13102	// An optional marker returned from a prior request. Use this marker for pagination
13103	// of results from this operation. If this parameter is specified, the response
13104	// includes only records beyond the marker, up to the value specified by MaxRecords.
13105	// >
13106	Marker *string `type:"string"`
13107}
13108
13109// String returns the string representation
13110func (s DescribeGlobalReplicationGroupsOutput) String() string {
13111	return awsutil.Prettify(s)
13112}
13113
13114// GoString returns the string representation
13115func (s DescribeGlobalReplicationGroupsOutput) GoString() string {
13116	return s.String()
13117}
13118
13119// SetGlobalReplicationGroups sets the GlobalReplicationGroups field's value.
13120func (s *DescribeGlobalReplicationGroupsOutput) SetGlobalReplicationGroups(v []*GlobalReplicationGroup) *DescribeGlobalReplicationGroupsOutput {
13121	s.GlobalReplicationGroups = v
13122	return s
13123}
13124
13125// SetMarker sets the Marker field's value.
13126func (s *DescribeGlobalReplicationGroupsOutput) SetMarker(v string) *DescribeGlobalReplicationGroupsOutput {
13127	s.Marker = &v
13128	return s
13129}
13130
13131// Represents the input of a DescribeReplicationGroups operation.
13132type DescribeReplicationGroupsInput struct {
13133	_ struct{} `type:"structure"`
13134
13135	// An optional marker returned from a prior request. Use this marker for pagination
13136	// of results from this operation. If this parameter is specified, the response
13137	// includes only records beyond the marker, up to the value specified by MaxRecords.
13138	Marker *string `type:"string"`
13139
13140	// The maximum number of records to include in the response. If more records
13141	// exist than the specified MaxRecords value, a marker is included in the response
13142	// so that the remaining results can be retrieved.
13143	//
13144	// Default: 100
13145	//
13146	// Constraints: minimum 20; maximum 100.
13147	MaxRecords *int64 `type:"integer"`
13148
13149	// The identifier for the replication group to be described. This parameter
13150	// is not case sensitive.
13151	//
13152	// If you do not specify this parameter, information about all replication groups
13153	// is returned.
13154	ReplicationGroupId *string `type:"string"`
13155}
13156
13157// String returns the string representation
13158func (s DescribeReplicationGroupsInput) String() string {
13159	return awsutil.Prettify(s)
13160}
13161
13162// GoString returns the string representation
13163func (s DescribeReplicationGroupsInput) GoString() string {
13164	return s.String()
13165}
13166
13167// SetMarker sets the Marker field's value.
13168func (s *DescribeReplicationGroupsInput) SetMarker(v string) *DescribeReplicationGroupsInput {
13169	s.Marker = &v
13170	return s
13171}
13172
13173// SetMaxRecords sets the MaxRecords field's value.
13174func (s *DescribeReplicationGroupsInput) SetMaxRecords(v int64) *DescribeReplicationGroupsInput {
13175	s.MaxRecords = &v
13176	return s
13177}
13178
13179// SetReplicationGroupId sets the ReplicationGroupId field's value.
13180func (s *DescribeReplicationGroupsInput) SetReplicationGroupId(v string) *DescribeReplicationGroupsInput {
13181	s.ReplicationGroupId = &v
13182	return s
13183}
13184
13185// Represents the output of a DescribeReplicationGroups operation.
13186type DescribeReplicationGroupsOutput struct {
13187	_ struct{} `type:"structure"`
13188
13189	// Provides an identifier to allow retrieval of paginated results.
13190	Marker *string `type:"string"`
13191
13192	// A list of replication groups. Each item in the list contains detailed information
13193	// about one replication group.
13194	ReplicationGroups []*ReplicationGroup `locationNameList:"ReplicationGroup" type:"list"`
13195}
13196
13197// String returns the string representation
13198func (s DescribeReplicationGroupsOutput) String() string {
13199	return awsutil.Prettify(s)
13200}
13201
13202// GoString returns the string representation
13203func (s DescribeReplicationGroupsOutput) GoString() string {
13204	return s.String()
13205}
13206
13207// SetMarker sets the Marker field's value.
13208func (s *DescribeReplicationGroupsOutput) SetMarker(v string) *DescribeReplicationGroupsOutput {
13209	s.Marker = &v
13210	return s
13211}
13212
13213// SetReplicationGroups sets the ReplicationGroups field's value.
13214func (s *DescribeReplicationGroupsOutput) SetReplicationGroups(v []*ReplicationGroup) *DescribeReplicationGroupsOutput {
13215	s.ReplicationGroups = v
13216	return s
13217}
13218
13219// Represents the input of a DescribeReservedCacheNodes operation.
13220type DescribeReservedCacheNodesInput struct {
13221	_ struct{} `type:"structure"`
13222
13223	// The cache node type filter value. Use this parameter to show only those reservations
13224	// matching the specified cache node type.
13225	//
13226	// The following node types are supported by ElastiCache. Generally speaking,
13227	// the current generation types provide more memory and computational power
13228	// at lower cost when compared to their equivalent previous generation counterparts.
13229	//
13230	//    * General purpose: Current generation: M6g node types (available only
13231	//    for Redis engine version 5.0.6 onward and for Memcached engine version
13232	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
13233	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
13234	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
13235	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
13236	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
13237	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
13238	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
13239	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
13240	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
13241	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
13242	//    cache.m3.2xlarge
13243	//
13244	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
13245	//    cache.c1.xlarge
13246	//
13247	//    * Memory optimized: Current generation: R6g node types (available only
13248	//    for Redis engine version 5.0.6 onward and for Memcached engine version
13249	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
13250	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
13251	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
13252	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
13253	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
13254	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
13255	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
13256	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
13257	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
13258	//
13259	// Additional node type info
13260	//
13261	//    * All current generation instance types are created in Amazon VPC by default.
13262	//
13263	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
13264	//
13265	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
13266	//
13267	//    * Redis configuration variables appendonly and appendfsync are not supported
13268	//    on Redis version 2.8.22 and later.
13269	CacheNodeType *string `type:"string"`
13270
13271	// The duration filter value, specified in years or seconds. Use this parameter
13272	// to show only reservations for this duration.
13273	//
13274	// Valid Values: 1 | 3 | 31536000 | 94608000
13275	Duration *string `type:"string"`
13276
13277	// An optional marker returned from a prior request. Use this marker for pagination
13278	// of results from this operation. If this parameter is specified, the response
13279	// includes only records beyond the marker, up to the value specified by MaxRecords.
13280	Marker *string `type:"string"`
13281
13282	// The maximum number of records to include in the response. If more records
13283	// exist than the specified MaxRecords value, a marker is included in the response
13284	// so that the remaining results can be retrieved.
13285	//
13286	// Default: 100
13287	//
13288	// Constraints: minimum 20; maximum 100.
13289	MaxRecords *int64 `type:"integer"`
13290
13291	// The offering type filter value. Use this parameter to show only the available
13292	// offerings matching the specified offering type.
13293	//
13294	// Valid values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization"|"All
13295	// Upfront"|"Partial Upfront"| "No Upfront"
13296	OfferingType *string `type:"string"`
13297
13298	// The product description filter value. Use this parameter to show only those
13299	// reservations matching the specified product description.
13300	ProductDescription *string `type:"string"`
13301
13302	// The reserved cache node identifier filter value. Use this parameter to show
13303	// only the reservation that matches the specified reservation ID.
13304	ReservedCacheNodeId *string `type:"string"`
13305
13306	// The offering identifier filter value. Use this parameter to show only purchased
13307	// reservations matching the specified offering identifier.
13308	ReservedCacheNodesOfferingId *string `type:"string"`
13309}
13310
13311// String returns the string representation
13312func (s DescribeReservedCacheNodesInput) String() string {
13313	return awsutil.Prettify(s)
13314}
13315
13316// GoString returns the string representation
13317func (s DescribeReservedCacheNodesInput) GoString() string {
13318	return s.String()
13319}
13320
13321// SetCacheNodeType sets the CacheNodeType field's value.
13322func (s *DescribeReservedCacheNodesInput) SetCacheNodeType(v string) *DescribeReservedCacheNodesInput {
13323	s.CacheNodeType = &v
13324	return s
13325}
13326
13327// SetDuration sets the Duration field's value.
13328func (s *DescribeReservedCacheNodesInput) SetDuration(v string) *DescribeReservedCacheNodesInput {
13329	s.Duration = &v
13330	return s
13331}
13332
13333// SetMarker sets the Marker field's value.
13334func (s *DescribeReservedCacheNodesInput) SetMarker(v string) *DescribeReservedCacheNodesInput {
13335	s.Marker = &v
13336	return s
13337}
13338
13339// SetMaxRecords sets the MaxRecords field's value.
13340func (s *DescribeReservedCacheNodesInput) SetMaxRecords(v int64) *DescribeReservedCacheNodesInput {
13341	s.MaxRecords = &v
13342	return s
13343}
13344
13345// SetOfferingType sets the OfferingType field's value.
13346func (s *DescribeReservedCacheNodesInput) SetOfferingType(v string) *DescribeReservedCacheNodesInput {
13347	s.OfferingType = &v
13348	return s
13349}
13350
13351// SetProductDescription sets the ProductDescription field's value.
13352func (s *DescribeReservedCacheNodesInput) SetProductDescription(v string) *DescribeReservedCacheNodesInput {
13353	s.ProductDescription = &v
13354	return s
13355}
13356
13357// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
13358func (s *DescribeReservedCacheNodesInput) SetReservedCacheNodeId(v string) *DescribeReservedCacheNodesInput {
13359	s.ReservedCacheNodeId = &v
13360	return s
13361}
13362
13363// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
13364func (s *DescribeReservedCacheNodesInput) SetReservedCacheNodesOfferingId(v string) *DescribeReservedCacheNodesInput {
13365	s.ReservedCacheNodesOfferingId = &v
13366	return s
13367}
13368
13369// Represents the input of a DescribeReservedCacheNodesOfferings operation.
13370type DescribeReservedCacheNodesOfferingsInput struct {
13371	_ struct{} `type:"structure"`
13372
13373	// The cache node type filter value. Use this parameter to show only the available
13374	// offerings matching the specified cache node type.
13375	//
13376	// The following node types are supported by ElastiCache. Generally speaking,
13377	// the current generation types provide more memory and computational power
13378	// at lower cost when compared to their equivalent previous generation counterparts.
13379	//
13380	//    * General purpose: Current generation: M6g node types (available only
13381	//    for Redis engine version 5.0.6 onward and for Memcached engine version
13382	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
13383	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
13384	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
13385	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
13386	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
13387	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
13388	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
13389	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
13390	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
13391	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
13392	//    cache.m3.2xlarge
13393	//
13394	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
13395	//    cache.c1.xlarge
13396	//
13397	//    * Memory optimized: Current generation: R6g node types (available only
13398	//    for Redis engine version 5.0.6 onward and for Memcached engine version
13399	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
13400	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
13401	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
13402	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
13403	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
13404	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
13405	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
13406	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
13407	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
13408	//
13409	// Additional node type info
13410	//
13411	//    * All current generation instance types are created in Amazon VPC by default.
13412	//
13413	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
13414	//
13415	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
13416	//
13417	//    * Redis configuration variables appendonly and appendfsync are not supported
13418	//    on Redis version 2.8.22 and later.
13419	CacheNodeType *string `type:"string"`
13420
13421	// Duration filter value, specified in years or seconds. Use this parameter
13422	// to show only reservations for a given duration.
13423	//
13424	// Valid Values: 1 | 3 | 31536000 | 94608000
13425	Duration *string `type:"string"`
13426
13427	// An optional marker returned from a prior request. Use this marker for pagination
13428	// of results from this operation. If this parameter is specified, the response
13429	// includes only records beyond the marker, up to the value specified by MaxRecords.
13430	Marker *string `type:"string"`
13431
13432	// The maximum number of records to include in the response. If more records
13433	// exist than the specified MaxRecords value, a marker is included in the response
13434	// so that the remaining results can be retrieved.
13435	//
13436	// Default: 100
13437	//
13438	// Constraints: minimum 20; maximum 100.
13439	MaxRecords *int64 `type:"integer"`
13440
13441	// The offering type filter value. Use this parameter to show only the available
13442	// offerings matching the specified offering type.
13443	//
13444	// Valid Values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization"
13445	// |"All Upfront"|"Partial Upfront"| "No Upfront"
13446	OfferingType *string `type:"string"`
13447
13448	// The product description filter value. Use this parameter to show only the
13449	// available offerings matching the specified product description.
13450	ProductDescription *string `type:"string"`
13451
13452	// The offering identifier filter value. Use this parameter to show only the
13453	// available offering that matches the specified reservation identifier.
13454	//
13455	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
13456	ReservedCacheNodesOfferingId *string `type:"string"`
13457}
13458
13459// String returns the string representation
13460func (s DescribeReservedCacheNodesOfferingsInput) String() string {
13461	return awsutil.Prettify(s)
13462}
13463
13464// GoString returns the string representation
13465func (s DescribeReservedCacheNodesOfferingsInput) GoString() string {
13466	return s.String()
13467}
13468
13469// SetCacheNodeType sets the CacheNodeType field's value.
13470func (s *DescribeReservedCacheNodesOfferingsInput) SetCacheNodeType(v string) *DescribeReservedCacheNodesOfferingsInput {
13471	s.CacheNodeType = &v
13472	return s
13473}
13474
13475// SetDuration sets the Duration field's value.
13476func (s *DescribeReservedCacheNodesOfferingsInput) SetDuration(v string) *DescribeReservedCacheNodesOfferingsInput {
13477	s.Duration = &v
13478	return s
13479}
13480
13481// SetMarker sets the Marker field's value.
13482func (s *DescribeReservedCacheNodesOfferingsInput) SetMarker(v string) *DescribeReservedCacheNodesOfferingsInput {
13483	s.Marker = &v
13484	return s
13485}
13486
13487// SetMaxRecords sets the MaxRecords field's value.
13488func (s *DescribeReservedCacheNodesOfferingsInput) SetMaxRecords(v int64) *DescribeReservedCacheNodesOfferingsInput {
13489	s.MaxRecords = &v
13490	return s
13491}
13492
13493// SetOfferingType sets the OfferingType field's value.
13494func (s *DescribeReservedCacheNodesOfferingsInput) SetOfferingType(v string) *DescribeReservedCacheNodesOfferingsInput {
13495	s.OfferingType = &v
13496	return s
13497}
13498
13499// SetProductDescription sets the ProductDescription field's value.
13500func (s *DescribeReservedCacheNodesOfferingsInput) SetProductDescription(v string) *DescribeReservedCacheNodesOfferingsInput {
13501	s.ProductDescription = &v
13502	return s
13503}
13504
13505// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
13506func (s *DescribeReservedCacheNodesOfferingsInput) SetReservedCacheNodesOfferingId(v string) *DescribeReservedCacheNodesOfferingsInput {
13507	s.ReservedCacheNodesOfferingId = &v
13508	return s
13509}
13510
13511// Represents the output of a DescribeReservedCacheNodesOfferings operation.
13512type DescribeReservedCacheNodesOfferingsOutput struct {
13513	_ struct{} `type:"structure"`
13514
13515	// Provides an identifier to allow retrieval of paginated results.
13516	Marker *string `type:"string"`
13517
13518	// A list of reserved cache node offerings. Each element in the list contains
13519	// detailed information about one offering.
13520	ReservedCacheNodesOfferings []*ReservedCacheNodesOffering `locationNameList:"ReservedCacheNodesOffering" type:"list"`
13521}
13522
13523// String returns the string representation
13524func (s DescribeReservedCacheNodesOfferingsOutput) String() string {
13525	return awsutil.Prettify(s)
13526}
13527
13528// GoString returns the string representation
13529func (s DescribeReservedCacheNodesOfferingsOutput) GoString() string {
13530	return s.String()
13531}
13532
13533// SetMarker sets the Marker field's value.
13534func (s *DescribeReservedCacheNodesOfferingsOutput) SetMarker(v string) *DescribeReservedCacheNodesOfferingsOutput {
13535	s.Marker = &v
13536	return s
13537}
13538
13539// SetReservedCacheNodesOfferings sets the ReservedCacheNodesOfferings field's value.
13540func (s *DescribeReservedCacheNodesOfferingsOutput) SetReservedCacheNodesOfferings(v []*ReservedCacheNodesOffering) *DescribeReservedCacheNodesOfferingsOutput {
13541	s.ReservedCacheNodesOfferings = v
13542	return s
13543}
13544
13545// Represents the output of a DescribeReservedCacheNodes operation.
13546type DescribeReservedCacheNodesOutput struct {
13547	_ struct{} `type:"structure"`
13548
13549	// Provides an identifier to allow retrieval of paginated results.
13550	Marker *string `type:"string"`
13551
13552	// A list of reserved cache nodes. Each element in the list contains detailed
13553	// information about one node.
13554	ReservedCacheNodes []*ReservedCacheNode `locationNameList:"ReservedCacheNode" type:"list"`
13555}
13556
13557// String returns the string representation
13558func (s DescribeReservedCacheNodesOutput) String() string {
13559	return awsutil.Prettify(s)
13560}
13561
13562// GoString returns the string representation
13563func (s DescribeReservedCacheNodesOutput) GoString() string {
13564	return s.String()
13565}
13566
13567// SetMarker sets the Marker field's value.
13568func (s *DescribeReservedCacheNodesOutput) SetMarker(v string) *DescribeReservedCacheNodesOutput {
13569	s.Marker = &v
13570	return s
13571}
13572
13573// SetReservedCacheNodes sets the ReservedCacheNodes field's value.
13574func (s *DescribeReservedCacheNodesOutput) SetReservedCacheNodes(v []*ReservedCacheNode) *DescribeReservedCacheNodesOutput {
13575	s.ReservedCacheNodes = v
13576	return s
13577}
13578
13579type DescribeServiceUpdatesInput struct {
13580	_ struct{} `type:"structure"`
13581
13582	// An optional marker returned from a prior request. Use this marker for pagination
13583	// of results from this operation. If this parameter is specified, the response
13584	// includes only records beyond the marker, up to the value specified by MaxRecords.
13585	Marker *string `type:"string"`
13586
13587	// The maximum number of records to include in the response
13588	MaxRecords *int64 `type:"integer"`
13589
13590	// The unique ID of the service update
13591	ServiceUpdateName *string `type:"string"`
13592
13593	// The status of the service update
13594	ServiceUpdateStatus []*string `type:"list"`
13595}
13596
13597// String returns the string representation
13598func (s DescribeServiceUpdatesInput) String() string {
13599	return awsutil.Prettify(s)
13600}
13601
13602// GoString returns the string representation
13603func (s DescribeServiceUpdatesInput) GoString() string {
13604	return s.String()
13605}
13606
13607// SetMarker sets the Marker field's value.
13608func (s *DescribeServiceUpdatesInput) SetMarker(v string) *DescribeServiceUpdatesInput {
13609	s.Marker = &v
13610	return s
13611}
13612
13613// SetMaxRecords sets the MaxRecords field's value.
13614func (s *DescribeServiceUpdatesInput) SetMaxRecords(v int64) *DescribeServiceUpdatesInput {
13615	s.MaxRecords = &v
13616	return s
13617}
13618
13619// SetServiceUpdateName sets the ServiceUpdateName field's value.
13620func (s *DescribeServiceUpdatesInput) SetServiceUpdateName(v string) *DescribeServiceUpdatesInput {
13621	s.ServiceUpdateName = &v
13622	return s
13623}
13624
13625// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
13626func (s *DescribeServiceUpdatesInput) SetServiceUpdateStatus(v []*string) *DescribeServiceUpdatesInput {
13627	s.ServiceUpdateStatus = v
13628	return s
13629}
13630
13631type DescribeServiceUpdatesOutput struct {
13632	_ struct{} `type:"structure"`
13633
13634	// An optional marker returned from a prior request. Use this marker for pagination
13635	// of results from this operation. If this parameter is specified, the response
13636	// includes only records beyond the marker, up to the value specified by MaxRecords.
13637	Marker *string `type:"string"`
13638
13639	// A list of service updates
13640	ServiceUpdates []*ServiceUpdate `locationNameList:"ServiceUpdate" type:"list"`
13641}
13642
13643// String returns the string representation
13644func (s DescribeServiceUpdatesOutput) String() string {
13645	return awsutil.Prettify(s)
13646}
13647
13648// GoString returns the string representation
13649func (s DescribeServiceUpdatesOutput) GoString() string {
13650	return s.String()
13651}
13652
13653// SetMarker sets the Marker field's value.
13654func (s *DescribeServiceUpdatesOutput) SetMarker(v string) *DescribeServiceUpdatesOutput {
13655	s.Marker = &v
13656	return s
13657}
13658
13659// SetServiceUpdates sets the ServiceUpdates field's value.
13660func (s *DescribeServiceUpdatesOutput) SetServiceUpdates(v []*ServiceUpdate) *DescribeServiceUpdatesOutput {
13661	s.ServiceUpdates = v
13662	return s
13663}
13664
13665// Represents the input of a DescribeSnapshotsMessage operation.
13666type DescribeSnapshotsInput struct {
13667	_ struct{} `type:"structure"`
13668
13669	// A user-supplied cluster identifier. If this parameter is specified, only
13670	// snapshots associated with that specific cluster are described.
13671	CacheClusterId *string `type:"string"`
13672
13673	// An optional marker returned from a prior request. Use this marker for pagination
13674	// of results from this operation. If this parameter is specified, the response
13675	// includes only records beyond the marker, up to the value specified by MaxRecords.
13676	Marker *string `type:"string"`
13677
13678	// The maximum number of records to include in the response. If more records
13679	// exist than the specified MaxRecords value, a marker is included in the response
13680	// so that the remaining results can be retrieved.
13681	//
13682	// Default: 50
13683	//
13684	// Constraints: minimum 20; maximum 50.
13685	MaxRecords *int64 `type:"integer"`
13686
13687	// A user-supplied replication group identifier. If this parameter is specified,
13688	// only snapshots associated with that specific replication group are described.
13689	ReplicationGroupId *string `type:"string"`
13690
13691	// A Boolean value which if true, the node group (shard) configuration is included
13692	// in the snapshot description.
13693	ShowNodeGroupConfig *bool `type:"boolean"`
13694
13695	// A user-supplied name of the snapshot. If this parameter is specified, only
13696	// this snapshot are described.
13697	SnapshotName *string `type:"string"`
13698
13699	// If set to system, the output shows snapshots that were automatically created
13700	// by ElastiCache. If set to user the output shows snapshots that were manually
13701	// created. If omitted, the output shows both automatically and manually created
13702	// snapshots.
13703	SnapshotSource *string `type:"string"`
13704}
13705
13706// String returns the string representation
13707func (s DescribeSnapshotsInput) String() string {
13708	return awsutil.Prettify(s)
13709}
13710
13711// GoString returns the string representation
13712func (s DescribeSnapshotsInput) GoString() string {
13713	return s.String()
13714}
13715
13716// SetCacheClusterId sets the CacheClusterId field's value.
13717func (s *DescribeSnapshotsInput) SetCacheClusterId(v string) *DescribeSnapshotsInput {
13718	s.CacheClusterId = &v
13719	return s
13720}
13721
13722// SetMarker sets the Marker field's value.
13723func (s *DescribeSnapshotsInput) SetMarker(v string) *DescribeSnapshotsInput {
13724	s.Marker = &v
13725	return s
13726}
13727
13728// SetMaxRecords sets the MaxRecords field's value.
13729func (s *DescribeSnapshotsInput) SetMaxRecords(v int64) *DescribeSnapshotsInput {
13730	s.MaxRecords = &v
13731	return s
13732}
13733
13734// SetReplicationGroupId sets the ReplicationGroupId field's value.
13735func (s *DescribeSnapshotsInput) SetReplicationGroupId(v string) *DescribeSnapshotsInput {
13736	s.ReplicationGroupId = &v
13737	return s
13738}
13739
13740// SetShowNodeGroupConfig sets the ShowNodeGroupConfig field's value.
13741func (s *DescribeSnapshotsInput) SetShowNodeGroupConfig(v bool) *DescribeSnapshotsInput {
13742	s.ShowNodeGroupConfig = &v
13743	return s
13744}
13745
13746// SetSnapshotName sets the SnapshotName field's value.
13747func (s *DescribeSnapshotsInput) SetSnapshotName(v string) *DescribeSnapshotsInput {
13748	s.SnapshotName = &v
13749	return s
13750}
13751
13752// SetSnapshotSource sets the SnapshotSource field's value.
13753func (s *DescribeSnapshotsInput) SetSnapshotSource(v string) *DescribeSnapshotsInput {
13754	s.SnapshotSource = &v
13755	return s
13756}
13757
13758// Represents the output of a DescribeSnapshots operation.
13759type DescribeSnapshotsOutput struct {
13760	_ struct{} `type:"structure"`
13761
13762	// An optional marker returned from a prior request. Use this marker for pagination
13763	// of results from this operation. If this parameter is specified, the response
13764	// includes only records beyond the marker, up to the value specified by MaxRecords.
13765	Marker *string `type:"string"`
13766
13767	// A list of snapshots. Each item in the list contains detailed information
13768	// about one snapshot.
13769	Snapshots []*Snapshot `locationNameList:"Snapshot" type:"list"`
13770}
13771
13772// String returns the string representation
13773func (s DescribeSnapshotsOutput) String() string {
13774	return awsutil.Prettify(s)
13775}
13776
13777// GoString returns the string representation
13778func (s DescribeSnapshotsOutput) GoString() string {
13779	return s.String()
13780}
13781
13782// SetMarker sets the Marker field's value.
13783func (s *DescribeSnapshotsOutput) SetMarker(v string) *DescribeSnapshotsOutput {
13784	s.Marker = &v
13785	return s
13786}
13787
13788// SetSnapshots sets the Snapshots field's value.
13789func (s *DescribeSnapshotsOutput) SetSnapshots(v []*Snapshot) *DescribeSnapshotsOutput {
13790	s.Snapshots = v
13791	return s
13792}
13793
13794type DescribeUpdateActionsInput struct {
13795	_ struct{} `type:"structure"`
13796
13797	// The cache cluster IDs
13798	CacheClusterIds []*string `type:"list"`
13799
13800	// The Elasticache engine to which the update applies. Either Redis or Memcached
13801	Engine *string `type:"string"`
13802
13803	// An optional marker returned from a prior request. Use this marker for pagination
13804	// of results from this operation. If this parameter is specified, the response
13805	// includes only records beyond the marker, up to the value specified by MaxRecords.
13806	Marker *string `type:"string"`
13807
13808	// The maximum number of records to include in the response
13809	MaxRecords *int64 `type:"integer"`
13810
13811	// The replication group IDs
13812	ReplicationGroupIds []*string `type:"list"`
13813
13814	// The unique ID of the service update
13815	ServiceUpdateName *string `type:"string"`
13816
13817	// The status of the service update
13818	ServiceUpdateStatus []*string `type:"list"`
13819
13820	// The range of time specified to search for service updates that are in available
13821	// status
13822	ServiceUpdateTimeRange *TimeRangeFilter `type:"structure"`
13823
13824	// Dictates whether to include node level update status in the response
13825	ShowNodeLevelUpdateStatus *bool `type:"boolean"`
13826
13827	// The status of the update action.
13828	UpdateActionStatus []*string `type:"list"`
13829}
13830
13831// String returns the string representation
13832func (s DescribeUpdateActionsInput) String() string {
13833	return awsutil.Prettify(s)
13834}
13835
13836// GoString returns the string representation
13837func (s DescribeUpdateActionsInput) GoString() string {
13838	return s.String()
13839}
13840
13841// SetCacheClusterIds sets the CacheClusterIds field's value.
13842func (s *DescribeUpdateActionsInput) SetCacheClusterIds(v []*string) *DescribeUpdateActionsInput {
13843	s.CacheClusterIds = v
13844	return s
13845}
13846
13847// SetEngine sets the Engine field's value.
13848func (s *DescribeUpdateActionsInput) SetEngine(v string) *DescribeUpdateActionsInput {
13849	s.Engine = &v
13850	return s
13851}
13852
13853// SetMarker sets the Marker field's value.
13854func (s *DescribeUpdateActionsInput) SetMarker(v string) *DescribeUpdateActionsInput {
13855	s.Marker = &v
13856	return s
13857}
13858
13859// SetMaxRecords sets the MaxRecords field's value.
13860func (s *DescribeUpdateActionsInput) SetMaxRecords(v int64) *DescribeUpdateActionsInput {
13861	s.MaxRecords = &v
13862	return s
13863}
13864
13865// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
13866func (s *DescribeUpdateActionsInput) SetReplicationGroupIds(v []*string) *DescribeUpdateActionsInput {
13867	s.ReplicationGroupIds = v
13868	return s
13869}
13870
13871// SetServiceUpdateName sets the ServiceUpdateName field's value.
13872func (s *DescribeUpdateActionsInput) SetServiceUpdateName(v string) *DescribeUpdateActionsInput {
13873	s.ServiceUpdateName = &v
13874	return s
13875}
13876
13877// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
13878func (s *DescribeUpdateActionsInput) SetServiceUpdateStatus(v []*string) *DescribeUpdateActionsInput {
13879	s.ServiceUpdateStatus = v
13880	return s
13881}
13882
13883// SetServiceUpdateTimeRange sets the ServiceUpdateTimeRange field's value.
13884func (s *DescribeUpdateActionsInput) SetServiceUpdateTimeRange(v *TimeRangeFilter) *DescribeUpdateActionsInput {
13885	s.ServiceUpdateTimeRange = v
13886	return s
13887}
13888
13889// SetShowNodeLevelUpdateStatus sets the ShowNodeLevelUpdateStatus field's value.
13890func (s *DescribeUpdateActionsInput) SetShowNodeLevelUpdateStatus(v bool) *DescribeUpdateActionsInput {
13891	s.ShowNodeLevelUpdateStatus = &v
13892	return s
13893}
13894
13895// SetUpdateActionStatus sets the UpdateActionStatus field's value.
13896func (s *DescribeUpdateActionsInput) SetUpdateActionStatus(v []*string) *DescribeUpdateActionsInput {
13897	s.UpdateActionStatus = v
13898	return s
13899}
13900
13901type DescribeUpdateActionsOutput struct {
13902	_ struct{} `type:"structure"`
13903
13904	// An optional marker returned from a prior request. Use this marker for pagination
13905	// of results from this operation. If this parameter is specified, the response
13906	// includes only records beyond the marker, up to the value specified by MaxRecords.
13907	Marker *string `type:"string"`
13908
13909	// Returns a list of update actions
13910	UpdateActions []*UpdateAction `locationNameList:"UpdateAction" type:"list"`
13911}
13912
13913// String returns the string representation
13914func (s DescribeUpdateActionsOutput) String() string {
13915	return awsutil.Prettify(s)
13916}
13917
13918// GoString returns the string representation
13919func (s DescribeUpdateActionsOutput) GoString() string {
13920	return s.String()
13921}
13922
13923// SetMarker sets the Marker field's value.
13924func (s *DescribeUpdateActionsOutput) SetMarker(v string) *DescribeUpdateActionsOutput {
13925	s.Marker = &v
13926	return s
13927}
13928
13929// SetUpdateActions sets the UpdateActions field's value.
13930func (s *DescribeUpdateActionsOutput) SetUpdateActions(v []*UpdateAction) *DescribeUpdateActionsOutput {
13931	s.UpdateActions = v
13932	return s
13933}
13934
13935type DescribeUserGroupsInput struct {
13936	_ struct{} `type:"structure"`
13937
13938	// An optional marker returned from a prior request. Use this marker for pagination
13939	// of results from this operation. If this parameter is specified, the response
13940	// includes only records beyond the marker, up to the value specified by MaxRecords.
13941	// >
13942	Marker *string `type:"string"`
13943
13944	// The maximum number of records to include in the response. If more records
13945	// exist than the specified MaxRecords value, a marker is included in the response
13946	// so that the remaining results can be retrieved.
13947	MaxRecords *int64 `type:"integer"`
13948
13949	// The ID of the user group.
13950	UserGroupId *string `type:"string"`
13951}
13952
13953// String returns the string representation
13954func (s DescribeUserGroupsInput) String() string {
13955	return awsutil.Prettify(s)
13956}
13957
13958// GoString returns the string representation
13959func (s DescribeUserGroupsInput) GoString() string {
13960	return s.String()
13961}
13962
13963// SetMarker sets the Marker field's value.
13964func (s *DescribeUserGroupsInput) SetMarker(v string) *DescribeUserGroupsInput {
13965	s.Marker = &v
13966	return s
13967}
13968
13969// SetMaxRecords sets the MaxRecords field's value.
13970func (s *DescribeUserGroupsInput) SetMaxRecords(v int64) *DescribeUserGroupsInput {
13971	s.MaxRecords = &v
13972	return s
13973}
13974
13975// SetUserGroupId sets the UserGroupId field's value.
13976func (s *DescribeUserGroupsInput) SetUserGroupId(v string) *DescribeUserGroupsInput {
13977	s.UserGroupId = &v
13978	return s
13979}
13980
13981type DescribeUserGroupsOutput struct {
13982	_ struct{} `type:"structure"`
13983
13984	// An optional marker returned from a prior request. Use this marker for pagination
13985	// of results from this operation. If this parameter is specified, the response
13986	// includes only records beyond the marker, up to the value specified by MaxRecords.
13987	// >
13988	Marker *string `type:"string"`
13989
13990	// Returns a list of user groups.
13991	UserGroups []*UserGroup `type:"list"`
13992}
13993
13994// String returns the string representation
13995func (s DescribeUserGroupsOutput) String() string {
13996	return awsutil.Prettify(s)
13997}
13998
13999// GoString returns the string representation
14000func (s DescribeUserGroupsOutput) GoString() string {
14001	return s.String()
14002}
14003
14004// SetMarker sets the Marker field's value.
14005func (s *DescribeUserGroupsOutput) SetMarker(v string) *DescribeUserGroupsOutput {
14006	s.Marker = &v
14007	return s
14008}
14009
14010// SetUserGroups sets the UserGroups field's value.
14011func (s *DescribeUserGroupsOutput) SetUserGroups(v []*UserGroup) *DescribeUserGroupsOutput {
14012	s.UserGroups = v
14013	return s
14014}
14015
14016type DescribeUsersInput struct {
14017	_ struct{} `type:"structure"`
14018
14019	// The Redis engine.
14020	Engine *string `type:"string"`
14021
14022	// Filter to determine the list of User IDs to return.
14023	Filters []*Filter `type:"list"`
14024
14025	// An optional marker returned from a prior request. Use this marker for pagination
14026	// of results from this operation. If this parameter is specified, the response
14027	// includes only records beyond the marker, up to the value specified by MaxRecords.
14028	// >
14029	Marker *string `type:"string"`
14030
14031	// The maximum number of records to include in the response. If more records
14032	// exist than the specified MaxRecords value, a marker is included in the response
14033	// so that the remaining results can be retrieved.
14034	MaxRecords *int64 `type:"integer"`
14035
14036	// The ID of the user.
14037	UserId *string `min:"1" type:"string"`
14038}
14039
14040// String returns the string representation
14041func (s DescribeUsersInput) String() string {
14042	return awsutil.Prettify(s)
14043}
14044
14045// GoString returns the string representation
14046func (s DescribeUsersInput) GoString() string {
14047	return s.String()
14048}
14049
14050// Validate inspects the fields of the type to determine if they are valid.
14051func (s *DescribeUsersInput) Validate() error {
14052	invalidParams := request.ErrInvalidParams{Context: "DescribeUsersInput"}
14053	if s.UserId != nil && len(*s.UserId) < 1 {
14054		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
14055	}
14056	if s.Filters != nil {
14057		for i, v := range s.Filters {
14058			if v == nil {
14059				continue
14060			}
14061			if err := v.Validate(); err != nil {
14062				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
14063			}
14064		}
14065	}
14066
14067	if invalidParams.Len() > 0 {
14068		return invalidParams
14069	}
14070	return nil
14071}
14072
14073// SetEngine sets the Engine field's value.
14074func (s *DescribeUsersInput) SetEngine(v string) *DescribeUsersInput {
14075	s.Engine = &v
14076	return s
14077}
14078
14079// SetFilters sets the Filters field's value.
14080func (s *DescribeUsersInput) SetFilters(v []*Filter) *DescribeUsersInput {
14081	s.Filters = v
14082	return s
14083}
14084
14085// SetMarker sets the Marker field's value.
14086func (s *DescribeUsersInput) SetMarker(v string) *DescribeUsersInput {
14087	s.Marker = &v
14088	return s
14089}
14090
14091// SetMaxRecords sets the MaxRecords field's value.
14092func (s *DescribeUsersInput) SetMaxRecords(v int64) *DescribeUsersInput {
14093	s.MaxRecords = &v
14094	return s
14095}
14096
14097// SetUserId sets the UserId field's value.
14098func (s *DescribeUsersInput) SetUserId(v string) *DescribeUsersInput {
14099	s.UserId = &v
14100	return s
14101}
14102
14103type DescribeUsersOutput struct {
14104	_ struct{} `type:"structure"`
14105
14106	// An optional marker returned from a prior request. Use this marker for pagination
14107	// of results from this operation. If this parameter is specified, the response
14108	// includes only records beyond the marker, up to the value specified by MaxRecords.
14109	// >
14110	Marker *string `type:"string"`
14111
14112	// A list of users.
14113	Users []*User `type:"list"`
14114}
14115
14116// String returns the string representation
14117func (s DescribeUsersOutput) String() string {
14118	return awsutil.Prettify(s)
14119}
14120
14121// GoString returns the string representation
14122func (s DescribeUsersOutput) GoString() string {
14123	return s.String()
14124}
14125
14126// SetMarker sets the Marker field's value.
14127func (s *DescribeUsersOutput) SetMarker(v string) *DescribeUsersOutput {
14128	s.Marker = &v
14129	return s
14130}
14131
14132// SetUsers sets the Users field's value.
14133func (s *DescribeUsersOutput) SetUsers(v []*User) *DescribeUsersOutput {
14134	s.Users = v
14135	return s
14136}
14137
14138// Configuration details of either a CloudWatch Logs destination or Kinesis
14139// Data Firehose destination.
14140type DestinationDetails struct {
14141	_ struct{} `type:"structure"`
14142
14143	// The configuration details of the CloudWatch Logs destination.
14144	CloudWatchLogsDetails *CloudWatchLogsDestinationDetails `type:"structure"`
14145
14146	// The configuration details of the Kinesis Data Firehose destination.
14147	KinesisFirehoseDetails *KinesisFirehoseDestinationDetails `type:"structure"`
14148}
14149
14150// String returns the string representation
14151func (s DestinationDetails) String() string {
14152	return awsutil.Prettify(s)
14153}
14154
14155// GoString returns the string representation
14156func (s DestinationDetails) GoString() string {
14157	return s.String()
14158}
14159
14160// SetCloudWatchLogsDetails sets the CloudWatchLogsDetails field's value.
14161func (s *DestinationDetails) SetCloudWatchLogsDetails(v *CloudWatchLogsDestinationDetails) *DestinationDetails {
14162	s.CloudWatchLogsDetails = v
14163	return s
14164}
14165
14166// SetKinesisFirehoseDetails sets the KinesisFirehoseDetails field's value.
14167func (s *DestinationDetails) SetKinesisFirehoseDetails(v *KinesisFirehoseDestinationDetails) *DestinationDetails {
14168	s.KinesisFirehoseDetails = v
14169	return s
14170}
14171
14172type DisassociateGlobalReplicationGroupInput struct {
14173	_ struct{} `type:"structure"`
14174
14175	// The name of the Global datastore
14176	//
14177	// GlobalReplicationGroupId is a required field
14178	GlobalReplicationGroupId *string `type:"string" required:"true"`
14179
14180	// The name of the secondary cluster you wish to remove from the Global datastore
14181	//
14182	// ReplicationGroupId is a required field
14183	ReplicationGroupId *string `type:"string" required:"true"`
14184
14185	// The Amazon region of secondary cluster you wish to remove from the Global
14186	// datastore
14187	//
14188	// ReplicationGroupRegion is a required field
14189	ReplicationGroupRegion *string `type:"string" required:"true"`
14190}
14191
14192// String returns the string representation
14193func (s DisassociateGlobalReplicationGroupInput) String() string {
14194	return awsutil.Prettify(s)
14195}
14196
14197// GoString returns the string representation
14198func (s DisassociateGlobalReplicationGroupInput) GoString() string {
14199	return s.String()
14200}
14201
14202// Validate inspects the fields of the type to determine if they are valid.
14203func (s *DisassociateGlobalReplicationGroupInput) Validate() error {
14204	invalidParams := request.ErrInvalidParams{Context: "DisassociateGlobalReplicationGroupInput"}
14205	if s.GlobalReplicationGroupId == nil {
14206		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
14207	}
14208	if s.ReplicationGroupId == nil {
14209		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
14210	}
14211	if s.ReplicationGroupRegion == nil {
14212		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupRegion"))
14213	}
14214
14215	if invalidParams.Len() > 0 {
14216		return invalidParams
14217	}
14218	return nil
14219}
14220
14221// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
14222func (s *DisassociateGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *DisassociateGlobalReplicationGroupInput {
14223	s.GlobalReplicationGroupId = &v
14224	return s
14225}
14226
14227// SetReplicationGroupId sets the ReplicationGroupId field's value.
14228func (s *DisassociateGlobalReplicationGroupInput) SetReplicationGroupId(v string) *DisassociateGlobalReplicationGroupInput {
14229	s.ReplicationGroupId = &v
14230	return s
14231}
14232
14233// SetReplicationGroupRegion sets the ReplicationGroupRegion field's value.
14234func (s *DisassociateGlobalReplicationGroupInput) SetReplicationGroupRegion(v string) *DisassociateGlobalReplicationGroupInput {
14235	s.ReplicationGroupRegion = &v
14236	return s
14237}
14238
14239type DisassociateGlobalReplicationGroupOutput struct {
14240	_ struct{} `type:"structure"`
14241
14242	// Consists of a primary cluster that accepts writes and an associated secondary
14243	// cluster that resides in a different Amazon region. The secondary cluster
14244	// accepts only reads. The primary cluster automatically replicates updates
14245	// to the secondary cluster.
14246	//
14247	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
14248	//    datastore, which is what you use to associate a secondary cluster.
14249	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
14250}
14251
14252// String returns the string representation
14253func (s DisassociateGlobalReplicationGroupOutput) String() string {
14254	return awsutil.Prettify(s)
14255}
14256
14257// GoString returns the string representation
14258func (s DisassociateGlobalReplicationGroupOutput) GoString() string {
14259	return s.String()
14260}
14261
14262// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
14263func (s *DisassociateGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *DisassociateGlobalReplicationGroupOutput {
14264	s.GlobalReplicationGroup = v
14265	return s
14266}
14267
14268// Provides ownership and status information for an Amazon EC2 security group.
14269type EC2SecurityGroup struct {
14270	_ struct{} `type:"structure"`
14271
14272	// The name of the Amazon EC2 security group.
14273	EC2SecurityGroupName *string `type:"string"`
14274
14275	// The Amazon account ID of the Amazon EC2 security group owner.
14276	EC2SecurityGroupOwnerId *string `type:"string"`
14277
14278	// The status of the Amazon EC2 security group.
14279	Status *string `type:"string"`
14280}
14281
14282// String returns the string representation
14283func (s EC2SecurityGroup) String() string {
14284	return awsutil.Prettify(s)
14285}
14286
14287// GoString returns the string representation
14288func (s EC2SecurityGroup) GoString() string {
14289	return s.String()
14290}
14291
14292// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
14293func (s *EC2SecurityGroup) SetEC2SecurityGroupName(v string) *EC2SecurityGroup {
14294	s.EC2SecurityGroupName = &v
14295	return s
14296}
14297
14298// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
14299func (s *EC2SecurityGroup) SetEC2SecurityGroupOwnerId(v string) *EC2SecurityGroup {
14300	s.EC2SecurityGroupOwnerId = &v
14301	return s
14302}
14303
14304// SetStatus sets the Status field's value.
14305func (s *EC2SecurityGroup) SetStatus(v string) *EC2SecurityGroup {
14306	s.Status = &v
14307	return s
14308}
14309
14310// Represents the information required for client programs to connect to a cache
14311// node.
14312type Endpoint struct {
14313	_ struct{} `type:"structure"`
14314
14315	// The DNS hostname of the cache node.
14316	Address *string `type:"string"`
14317
14318	// The port number that the cache engine is listening on.
14319	Port *int64 `type:"integer"`
14320}
14321
14322// String returns the string representation
14323func (s Endpoint) String() string {
14324	return awsutil.Prettify(s)
14325}
14326
14327// GoString returns the string representation
14328func (s Endpoint) GoString() string {
14329	return s.String()
14330}
14331
14332// SetAddress sets the Address field's value.
14333func (s *Endpoint) SetAddress(v string) *Endpoint {
14334	s.Address = &v
14335	return s
14336}
14337
14338// SetPort sets the Port field's value.
14339func (s *Endpoint) SetPort(v int64) *Endpoint {
14340	s.Port = &v
14341	return s
14342}
14343
14344// Represents the output of a DescribeEngineDefaultParameters operation.
14345type EngineDefaults struct {
14346	_ struct{} `type:"structure"`
14347
14348	// A list of parameters specific to a particular cache node type. Each element
14349	// in the list contains detailed information about one parameter.
14350	CacheNodeTypeSpecificParameters []*CacheNodeTypeSpecificParameter `locationNameList:"CacheNodeTypeSpecificParameter" type:"list"`
14351
14352	// Specifies the name of the cache parameter group family to which the engine
14353	// default parameters apply.
14354	//
14355	// Valid values are: memcached1.4 | memcached1.5 | memcached1.6 | redis2.6 |
14356	// redis2.8 | redis3.2 | redis4.0 | redis5.0 | redis6.x |
14357	CacheParameterGroupFamily *string `type:"string"`
14358
14359	// Provides an identifier to allow retrieval of paginated results.
14360	Marker *string `type:"string"`
14361
14362	// Contains a list of engine default parameters.
14363	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`
14364}
14365
14366// String returns the string representation
14367func (s EngineDefaults) String() string {
14368	return awsutil.Prettify(s)
14369}
14370
14371// GoString returns the string representation
14372func (s EngineDefaults) GoString() string {
14373	return s.String()
14374}
14375
14376// SetCacheNodeTypeSpecificParameters sets the CacheNodeTypeSpecificParameters field's value.
14377func (s *EngineDefaults) SetCacheNodeTypeSpecificParameters(v []*CacheNodeTypeSpecificParameter) *EngineDefaults {
14378	s.CacheNodeTypeSpecificParameters = v
14379	return s
14380}
14381
14382// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
14383func (s *EngineDefaults) SetCacheParameterGroupFamily(v string) *EngineDefaults {
14384	s.CacheParameterGroupFamily = &v
14385	return s
14386}
14387
14388// SetMarker sets the Marker field's value.
14389func (s *EngineDefaults) SetMarker(v string) *EngineDefaults {
14390	s.Marker = &v
14391	return s
14392}
14393
14394// SetParameters sets the Parameters field's value.
14395func (s *EngineDefaults) SetParameters(v []*Parameter) *EngineDefaults {
14396	s.Parameters = v
14397	return s
14398}
14399
14400// Represents a single occurrence of something interesting within the system.
14401// Some examples of events are creating a cluster, adding or removing a cache
14402// node, or rebooting a node.
14403type Event struct {
14404	_ struct{} `type:"structure"`
14405
14406	// The date and time when the event occurred.
14407	Date *time.Time `type:"timestamp"`
14408
14409	// The text of the event.
14410	Message *string `type:"string"`
14411
14412	// The identifier for the source of the event. For example, if the event occurred
14413	// at the cluster level, the identifier would be the name of the cluster.
14414	SourceIdentifier *string `type:"string"`
14415
14416	// Specifies the origin of this event - a cluster, a parameter group, a security
14417	// group, etc.
14418	SourceType *string `type:"string" enum:"SourceType"`
14419}
14420
14421// String returns the string representation
14422func (s Event) String() string {
14423	return awsutil.Prettify(s)
14424}
14425
14426// GoString returns the string representation
14427func (s Event) GoString() string {
14428	return s.String()
14429}
14430
14431// SetDate sets the Date field's value.
14432func (s *Event) SetDate(v time.Time) *Event {
14433	s.Date = &v
14434	return s
14435}
14436
14437// SetMessage sets the Message field's value.
14438func (s *Event) SetMessage(v string) *Event {
14439	s.Message = &v
14440	return s
14441}
14442
14443// SetSourceIdentifier sets the SourceIdentifier field's value.
14444func (s *Event) SetSourceIdentifier(v string) *Event {
14445	s.SourceIdentifier = &v
14446	return s
14447}
14448
14449// SetSourceType sets the SourceType field's value.
14450func (s *Event) SetSourceType(v string) *Event {
14451	s.SourceType = &v
14452	return s
14453}
14454
14455type FailoverGlobalReplicationGroupInput struct {
14456	_ struct{} `type:"structure"`
14457
14458	// The name of the Global datastore
14459	//
14460	// GlobalReplicationGroupId is a required field
14461	GlobalReplicationGroupId *string `type:"string" required:"true"`
14462
14463	// The Amazon region of the primary cluster of the Global datastore
14464	//
14465	// PrimaryRegion is a required field
14466	PrimaryRegion *string `type:"string" required:"true"`
14467
14468	// The name of the primary replication group
14469	//
14470	// PrimaryReplicationGroupId is a required field
14471	PrimaryReplicationGroupId *string `type:"string" required:"true"`
14472}
14473
14474// String returns the string representation
14475func (s FailoverGlobalReplicationGroupInput) String() string {
14476	return awsutil.Prettify(s)
14477}
14478
14479// GoString returns the string representation
14480func (s FailoverGlobalReplicationGroupInput) GoString() string {
14481	return s.String()
14482}
14483
14484// Validate inspects the fields of the type to determine if they are valid.
14485func (s *FailoverGlobalReplicationGroupInput) Validate() error {
14486	invalidParams := request.ErrInvalidParams{Context: "FailoverGlobalReplicationGroupInput"}
14487	if s.GlobalReplicationGroupId == nil {
14488		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
14489	}
14490	if s.PrimaryRegion == nil {
14491		invalidParams.Add(request.NewErrParamRequired("PrimaryRegion"))
14492	}
14493	if s.PrimaryReplicationGroupId == nil {
14494		invalidParams.Add(request.NewErrParamRequired("PrimaryReplicationGroupId"))
14495	}
14496
14497	if invalidParams.Len() > 0 {
14498		return invalidParams
14499	}
14500	return nil
14501}
14502
14503// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
14504func (s *FailoverGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *FailoverGlobalReplicationGroupInput {
14505	s.GlobalReplicationGroupId = &v
14506	return s
14507}
14508
14509// SetPrimaryRegion sets the PrimaryRegion field's value.
14510func (s *FailoverGlobalReplicationGroupInput) SetPrimaryRegion(v string) *FailoverGlobalReplicationGroupInput {
14511	s.PrimaryRegion = &v
14512	return s
14513}
14514
14515// SetPrimaryReplicationGroupId sets the PrimaryReplicationGroupId field's value.
14516func (s *FailoverGlobalReplicationGroupInput) SetPrimaryReplicationGroupId(v string) *FailoverGlobalReplicationGroupInput {
14517	s.PrimaryReplicationGroupId = &v
14518	return s
14519}
14520
14521type FailoverGlobalReplicationGroupOutput struct {
14522	_ struct{} `type:"structure"`
14523
14524	// Consists of a primary cluster that accepts writes and an associated secondary
14525	// cluster that resides in a different Amazon region. The secondary cluster
14526	// accepts only reads. The primary cluster automatically replicates updates
14527	// to the secondary cluster.
14528	//
14529	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
14530	//    datastore, which is what you use to associate a secondary cluster.
14531	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
14532}
14533
14534// String returns the string representation
14535func (s FailoverGlobalReplicationGroupOutput) String() string {
14536	return awsutil.Prettify(s)
14537}
14538
14539// GoString returns the string representation
14540func (s FailoverGlobalReplicationGroupOutput) GoString() string {
14541	return s.String()
14542}
14543
14544// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
14545func (s *FailoverGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *FailoverGlobalReplicationGroupOutput {
14546	s.GlobalReplicationGroup = v
14547	return s
14548}
14549
14550// Used to streamline results of a search based on the property being filtered.
14551type Filter struct {
14552	_ struct{} `type:"structure"`
14553
14554	// The property being filtered. For example, UserId.
14555	//
14556	// Name is a required field
14557	Name *string `type:"string" required:"true"`
14558
14559	// The property values to filter on. For example, "user-123".
14560	//
14561	// Values is a required field
14562	Values []*string `min:"1" type:"list" required:"true"`
14563}
14564
14565// String returns the string representation
14566func (s Filter) String() string {
14567	return awsutil.Prettify(s)
14568}
14569
14570// GoString returns the string representation
14571func (s Filter) GoString() string {
14572	return s.String()
14573}
14574
14575// Validate inspects the fields of the type to determine if they are valid.
14576func (s *Filter) Validate() error {
14577	invalidParams := request.ErrInvalidParams{Context: "Filter"}
14578	if s.Name == nil {
14579		invalidParams.Add(request.NewErrParamRequired("Name"))
14580	}
14581	if s.Values == nil {
14582		invalidParams.Add(request.NewErrParamRequired("Values"))
14583	}
14584	if s.Values != nil && len(s.Values) < 1 {
14585		invalidParams.Add(request.NewErrParamMinLen("Values", 1))
14586	}
14587
14588	if invalidParams.Len() > 0 {
14589		return invalidParams
14590	}
14591	return nil
14592}
14593
14594// SetName sets the Name field's value.
14595func (s *Filter) SetName(v string) *Filter {
14596	s.Name = &v
14597	return s
14598}
14599
14600// SetValues sets the Values field's value.
14601func (s *Filter) SetValues(v []*string) *Filter {
14602	s.Values = v
14603	return s
14604}
14605
14606// Indicates the slot configuration and global identifier for a slice group.
14607type GlobalNodeGroup struct {
14608	_ struct{} `type:"structure"`
14609
14610	// The name of the global node group
14611	GlobalNodeGroupId *string `type:"string"`
14612
14613	// The keyspace for this node group
14614	Slots *string `type:"string"`
14615}
14616
14617// String returns the string representation
14618func (s GlobalNodeGroup) String() string {
14619	return awsutil.Prettify(s)
14620}
14621
14622// GoString returns the string representation
14623func (s GlobalNodeGroup) GoString() string {
14624	return s.String()
14625}
14626
14627// SetGlobalNodeGroupId sets the GlobalNodeGroupId field's value.
14628func (s *GlobalNodeGroup) SetGlobalNodeGroupId(v string) *GlobalNodeGroup {
14629	s.GlobalNodeGroupId = &v
14630	return s
14631}
14632
14633// SetSlots sets the Slots field's value.
14634func (s *GlobalNodeGroup) SetSlots(v string) *GlobalNodeGroup {
14635	s.Slots = &v
14636	return s
14637}
14638
14639// Consists of a primary cluster that accepts writes and an associated secondary
14640// cluster that resides in a different Amazon region. The secondary cluster
14641// accepts only reads. The primary cluster automatically replicates updates
14642// to the secondary cluster.
14643//
14644//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
14645//    datastore, which is what you use to associate a secondary cluster.
14646type GlobalReplicationGroup struct {
14647	_ struct{} `type:"structure"`
14648
14649	// The ARN (Amazon Resource Name) of the global replication group.
14650	ARN *string `type:"string"`
14651
14652	// A flag that enables encryption at rest when set to true.
14653	//
14654	// You cannot modify the value of AtRestEncryptionEnabled after the replication
14655	// group is created. To enable encryption at rest on a replication group you
14656	// must set AtRestEncryptionEnabled to true when you create the replication
14657	// group.
14658	//
14659	// Required: Only available when creating a replication group in an Amazon VPC
14660	// using redis version 3.2.6, 4.x or later.
14661	AtRestEncryptionEnabled *bool `type:"boolean"`
14662
14663	// A flag that enables using an AuthToken (password) when issuing Redis commands.
14664	//
14665	// Default: false
14666	AuthTokenEnabled *bool `type:"boolean"`
14667
14668	// The cache node type of the Global datastore
14669	CacheNodeType *string `type:"string"`
14670
14671	// A flag that indicates whether the Global datastore is cluster enabled.
14672	ClusterEnabled *bool `type:"boolean"`
14673
14674	// The Elasticache engine. For Redis only.
14675	Engine *string `type:"string"`
14676
14677	// The Elasticache Redis engine version.
14678	EngineVersion *string `type:"string"`
14679
14680	// Indicates the slot configuration and global identifier for each slice group.
14681	GlobalNodeGroups []*GlobalNodeGroup `locationNameList:"GlobalNodeGroup" type:"list"`
14682
14683	// The optional description of the Global datastore
14684	GlobalReplicationGroupDescription *string `type:"string"`
14685
14686	// The name of the Global datastore
14687	GlobalReplicationGroupId *string `type:"string"`
14688
14689	// The replication groups that comprise the Global datastore.
14690	Members []*GlobalReplicationGroupMember `locationNameList:"GlobalReplicationGroupMember" type:"list"`
14691
14692	// The status of the Global datastore
14693	Status *string `type:"string"`
14694
14695	// A flag that enables in-transit encryption when set to true. You cannot modify
14696	// the value of TransitEncryptionEnabled after the cluster is created. To enable
14697	// in-transit encryption on a cluster you must set TransitEncryptionEnabled
14698	// to true when you create a cluster.
14699	//
14700	// Required: Only available when creating a replication group in an Amazon VPC
14701	// using redis version 3.2.6, 4.x or later.
14702	TransitEncryptionEnabled *bool `type:"boolean"`
14703}
14704
14705// String returns the string representation
14706func (s GlobalReplicationGroup) String() string {
14707	return awsutil.Prettify(s)
14708}
14709
14710// GoString returns the string representation
14711func (s GlobalReplicationGroup) GoString() string {
14712	return s.String()
14713}
14714
14715// SetARN sets the ARN field's value.
14716func (s *GlobalReplicationGroup) SetARN(v string) *GlobalReplicationGroup {
14717	s.ARN = &v
14718	return s
14719}
14720
14721// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
14722func (s *GlobalReplicationGroup) SetAtRestEncryptionEnabled(v bool) *GlobalReplicationGroup {
14723	s.AtRestEncryptionEnabled = &v
14724	return s
14725}
14726
14727// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
14728func (s *GlobalReplicationGroup) SetAuthTokenEnabled(v bool) *GlobalReplicationGroup {
14729	s.AuthTokenEnabled = &v
14730	return s
14731}
14732
14733// SetCacheNodeType sets the CacheNodeType field's value.
14734func (s *GlobalReplicationGroup) SetCacheNodeType(v string) *GlobalReplicationGroup {
14735	s.CacheNodeType = &v
14736	return s
14737}
14738
14739// SetClusterEnabled sets the ClusterEnabled field's value.
14740func (s *GlobalReplicationGroup) SetClusterEnabled(v bool) *GlobalReplicationGroup {
14741	s.ClusterEnabled = &v
14742	return s
14743}
14744
14745// SetEngine sets the Engine field's value.
14746func (s *GlobalReplicationGroup) SetEngine(v string) *GlobalReplicationGroup {
14747	s.Engine = &v
14748	return s
14749}
14750
14751// SetEngineVersion sets the EngineVersion field's value.
14752func (s *GlobalReplicationGroup) SetEngineVersion(v string) *GlobalReplicationGroup {
14753	s.EngineVersion = &v
14754	return s
14755}
14756
14757// SetGlobalNodeGroups sets the GlobalNodeGroups field's value.
14758func (s *GlobalReplicationGroup) SetGlobalNodeGroups(v []*GlobalNodeGroup) *GlobalReplicationGroup {
14759	s.GlobalNodeGroups = v
14760	return s
14761}
14762
14763// SetGlobalReplicationGroupDescription sets the GlobalReplicationGroupDescription field's value.
14764func (s *GlobalReplicationGroup) SetGlobalReplicationGroupDescription(v string) *GlobalReplicationGroup {
14765	s.GlobalReplicationGroupDescription = &v
14766	return s
14767}
14768
14769// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
14770func (s *GlobalReplicationGroup) SetGlobalReplicationGroupId(v string) *GlobalReplicationGroup {
14771	s.GlobalReplicationGroupId = &v
14772	return s
14773}
14774
14775// SetMembers sets the Members field's value.
14776func (s *GlobalReplicationGroup) SetMembers(v []*GlobalReplicationGroupMember) *GlobalReplicationGroup {
14777	s.Members = v
14778	return s
14779}
14780
14781// SetStatus sets the Status field's value.
14782func (s *GlobalReplicationGroup) SetStatus(v string) *GlobalReplicationGroup {
14783	s.Status = &v
14784	return s
14785}
14786
14787// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
14788func (s *GlobalReplicationGroup) SetTransitEncryptionEnabled(v bool) *GlobalReplicationGroup {
14789	s.TransitEncryptionEnabled = &v
14790	return s
14791}
14792
14793// The name of the Global datastore and role of this replication group in the
14794// Global datastore.
14795type GlobalReplicationGroupInfo struct {
14796	_ struct{} `type:"structure"`
14797
14798	// The name of the Global datastore
14799	GlobalReplicationGroupId *string `type:"string"`
14800
14801	// The role of the replication group in a Global datastore. Can be primary or
14802	// secondary.
14803	GlobalReplicationGroupMemberRole *string `type:"string"`
14804}
14805
14806// String returns the string representation
14807func (s GlobalReplicationGroupInfo) String() string {
14808	return awsutil.Prettify(s)
14809}
14810
14811// GoString returns the string representation
14812func (s GlobalReplicationGroupInfo) GoString() string {
14813	return s.String()
14814}
14815
14816// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
14817func (s *GlobalReplicationGroupInfo) SetGlobalReplicationGroupId(v string) *GlobalReplicationGroupInfo {
14818	s.GlobalReplicationGroupId = &v
14819	return s
14820}
14821
14822// SetGlobalReplicationGroupMemberRole sets the GlobalReplicationGroupMemberRole field's value.
14823func (s *GlobalReplicationGroupInfo) SetGlobalReplicationGroupMemberRole(v string) *GlobalReplicationGroupInfo {
14824	s.GlobalReplicationGroupMemberRole = &v
14825	return s
14826}
14827
14828// A member of a Global datastore. It contains the Replication Group Id, the
14829// Amazon region and the role of the replication group.
14830type GlobalReplicationGroupMember struct {
14831	_ struct{} `type:"structure"`
14832
14833	// Indicates whether automatic failover is enabled for the replication group.
14834	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
14835
14836	// The replication group id of the Global datastore member.
14837	ReplicationGroupId *string `type:"string"`
14838
14839	// The Amazon region of the Global datastore member.
14840	ReplicationGroupRegion *string `type:"string"`
14841
14842	// Indicates the role of the replication group, primary or secondary.
14843	Role *string `type:"string"`
14844
14845	// The status of the membership of the replication group.
14846	Status *string `type:"string"`
14847}
14848
14849// String returns the string representation
14850func (s GlobalReplicationGroupMember) String() string {
14851	return awsutil.Prettify(s)
14852}
14853
14854// GoString returns the string representation
14855func (s GlobalReplicationGroupMember) GoString() string {
14856	return s.String()
14857}
14858
14859// SetAutomaticFailover sets the AutomaticFailover field's value.
14860func (s *GlobalReplicationGroupMember) SetAutomaticFailover(v string) *GlobalReplicationGroupMember {
14861	s.AutomaticFailover = &v
14862	return s
14863}
14864
14865// SetReplicationGroupId sets the ReplicationGroupId field's value.
14866func (s *GlobalReplicationGroupMember) SetReplicationGroupId(v string) *GlobalReplicationGroupMember {
14867	s.ReplicationGroupId = &v
14868	return s
14869}
14870
14871// SetReplicationGroupRegion sets the ReplicationGroupRegion field's value.
14872func (s *GlobalReplicationGroupMember) SetReplicationGroupRegion(v string) *GlobalReplicationGroupMember {
14873	s.ReplicationGroupRegion = &v
14874	return s
14875}
14876
14877// SetRole sets the Role field's value.
14878func (s *GlobalReplicationGroupMember) SetRole(v string) *GlobalReplicationGroupMember {
14879	s.Role = &v
14880	return s
14881}
14882
14883// SetStatus sets the Status field's value.
14884func (s *GlobalReplicationGroupMember) SetStatus(v string) *GlobalReplicationGroupMember {
14885	s.Status = &v
14886	return s
14887}
14888
14889type IncreaseNodeGroupsInGlobalReplicationGroupInput struct {
14890	_ struct{} `type:"structure"`
14891
14892	// Indicates that the process begins immediately. At present, the only permitted
14893	// value for this parameter is true.
14894	//
14895	// ApplyImmediately is a required field
14896	ApplyImmediately *bool `type:"boolean" required:"true"`
14897
14898	// The name of the Global datastore
14899	//
14900	// GlobalReplicationGroupId is a required field
14901	GlobalReplicationGroupId *string `type:"string" required:"true"`
14902
14903	// The number of node groups you wish to add
14904	//
14905	// NodeGroupCount is a required field
14906	NodeGroupCount *int64 `type:"integer" required:"true"`
14907
14908	// Describes the replication group IDs, the Amazon regions where they are stored
14909	// and the shard configuration for each that comprise the Global datastore
14910	RegionalConfigurations []*RegionalConfiguration `locationNameList:"RegionalConfiguration" type:"list"`
14911}
14912
14913// String returns the string representation
14914func (s IncreaseNodeGroupsInGlobalReplicationGroupInput) String() string {
14915	return awsutil.Prettify(s)
14916}
14917
14918// GoString returns the string representation
14919func (s IncreaseNodeGroupsInGlobalReplicationGroupInput) GoString() string {
14920	return s.String()
14921}
14922
14923// Validate inspects the fields of the type to determine if they are valid.
14924func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) Validate() error {
14925	invalidParams := request.ErrInvalidParams{Context: "IncreaseNodeGroupsInGlobalReplicationGroupInput"}
14926	if s.ApplyImmediately == nil {
14927		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
14928	}
14929	if s.GlobalReplicationGroupId == nil {
14930		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
14931	}
14932	if s.NodeGroupCount == nil {
14933		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
14934	}
14935	if s.RegionalConfigurations != nil {
14936		for i, v := range s.RegionalConfigurations {
14937			if v == nil {
14938				continue
14939			}
14940			if err := v.Validate(); err != nil {
14941				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RegionalConfigurations", i), err.(request.ErrInvalidParams))
14942			}
14943		}
14944	}
14945
14946	if invalidParams.Len() > 0 {
14947		return invalidParams
14948	}
14949	return nil
14950}
14951
14952// SetApplyImmediately sets the ApplyImmediately field's value.
14953func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetApplyImmediately(v bool) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
14954	s.ApplyImmediately = &v
14955	return s
14956}
14957
14958// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
14959func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
14960	s.GlobalReplicationGroupId = &v
14961	return s
14962}
14963
14964// SetNodeGroupCount sets the NodeGroupCount field's value.
14965func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetNodeGroupCount(v int64) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
14966	s.NodeGroupCount = &v
14967	return s
14968}
14969
14970// SetRegionalConfigurations sets the RegionalConfigurations field's value.
14971func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetRegionalConfigurations(v []*RegionalConfiguration) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
14972	s.RegionalConfigurations = v
14973	return s
14974}
14975
14976type IncreaseNodeGroupsInGlobalReplicationGroupOutput struct {
14977	_ struct{} `type:"structure"`
14978
14979	// Consists of a primary cluster that accepts writes and an associated secondary
14980	// cluster that resides in a different Amazon region. The secondary cluster
14981	// accepts only reads. The primary cluster automatically replicates updates
14982	// to the secondary cluster.
14983	//
14984	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
14985	//    datastore, which is what you use to associate a secondary cluster.
14986	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
14987}
14988
14989// String returns the string representation
14990func (s IncreaseNodeGroupsInGlobalReplicationGroupOutput) String() string {
14991	return awsutil.Prettify(s)
14992}
14993
14994// GoString returns the string representation
14995func (s IncreaseNodeGroupsInGlobalReplicationGroupOutput) GoString() string {
14996	return s.String()
14997}
14998
14999// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
15000func (s *IncreaseNodeGroupsInGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *IncreaseNodeGroupsInGlobalReplicationGroupOutput {
15001	s.GlobalReplicationGroup = v
15002	return s
15003}
15004
15005type IncreaseReplicaCountInput struct {
15006	_ struct{} `type:"structure"`
15007
15008	// If True, the number of replica nodes is increased immediately. ApplyImmediately=False
15009	// is not currently supported.
15010	//
15011	// ApplyImmediately is a required field
15012	ApplyImmediately *bool `type:"boolean" required:"true"`
15013
15014	// The number of read replica nodes you want at the completion of this operation.
15015	// For Redis (cluster mode disabled) replication groups, this is the number
15016	// of replica nodes in the replication group. For Redis (cluster mode enabled)
15017	// replication groups, this is the number of replica nodes in each of the replication
15018	// group's node groups.
15019	NewReplicaCount *int64 `type:"integer"`
15020
15021	// A list of ConfigureShard objects that can be used to configure each shard
15022	// in a Redis (cluster mode enabled) replication group. The ConfigureShard has
15023	// three members: NewReplicaCount, NodeGroupId, and PreferredAvailabilityZones.
15024	ReplicaConfiguration []*ConfigureShard `locationNameList:"ConfigureShard" type:"list"`
15025
15026	// The id of the replication group to which you want to add replica nodes.
15027	//
15028	// ReplicationGroupId is a required field
15029	ReplicationGroupId *string `type:"string" required:"true"`
15030}
15031
15032// String returns the string representation
15033func (s IncreaseReplicaCountInput) String() string {
15034	return awsutil.Prettify(s)
15035}
15036
15037// GoString returns the string representation
15038func (s IncreaseReplicaCountInput) GoString() string {
15039	return s.String()
15040}
15041
15042// Validate inspects the fields of the type to determine if they are valid.
15043func (s *IncreaseReplicaCountInput) Validate() error {
15044	invalidParams := request.ErrInvalidParams{Context: "IncreaseReplicaCountInput"}
15045	if s.ApplyImmediately == nil {
15046		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
15047	}
15048	if s.ReplicationGroupId == nil {
15049		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
15050	}
15051	if s.ReplicaConfiguration != nil {
15052		for i, v := range s.ReplicaConfiguration {
15053			if v == nil {
15054				continue
15055			}
15056			if err := v.Validate(); err != nil {
15057				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaConfiguration", i), err.(request.ErrInvalidParams))
15058			}
15059		}
15060	}
15061
15062	if invalidParams.Len() > 0 {
15063		return invalidParams
15064	}
15065	return nil
15066}
15067
15068// SetApplyImmediately sets the ApplyImmediately field's value.
15069func (s *IncreaseReplicaCountInput) SetApplyImmediately(v bool) *IncreaseReplicaCountInput {
15070	s.ApplyImmediately = &v
15071	return s
15072}
15073
15074// SetNewReplicaCount sets the NewReplicaCount field's value.
15075func (s *IncreaseReplicaCountInput) SetNewReplicaCount(v int64) *IncreaseReplicaCountInput {
15076	s.NewReplicaCount = &v
15077	return s
15078}
15079
15080// SetReplicaConfiguration sets the ReplicaConfiguration field's value.
15081func (s *IncreaseReplicaCountInput) SetReplicaConfiguration(v []*ConfigureShard) *IncreaseReplicaCountInput {
15082	s.ReplicaConfiguration = v
15083	return s
15084}
15085
15086// SetReplicationGroupId sets the ReplicationGroupId field's value.
15087func (s *IncreaseReplicaCountInput) SetReplicationGroupId(v string) *IncreaseReplicaCountInput {
15088	s.ReplicationGroupId = &v
15089	return s
15090}
15091
15092type IncreaseReplicaCountOutput struct {
15093	_ struct{} `type:"structure"`
15094
15095	// Contains all of the attributes of a specific Redis replication group.
15096	ReplicationGroup *ReplicationGroup `type:"structure"`
15097}
15098
15099// String returns the string representation
15100func (s IncreaseReplicaCountOutput) String() string {
15101	return awsutil.Prettify(s)
15102}
15103
15104// GoString returns the string representation
15105func (s IncreaseReplicaCountOutput) GoString() string {
15106	return s.String()
15107}
15108
15109// SetReplicationGroup sets the ReplicationGroup field's value.
15110func (s *IncreaseReplicaCountOutput) SetReplicationGroup(v *ReplicationGroup) *IncreaseReplicaCountOutput {
15111	s.ReplicationGroup = v
15112	return s
15113}
15114
15115// The configuration details of the Kinesis Data Firehose destination.
15116type KinesisFirehoseDestinationDetails struct {
15117	_ struct{} `type:"structure"`
15118
15119	// The name of the Kinesis Data Firehose delivery stream.
15120	DeliveryStream *string `type:"string"`
15121}
15122
15123// String returns the string representation
15124func (s KinesisFirehoseDestinationDetails) String() string {
15125	return awsutil.Prettify(s)
15126}
15127
15128// GoString returns the string representation
15129func (s KinesisFirehoseDestinationDetails) GoString() string {
15130	return s.String()
15131}
15132
15133// SetDeliveryStream sets the DeliveryStream field's value.
15134func (s *KinesisFirehoseDestinationDetails) SetDeliveryStream(v string) *KinesisFirehoseDestinationDetails {
15135	s.DeliveryStream = &v
15136	return s
15137}
15138
15139// The input parameters for the ListAllowedNodeTypeModifications operation.
15140type ListAllowedNodeTypeModificationsInput struct {
15141	_ struct{} `type:"structure"`
15142
15143	// The name of the cluster you want to scale up to a larger node instanced type.
15144	// ElastiCache uses the cluster id to identify the current node type of this
15145	// cluster and from that to create a list of node types you can scale up to.
15146	//
15147	// You must provide a value for either the CacheClusterId or the ReplicationGroupId.
15148	CacheClusterId *string `type:"string"`
15149
15150	// The name of the replication group want to scale up to a larger node type.
15151	// ElastiCache uses the replication group id to identify the current node type
15152	// being used by this replication group, and from that to create a list of node
15153	// types you can scale up to.
15154	//
15155	// You must provide a value for either the CacheClusterId or the ReplicationGroupId.
15156	ReplicationGroupId *string `type:"string"`
15157}
15158
15159// String returns the string representation
15160func (s ListAllowedNodeTypeModificationsInput) String() string {
15161	return awsutil.Prettify(s)
15162}
15163
15164// GoString returns the string representation
15165func (s ListAllowedNodeTypeModificationsInput) GoString() string {
15166	return s.String()
15167}
15168
15169// SetCacheClusterId sets the CacheClusterId field's value.
15170func (s *ListAllowedNodeTypeModificationsInput) SetCacheClusterId(v string) *ListAllowedNodeTypeModificationsInput {
15171	s.CacheClusterId = &v
15172	return s
15173}
15174
15175// SetReplicationGroupId sets the ReplicationGroupId field's value.
15176func (s *ListAllowedNodeTypeModificationsInput) SetReplicationGroupId(v string) *ListAllowedNodeTypeModificationsInput {
15177	s.ReplicationGroupId = &v
15178	return s
15179}
15180
15181// Represents the allowed node types you can use to modify your cluster or replication
15182// group.
15183type ListAllowedNodeTypeModificationsOutput struct {
15184	_ struct{} `type:"structure"`
15185
15186	// A string list, each element of which specifies a cache node type which you
15187	// can use to scale your cluster or replication group. When scaling down a Redis
15188	// cluster or replication group using ModifyCacheCluster or ModifyReplicationGroup,
15189	// use a value from this list for the CacheNodeType parameter.
15190	ScaleDownModifications []*string `type:"list"`
15191
15192	// A string list, each element of which specifies a cache node type which you
15193	// can use to scale your cluster or replication group.
15194	//
15195	// When scaling up a Redis cluster or replication group using ModifyCacheCluster
15196	// or ModifyReplicationGroup, use a value from this list for the CacheNodeType
15197	// parameter.
15198	ScaleUpModifications []*string `type:"list"`
15199}
15200
15201// String returns the string representation
15202func (s ListAllowedNodeTypeModificationsOutput) String() string {
15203	return awsutil.Prettify(s)
15204}
15205
15206// GoString returns the string representation
15207func (s ListAllowedNodeTypeModificationsOutput) GoString() string {
15208	return s.String()
15209}
15210
15211// SetScaleDownModifications sets the ScaleDownModifications field's value.
15212func (s *ListAllowedNodeTypeModificationsOutput) SetScaleDownModifications(v []*string) *ListAllowedNodeTypeModificationsOutput {
15213	s.ScaleDownModifications = v
15214	return s
15215}
15216
15217// SetScaleUpModifications sets the ScaleUpModifications field's value.
15218func (s *ListAllowedNodeTypeModificationsOutput) SetScaleUpModifications(v []*string) *ListAllowedNodeTypeModificationsOutput {
15219	s.ScaleUpModifications = v
15220	return s
15221}
15222
15223// The input parameters for the ListTagsForResource operation.
15224type ListTagsForResourceInput struct {
15225	_ struct{} `type:"structure"`
15226
15227	// The Amazon Resource Name (ARN) of the resource for which you want the list
15228	// of tags, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
15229	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.
15230	//
15231	// For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon
15232	// Web Services Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
15233	//
15234	// ResourceName is a required field
15235	ResourceName *string `type:"string" required:"true"`
15236}
15237
15238// String returns the string representation
15239func (s ListTagsForResourceInput) String() string {
15240	return awsutil.Prettify(s)
15241}
15242
15243// GoString returns the string representation
15244func (s ListTagsForResourceInput) GoString() string {
15245	return s.String()
15246}
15247
15248// Validate inspects the fields of the type to determine if they are valid.
15249func (s *ListTagsForResourceInput) Validate() error {
15250	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
15251	if s.ResourceName == nil {
15252		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
15253	}
15254
15255	if invalidParams.Len() > 0 {
15256		return invalidParams
15257	}
15258	return nil
15259}
15260
15261// SetResourceName sets the ResourceName field's value.
15262func (s *ListTagsForResourceInput) SetResourceName(v string) *ListTagsForResourceInput {
15263	s.ResourceName = &v
15264	return s
15265}
15266
15267// Returns the destination, format and type of the logs.
15268type LogDeliveryConfiguration struct {
15269	_ struct{} `type:"structure"`
15270
15271	// Configuration details of either a CloudWatch Logs destination or Kinesis
15272	// Data Firehose destination.
15273	DestinationDetails *DestinationDetails `type:"structure"`
15274
15275	// Returns the destination type, either cloudwatch-logs or kinesis-firehose.
15276	DestinationType *string `type:"string" enum:"DestinationType"`
15277
15278	// Returns the log format, either JSON or TEXT.
15279	LogFormat *string `type:"string" enum:"LogFormat"`
15280
15281	// Refers to slow-log (https://redis.io/commands/slowlog).
15282	LogType *string `type:"string" enum:"LogType"`
15283
15284	// Returns an error message for the log delivery configuration.
15285	Message *string `type:"string"`
15286
15287	// Returns the log delivery configuration status. Values are one of enabling
15288	// | disabling | modifying | active | error
15289	Status *string `type:"string" enum:"LogDeliveryConfigurationStatus"`
15290}
15291
15292// String returns the string representation
15293func (s LogDeliveryConfiguration) String() string {
15294	return awsutil.Prettify(s)
15295}
15296
15297// GoString returns the string representation
15298func (s LogDeliveryConfiguration) GoString() string {
15299	return s.String()
15300}
15301
15302// SetDestinationDetails sets the DestinationDetails field's value.
15303func (s *LogDeliveryConfiguration) SetDestinationDetails(v *DestinationDetails) *LogDeliveryConfiguration {
15304	s.DestinationDetails = v
15305	return s
15306}
15307
15308// SetDestinationType sets the DestinationType field's value.
15309func (s *LogDeliveryConfiguration) SetDestinationType(v string) *LogDeliveryConfiguration {
15310	s.DestinationType = &v
15311	return s
15312}
15313
15314// SetLogFormat sets the LogFormat field's value.
15315func (s *LogDeliveryConfiguration) SetLogFormat(v string) *LogDeliveryConfiguration {
15316	s.LogFormat = &v
15317	return s
15318}
15319
15320// SetLogType sets the LogType field's value.
15321func (s *LogDeliveryConfiguration) SetLogType(v string) *LogDeliveryConfiguration {
15322	s.LogType = &v
15323	return s
15324}
15325
15326// SetMessage sets the Message field's value.
15327func (s *LogDeliveryConfiguration) SetMessage(v string) *LogDeliveryConfiguration {
15328	s.Message = &v
15329	return s
15330}
15331
15332// SetStatus sets the Status field's value.
15333func (s *LogDeliveryConfiguration) SetStatus(v string) *LogDeliveryConfiguration {
15334	s.Status = &v
15335	return s
15336}
15337
15338// Specifies the destination, format and type of the logs.
15339type LogDeliveryConfigurationRequest struct {
15340	_ struct{} `type:"structure"`
15341
15342	// Configuration details of either a CloudWatch Logs destination or Kinesis
15343	// Data Firehose destination.
15344	DestinationDetails *DestinationDetails `type:"structure"`
15345
15346	// Specify either cloudwatch-logs or kinesis-firehose as the destination type.
15347	DestinationType *string `type:"string" enum:"DestinationType"`
15348
15349	// Specify if log delivery is enabled. Default true.
15350	Enabled *bool `type:"boolean"`
15351
15352	// Specifies either JSON or TEXT
15353	LogFormat *string `type:"string" enum:"LogFormat"`
15354
15355	// Refers to slow-log (https://redis.io/commands/slowlog).
15356	LogType *string `type:"string" enum:"LogType"`
15357}
15358
15359// String returns the string representation
15360func (s LogDeliveryConfigurationRequest) String() string {
15361	return awsutil.Prettify(s)
15362}
15363
15364// GoString returns the string representation
15365func (s LogDeliveryConfigurationRequest) GoString() string {
15366	return s.String()
15367}
15368
15369// SetDestinationDetails sets the DestinationDetails field's value.
15370func (s *LogDeliveryConfigurationRequest) SetDestinationDetails(v *DestinationDetails) *LogDeliveryConfigurationRequest {
15371	s.DestinationDetails = v
15372	return s
15373}
15374
15375// SetDestinationType sets the DestinationType field's value.
15376func (s *LogDeliveryConfigurationRequest) SetDestinationType(v string) *LogDeliveryConfigurationRequest {
15377	s.DestinationType = &v
15378	return s
15379}
15380
15381// SetEnabled sets the Enabled field's value.
15382func (s *LogDeliveryConfigurationRequest) SetEnabled(v bool) *LogDeliveryConfigurationRequest {
15383	s.Enabled = &v
15384	return s
15385}
15386
15387// SetLogFormat sets the LogFormat field's value.
15388func (s *LogDeliveryConfigurationRequest) SetLogFormat(v string) *LogDeliveryConfigurationRequest {
15389	s.LogFormat = &v
15390	return s
15391}
15392
15393// SetLogType sets the LogType field's value.
15394func (s *LogDeliveryConfigurationRequest) SetLogType(v string) *LogDeliveryConfigurationRequest {
15395	s.LogType = &v
15396	return s
15397}
15398
15399// Represents the input of a ModifyCacheCluster operation.
15400type ModifyCacheClusterInput struct {
15401	_ struct{} `type:"structure"`
15402
15403	// Specifies whether the new nodes in this Memcached cluster are all created
15404	// in a single Availability Zone or created across multiple Availability Zones.
15405	//
15406	// Valid values: single-az | cross-az.
15407	//
15408	// This option is only supported for Memcached clusters.
15409	//
15410	// You cannot specify single-az if the Memcached cluster already has cache nodes
15411	// in different Availability Zones. If cross-az is specified, existing Memcached
15412	// nodes remain in their current Availability Zone.
15413	//
15414	// Only newly created nodes are located in different Availability Zones.
15415	AZMode *string `type:"string" enum:"AZMode"`
15416
15417	// If true, this parameter causes the modifications in this request and any
15418	// pending modifications to be applied, asynchronously and as soon as possible,
15419	// regardless of the PreferredMaintenanceWindow setting for the cluster.
15420	//
15421	// If false, changes to the cluster are applied on the next maintenance reboot,
15422	// or the next failure reboot, whichever occurs first.
15423	//
15424	// If you perform a ModifyCacheCluster before a pending modification is applied,
15425	// the pending modification is replaced by the newer modification.
15426	//
15427	// Valid values: true | false
15428	//
15429	// Default: false
15430	ApplyImmediately *bool `type:"boolean"`
15431
15432	// Reserved parameter. The password used to access a password protected server.
15433	// This parameter must be specified with the auth-token-update parameter. Password
15434	// constraints:
15435	//
15436	//    * Must be only printable ASCII characters
15437	//
15438	//    * Must be at least 16 characters and no more than 128 characters in length
15439	//
15440	//    * Cannot contain any of the following characters: '/', '"', or '@', '%'
15441	//
15442	// For more information, see AUTH password at AUTH (http://redis.io/commands/AUTH).
15443	AuthToken *string `type:"string"`
15444
15445	// Specifies the strategy to use to update the AUTH token. This parameter must
15446	// be specified with the auth-token parameter. Possible values:
15447	//
15448	//    * Rotate
15449	//
15450	//    * Set
15451	//
15452	// For more information, see Authenticating Users with Redis AUTH (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html)
15453	AuthTokenUpdateStrategy *string `type:"string" enum:"AuthTokenUpdateStrategyType"`
15454
15455	// This parameter is currently disabled.
15456	AutoMinorVersionUpgrade *bool `type:"boolean"`
15457
15458	// The cluster identifier. This value is stored as a lowercase string.
15459	//
15460	// CacheClusterId is a required field
15461	CacheClusterId *string `type:"string" required:"true"`
15462
15463	// A list of cache node IDs to be removed. A node ID is a numeric identifier
15464	// (0001, 0002, etc.). This parameter is only valid when NumCacheNodes is less
15465	// than the existing number of cache nodes. The number of cache node IDs supplied
15466	// in this parameter must match the difference between the existing number of
15467	// cache nodes in the cluster or pending cache nodes, whichever is greater,
15468	// and the value of NumCacheNodes in the request.
15469	//
15470	// For example: If you have 3 active cache nodes, 7 pending cache nodes, and
15471	// the number of cache nodes in this ModifyCacheCluster call is 5, you must
15472	// list 2 (7 - 5) cache node IDs to remove.
15473	CacheNodeIdsToRemove []*string `locationNameList:"CacheNodeId" type:"list"`
15474
15475	// A valid cache node type that you want to scale this cluster up to.
15476	CacheNodeType *string `type:"string"`
15477
15478	// The name of the cache parameter group to apply to this cluster. This change
15479	// is asynchronously applied as soon as possible for parameters when the ApplyImmediately
15480	// parameter is specified as true for this request.
15481	CacheParameterGroupName *string `type:"string"`
15482
15483	// A list of cache security group names to authorize on this cluster. This change
15484	// is asynchronously applied as soon as possible.
15485	//
15486	// You can use this parameter only with clusters that are created outside of
15487	// an Amazon Virtual Private Cloud (Amazon VPC).
15488	//
15489	// Constraints: Must contain no more than 255 alphanumeric characters. Must
15490	// not be "Default".
15491	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
15492
15493	// The upgraded version of the cache engine to be run on the cache nodes.
15494	//
15495	// Important: You can upgrade to a newer engine version (see Selecting a Cache
15496	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
15497	// but you cannot downgrade to an earlier engine version. If you want to use
15498	// an earlier engine version, you must delete the existing cluster and create
15499	// it anew with the earlier engine version.
15500	EngineVersion *string `type:"string"`
15501
15502	// Specifies the destination, format and type of the logs.
15503	LogDeliveryConfigurations []*LogDeliveryConfigurationRequest `locationNameList:"LogDeliveryConfigurationRequest" type:"list"`
15504
15505	//
15506	// This option is only supported on Memcached clusters.
15507	//
15508	// The list of Availability Zones where the new Memcached cache nodes are created.
15509	//
15510	// This parameter is only valid when NumCacheNodes in the request is greater
15511	// than the sum of the number of active cache nodes and the number of cache
15512	// nodes pending creation (which may be zero). The number of Availability Zones
15513	// supplied in this list must match the cache nodes being added in this request.
15514	//
15515	// Scenarios:
15516	//
15517	//    * Scenario 1: You have 3 active nodes and wish to add 2 nodes. Specify
15518	//    NumCacheNodes=5 (3 + 2) and optionally specify two Availability Zones
15519	//    for the two new nodes.
15520	//
15521	//    * Scenario 2: You have 3 active nodes and 2 nodes pending creation (from
15522	//    the scenario 1 call) and want to add 1 more node. Specify NumCacheNodes=6
15523	//    ((3 + 2) + 1) and optionally specify an Availability Zone for the new
15524	//    node.
15525	//
15526	//    * Scenario 3: You want to cancel all pending operations. Specify NumCacheNodes=3
15527	//    to cancel all pending operations.
15528	//
15529	// The Availability Zone placement of nodes pending creation cannot be modified.
15530	// If you wish to cancel any nodes pending creation, add 0 nodes by setting
15531	// NumCacheNodes to the number of current nodes.
15532	//
15533	// If cross-az is specified, existing Memcached nodes remain in their current
15534	// Availability Zone. Only newly created nodes can be located in different Availability
15535	// Zones. For guidance on how to move existing Memcached nodes to different
15536	// Availability Zones, see the Availability Zone Considerations section of Cache
15537	// Node Considerations for Memcached (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html).
15538	//
15539	// Impact of new add/remove requests upon pending requests
15540	//
15541	//    * Scenario-1 Pending Action: Delete New Request: Delete Result: The new
15542	//    delete, pending or immediate, replaces the pending delete.
15543	//
15544	//    * Scenario-2 Pending Action: Delete New Request: Create Result: The new
15545	//    create, pending or immediate, replaces the pending delete.
15546	//
15547	//    * Scenario-3 Pending Action: Create New Request: Delete Result: The new
15548	//    delete, pending or immediate, replaces the pending create.
15549	//
15550	//    * Scenario-4 Pending Action: Create New Request: Create Result: The new
15551	//    create is added to the pending create. Important: If the new create request
15552	//    is Apply Immediately - Yes, all creates are performed immediately. If
15553	//    the new create request is Apply Immediately - No, all creates are pending.
15554	NewAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
15555
15556	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
15557	// are sent.
15558	//
15559	// The Amazon SNS topic owner must be same as the cluster owner.
15560	NotificationTopicArn *string `type:"string"`
15561
15562	// The status of the Amazon SNS notification topic. Notifications are sent only
15563	// if the status is active.
15564	//
15565	// Valid values: active | inactive
15566	NotificationTopicStatus *string `type:"string"`
15567
15568	// The number of cache nodes that the cluster should have. If the value for
15569	// NumCacheNodes is greater than the sum of the number of current cache nodes
15570	// and the number of cache nodes pending creation (which may be zero), more
15571	// nodes are added. If the value is less than the number of existing cache nodes,
15572	// nodes are removed. If the value is equal to the number of current cache nodes,
15573	// any pending add or remove requests are canceled.
15574	//
15575	// If you are removing cache nodes, you must use the CacheNodeIdsToRemove parameter
15576	// to provide the IDs of the specific cache nodes to remove.
15577	//
15578	// For clusters running Redis, this value must be 1. For clusters running Memcached,
15579	// this value must be between 1 and 40.
15580	//
15581	// Adding or removing Memcached cache nodes can be applied immediately or as
15582	// a pending operation (see ApplyImmediately).
15583	//
15584	// A pending operation to modify the number of cache nodes in a cluster during
15585	// its maintenance window, whether by adding or removing nodes in accordance
15586	// with the scale out architecture, is not queued. The customer's latest request
15587	// to add or remove nodes to the cluster overrides any previous pending operations
15588	// to modify the number of cache nodes in the cluster. For example, a request
15589	// to remove 2 nodes would override a previous pending operation to remove 3
15590	// nodes. Similarly, a request to add 2 nodes would override a previous pending
15591	// operation to remove 3 nodes and vice versa. As Memcached cache nodes may
15592	// now be provisioned in different Availability Zones with flexible cache node
15593	// placement, a request to add nodes does not automatically override a previous
15594	// pending operation to add nodes. The customer can modify the previous pending
15595	// operation to add more nodes or explicitly cancel the pending request and
15596	// retry the new request. To cancel pending operations to modify the number
15597	// of cache nodes in a cluster, use the ModifyCacheCluster request and set NumCacheNodes
15598	// equal to the number of cache nodes currently in the cluster.
15599	NumCacheNodes *int64 `type:"integer"`
15600
15601	// Specifies the weekly time range during which maintenance on the cluster is
15602	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
15603	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
15604	//
15605	// Valid values for ddd are:
15606	//
15607	//    * sun
15608	//
15609	//    * mon
15610	//
15611	//    * tue
15612	//
15613	//    * wed
15614	//
15615	//    * thu
15616	//
15617	//    * fri
15618	//
15619	//    * sat
15620	//
15621	// Example: sun:23:00-mon:01:30
15622	PreferredMaintenanceWindow *string `type:"string"`
15623
15624	// Specifies the VPC Security Groups associated with the cluster.
15625	//
15626	// This parameter can be used only with clusters that are created in an Amazon
15627	// Virtual Private Cloud (Amazon VPC).
15628	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
15629
15630	// The number of days for which ElastiCache retains automatic cluster snapshots
15631	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
15632	// a snapshot that was taken today is retained for 5 days before being deleted.
15633	//
15634	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
15635	// off.
15636	SnapshotRetentionLimit *int64 `type:"integer"`
15637
15638	// The daily time range (in UTC) during which ElastiCache begins taking a daily
15639	// snapshot of your cluster.
15640	SnapshotWindow *string `type:"string"`
15641}
15642
15643// String returns the string representation
15644func (s ModifyCacheClusterInput) String() string {
15645	return awsutil.Prettify(s)
15646}
15647
15648// GoString returns the string representation
15649func (s ModifyCacheClusterInput) GoString() string {
15650	return s.String()
15651}
15652
15653// Validate inspects the fields of the type to determine if they are valid.
15654func (s *ModifyCacheClusterInput) Validate() error {
15655	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheClusterInput"}
15656	if s.CacheClusterId == nil {
15657		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
15658	}
15659
15660	if invalidParams.Len() > 0 {
15661		return invalidParams
15662	}
15663	return nil
15664}
15665
15666// SetAZMode sets the AZMode field's value.
15667func (s *ModifyCacheClusterInput) SetAZMode(v string) *ModifyCacheClusterInput {
15668	s.AZMode = &v
15669	return s
15670}
15671
15672// SetApplyImmediately sets the ApplyImmediately field's value.
15673func (s *ModifyCacheClusterInput) SetApplyImmediately(v bool) *ModifyCacheClusterInput {
15674	s.ApplyImmediately = &v
15675	return s
15676}
15677
15678// SetAuthToken sets the AuthToken field's value.
15679func (s *ModifyCacheClusterInput) SetAuthToken(v string) *ModifyCacheClusterInput {
15680	s.AuthToken = &v
15681	return s
15682}
15683
15684// SetAuthTokenUpdateStrategy sets the AuthTokenUpdateStrategy field's value.
15685func (s *ModifyCacheClusterInput) SetAuthTokenUpdateStrategy(v string) *ModifyCacheClusterInput {
15686	s.AuthTokenUpdateStrategy = &v
15687	return s
15688}
15689
15690// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
15691func (s *ModifyCacheClusterInput) SetAutoMinorVersionUpgrade(v bool) *ModifyCacheClusterInput {
15692	s.AutoMinorVersionUpgrade = &v
15693	return s
15694}
15695
15696// SetCacheClusterId sets the CacheClusterId field's value.
15697func (s *ModifyCacheClusterInput) SetCacheClusterId(v string) *ModifyCacheClusterInput {
15698	s.CacheClusterId = &v
15699	return s
15700}
15701
15702// SetCacheNodeIdsToRemove sets the CacheNodeIdsToRemove field's value.
15703func (s *ModifyCacheClusterInput) SetCacheNodeIdsToRemove(v []*string) *ModifyCacheClusterInput {
15704	s.CacheNodeIdsToRemove = v
15705	return s
15706}
15707
15708// SetCacheNodeType sets the CacheNodeType field's value.
15709func (s *ModifyCacheClusterInput) SetCacheNodeType(v string) *ModifyCacheClusterInput {
15710	s.CacheNodeType = &v
15711	return s
15712}
15713
15714// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
15715func (s *ModifyCacheClusterInput) SetCacheParameterGroupName(v string) *ModifyCacheClusterInput {
15716	s.CacheParameterGroupName = &v
15717	return s
15718}
15719
15720// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
15721func (s *ModifyCacheClusterInput) SetCacheSecurityGroupNames(v []*string) *ModifyCacheClusterInput {
15722	s.CacheSecurityGroupNames = v
15723	return s
15724}
15725
15726// SetEngineVersion sets the EngineVersion field's value.
15727func (s *ModifyCacheClusterInput) SetEngineVersion(v string) *ModifyCacheClusterInput {
15728	s.EngineVersion = &v
15729	return s
15730}
15731
15732// SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
15733func (s *ModifyCacheClusterInput) SetLogDeliveryConfigurations(v []*LogDeliveryConfigurationRequest) *ModifyCacheClusterInput {
15734	s.LogDeliveryConfigurations = v
15735	return s
15736}
15737
15738// SetNewAvailabilityZones sets the NewAvailabilityZones field's value.
15739func (s *ModifyCacheClusterInput) SetNewAvailabilityZones(v []*string) *ModifyCacheClusterInput {
15740	s.NewAvailabilityZones = v
15741	return s
15742}
15743
15744// SetNotificationTopicArn sets the NotificationTopicArn field's value.
15745func (s *ModifyCacheClusterInput) SetNotificationTopicArn(v string) *ModifyCacheClusterInput {
15746	s.NotificationTopicArn = &v
15747	return s
15748}
15749
15750// SetNotificationTopicStatus sets the NotificationTopicStatus field's value.
15751func (s *ModifyCacheClusterInput) SetNotificationTopicStatus(v string) *ModifyCacheClusterInput {
15752	s.NotificationTopicStatus = &v
15753	return s
15754}
15755
15756// SetNumCacheNodes sets the NumCacheNodes field's value.
15757func (s *ModifyCacheClusterInput) SetNumCacheNodes(v int64) *ModifyCacheClusterInput {
15758	s.NumCacheNodes = &v
15759	return s
15760}
15761
15762// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
15763func (s *ModifyCacheClusterInput) SetPreferredMaintenanceWindow(v string) *ModifyCacheClusterInput {
15764	s.PreferredMaintenanceWindow = &v
15765	return s
15766}
15767
15768// SetSecurityGroupIds sets the SecurityGroupIds field's value.
15769func (s *ModifyCacheClusterInput) SetSecurityGroupIds(v []*string) *ModifyCacheClusterInput {
15770	s.SecurityGroupIds = v
15771	return s
15772}
15773
15774// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
15775func (s *ModifyCacheClusterInput) SetSnapshotRetentionLimit(v int64) *ModifyCacheClusterInput {
15776	s.SnapshotRetentionLimit = &v
15777	return s
15778}
15779
15780// SetSnapshotWindow sets the SnapshotWindow field's value.
15781func (s *ModifyCacheClusterInput) SetSnapshotWindow(v string) *ModifyCacheClusterInput {
15782	s.SnapshotWindow = &v
15783	return s
15784}
15785
15786type ModifyCacheClusterOutput struct {
15787	_ struct{} `type:"structure"`
15788
15789	// Contains all of the attributes of a specific cluster.
15790	CacheCluster *CacheCluster `type:"structure"`
15791}
15792
15793// String returns the string representation
15794func (s ModifyCacheClusterOutput) String() string {
15795	return awsutil.Prettify(s)
15796}
15797
15798// GoString returns the string representation
15799func (s ModifyCacheClusterOutput) GoString() string {
15800	return s.String()
15801}
15802
15803// SetCacheCluster sets the CacheCluster field's value.
15804func (s *ModifyCacheClusterOutput) SetCacheCluster(v *CacheCluster) *ModifyCacheClusterOutput {
15805	s.CacheCluster = v
15806	return s
15807}
15808
15809// Represents the input of a ModifyCacheParameterGroup operation.
15810type ModifyCacheParameterGroupInput struct {
15811	_ struct{} `type:"structure"`
15812
15813	// The name of the cache parameter group to modify.
15814	//
15815	// CacheParameterGroupName is a required field
15816	CacheParameterGroupName *string `type:"string" required:"true"`
15817
15818	// An array of parameter names and values for the parameter update. You must
15819	// supply at least one parameter name and value; subsequent arguments are optional.
15820	// A maximum of 20 parameters may be modified per request.
15821	//
15822	// ParameterNameValues is a required field
15823	ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list" required:"true"`
15824}
15825
15826// String returns the string representation
15827func (s ModifyCacheParameterGroupInput) String() string {
15828	return awsutil.Prettify(s)
15829}
15830
15831// GoString returns the string representation
15832func (s ModifyCacheParameterGroupInput) GoString() string {
15833	return s.String()
15834}
15835
15836// Validate inspects the fields of the type to determine if they are valid.
15837func (s *ModifyCacheParameterGroupInput) Validate() error {
15838	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheParameterGroupInput"}
15839	if s.CacheParameterGroupName == nil {
15840		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
15841	}
15842	if s.ParameterNameValues == nil {
15843		invalidParams.Add(request.NewErrParamRequired("ParameterNameValues"))
15844	}
15845
15846	if invalidParams.Len() > 0 {
15847		return invalidParams
15848	}
15849	return nil
15850}
15851
15852// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
15853func (s *ModifyCacheParameterGroupInput) SetCacheParameterGroupName(v string) *ModifyCacheParameterGroupInput {
15854	s.CacheParameterGroupName = &v
15855	return s
15856}
15857
15858// SetParameterNameValues sets the ParameterNameValues field's value.
15859func (s *ModifyCacheParameterGroupInput) SetParameterNameValues(v []*ParameterNameValue) *ModifyCacheParameterGroupInput {
15860	s.ParameterNameValues = v
15861	return s
15862}
15863
15864// Represents the input of a ModifyCacheSubnetGroup operation.
15865type ModifyCacheSubnetGroupInput struct {
15866	_ struct{} `type:"structure"`
15867
15868	// A description of the cache subnet group.
15869	CacheSubnetGroupDescription *string `type:"string"`
15870
15871	// The name for the cache subnet group. This value is stored as a lowercase
15872	// string.
15873	//
15874	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
15875	//
15876	// Example: mysubnetgroup
15877	//
15878	// CacheSubnetGroupName is a required field
15879	CacheSubnetGroupName *string `type:"string" required:"true"`
15880
15881	// The EC2 subnet IDs for the cache subnet group.
15882	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list"`
15883}
15884
15885// String returns the string representation
15886func (s ModifyCacheSubnetGroupInput) String() string {
15887	return awsutil.Prettify(s)
15888}
15889
15890// GoString returns the string representation
15891func (s ModifyCacheSubnetGroupInput) GoString() string {
15892	return s.String()
15893}
15894
15895// Validate inspects the fields of the type to determine if they are valid.
15896func (s *ModifyCacheSubnetGroupInput) Validate() error {
15897	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheSubnetGroupInput"}
15898	if s.CacheSubnetGroupName == nil {
15899		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
15900	}
15901
15902	if invalidParams.Len() > 0 {
15903		return invalidParams
15904	}
15905	return nil
15906}
15907
15908// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
15909func (s *ModifyCacheSubnetGroupInput) SetCacheSubnetGroupDescription(v string) *ModifyCacheSubnetGroupInput {
15910	s.CacheSubnetGroupDescription = &v
15911	return s
15912}
15913
15914// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
15915func (s *ModifyCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *ModifyCacheSubnetGroupInput {
15916	s.CacheSubnetGroupName = &v
15917	return s
15918}
15919
15920// SetSubnetIds sets the SubnetIds field's value.
15921func (s *ModifyCacheSubnetGroupInput) SetSubnetIds(v []*string) *ModifyCacheSubnetGroupInput {
15922	s.SubnetIds = v
15923	return s
15924}
15925
15926type ModifyCacheSubnetGroupOutput struct {
15927	_ struct{} `type:"structure"`
15928
15929	// Represents the output of one of the following operations:
15930	//
15931	//    * CreateCacheSubnetGroup
15932	//
15933	//    * ModifyCacheSubnetGroup
15934	CacheSubnetGroup *CacheSubnetGroup `type:"structure"`
15935}
15936
15937// String returns the string representation
15938func (s ModifyCacheSubnetGroupOutput) String() string {
15939	return awsutil.Prettify(s)
15940}
15941
15942// GoString returns the string representation
15943func (s ModifyCacheSubnetGroupOutput) GoString() string {
15944	return s.String()
15945}
15946
15947// SetCacheSubnetGroup sets the CacheSubnetGroup field's value.
15948func (s *ModifyCacheSubnetGroupOutput) SetCacheSubnetGroup(v *CacheSubnetGroup) *ModifyCacheSubnetGroupOutput {
15949	s.CacheSubnetGroup = v
15950	return s
15951}
15952
15953type ModifyGlobalReplicationGroupInput struct {
15954	_ struct{} `type:"structure"`
15955
15956	// This parameter causes the modifications in this request and any pending modifications
15957	// to be applied, asynchronously and as soon as possible. Modifications to Global
15958	// Replication Groups cannot be requested to be applied in PreferredMaintenceWindow.
15959	//
15960	// ApplyImmediately is a required field
15961	ApplyImmediately *bool `type:"boolean" required:"true"`
15962
15963	// Determines whether a read replica is automatically promoted to read/write
15964	// primary if the existing primary encounters a failure.
15965	AutomaticFailoverEnabled *bool `type:"boolean"`
15966
15967	// A valid cache node type that you want to scale this Global datastore to.
15968	CacheNodeType *string `type:"string"`
15969
15970	// The name of the cache parameter group to use with the Global datastore. It
15971	// must be compatible with the major engine version used by the Global datastore.
15972	CacheParameterGroupName *string `type:"string"`
15973
15974	// The upgraded version of the cache engine to be run on the clusters in the
15975	// Global datastore.
15976	EngineVersion *string `type:"string"`
15977
15978	// A description of the Global datastore
15979	GlobalReplicationGroupDescription *string `type:"string"`
15980
15981	// The name of the Global datastore
15982	//
15983	// GlobalReplicationGroupId is a required field
15984	GlobalReplicationGroupId *string `type:"string" required:"true"`
15985}
15986
15987// String returns the string representation
15988func (s ModifyGlobalReplicationGroupInput) String() string {
15989	return awsutil.Prettify(s)
15990}
15991
15992// GoString returns the string representation
15993func (s ModifyGlobalReplicationGroupInput) GoString() string {
15994	return s.String()
15995}
15996
15997// Validate inspects the fields of the type to determine if they are valid.
15998func (s *ModifyGlobalReplicationGroupInput) Validate() error {
15999	invalidParams := request.ErrInvalidParams{Context: "ModifyGlobalReplicationGroupInput"}
16000	if s.ApplyImmediately == nil {
16001		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
16002	}
16003	if s.GlobalReplicationGroupId == nil {
16004		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
16005	}
16006
16007	if invalidParams.Len() > 0 {
16008		return invalidParams
16009	}
16010	return nil
16011}
16012
16013// SetApplyImmediately sets the ApplyImmediately field's value.
16014func (s *ModifyGlobalReplicationGroupInput) SetApplyImmediately(v bool) *ModifyGlobalReplicationGroupInput {
16015	s.ApplyImmediately = &v
16016	return s
16017}
16018
16019// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
16020func (s *ModifyGlobalReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *ModifyGlobalReplicationGroupInput {
16021	s.AutomaticFailoverEnabled = &v
16022	return s
16023}
16024
16025// SetCacheNodeType sets the CacheNodeType field's value.
16026func (s *ModifyGlobalReplicationGroupInput) SetCacheNodeType(v string) *ModifyGlobalReplicationGroupInput {
16027	s.CacheNodeType = &v
16028	return s
16029}
16030
16031// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
16032func (s *ModifyGlobalReplicationGroupInput) SetCacheParameterGroupName(v string) *ModifyGlobalReplicationGroupInput {
16033	s.CacheParameterGroupName = &v
16034	return s
16035}
16036
16037// SetEngineVersion sets the EngineVersion field's value.
16038func (s *ModifyGlobalReplicationGroupInput) SetEngineVersion(v string) *ModifyGlobalReplicationGroupInput {
16039	s.EngineVersion = &v
16040	return s
16041}
16042
16043// SetGlobalReplicationGroupDescription sets the GlobalReplicationGroupDescription field's value.
16044func (s *ModifyGlobalReplicationGroupInput) SetGlobalReplicationGroupDescription(v string) *ModifyGlobalReplicationGroupInput {
16045	s.GlobalReplicationGroupDescription = &v
16046	return s
16047}
16048
16049// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
16050func (s *ModifyGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *ModifyGlobalReplicationGroupInput {
16051	s.GlobalReplicationGroupId = &v
16052	return s
16053}
16054
16055type ModifyGlobalReplicationGroupOutput struct {
16056	_ struct{} `type:"structure"`
16057
16058	// Consists of a primary cluster that accepts writes and an associated secondary
16059	// cluster that resides in a different Amazon region. The secondary cluster
16060	// accepts only reads. The primary cluster automatically replicates updates
16061	// to the secondary cluster.
16062	//
16063	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
16064	//    datastore, which is what you use to associate a secondary cluster.
16065	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
16066}
16067
16068// String returns the string representation
16069func (s ModifyGlobalReplicationGroupOutput) String() string {
16070	return awsutil.Prettify(s)
16071}
16072
16073// GoString returns the string representation
16074func (s ModifyGlobalReplicationGroupOutput) GoString() string {
16075	return s.String()
16076}
16077
16078// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
16079func (s *ModifyGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *ModifyGlobalReplicationGroupOutput {
16080	s.GlobalReplicationGroup = v
16081	return s
16082}
16083
16084// Represents the input of a ModifyReplicationGroups operation.
16085type ModifyReplicationGroupInput struct {
16086	_ struct{} `type:"structure"`
16087
16088	// If true, this parameter causes the modifications in this request and any
16089	// pending modifications to be applied, asynchronously and as soon as possible,
16090	// regardless of the PreferredMaintenanceWindow setting for the replication
16091	// group.
16092	//
16093	// If false, changes to the nodes in the replication group are applied on the
16094	// next maintenance reboot, or the next failure reboot, whichever occurs first.
16095	//
16096	// Valid values: true | false
16097	//
16098	// Default: false
16099	ApplyImmediately *bool `type:"boolean"`
16100
16101	// Reserved parameter. The password used to access a password protected server.
16102	// This parameter must be specified with the auth-token-update-strategy parameter.
16103	// Password constraints:
16104	//
16105	//    * Must be only printable ASCII characters
16106	//
16107	//    * Must be at least 16 characters and no more than 128 characters in length
16108	//
16109	//    * Cannot contain any of the following characters: '/', '"', or '@', '%'
16110	//
16111	// For more information, see AUTH password at AUTH (http://redis.io/commands/AUTH).
16112	AuthToken *string `type:"string"`
16113
16114	// Specifies the strategy to use to update the AUTH token. This parameter must
16115	// be specified with the auth-token parameter. Possible values:
16116	//
16117	//    * Rotate
16118	//
16119	//    * Set
16120	//
16121	// For more information, see Authenticating Users with Redis AUTH (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html)
16122	AuthTokenUpdateStrategy *string `type:"string" enum:"AuthTokenUpdateStrategyType"`
16123
16124	// This parameter is currently disabled.
16125	AutoMinorVersionUpgrade *bool `type:"boolean"`
16126
16127	// Determines whether a read replica is automatically promoted to read/write
16128	// primary if the existing primary encounters a failure.
16129	//
16130	// Valid values: true | false
16131	AutomaticFailoverEnabled *bool `type:"boolean"`
16132
16133	// A valid cache node type that you want to scale this replication group to.
16134	CacheNodeType *string `type:"string"`
16135
16136	// The name of the cache parameter group to apply to all of the clusters in
16137	// this replication group. This change is asynchronously applied as soon as
16138	// possible for parameters when the ApplyImmediately parameter is specified
16139	// as true for this request.
16140	CacheParameterGroupName *string `type:"string"`
16141
16142	// A list of cache security group names to authorize for the clusters in this
16143	// replication group. This change is asynchronously applied as soon as possible.
16144	//
16145	// This parameter can be used only with replication group containing clusters
16146	// running outside of an Amazon Virtual Private Cloud (Amazon VPC).
16147	//
16148	// Constraints: Must contain no more than 255 alphanumeric characters. Must
16149	// not be Default.
16150	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
16151
16152	// The upgraded version of the cache engine to be run on the clusters in the
16153	// replication group.
16154	//
16155	// Important: You can upgrade to a newer engine version (see Selecting a Cache
16156	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
16157	// but you cannot downgrade to an earlier engine version. If you want to use
16158	// an earlier engine version, you must delete the existing replication group
16159	// and create it anew with the earlier engine version.
16160	EngineVersion *string `type:"string"`
16161
16162	// Specifies the destination, format and type of the logs.
16163	LogDeliveryConfigurations []*LogDeliveryConfigurationRequest `locationNameList:"LogDeliveryConfigurationRequest" type:"list"`
16164
16165	// A flag to indicate MultiAZ is enabled.
16166	MultiAZEnabled *bool `type:"boolean"`
16167
16168	// Deprecated. This parameter is not used.
16169	//
16170	// Deprecated: NodeGroupId has been deprecated
16171	NodeGroupId *string `deprecated:"true" type:"string"`
16172
16173	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
16174	// are sent.
16175	//
16176	// The Amazon SNS topic owner must be same as the replication group owner.
16177	NotificationTopicArn *string `type:"string"`
16178
16179	// The status of the Amazon SNS notification topic for the replication group.
16180	// Notifications are sent only if the status is active.
16181	//
16182	// Valid values: active | inactive
16183	NotificationTopicStatus *string `type:"string"`
16184
16185	// Specifies the weekly time range during which maintenance on the cluster is
16186	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
16187	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
16188	//
16189	// Valid values for ddd are:
16190	//
16191	//    * sun
16192	//
16193	//    * mon
16194	//
16195	//    * tue
16196	//
16197	//    * wed
16198	//
16199	//    * thu
16200	//
16201	//    * fri
16202	//
16203	//    * sat
16204	//
16205	// Example: sun:23:00-mon:01:30
16206	PreferredMaintenanceWindow *string `type:"string"`
16207
16208	// For replication groups with a single primary, if this parameter is specified,
16209	// ElastiCache promotes the specified cluster in the specified replication group
16210	// to the primary role. The nodes of all other clusters in the replication group
16211	// are read replicas.
16212	PrimaryClusterId *string `type:"string"`
16213
16214	// Removes the user groups that can access this replication group.
16215	RemoveUserGroups *bool `type:"boolean"`
16216
16217	// A description for the replication group. Maximum length is 255 characters.
16218	ReplicationGroupDescription *string `type:"string"`
16219
16220	// The identifier of the replication group to modify.
16221	//
16222	// ReplicationGroupId is a required field
16223	ReplicationGroupId *string `type:"string" required:"true"`
16224
16225	// Specifies the VPC Security Groups associated with the clusters in the replication
16226	// group.
16227	//
16228	// This parameter can be used only with replication group containing clusters
16229	// running in an Amazon Virtual Private Cloud (Amazon VPC).
16230	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
16231
16232	// The number of days for which ElastiCache retains automatic node group (shard)
16233	// snapshots before deleting them. For example, if you set SnapshotRetentionLimit
16234	// to 5, a snapshot that was taken today is retained for 5 days before being
16235	// deleted.
16236	//
16237	// Important If the value of SnapshotRetentionLimit is set to zero (0), backups
16238	// are turned off.
16239	SnapshotRetentionLimit *int64 `type:"integer"`
16240
16241	// The daily time range (in UTC) during which ElastiCache begins taking a daily
16242	// snapshot of the node group (shard) specified by SnapshottingClusterId.
16243	//
16244	// Example: 05:00-09:00
16245	//
16246	// If you do not specify this parameter, ElastiCache automatically chooses an
16247	// appropriate time range.
16248	SnapshotWindow *string `type:"string"`
16249
16250	// The cluster ID that is used as the daily snapshot source for the replication
16251	// group. This parameter cannot be set for Redis (cluster mode enabled) replication
16252	// groups.
16253	SnapshottingClusterId *string `type:"string"`
16254
16255	// The user group you are associating with the replication group.
16256	UserGroupIdsToAdd []*string `type:"list"`
16257
16258	// The user group to remove, meaning the users in the group no longer can access
16259	// the replication group.
16260	UserGroupIdsToRemove []*string `type:"list"`
16261}
16262
16263// String returns the string representation
16264func (s ModifyReplicationGroupInput) String() string {
16265	return awsutil.Prettify(s)
16266}
16267
16268// GoString returns the string representation
16269func (s ModifyReplicationGroupInput) GoString() string {
16270	return s.String()
16271}
16272
16273// Validate inspects the fields of the type to determine if they are valid.
16274func (s *ModifyReplicationGroupInput) Validate() error {
16275	invalidParams := request.ErrInvalidParams{Context: "ModifyReplicationGroupInput"}
16276	if s.ReplicationGroupId == nil {
16277		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
16278	}
16279
16280	if invalidParams.Len() > 0 {
16281		return invalidParams
16282	}
16283	return nil
16284}
16285
16286// SetApplyImmediately sets the ApplyImmediately field's value.
16287func (s *ModifyReplicationGroupInput) SetApplyImmediately(v bool) *ModifyReplicationGroupInput {
16288	s.ApplyImmediately = &v
16289	return s
16290}
16291
16292// SetAuthToken sets the AuthToken field's value.
16293func (s *ModifyReplicationGroupInput) SetAuthToken(v string) *ModifyReplicationGroupInput {
16294	s.AuthToken = &v
16295	return s
16296}
16297
16298// SetAuthTokenUpdateStrategy sets the AuthTokenUpdateStrategy field's value.
16299func (s *ModifyReplicationGroupInput) SetAuthTokenUpdateStrategy(v string) *ModifyReplicationGroupInput {
16300	s.AuthTokenUpdateStrategy = &v
16301	return s
16302}
16303
16304// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
16305func (s *ModifyReplicationGroupInput) SetAutoMinorVersionUpgrade(v bool) *ModifyReplicationGroupInput {
16306	s.AutoMinorVersionUpgrade = &v
16307	return s
16308}
16309
16310// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
16311func (s *ModifyReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *ModifyReplicationGroupInput {
16312	s.AutomaticFailoverEnabled = &v
16313	return s
16314}
16315
16316// SetCacheNodeType sets the CacheNodeType field's value.
16317func (s *ModifyReplicationGroupInput) SetCacheNodeType(v string) *ModifyReplicationGroupInput {
16318	s.CacheNodeType = &v
16319	return s
16320}
16321
16322// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
16323func (s *ModifyReplicationGroupInput) SetCacheParameterGroupName(v string) *ModifyReplicationGroupInput {
16324	s.CacheParameterGroupName = &v
16325	return s
16326}
16327
16328// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
16329func (s *ModifyReplicationGroupInput) SetCacheSecurityGroupNames(v []*string) *ModifyReplicationGroupInput {
16330	s.CacheSecurityGroupNames = v
16331	return s
16332}
16333
16334// SetEngineVersion sets the EngineVersion field's value.
16335func (s *ModifyReplicationGroupInput) SetEngineVersion(v string) *ModifyReplicationGroupInput {
16336	s.EngineVersion = &v
16337	return s
16338}
16339
16340// SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
16341func (s *ModifyReplicationGroupInput) SetLogDeliveryConfigurations(v []*LogDeliveryConfigurationRequest) *ModifyReplicationGroupInput {
16342	s.LogDeliveryConfigurations = v
16343	return s
16344}
16345
16346// SetMultiAZEnabled sets the MultiAZEnabled field's value.
16347func (s *ModifyReplicationGroupInput) SetMultiAZEnabled(v bool) *ModifyReplicationGroupInput {
16348	s.MultiAZEnabled = &v
16349	return s
16350}
16351
16352// SetNodeGroupId sets the NodeGroupId field's value.
16353func (s *ModifyReplicationGroupInput) SetNodeGroupId(v string) *ModifyReplicationGroupInput {
16354	s.NodeGroupId = &v
16355	return s
16356}
16357
16358// SetNotificationTopicArn sets the NotificationTopicArn field's value.
16359func (s *ModifyReplicationGroupInput) SetNotificationTopicArn(v string) *ModifyReplicationGroupInput {
16360	s.NotificationTopicArn = &v
16361	return s
16362}
16363
16364// SetNotificationTopicStatus sets the NotificationTopicStatus field's value.
16365func (s *ModifyReplicationGroupInput) SetNotificationTopicStatus(v string) *ModifyReplicationGroupInput {
16366	s.NotificationTopicStatus = &v
16367	return s
16368}
16369
16370// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
16371func (s *ModifyReplicationGroupInput) SetPreferredMaintenanceWindow(v string) *ModifyReplicationGroupInput {
16372	s.PreferredMaintenanceWindow = &v
16373	return s
16374}
16375
16376// SetPrimaryClusterId sets the PrimaryClusterId field's value.
16377func (s *ModifyReplicationGroupInput) SetPrimaryClusterId(v string) *ModifyReplicationGroupInput {
16378	s.PrimaryClusterId = &v
16379	return s
16380}
16381
16382// SetRemoveUserGroups sets the RemoveUserGroups field's value.
16383func (s *ModifyReplicationGroupInput) SetRemoveUserGroups(v bool) *ModifyReplicationGroupInput {
16384	s.RemoveUserGroups = &v
16385	return s
16386}
16387
16388// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
16389func (s *ModifyReplicationGroupInput) SetReplicationGroupDescription(v string) *ModifyReplicationGroupInput {
16390	s.ReplicationGroupDescription = &v
16391	return s
16392}
16393
16394// SetReplicationGroupId sets the ReplicationGroupId field's value.
16395func (s *ModifyReplicationGroupInput) SetReplicationGroupId(v string) *ModifyReplicationGroupInput {
16396	s.ReplicationGroupId = &v
16397	return s
16398}
16399
16400// SetSecurityGroupIds sets the SecurityGroupIds field's value.
16401func (s *ModifyReplicationGroupInput) SetSecurityGroupIds(v []*string) *ModifyReplicationGroupInput {
16402	s.SecurityGroupIds = v
16403	return s
16404}
16405
16406// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
16407func (s *ModifyReplicationGroupInput) SetSnapshotRetentionLimit(v int64) *ModifyReplicationGroupInput {
16408	s.SnapshotRetentionLimit = &v
16409	return s
16410}
16411
16412// SetSnapshotWindow sets the SnapshotWindow field's value.
16413func (s *ModifyReplicationGroupInput) SetSnapshotWindow(v string) *ModifyReplicationGroupInput {
16414	s.SnapshotWindow = &v
16415	return s
16416}
16417
16418// SetSnapshottingClusterId sets the SnapshottingClusterId field's value.
16419func (s *ModifyReplicationGroupInput) SetSnapshottingClusterId(v string) *ModifyReplicationGroupInput {
16420	s.SnapshottingClusterId = &v
16421	return s
16422}
16423
16424// SetUserGroupIdsToAdd sets the UserGroupIdsToAdd field's value.
16425func (s *ModifyReplicationGroupInput) SetUserGroupIdsToAdd(v []*string) *ModifyReplicationGroupInput {
16426	s.UserGroupIdsToAdd = v
16427	return s
16428}
16429
16430// SetUserGroupIdsToRemove sets the UserGroupIdsToRemove field's value.
16431func (s *ModifyReplicationGroupInput) SetUserGroupIdsToRemove(v []*string) *ModifyReplicationGroupInput {
16432	s.UserGroupIdsToRemove = v
16433	return s
16434}
16435
16436type ModifyReplicationGroupOutput struct {
16437	_ struct{} `type:"structure"`
16438
16439	// Contains all of the attributes of a specific Redis replication group.
16440	ReplicationGroup *ReplicationGroup `type:"structure"`
16441}
16442
16443// String returns the string representation
16444func (s ModifyReplicationGroupOutput) String() string {
16445	return awsutil.Prettify(s)
16446}
16447
16448// GoString returns the string representation
16449func (s ModifyReplicationGroupOutput) GoString() string {
16450	return s.String()
16451}
16452
16453// SetReplicationGroup sets the ReplicationGroup field's value.
16454func (s *ModifyReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *ModifyReplicationGroupOutput {
16455	s.ReplicationGroup = v
16456	return s
16457}
16458
16459// Represents the input for a ModifyReplicationGroupShardConfiguration operation.
16460type ModifyReplicationGroupShardConfigurationInput struct {
16461	_ struct{} `type:"structure"`
16462
16463	// Indicates that the shard reconfiguration process begins immediately. At present,
16464	// the only permitted value for this parameter is true.
16465	//
16466	// Value: true
16467	//
16468	// ApplyImmediately is a required field
16469	ApplyImmediately *bool `type:"boolean" required:"true"`
16470
16471	// The number of node groups (shards) that results from the modification of
16472	// the shard configuration.
16473	//
16474	// NodeGroupCount is a required field
16475	NodeGroupCount *int64 `type:"integer" required:"true"`
16476
16477	// If the value of NodeGroupCount is less than the current number of node groups
16478	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
16479	// NodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster.
16480	//
16481	// ElastiCache for Redis will attempt to remove all node groups listed by NodeGroupsToRemove
16482	// from the cluster.
16483	NodeGroupsToRemove []*string `locationNameList:"NodeGroupToRemove" type:"list"`
16484
16485	// If the value of NodeGroupCount is less than the current number of node groups
16486	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
16487	// NodeGroupsToRetain is a list of NodeGroupIds to retain in the cluster.
16488	//
16489	// ElastiCache for Redis will attempt to remove all node groups except those
16490	// listed by NodeGroupsToRetain from the cluster.
16491	NodeGroupsToRetain []*string `locationNameList:"NodeGroupToRetain" type:"list"`
16492
16493	// The name of the Redis (cluster mode enabled) cluster (replication group)
16494	// on which the shards are to be configured.
16495	//
16496	// ReplicationGroupId is a required field
16497	ReplicationGroupId *string `type:"string" required:"true"`
16498
16499	// Specifies the preferred availability zones for each node group in the cluster.
16500	// If the value of NodeGroupCount is greater than the current number of node
16501	// groups (shards), you can use this parameter to specify the preferred availability
16502	// zones of the cluster's shards. If you omit this parameter ElastiCache selects
16503	// availability zones for you.
16504	//
16505	// You can specify this parameter only if the value of NodeGroupCount is greater
16506	// than the current number of node groups (shards).
16507	ReshardingConfiguration []*ReshardingConfiguration `locationNameList:"ReshardingConfiguration" type:"list"`
16508}
16509
16510// String returns the string representation
16511func (s ModifyReplicationGroupShardConfigurationInput) String() string {
16512	return awsutil.Prettify(s)
16513}
16514
16515// GoString returns the string representation
16516func (s ModifyReplicationGroupShardConfigurationInput) GoString() string {
16517	return s.String()
16518}
16519
16520// Validate inspects the fields of the type to determine if they are valid.
16521func (s *ModifyReplicationGroupShardConfigurationInput) Validate() error {
16522	invalidParams := request.ErrInvalidParams{Context: "ModifyReplicationGroupShardConfigurationInput"}
16523	if s.ApplyImmediately == nil {
16524		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
16525	}
16526	if s.NodeGroupCount == nil {
16527		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
16528	}
16529	if s.ReplicationGroupId == nil {
16530		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
16531	}
16532	if s.ReshardingConfiguration != nil {
16533		for i, v := range s.ReshardingConfiguration {
16534			if v == nil {
16535				continue
16536			}
16537			if err := v.Validate(); err != nil {
16538				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReshardingConfiguration", i), err.(request.ErrInvalidParams))
16539			}
16540		}
16541	}
16542
16543	if invalidParams.Len() > 0 {
16544		return invalidParams
16545	}
16546	return nil
16547}
16548
16549// SetApplyImmediately sets the ApplyImmediately field's value.
16550func (s *ModifyReplicationGroupShardConfigurationInput) SetApplyImmediately(v bool) *ModifyReplicationGroupShardConfigurationInput {
16551	s.ApplyImmediately = &v
16552	return s
16553}
16554
16555// SetNodeGroupCount sets the NodeGroupCount field's value.
16556func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupCount(v int64) *ModifyReplicationGroupShardConfigurationInput {
16557	s.NodeGroupCount = &v
16558	return s
16559}
16560
16561// SetNodeGroupsToRemove sets the NodeGroupsToRemove field's value.
16562func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupsToRemove(v []*string) *ModifyReplicationGroupShardConfigurationInput {
16563	s.NodeGroupsToRemove = v
16564	return s
16565}
16566
16567// SetNodeGroupsToRetain sets the NodeGroupsToRetain field's value.
16568func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupsToRetain(v []*string) *ModifyReplicationGroupShardConfigurationInput {
16569	s.NodeGroupsToRetain = v
16570	return s
16571}
16572
16573// SetReplicationGroupId sets the ReplicationGroupId field's value.
16574func (s *ModifyReplicationGroupShardConfigurationInput) SetReplicationGroupId(v string) *ModifyReplicationGroupShardConfigurationInput {
16575	s.ReplicationGroupId = &v
16576	return s
16577}
16578
16579// SetReshardingConfiguration sets the ReshardingConfiguration field's value.
16580func (s *ModifyReplicationGroupShardConfigurationInput) SetReshardingConfiguration(v []*ReshardingConfiguration) *ModifyReplicationGroupShardConfigurationInput {
16581	s.ReshardingConfiguration = v
16582	return s
16583}
16584
16585type ModifyReplicationGroupShardConfigurationOutput struct {
16586	_ struct{} `type:"structure"`
16587
16588	// Contains all of the attributes of a specific Redis replication group.
16589	ReplicationGroup *ReplicationGroup `type:"structure"`
16590}
16591
16592// String returns the string representation
16593func (s ModifyReplicationGroupShardConfigurationOutput) String() string {
16594	return awsutil.Prettify(s)
16595}
16596
16597// GoString returns the string representation
16598func (s ModifyReplicationGroupShardConfigurationOutput) GoString() string {
16599	return s.String()
16600}
16601
16602// SetReplicationGroup sets the ReplicationGroup field's value.
16603func (s *ModifyReplicationGroupShardConfigurationOutput) SetReplicationGroup(v *ReplicationGroup) *ModifyReplicationGroupShardConfigurationOutput {
16604	s.ReplicationGroup = v
16605	return s
16606}
16607
16608type ModifyUserGroupInput struct {
16609	_ struct{} `type:"structure"`
16610
16611	// The ID of the user group.
16612	//
16613	// UserGroupId is a required field
16614	UserGroupId *string `type:"string" required:"true"`
16615
16616	// The list of user IDs to add to the user group.
16617	UserIdsToAdd []*string `min:"1" type:"list"`
16618
16619	// The list of user IDs to remove from the user group.
16620	UserIdsToRemove []*string `min:"1" type:"list"`
16621}
16622
16623// String returns the string representation
16624func (s ModifyUserGroupInput) String() string {
16625	return awsutil.Prettify(s)
16626}
16627
16628// GoString returns the string representation
16629func (s ModifyUserGroupInput) GoString() string {
16630	return s.String()
16631}
16632
16633// Validate inspects the fields of the type to determine if they are valid.
16634func (s *ModifyUserGroupInput) Validate() error {
16635	invalidParams := request.ErrInvalidParams{Context: "ModifyUserGroupInput"}
16636	if s.UserGroupId == nil {
16637		invalidParams.Add(request.NewErrParamRequired("UserGroupId"))
16638	}
16639	if s.UserIdsToAdd != nil && len(s.UserIdsToAdd) < 1 {
16640		invalidParams.Add(request.NewErrParamMinLen("UserIdsToAdd", 1))
16641	}
16642	if s.UserIdsToRemove != nil && len(s.UserIdsToRemove) < 1 {
16643		invalidParams.Add(request.NewErrParamMinLen("UserIdsToRemove", 1))
16644	}
16645
16646	if invalidParams.Len() > 0 {
16647		return invalidParams
16648	}
16649	return nil
16650}
16651
16652// SetUserGroupId sets the UserGroupId field's value.
16653func (s *ModifyUserGroupInput) SetUserGroupId(v string) *ModifyUserGroupInput {
16654	s.UserGroupId = &v
16655	return s
16656}
16657
16658// SetUserIdsToAdd sets the UserIdsToAdd field's value.
16659func (s *ModifyUserGroupInput) SetUserIdsToAdd(v []*string) *ModifyUserGroupInput {
16660	s.UserIdsToAdd = v
16661	return s
16662}
16663
16664// SetUserIdsToRemove sets the UserIdsToRemove field's value.
16665func (s *ModifyUserGroupInput) SetUserIdsToRemove(v []*string) *ModifyUserGroupInput {
16666	s.UserIdsToRemove = v
16667	return s
16668}
16669
16670type ModifyUserGroupOutput struct {
16671	_ struct{} `type:"structure"`
16672
16673	// The Amazon Resource Name (ARN) of the user group.
16674	ARN *string `type:"string"`
16675
16676	// The current supported value is Redis.
16677	Engine *string `type:"string"`
16678
16679	// A list of updates being applied to the user groups.
16680	PendingChanges *UserGroupPendingChanges `type:"structure"`
16681
16682	// A list of replication groups that the user group can access.
16683	ReplicationGroups []*string `type:"list"`
16684
16685	// Indicates user group status. Can be "creating", "active", "modifying", "deleting".
16686	Status *string `type:"string"`
16687
16688	// The ID of the user group.
16689	UserGroupId *string `type:"string"`
16690
16691	// The list of user IDs that belong to the user group.
16692	UserIds []*string `type:"list"`
16693}
16694
16695// String returns the string representation
16696func (s ModifyUserGroupOutput) String() string {
16697	return awsutil.Prettify(s)
16698}
16699
16700// GoString returns the string representation
16701func (s ModifyUserGroupOutput) GoString() string {
16702	return s.String()
16703}
16704
16705// SetARN sets the ARN field's value.
16706func (s *ModifyUserGroupOutput) SetARN(v string) *ModifyUserGroupOutput {
16707	s.ARN = &v
16708	return s
16709}
16710
16711// SetEngine sets the Engine field's value.
16712func (s *ModifyUserGroupOutput) SetEngine(v string) *ModifyUserGroupOutput {
16713	s.Engine = &v
16714	return s
16715}
16716
16717// SetPendingChanges sets the PendingChanges field's value.
16718func (s *ModifyUserGroupOutput) SetPendingChanges(v *UserGroupPendingChanges) *ModifyUserGroupOutput {
16719	s.PendingChanges = v
16720	return s
16721}
16722
16723// SetReplicationGroups sets the ReplicationGroups field's value.
16724func (s *ModifyUserGroupOutput) SetReplicationGroups(v []*string) *ModifyUserGroupOutput {
16725	s.ReplicationGroups = v
16726	return s
16727}
16728
16729// SetStatus sets the Status field's value.
16730func (s *ModifyUserGroupOutput) SetStatus(v string) *ModifyUserGroupOutput {
16731	s.Status = &v
16732	return s
16733}
16734
16735// SetUserGroupId sets the UserGroupId field's value.
16736func (s *ModifyUserGroupOutput) SetUserGroupId(v string) *ModifyUserGroupOutput {
16737	s.UserGroupId = &v
16738	return s
16739}
16740
16741// SetUserIds sets the UserIds field's value.
16742func (s *ModifyUserGroupOutput) SetUserIds(v []*string) *ModifyUserGroupOutput {
16743	s.UserIds = v
16744	return s
16745}
16746
16747type ModifyUserInput struct {
16748	_ struct{} `type:"structure"`
16749
16750	// Access permissions string used for this user.
16751	AccessString *string `type:"string"`
16752
16753	// Adds additional user permissions to the access string.
16754	AppendAccessString *string `type:"string"`
16755
16756	// Indicates no password is required for the user.
16757	NoPasswordRequired *bool `type:"boolean"`
16758
16759	// The passwords belonging to the user. You are allowed up to two.
16760	Passwords []*string `min:"1" type:"list"`
16761
16762	// The ID of the user.
16763	//
16764	// UserId is a required field
16765	UserId *string `min:"1" type:"string" required:"true"`
16766}
16767
16768// String returns the string representation
16769func (s ModifyUserInput) String() string {
16770	return awsutil.Prettify(s)
16771}
16772
16773// GoString returns the string representation
16774func (s ModifyUserInput) GoString() string {
16775	return s.String()
16776}
16777
16778// Validate inspects the fields of the type to determine if they are valid.
16779func (s *ModifyUserInput) Validate() error {
16780	invalidParams := request.ErrInvalidParams{Context: "ModifyUserInput"}
16781	if s.Passwords != nil && len(s.Passwords) < 1 {
16782		invalidParams.Add(request.NewErrParamMinLen("Passwords", 1))
16783	}
16784	if s.UserId == nil {
16785		invalidParams.Add(request.NewErrParamRequired("UserId"))
16786	}
16787	if s.UserId != nil && len(*s.UserId) < 1 {
16788		invalidParams.Add(request.NewErrParamMinLen("UserId", 1))
16789	}
16790
16791	if invalidParams.Len() > 0 {
16792		return invalidParams
16793	}
16794	return nil
16795}
16796
16797// SetAccessString sets the AccessString field's value.
16798func (s *ModifyUserInput) SetAccessString(v string) *ModifyUserInput {
16799	s.AccessString = &v
16800	return s
16801}
16802
16803// SetAppendAccessString sets the AppendAccessString field's value.
16804func (s *ModifyUserInput) SetAppendAccessString(v string) *ModifyUserInput {
16805	s.AppendAccessString = &v
16806	return s
16807}
16808
16809// SetNoPasswordRequired sets the NoPasswordRequired field's value.
16810func (s *ModifyUserInput) SetNoPasswordRequired(v bool) *ModifyUserInput {
16811	s.NoPasswordRequired = &v
16812	return s
16813}
16814
16815// SetPasswords sets the Passwords field's value.
16816func (s *ModifyUserInput) SetPasswords(v []*string) *ModifyUserInput {
16817	s.Passwords = v
16818	return s
16819}
16820
16821// SetUserId sets the UserId field's value.
16822func (s *ModifyUserInput) SetUserId(v string) *ModifyUserInput {
16823	s.UserId = &v
16824	return s
16825}
16826
16827type ModifyUserOutput struct {
16828	_ struct{} `type:"structure"`
16829
16830	// The Amazon Resource Name (ARN) of the user.
16831	ARN *string `type:"string"`
16832
16833	// Access permissions string used for this user.
16834	AccessString *string `type:"string"`
16835
16836	// Denotes whether the user requires a password to authenticate.
16837	Authentication *Authentication `type:"structure"`
16838
16839	// The current supported value is Redis.
16840	Engine *string `type:"string"`
16841
16842	// Indicates the user status. Can be "active", "modifying" or "deleting".
16843	Status *string `type:"string"`
16844
16845	// Returns a list of the user group IDs the user belongs to.
16846	UserGroupIds []*string `type:"list"`
16847
16848	// The ID of the user.
16849	UserId *string `type:"string"`
16850
16851	// The username of the user.
16852	UserName *string `type:"string"`
16853}
16854
16855// String returns the string representation
16856func (s ModifyUserOutput) String() string {
16857	return awsutil.Prettify(s)
16858}
16859
16860// GoString returns the string representation
16861func (s ModifyUserOutput) GoString() string {
16862	return s.String()
16863}
16864
16865// SetARN sets the ARN field's value.
16866func (s *ModifyUserOutput) SetARN(v string) *ModifyUserOutput {
16867	s.ARN = &v
16868	return s
16869}
16870
16871// SetAccessString sets the AccessString field's value.
16872func (s *ModifyUserOutput) SetAccessString(v string) *ModifyUserOutput {
16873	s.AccessString = &v
16874	return s
16875}
16876
16877// SetAuthentication sets the Authentication field's value.
16878func (s *ModifyUserOutput) SetAuthentication(v *Authentication) *ModifyUserOutput {
16879	s.Authentication = v
16880	return s
16881}
16882
16883// SetEngine sets the Engine field's value.
16884func (s *ModifyUserOutput) SetEngine(v string) *ModifyUserOutput {
16885	s.Engine = &v
16886	return s
16887}
16888
16889// SetStatus sets the Status field's value.
16890func (s *ModifyUserOutput) SetStatus(v string) *ModifyUserOutput {
16891	s.Status = &v
16892	return s
16893}
16894
16895// SetUserGroupIds sets the UserGroupIds field's value.
16896func (s *ModifyUserOutput) SetUserGroupIds(v []*string) *ModifyUserOutput {
16897	s.UserGroupIds = v
16898	return s
16899}
16900
16901// SetUserId sets the UserId field's value.
16902func (s *ModifyUserOutput) SetUserId(v string) *ModifyUserOutput {
16903	s.UserId = &v
16904	return s
16905}
16906
16907// SetUserName sets the UserName field's value.
16908func (s *ModifyUserOutput) SetUserName(v string) *ModifyUserOutput {
16909	s.UserName = &v
16910	return s
16911}
16912
16913// Represents a collection of cache nodes in a replication group. One node in
16914// the node group is the read/write primary node. All the other nodes are read-only
16915// Replica nodes.
16916type NodeGroup struct {
16917	_ struct{} `type:"structure"`
16918
16919	// The identifier for the node group (shard). A Redis (cluster mode disabled)
16920	// replication group contains only 1 node group; therefore, the node group ID
16921	// is 0001. A Redis (cluster mode enabled) replication group contains 1 to 90
16922	// node groups numbered 0001 to 0090. Optionally, the user can provide the id
16923	// for a node group.
16924	NodeGroupId *string `type:"string"`
16925
16926	// A list containing information about individual nodes within the node group
16927	// (shard).
16928	NodeGroupMembers []*NodeGroupMember `locationNameList:"NodeGroupMember" type:"list"`
16929
16930	// The endpoint of the primary node in this node group (shard).
16931	PrimaryEndpoint *Endpoint `type:"structure"`
16932
16933	// The endpoint of the replica nodes in this node group (shard).
16934	ReaderEndpoint *Endpoint `type:"structure"`
16935
16936	// The keyspace for this node group (shard).
16937	Slots *string `type:"string"`
16938
16939	// The current state of this replication group - creating, available, modifying,
16940	// deleting.
16941	Status *string `type:"string"`
16942}
16943
16944// String returns the string representation
16945func (s NodeGroup) String() string {
16946	return awsutil.Prettify(s)
16947}
16948
16949// GoString returns the string representation
16950func (s NodeGroup) GoString() string {
16951	return s.String()
16952}
16953
16954// SetNodeGroupId sets the NodeGroupId field's value.
16955func (s *NodeGroup) SetNodeGroupId(v string) *NodeGroup {
16956	s.NodeGroupId = &v
16957	return s
16958}
16959
16960// SetNodeGroupMembers sets the NodeGroupMembers field's value.
16961func (s *NodeGroup) SetNodeGroupMembers(v []*NodeGroupMember) *NodeGroup {
16962	s.NodeGroupMembers = v
16963	return s
16964}
16965
16966// SetPrimaryEndpoint sets the PrimaryEndpoint field's value.
16967func (s *NodeGroup) SetPrimaryEndpoint(v *Endpoint) *NodeGroup {
16968	s.PrimaryEndpoint = v
16969	return s
16970}
16971
16972// SetReaderEndpoint sets the ReaderEndpoint field's value.
16973func (s *NodeGroup) SetReaderEndpoint(v *Endpoint) *NodeGroup {
16974	s.ReaderEndpoint = v
16975	return s
16976}
16977
16978// SetSlots sets the Slots field's value.
16979func (s *NodeGroup) SetSlots(v string) *NodeGroup {
16980	s.Slots = &v
16981	return s
16982}
16983
16984// SetStatus sets the Status field's value.
16985func (s *NodeGroup) SetStatus(v string) *NodeGroup {
16986	s.Status = &v
16987	return s
16988}
16989
16990// Node group (shard) configuration options. Each node group (shard) configuration
16991// has the following: Slots, PrimaryAvailabilityZone, ReplicaAvailabilityZones,
16992// ReplicaCount.
16993type NodeGroupConfiguration struct {
16994	_ struct{} `type:"structure"`
16995
16996	// Either the ElastiCache for Redis supplied 4-digit id or a user supplied id
16997	// for the node group these configuration values apply to.
16998	NodeGroupId *string `min:"1" type:"string"`
16999
17000	// The Availability Zone where the primary node of this node group (shard) is
17001	// launched.
17002	PrimaryAvailabilityZone *string `type:"string"`
17003
17004	// The outpost ARN of the primary node.
17005	PrimaryOutpostArn *string `type:"string"`
17006
17007	// A list of Availability Zones to be used for the read replicas. The number
17008	// of Availability Zones in this list must match the value of ReplicaCount or
17009	// ReplicasPerNodeGroup if not specified.
17010	ReplicaAvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`
17011
17012	// The number of read replica nodes in this node group (shard).
17013	ReplicaCount *int64 `type:"integer"`
17014
17015	// The outpost ARN of the node replicas.
17016	ReplicaOutpostArns []*string `locationNameList:"OutpostArn" type:"list"`
17017
17018	// A string that specifies the keyspace for a particular node group. Keyspaces
17019	// range from 0 to 16,383. The string is in the format startkey-endkey.
17020	//
17021	// Example: "0-3999"
17022	Slots *string `type:"string"`
17023}
17024
17025// String returns the string representation
17026func (s NodeGroupConfiguration) String() string {
17027	return awsutil.Prettify(s)
17028}
17029
17030// GoString returns the string representation
17031func (s NodeGroupConfiguration) GoString() string {
17032	return s.String()
17033}
17034
17035// Validate inspects the fields of the type to determine if they are valid.
17036func (s *NodeGroupConfiguration) Validate() error {
17037	invalidParams := request.ErrInvalidParams{Context: "NodeGroupConfiguration"}
17038	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
17039		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
17040	}
17041
17042	if invalidParams.Len() > 0 {
17043		return invalidParams
17044	}
17045	return nil
17046}
17047
17048// SetNodeGroupId sets the NodeGroupId field's value.
17049func (s *NodeGroupConfiguration) SetNodeGroupId(v string) *NodeGroupConfiguration {
17050	s.NodeGroupId = &v
17051	return s
17052}
17053
17054// SetPrimaryAvailabilityZone sets the PrimaryAvailabilityZone field's value.
17055func (s *NodeGroupConfiguration) SetPrimaryAvailabilityZone(v string) *NodeGroupConfiguration {
17056	s.PrimaryAvailabilityZone = &v
17057	return s
17058}
17059
17060// SetPrimaryOutpostArn sets the PrimaryOutpostArn field's value.
17061func (s *NodeGroupConfiguration) SetPrimaryOutpostArn(v string) *NodeGroupConfiguration {
17062	s.PrimaryOutpostArn = &v
17063	return s
17064}
17065
17066// SetReplicaAvailabilityZones sets the ReplicaAvailabilityZones field's value.
17067func (s *NodeGroupConfiguration) SetReplicaAvailabilityZones(v []*string) *NodeGroupConfiguration {
17068	s.ReplicaAvailabilityZones = v
17069	return s
17070}
17071
17072// SetReplicaCount sets the ReplicaCount field's value.
17073func (s *NodeGroupConfiguration) SetReplicaCount(v int64) *NodeGroupConfiguration {
17074	s.ReplicaCount = &v
17075	return s
17076}
17077
17078// SetReplicaOutpostArns sets the ReplicaOutpostArns field's value.
17079func (s *NodeGroupConfiguration) SetReplicaOutpostArns(v []*string) *NodeGroupConfiguration {
17080	s.ReplicaOutpostArns = v
17081	return s
17082}
17083
17084// SetSlots sets the Slots field's value.
17085func (s *NodeGroupConfiguration) SetSlots(v string) *NodeGroupConfiguration {
17086	s.Slots = &v
17087	return s
17088}
17089
17090// Represents a single node within a node group (shard).
17091type NodeGroupMember struct {
17092	_ struct{} `type:"structure"`
17093
17094	// The ID of the cluster to which the node belongs.
17095	CacheClusterId *string `type:"string"`
17096
17097	// The ID of the node within its cluster. A node ID is a numeric identifier
17098	// (0001, 0002, etc.).
17099	CacheNodeId *string `type:"string"`
17100
17101	// The role that is currently assigned to the node - primary or replica. This
17102	// member is only applicable for Redis (cluster mode disabled) replication groups.
17103	CurrentRole *string `type:"string"`
17104
17105	// The name of the Availability Zone in which the node is located.
17106	PreferredAvailabilityZone *string `type:"string"`
17107
17108	// The outpost ARN of the node group member.
17109	PreferredOutpostArn *string `type:"string"`
17110
17111	// The information required for client programs to connect to a node for read
17112	// operations. The read endpoint is only applicable on Redis (cluster mode disabled)
17113	// clusters.
17114	ReadEndpoint *Endpoint `type:"structure"`
17115}
17116
17117// String returns the string representation
17118func (s NodeGroupMember) String() string {
17119	return awsutil.Prettify(s)
17120}
17121
17122// GoString returns the string representation
17123func (s NodeGroupMember) GoString() string {
17124	return s.String()
17125}
17126
17127// SetCacheClusterId sets the CacheClusterId field's value.
17128func (s *NodeGroupMember) SetCacheClusterId(v string) *NodeGroupMember {
17129	s.CacheClusterId = &v
17130	return s
17131}
17132
17133// SetCacheNodeId sets the CacheNodeId field's value.
17134func (s *NodeGroupMember) SetCacheNodeId(v string) *NodeGroupMember {
17135	s.CacheNodeId = &v
17136	return s
17137}
17138
17139// SetCurrentRole sets the CurrentRole field's value.
17140func (s *NodeGroupMember) SetCurrentRole(v string) *NodeGroupMember {
17141	s.CurrentRole = &v
17142	return s
17143}
17144
17145// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
17146func (s *NodeGroupMember) SetPreferredAvailabilityZone(v string) *NodeGroupMember {
17147	s.PreferredAvailabilityZone = &v
17148	return s
17149}
17150
17151// SetPreferredOutpostArn sets the PreferredOutpostArn field's value.
17152func (s *NodeGroupMember) SetPreferredOutpostArn(v string) *NodeGroupMember {
17153	s.PreferredOutpostArn = &v
17154	return s
17155}
17156
17157// SetReadEndpoint sets the ReadEndpoint field's value.
17158func (s *NodeGroupMember) SetReadEndpoint(v *Endpoint) *NodeGroupMember {
17159	s.ReadEndpoint = v
17160	return s
17161}
17162
17163// The status of the service update on the node group member
17164type NodeGroupMemberUpdateStatus struct {
17165	_ struct{} `type:"structure"`
17166
17167	// The cache cluster ID
17168	CacheClusterId *string `type:"string"`
17169
17170	// The node ID of the cache cluster
17171	CacheNodeId *string `type:"string"`
17172
17173	// The deletion date of the node
17174	NodeDeletionDate *time.Time `type:"timestamp"`
17175
17176	// The end date of the update for a node
17177	NodeUpdateEndDate *time.Time `type:"timestamp"`
17178
17179	// Reflects whether the update was initiated by the customer or automatically
17180	// applied
17181	NodeUpdateInitiatedBy *string `type:"string" enum:"NodeUpdateInitiatedBy"`
17182
17183	// The date when the update is triggered
17184	NodeUpdateInitiatedDate *time.Time `type:"timestamp"`
17185
17186	// The start date of the update for a node
17187	NodeUpdateStartDate *time.Time `type:"timestamp"`
17188
17189	// The update status of the node
17190	NodeUpdateStatus *string `type:"string" enum:"NodeUpdateStatus"`
17191
17192	// The date when the NodeUpdateStatus was last modified
17193	NodeUpdateStatusModifiedDate *time.Time `type:"timestamp"`
17194}
17195
17196// String returns the string representation
17197func (s NodeGroupMemberUpdateStatus) String() string {
17198	return awsutil.Prettify(s)
17199}
17200
17201// GoString returns the string representation
17202func (s NodeGroupMemberUpdateStatus) GoString() string {
17203	return s.String()
17204}
17205
17206// SetCacheClusterId sets the CacheClusterId field's value.
17207func (s *NodeGroupMemberUpdateStatus) SetCacheClusterId(v string) *NodeGroupMemberUpdateStatus {
17208	s.CacheClusterId = &v
17209	return s
17210}
17211
17212// SetCacheNodeId sets the CacheNodeId field's value.
17213func (s *NodeGroupMemberUpdateStatus) SetCacheNodeId(v string) *NodeGroupMemberUpdateStatus {
17214	s.CacheNodeId = &v
17215	return s
17216}
17217
17218// SetNodeDeletionDate sets the NodeDeletionDate field's value.
17219func (s *NodeGroupMemberUpdateStatus) SetNodeDeletionDate(v time.Time) *NodeGroupMemberUpdateStatus {
17220	s.NodeDeletionDate = &v
17221	return s
17222}
17223
17224// SetNodeUpdateEndDate sets the NodeUpdateEndDate field's value.
17225func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateEndDate(v time.Time) *NodeGroupMemberUpdateStatus {
17226	s.NodeUpdateEndDate = &v
17227	return s
17228}
17229
17230// SetNodeUpdateInitiatedBy sets the NodeUpdateInitiatedBy field's value.
17231func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateInitiatedBy(v string) *NodeGroupMemberUpdateStatus {
17232	s.NodeUpdateInitiatedBy = &v
17233	return s
17234}
17235
17236// SetNodeUpdateInitiatedDate sets the NodeUpdateInitiatedDate field's value.
17237func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateInitiatedDate(v time.Time) *NodeGroupMemberUpdateStatus {
17238	s.NodeUpdateInitiatedDate = &v
17239	return s
17240}
17241
17242// SetNodeUpdateStartDate sets the NodeUpdateStartDate field's value.
17243func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStartDate(v time.Time) *NodeGroupMemberUpdateStatus {
17244	s.NodeUpdateStartDate = &v
17245	return s
17246}
17247
17248// SetNodeUpdateStatus sets the NodeUpdateStatus field's value.
17249func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStatus(v string) *NodeGroupMemberUpdateStatus {
17250	s.NodeUpdateStatus = &v
17251	return s
17252}
17253
17254// SetNodeUpdateStatusModifiedDate sets the NodeUpdateStatusModifiedDate field's value.
17255func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStatusModifiedDate(v time.Time) *NodeGroupMemberUpdateStatus {
17256	s.NodeUpdateStatusModifiedDate = &v
17257	return s
17258}
17259
17260// The status of the service update on the node group
17261type NodeGroupUpdateStatus struct {
17262	_ struct{} `type:"structure"`
17263
17264	// The ID of the node group
17265	NodeGroupId *string `type:"string"`
17266
17267	// The status of the service update on the node group member
17268	NodeGroupMemberUpdateStatus []*NodeGroupMemberUpdateStatus `locationNameList:"NodeGroupMemberUpdateStatus" type:"list"`
17269}
17270
17271// String returns the string representation
17272func (s NodeGroupUpdateStatus) String() string {
17273	return awsutil.Prettify(s)
17274}
17275
17276// GoString returns the string representation
17277func (s NodeGroupUpdateStatus) GoString() string {
17278	return s.String()
17279}
17280
17281// SetNodeGroupId sets the NodeGroupId field's value.
17282func (s *NodeGroupUpdateStatus) SetNodeGroupId(v string) *NodeGroupUpdateStatus {
17283	s.NodeGroupId = &v
17284	return s
17285}
17286
17287// SetNodeGroupMemberUpdateStatus sets the NodeGroupMemberUpdateStatus field's value.
17288func (s *NodeGroupUpdateStatus) SetNodeGroupMemberUpdateStatus(v []*NodeGroupMemberUpdateStatus) *NodeGroupUpdateStatus {
17289	s.NodeGroupMemberUpdateStatus = v
17290	return s
17291}
17292
17293// Represents an individual cache node in a snapshot of a cluster.
17294type NodeSnapshot struct {
17295	_ struct{} `type:"structure"`
17296
17297	// A unique identifier for the source cluster.
17298	CacheClusterId *string `type:"string"`
17299
17300	// The date and time when the cache node was created in the source cluster.
17301	CacheNodeCreateTime *time.Time `type:"timestamp"`
17302
17303	// The cache node identifier for the node in the source cluster.
17304	CacheNodeId *string `type:"string"`
17305
17306	// The size of the cache on the source cache node.
17307	CacheSize *string `type:"string"`
17308
17309	// The configuration for the source node group (shard).
17310	NodeGroupConfiguration *NodeGroupConfiguration `type:"structure"`
17311
17312	// A unique identifier for the source node group (shard).
17313	NodeGroupId *string `type:"string"`
17314
17315	// The date and time when the source node's metadata and cache data set was
17316	// obtained for the snapshot.
17317	SnapshotCreateTime *time.Time `type:"timestamp"`
17318}
17319
17320// String returns the string representation
17321func (s NodeSnapshot) String() string {
17322	return awsutil.Prettify(s)
17323}
17324
17325// GoString returns the string representation
17326func (s NodeSnapshot) GoString() string {
17327	return s.String()
17328}
17329
17330// SetCacheClusterId sets the CacheClusterId field's value.
17331func (s *NodeSnapshot) SetCacheClusterId(v string) *NodeSnapshot {
17332	s.CacheClusterId = &v
17333	return s
17334}
17335
17336// SetCacheNodeCreateTime sets the CacheNodeCreateTime field's value.
17337func (s *NodeSnapshot) SetCacheNodeCreateTime(v time.Time) *NodeSnapshot {
17338	s.CacheNodeCreateTime = &v
17339	return s
17340}
17341
17342// SetCacheNodeId sets the CacheNodeId field's value.
17343func (s *NodeSnapshot) SetCacheNodeId(v string) *NodeSnapshot {
17344	s.CacheNodeId = &v
17345	return s
17346}
17347
17348// SetCacheSize sets the CacheSize field's value.
17349func (s *NodeSnapshot) SetCacheSize(v string) *NodeSnapshot {
17350	s.CacheSize = &v
17351	return s
17352}
17353
17354// SetNodeGroupConfiguration sets the NodeGroupConfiguration field's value.
17355func (s *NodeSnapshot) SetNodeGroupConfiguration(v *NodeGroupConfiguration) *NodeSnapshot {
17356	s.NodeGroupConfiguration = v
17357	return s
17358}
17359
17360// SetNodeGroupId sets the NodeGroupId field's value.
17361func (s *NodeSnapshot) SetNodeGroupId(v string) *NodeSnapshot {
17362	s.NodeGroupId = &v
17363	return s
17364}
17365
17366// SetSnapshotCreateTime sets the SnapshotCreateTime field's value.
17367func (s *NodeSnapshot) SetSnapshotCreateTime(v time.Time) *NodeSnapshot {
17368	s.SnapshotCreateTime = &v
17369	return s
17370}
17371
17372// Describes a notification topic and its status. Notification topics are used
17373// for publishing ElastiCache events to subscribers using Amazon Simple Notification
17374// Service (SNS).
17375type NotificationConfiguration struct {
17376	_ struct{} `type:"structure"`
17377
17378	// The Amazon Resource Name (ARN) that identifies the topic.
17379	TopicArn *string `type:"string"`
17380
17381	// The current state of the topic.
17382	TopicStatus *string `type:"string"`
17383}
17384
17385// String returns the string representation
17386func (s NotificationConfiguration) String() string {
17387	return awsutil.Prettify(s)
17388}
17389
17390// GoString returns the string representation
17391func (s NotificationConfiguration) GoString() string {
17392	return s.String()
17393}
17394
17395// SetTopicArn sets the TopicArn field's value.
17396func (s *NotificationConfiguration) SetTopicArn(v string) *NotificationConfiguration {
17397	s.TopicArn = &v
17398	return s
17399}
17400
17401// SetTopicStatus sets the TopicStatus field's value.
17402func (s *NotificationConfiguration) SetTopicStatus(v string) *NotificationConfiguration {
17403	s.TopicStatus = &v
17404	return s
17405}
17406
17407// Describes an individual setting that controls some aspect of ElastiCache
17408// behavior.
17409type Parameter struct {
17410	_ struct{} `type:"structure"`
17411
17412	// The valid range of values for the parameter.
17413	AllowedValues *string `type:"string"`
17414
17415	// Indicates whether a change to the parameter is applied immediately or requires
17416	// a reboot for the change to be applied. You can force a reboot or wait until
17417	// the next maintenance window's reboot. For more information, see Rebooting
17418	// a Cluster (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html).
17419	ChangeType *string `type:"string" enum:"ChangeType"`
17420
17421	// The valid data type for the parameter.
17422	DataType *string `type:"string"`
17423
17424	// A description of the parameter.
17425	Description *string `type:"string"`
17426
17427	// Indicates whether (true) or not (false) the parameter can be modified. Some
17428	// parameters have security or operational implications that prevent them from
17429	// being changed.
17430	IsModifiable *bool `type:"boolean"`
17431
17432	// The earliest cache engine version to which the parameter can apply.
17433	MinimumEngineVersion *string `type:"string"`
17434
17435	// The name of the parameter.
17436	ParameterName *string `type:"string"`
17437
17438	// The value of the parameter.
17439	ParameterValue *string `type:"string"`
17440
17441	// The source of the parameter.
17442	Source *string `type:"string"`
17443}
17444
17445// String returns the string representation
17446func (s Parameter) String() string {
17447	return awsutil.Prettify(s)
17448}
17449
17450// GoString returns the string representation
17451func (s Parameter) GoString() string {
17452	return s.String()
17453}
17454
17455// SetAllowedValues sets the AllowedValues field's value.
17456func (s *Parameter) SetAllowedValues(v string) *Parameter {
17457	s.AllowedValues = &v
17458	return s
17459}
17460
17461// SetChangeType sets the ChangeType field's value.
17462func (s *Parameter) SetChangeType(v string) *Parameter {
17463	s.ChangeType = &v
17464	return s
17465}
17466
17467// SetDataType sets the DataType field's value.
17468func (s *Parameter) SetDataType(v string) *Parameter {
17469	s.DataType = &v
17470	return s
17471}
17472
17473// SetDescription sets the Description field's value.
17474func (s *Parameter) SetDescription(v string) *Parameter {
17475	s.Description = &v
17476	return s
17477}
17478
17479// SetIsModifiable sets the IsModifiable field's value.
17480func (s *Parameter) SetIsModifiable(v bool) *Parameter {
17481	s.IsModifiable = &v
17482	return s
17483}
17484
17485// SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
17486func (s *Parameter) SetMinimumEngineVersion(v string) *Parameter {
17487	s.MinimumEngineVersion = &v
17488	return s
17489}
17490
17491// SetParameterName sets the ParameterName field's value.
17492func (s *Parameter) SetParameterName(v string) *Parameter {
17493	s.ParameterName = &v
17494	return s
17495}
17496
17497// SetParameterValue sets the ParameterValue field's value.
17498func (s *Parameter) SetParameterValue(v string) *Parameter {
17499	s.ParameterValue = &v
17500	return s
17501}
17502
17503// SetSource sets the Source field's value.
17504func (s *Parameter) SetSource(v string) *Parameter {
17505	s.Source = &v
17506	return s
17507}
17508
17509// Describes a name-value pair that is used to update the value of a parameter.
17510type ParameterNameValue struct {
17511	_ struct{} `type:"structure"`
17512
17513	// The name of the parameter.
17514	ParameterName *string `type:"string"`
17515
17516	// The value of the parameter.
17517	ParameterValue *string `type:"string"`
17518}
17519
17520// String returns the string representation
17521func (s ParameterNameValue) String() string {
17522	return awsutil.Prettify(s)
17523}
17524
17525// GoString returns the string representation
17526func (s ParameterNameValue) GoString() string {
17527	return s.String()
17528}
17529
17530// SetParameterName sets the ParameterName field's value.
17531func (s *ParameterNameValue) SetParameterName(v string) *ParameterNameValue {
17532	s.ParameterName = &v
17533	return s
17534}
17535
17536// SetParameterValue sets the ParameterValue field's value.
17537func (s *ParameterNameValue) SetParameterValue(v string) *ParameterNameValue {
17538	s.ParameterValue = &v
17539	return s
17540}
17541
17542// The log delivery configurations being modified
17543type PendingLogDeliveryConfiguration struct {
17544	_ struct{} `type:"structure"`
17545
17546	// Configuration details of either a CloudWatch Logs destination or Kinesis
17547	// Data Firehose destination.
17548	DestinationDetails *DestinationDetails `type:"structure"`
17549
17550	// Returns the destination type, either CloudWatch Logs or Kinesis Data Firehose.
17551	DestinationType *string `type:"string" enum:"DestinationType"`
17552
17553	// Returns the log format, either JSON or TEXT
17554	LogFormat *string `type:"string" enum:"LogFormat"`
17555
17556	// Refers to slow-log (https://redis.io/commands/slowlog).
17557	LogType *string `type:"string" enum:"LogType"`
17558}
17559
17560// String returns the string representation
17561func (s PendingLogDeliveryConfiguration) String() string {
17562	return awsutil.Prettify(s)
17563}
17564
17565// GoString returns the string representation
17566func (s PendingLogDeliveryConfiguration) GoString() string {
17567	return s.String()
17568}
17569
17570// SetDestinationDetails sets the DestinationDetails field's value.
17571func (s *PendingLogDeliveryConfiguration) SetDestinationDetails(v *DestinationDetails) *PendingLogDeliveryConfiguration {
17572	s.DestinationDetails = v
17573	return s
17574}
17575
17576// SetDestinationType sets the DestinationType field's value.
17577func (s *PendingLogDeliveryConfiguration) SetDestinationType(v string) *PendingLogDeliveryConfiguration {
17578	s.DestinationType = &v
17579	return s
17580}
17581
17582// SetLogFormat sets the LogFormat field's value.
17583func (s *PendingLogDeliveryConfiguration) SetLogFormat(v string) *PendingLogDeliveryConfiguration {
17584	s.LogFormat = &v
17585	return s
17586}
17587
17588// SetLogType sets the LogType field's value.
17589func (s *PendingLogDeliveryConfiguration) SetLogType(v string) *PendingLogDeliveryConfiguration {
17590	s.LogType = &v
17591	return s
17592}
17593
17594// A group of settings that are applied to the cluster in the future, or that
17595// are currently being applied.
17596type PendingModifiedValues struct {
17597	_ struct{} `type:"structure"`
17598
17599	// The auth token status
17600	AuthTokenStatus *string `type:"string" enum:"AuthTokenUpdateStatus"`
17601
17602	// A list of cache node IDs that are being removed (or will be removed) from
17603	// the cluster. A node ID is a 4-digit numeric identifier (0001, 0002, etc.).
17604	CacheNodeIdsToRemove []*string `locationNameList:"CacheNodeId" type:"list"`
17605
17606	// The cache node type that this cluster or replication group is scaled to.
17607	CacheNodeType *string `type:"string"`
17608
17609	// The new cache engine version that the cluster runs.
17610	EngineVersion *string `type:"string"`
17611
17612	// The log delivery configurations being modified
17613	LogDeliveryConfigurations []*PendingLogDeliveryConfiguration `locationName:"PendingLogDeliveryConfiguration" type:"list"`
17614
17615	// The new number of cache nodes for the cluster.
17616	//
17617	// For clusters running Redis, this value must be 1. For clusters running Memcached,
17618	// this value must be between 1 and 40.
17619	NumCacheNodes *int64 `type:"integer"`
17620}
17621
17622// String returns the string representation
17623func (s PendingModifiedValues) String() string {
17624	return awsutil.Prettify(s)
17625}
17626
17627// GoString returns the string representation
17628func (s PendingModifiedValues) GoString() string {
17629	return s.String()
17630}
17631
17632// SetAuthTokenStatus sets the AuthTokenStatus field's value.
17633func (s *PendingModifiedValues) SetAuthTokenStatus(v string) *PendingModifiedValues {
17634	s.AuthTokenStatus = &v
17635	return s
17636}
17637
17638// SetCacheNodeIdsToRemove sets the CacheNodeIdsToRemove field's value.
17639func (s *PendingModifiedValues) SetCacheNodeIdsToRemove(v []*string) *PendingModifiedValues {
17640	s.CacheNodeIdsToRemove = v
17641	return s
17642}
17643
17644// SetCacheNodeType sets the CacheNodeType field's value.
17645func (s *PendingModifiedValues) SetCacheNodeType(v string) *PendingModifiedValues {
17646	s.CacheNodeType = &v
17647	return s
17648}
17649
17650// SetEngineVersion sets the EngineVersion field's value.
17651func (s *PendingModifiedValues) SetEngineVersion(v string) *PendingModifiedValues {
17652	s.EngineVersion = &v
17653	return s
17654}
17655
17656// SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
17657func (s *PendingModifiedValues) SetLogDeliveryConfigurations(v []*PendingLogDeliveryConfiguration) *PendingModifiedValues {
17658	s.LogDeliveryConfigurations = v
17659	return s
17660}
17661
17662// SetNumCacheNodes sets the NumCacheNodes field's value.
17663func (s *PendingModifiedValues) SetNumCacheNodes(v int64) *PendingModifiedValues {
17664	s.NumCacheNodes = &v
17665	return s
17666}
17667
17668// Update action that has been processed for the corresponding apply/stop request
17669type ProcessedUpdateAction struct {
17670	_ struct{} `type:"structure"`
17671
17672	// The ID of the cache cluster
17673	CacheClusterId *string `type:"string"`
17674
17675	// The ID of the replication group
17676	ReplicationGroupId *string `type:"string"`
17677
17678	// The unique ID of the service update
17679	ServiceUpdateName *string `type:"string"`
17680
17681	// The status of the update action on the Redis cluster
17682	UpdateActionStatus *string `type:"string" enum:"UpdateActionStatus"`
17683}
17684
17685// String returns the string representation
17686func (s ProcessedUpdateAction) String() string {
17687	return awsutil.Prettify(s)
17688}
17689
17690// GoString returns the string representation
17691func (s ProcessedUpdateAction) GoString() string {
17692	return s.String()
17693}
17694
17695// SetCacheClusterId sets the CacheClusterId field's value.
17696func (s *ProcessedUpdateAction) SetCacheClusterId(v string) *ProcessedUpdateAction {
17697	s.CacheClusterId = &v
17698	return s
17699}
17700
17701// SetReplicationGroupId sets the ReplicationGroupId field's value.
17702func (s *ProcessedUpdateAction) SetReplicationGroupId(v string) *ProcessedUpdateAction {
17703	s.ReplicationGroupId = &v
17704	return s
17705}
17706
17707// SetServiceUpdateName sets the ServiceUpdateName field's value.
17708func (s *ProcessedUpdateAction) SetServiceUpdateName(v string) *ProcessedUpdateAction {
17709	s.ServiceUpdateName = &v
17710	return s
17711}
17712
17713// SetUpdateActionStatus sets the UpdateActionStatus field's value.
17714func (s *ProcessedUpdateAction) SetUpdateActionStatus(v string) *ProcessedUpdateAction {
17715	s.UpdateActionStatus = &v
17716	return s
17717}
17718
17719// Represents the input of a PurchaseReservedCacheNodesOffering operation.
17720type PurchaseReservedCacheNodesOfferingInput struct {
17721	_ struct{} `type:"structure"`
17722
17723	// The number of cache node instances to reserve.
17724	//
17725	// Default: 1
17726	CacheNodeCount *int64 `type:"integer"`
17727
17728	// A customer-specified identifier to track this reservation.
17729	//
17730	// The Reserved Cache Node ID is an unique customer-specified identifier to
17731	// track this reservation. If this parameter is not specified, ElastiCache automatically
17732	// generates an identifier for the reservation.
17733	//
17734	// Example: myreservationID
17735	ReservedCacheNodeId *string `type:"string"`
17736
17737	// The ID of the reserved cache node offering to purchase.
17738	//
17739	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
17740	//
17741	// ReservedCacheNodesOfferingId is a required field
17742	ReservedCacheNodesOfferingId *string `type:"string" required:"true"`
17743
17744	// A list of tags to be added to this resource. A tag is a key-value pair. A
17745	// tag key must be accompanied by a tag value, although null is accepted.
17746	Tags []*Tag `locationNameList:"Tag" type:"list"`
17747}
17748
17749// String returns the string representation
17750func (s PurchaseReservedCacheNodesOfferingInput) String() string {
17751	return awsutil.Prettify(s)
17752}
17753
17754// GoString returns the string representation
17755func (s PurchaseReservedCacheNodesOfferingInput) GoString() string {
17756	return s.String()
17757}
17758
17759// Validate inspects the fields of the type to determine if they are valid.
17760func (s *PurchaseReservedCacheNodesOfferingInput) Validate() error {
17761	invalidParams := request.ErrInvalidParams{Context: "PurchaseReservedCacheNodesOfferingInput"}
17762	if s.ReservedCacheNodesOfferingId == nil {
17763		invalidParams.Add(request.NewErrParamRequired("ReservedCacheNodesOfferingId"))
17764	}
17765
17766	if invalidParams.Len() > 0 {
17767		return invalidParams
17768	}
17769	return nil
17770}
17771
17772// SetCacheNodeCount sets the CacheNodeCount field's value.
17773func (s *PurchaseReservedCacheNodesOfferingInput) SetCacheNodeCount(v int64) *PurchaseReservedCacheNodesOfferingInput {
17774	s.CacheNodeCount = &v
17775	return s
17776}
17777
17778// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
17779func (s *PurchaseReservedCacheNodesOfferingInput) SetReservedCacheNodeId(v string) *PurchaseReservedCacheNodesOfferingInput {
17780	s.ReservedCacheNodeId = &v
17781	return s
17782}
17783
17784// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
17785func (s *PurchaseReservedCacheNodesOfferingInput) SetReservedCacheNodesOfferingId(v string) *PurchaseReservedCacheNodesOfferingInput {
17786	s.ReservedCacheNodesOfferingId = &v
17787	return s
17788}
17789
17790// SetTags sets the Tags field's value.
17791func (s *PurchaseReservedCacheNodesOfferingInput) SetTags(v []*Tag) *PurchaseReservedCacheNodesOfferingInput {
17792	s.Tags = v
17793	return s
17794}
17795
17796type PurchaseReservedCacheNodesOfferingOutput struct {
17797	_ struct{} `type:"structure"`
17798
17799	// Represents the output of a PurchaseReservedCacheNodesOffering operation.
17800	ReservedCacheNode *ReservedCacheNode `type:"structure"`
17801}
17802
17803// String returns the string representation
17804func (s PurchaseReservedCacheNodesOfferingOutput) String() string {
17805	return awsutil.Prettify(s)
17806}
17807
17808// GoString returns the string representation
17809func (s PurchaseReservedCacheNodesOfferingOutput) GoString() string {
17810	return s.String()
17811}
17812
17813// SetReservedCacheNode sets the ReservedCacheNode field's value.
17814func (s *PurchaseReservedCacheNodesOfferingOutput) SetReservedCacheNode(v *ReservedCacheNode) *PurchaseReservedCacheNodesOfferingOutput {
17815	s.ReservedCacheNode = v
17816	return s
17817}
17818
17819type RebalanceSlotsInGlobalReplicationGroupInput struct {
17820	_ struct{} `type:"structure"`
17821
17822	// If True, redistribution is applied immediately.
17823	//
17824	// ApplyImmediately is a required field
17825	ApplyImmediately *bool `type:"boolean" required:"true"`
17826
17827	// The name of the Global datastore
17828	//
17829	// GlobalReplicationGroupId is a required field
17830	GlobalReplicationGroupId *string `type:"string" required:"true"`
17831}
17832
17833// String returns the string representation
17834func (s RebalanceSlotsInGlobalReplicationGroupInput) String() string {
17835	return awsutil.Prettify(s)
17836}
17837
17838// GoString returns the string representation
17839func (s RebalanceSlotsInGlobalReplicationGroupInput) GoString() string {
17840	return s.String()
17841}
17842
17843// Validate inspects the fields of the type to determine if they are valid.
17844func (s *RebalanceSlotsInGlobalReplicationGroupInput) Validate() error {
17845	invalidParams := request.ErrInvalidParams{Context: "RebalanceSlotsInGlobalReplicationGroupInput"}
17846	if s.ApplyImmediately == nil {
17847		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
17848	}
17849	if s.GlobalReplicationGroupId == nil {
17850		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
17851	}
17852
17853	if invalidParams.Len() > 0 {
17854		return invalidParams
17855	}
17856	return nil
17857}
17858
17859// SetApplyImmediately sets the ApplyImmediately field's value.
17860func (s *RebalanceSlotsInGlobalReplicationGroupInput) SetApplyImmediately(v bool) *RebalanceSlotsInGlobalReplicationGroupInput {
17861	s.ApplyImmediately = &v
17862	return s
17863}
17864
17865// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
17866func (s *RebalanceSlotsInGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *RebalanceSlotsInGlobalReplicationGroupInput {
17867	s.GlobalReplicationGroupId = &v
17868	return s
17869}
17870
17871type RebalanceSlotsInGlobalReplicationGroupOutput struct {
17872	_ struct{} `type:"structure"`
17873
17874	// Consists of a primary cluster that accepts writes and an associated secondary
17875	// cluster that resides in a different Amazon region. The secondary cluster
17876	// accepts only reads. The primary cluster automatically replicates updates
17877	// to the secondary cluster.
17878	//
17879	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
17880	//    datastore, which is what you use to associate a secondary cluster.
17881	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
17882}
17883
17884// String returns the string representation
17885func (s RebalanceSlotsInGlobalReplicationGroupOutput) String() string {
17886	return awsutil.Prettify(s)
17887}
17888
17889// GoString returns the string representation
17890func (s RebalanceSlotsInGlobalReplicationGroupOutput) GoString() string {
17891	return s.String()
17892}
17893
17894// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
17895func (s *RebalanceSlotsInGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *RebalanceSlotsInGlobalReplicationGroupOutput {
17896	s.GlobalReplicationGroup = v
17897	return s
17898}
17899
17900// Represents the input of a RebootCacheCluster operation.
17901type RebootCacheClusterInput struct {
17902	_ struct{} `type:"structure"`
17903
17904	// The cluster identifier. This parameter is stored as a lowercase string.
17905	//
17906	// CacheClusterId is a required field
17907	CacheClusterId *string `type:"string" required:"true"`
17908
17909	// A list of cache node IDs to reboot. A node ID is a numeric identifier (0001,
17910	// 0002, etc.). To reboot an entire cluster, specify all of the cache node IDs.
17911	//
17912	// CacheNodeIdsToReboot is a required field
17913	CacheNodeIdsToReboot []*string `locationNameList:"CacheNodeId" type:"list" required:"true"`
17914}
17915
17916// String returns the string representation
17917func (s RebootCacheClusterInput) String() string {
17918	return awsutil.Prettify(s)
17919}
17920
17921// GoString returns the string representation
17922func (s RebootCacheClusterInput) GoString() string {
17923	return s.String()
17924}
17925
17926// Validate inspects the fields of the type to determine if they are valid.
17927func (s *RebootCacheClusterInput) Validate() error {
17928	invalidParams := request.ErrInvalidParams{Context: "RebootCacheClusterInput"}
17929	if s.CacheClusterId == nil {
17930		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
17931	}
17932	if s.CacheNodeIdsToReboot == nil {
17933		invalidParams.Add(request.NewErrParamRequired("CacheNodeIdsToReboot"))
17934	}
17935
17936	if invalidParams.Len() > 0 {
17937		return invalidParams
17938	}
17939	return nil
17940}
17941
17942// SetCacheClusterId sets the CacheClusterId field's value.
17943func (s *RebootCacheClusterInput) SetCacheClusterId(v string) *RebootCacheClusterInput {
17944	s.CacheClusterId = &v
17945	return s
17946}
17947
17948// SetCacheNodeIdsToReboot sets the CacheNodeIdsToReboot field's value.
17949func (s *RebootCacheClusterInput) SetCacheNodeIdsToReboot(v []*string) *RebootCacheClusterInput {
17950	s.CacheNodeIdsToReboot = v
17951	return s
17952}
17953
17954type RebootCacheClusterOutput struct {
17955	_ struct{} `type:"structure"`
17956
17957	// Contains all of the attributes of a specific cluster.
17958	CacheCluster *CacheCluster `type:"structure"`
17959}
17960
17961// String returns the string representation
17962func (s RebootCacheClusterOutput) String() string {
17963	return awsutil.Prettify(s)
17964}
17965
17966// GoString returns the string representation
17967func (s RebootCacheClusterOutput) GoString() string {
17968	return s.String()
17969}
17970
17971// SetCacheCluster sets the CacheCluster field's value.
17972func (s *RebootCacheClusterOutput) SetCacheCluster(v *CacheCluster) *RebootCacheClusterOutput {
17973	s.CacheCluster = v
17974	return s
17975}
17976
17977// Contains the specific price and frequency of a recurring charges for a reserved
17978// cache node, or for a reserved cache node offering.
17979type RecurringCharge struct {
17980	_ struct{} `type:"structure"`
17981
17982	// The monetary amount of the recurring charge.
17983	RecurringChargeAmount *float64 `type:"double"`
17984
17985	// The frequency of the recurring charge.
17986	RecurringChargeFrequency *string `type:"string"`
17987}
17988
17989// String returns the string representation
17990func (s RecurringCharge) String() string {
17991	return awsutil.Prettify(s)
17992}
17993
17994// GoString returns the string representation
17995func (s RecurringCharge) GoString() string {
17996	return s.String()
17997}
17998
17999// SetRecurringChargeAmount sets the RecurringChargeAmount field's value.
18000func (s *RecurringCharge) SetRecurringChargeAmount(v float64) *RecurringCharge {
18001	s.RecurringChargeAmount = &v
18002	return s
18003}
18004
18005// SetRecurringChargeFrequency sets the RecurringChargeFrequency field's value.
18006func (s *RecurringCharge) SetRecurringChargeFrequency(v string) *RecurringCharge {
18007	s.RecurringChargeFrequency = &v
18008	return s
18009}
18010
18011// A list of the replication groups
18012type RegionalConfiguration struct {
18013	_ struct{} `type:"structure"`
18014
18015	// The name of the secondary cluster
18016	//
18017	// ReplicationGroupId is a required field
18018	ReplicationGroupId *string `type:"string" required:"true"`
18019
18020	// The Amazon region where the cluster is stored
18021	//
18022	// ReplicationGroupRegion is a required field
18023	ReplicationGroupRegion *string `type:"string" required:"true"`
18024
18025	// A list of PreferredAvailabilityZones objects that specifies the configuration
18026	// of a node group in the resharded cluster.
18027	//
18028	// ReshardingConfiguration is a required field
18029	ReshardingConfiguration []*ReshardingConfiguration `locationNameList:"ReshardingConfiguration" type:"list" required:"true"`
18030}
18031
18032// String returns the string representation
18033func (s RegionalConfiguration) String() string {
18034	return awsutil.Prettify(s)
18035}
18036
18037// GoString returns the string representation
18038func (s RegionalConfiguration) GoString() string {
18039	return s.String()
18040}
18041
18042// Validate inspects the fields of the type to determine if they are valid.
18043func (s *RegionalConfiguration) Validate() error {
18044	invalidParams := request.ErrInvalidParams{Context: "RegionalConfiguration"}
18045	if s.ReplicationGroupId == nil {
18046		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
18047	}
18048	if s.ReplicationGroupRegion == nil {
18049		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupRegion"))
18050	}
18051	if s.ReshardingConfiguration == nil {
18052		invalidParams.Add(request.NewErrParamRequired("ReshardingConfiguration"))
18053	}
18054	if s.ReshardingConfiguration != nil {
18055		for i, v := range s.ReshardingConfiguration {
18056			if v == nil {
18057				continue
18058			}
18059			if err := v.Validate(); err != nil {
18060				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReshardingConfiguration", i), err.(request.ErrInvalidParams))
18061			}
18062		}
18063	}
18064
18065	if invalidParams.Len() > 0 {
18066		return invalidParams
18067	}
18068	return nil
18069}
18070
18071// SetReplicationGroupId sets the ReplicationGroupId field's value.
18072func (s *RegionalConfiguration) SetReplicationGroupId(v string) *RegionalConfiguration {
18073	s.ReplicationGroupId = &v
18074	return s
18075}
18076
18077// SetReplicationGroupRegion sets the ReplicationGroupRegion field's value.
18078func (s *RegionalConfiguration) SetReplicationGroupRegion(v string) *RegionalConfiguration {
18079	s.ReplicationGroupRegion = &v
18080	return s
18081}
18082
18083// SetReshardingConfiguration sets the ReshardingConfiguration field's value.
18084func (s *RegionalConfiguration) SetReshardingConfiguration(v []*ReshardingConfiguration) *RegionalConfiguration {
18085	s.ReshardingConfiguration = v
18086	return s
18087}
18088
18089// Represents the input of a RemoveTagsFromResource operation.
18090type RemoveTagsFromResourceInput struct {
18091	_ struct{} `type:"structure"`
18092
18093	// The Amazon Resource Name (ARN) of the resource from which you want the tags
18094	// removed, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
18095	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.
18096	//
18097	// For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon
18098	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
18099	//
18100	// ResourceName is a required field
18101	ResourceName *string `type:"string" required:"true"`
18102
18103	// A list of TagKeys identifying the tags you want removed from the named resource.
18104	//
18105	// TagKeys is a required field
18106	TagKeys []*string `type:"list" required:"true"`
18107}
18108
18109// String returns the string representation
18110func (s RemoveTagsFromResourceInput) String() string {
18111	return awsutil.Prettify(s)
18112}
18113
18114// GoString returns the string representation
18115func (s RemoveTagsFromResourceInput) GoString() string {
18116	return s.String()
18117}
18118
18119// Validate inspects the fields of the type to determine if they are valid.
18120func (s *RemoveTagsFromResourceInput) Validate() error {
18121	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsFromResourceInput"}
18122	if s.ResourceName == nil {
18123		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
18124	}
18125	if s.TagKeys == nil {
18126		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
18127	}
18128
18129	if invalidParams.Len() > 0 {
18130		return invalidParams
18131	}
18132	return nil
18133}
18134
18135// SetResourceName sets the ResourceName field's value.
18136func (s *RemoveTagsFromResourceInput) SetResourceName(v string) *RemoveTagsFromResourceInput {
18137	s.ResourceName = &v
18138	return s
18139}
18140
18141// SetTagKeys sets the TagKeys field's value.
18142func (s *RemoveTagsFromResourceInput) SetTagKeys(v []*string) *RemoveTagsFromResourceInput {
18143	s.TagKeys = v
18144	return s
18145}
18146
18147// Contains all of the attributes of a specific Redis replication group.
18148type ReplicationGroup struct {
18149	_ struct{} `type:"structure"`
18150
18151	// The ARN (Amazon Resource Name) of the replication group.
18152	ARN *string `type:"string"`
18153
18154	// A flag that enables encryption at-rest when set to true.
18155	//
18156	// You cannot modify the value of AtRestEncryptionEnabled after the cluster
18157	// is created. To enable encryption at-rest on a cluster you must set AtRestEncryptionEnabled
18158	// to true when you create a cluster.
18159	//
18160	// Required: Only available when creating a replication group in an Amazon VPC
18161	// using redis version 3.2.6, 4.x or later.
18162	//
18163	// Default: false
18164	AtRestEncryptionEnabled *bool `type:"boolean"`
18165
18166	// A flag that enables using an AuthToken (password) when issuing Redis commands.
18167	//
18168	// Default: false
18169	AuthTokenEnabled *bool `type:"boolean"`
18170
18171	// The date the auth token was last modified
18172	AuthTokenLastModifiedDate *time.Time `type:"timestamp"`
18173
18174	// Indicates the status of automatic failover for this Redis replication group.
18175	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
18176
18177	// The name of the compute and memory capacity node type for each node in the
18178	// replication group.
18179	CacheNodeType *string `type:"string"`
18180
18181	// A flag indicating whether or not this replication group is cluster enabled;
18182	// i.e., whether its data can be partitioned across multiple shards (API/CLI:
18183	// node groups).
18184	//
18185	// Valid values: true | false
18186	ClusterEnabled *bool `type:"boolean"`
18187
18188	// The configuration endpoint for this replication group. Use the configuration
18189	// endpoint to connect to this replication group.
18190	ConfigurationEndpoint *Endpoint `type:"structure"`
18191
18192	// The user supplied description of the replication group.
18193	Description *string `type:"string"`
18194
18195	// The name of the Global datastore and role of this replication group in the
18196	// Global datastore.
18197	GlobalReplicationGroupInfo *GlobalReplicationGroupInfo `type:"structure"`
18198
18199	// The ID of the KMS key used to encrypt the disk in the cluster.
18200	KmsKeyId *string `type:"string"`
18201
18202	// Returns the destination, format and type of the logs.
18203	LogDeliveryConfigurations []*LogDeliveryConfiguration `locationNameList:"LogDeliveryConfiguration" type:"list"`
18204
18205	// The names of all the cache clusters that are part of this replication group.
18206	MemberClusters []*string `locationNameList:"ClusterId" type:"list"`
18207
18208	// The outpost ARNs of the replication group's member clusters.
18209	MemberClustersOutpostArns []*string `locationNameList:"ReplicationGroupOutpostArn" type:"list"`
18210
18211	// A flag indicating if you have Multi-AZ enabled to enhance fault tolerance.
18212	// For more information, see Minimizing Downtime: Multi-AZ (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html)
18213	MultiAZ *string `type:"string" enum:"MultiAZStatus"`
18214
18215	// A list of node groups in this replication group. For Redis (cluster mode
18216	// disabled) replication groups, this is a single-element list. For Redis (cluster
18217	// mode enabled) replication groups, the list contains an entry for each node
18218	// group (shard).
18219	NodeGroups []*NodeGroup `locationNameList:"NodeGroup" type:"list"`
18220
18221	// A group of settings to be applied to the replication group, either immediately
18222	// or during the next maintenance window.
18223	PendingModifiedValues *ReplicationGroupPendingModifiedValues `type:"structure"`
18224
18225	// The date and time when the cluster was created.
18226	ReplicationGroupCreateTime *time.Time `type:"timestamp"`
18227
18228	// The identifier for the replication group.
18229	ReplicationGroupId *string `type:"string"`
18230
18231	// The number of days for which ElastiCache retains automatic cluster snapshots
18232	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
18233	// a snapshot that was taken today is retained for 5 days before being deleted.
18234	//
18235	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
18236	// off.
18237	SnapshotRetentionLimit *int64 `type:"integer"`
18238
18239	// The daily time range (in UTC) during which ElastiCache begins taking a daily
18240	// snapshot of your node group (shard).
18241	//
18242	// Example: 05:00-09:00
18243	//
18244	// If you do not specify this parameter, ElastiCache automatically chooses an
18245	// appropriate time range.
18246	//
18247	// This parameter is only valid if the Engine parameter is redis.
18248	SnapshotWindow *string `type:"string"`
18249
18250	// The cluster ID that is used as the daily snapshot source for the replication
18251	// group.
18252	SnapshottingClusterId *string `type:"string"`
18253
18254	// The current state of this replication group - creating, available, modifying,
18255	// deleting, create-failed, snapshotting.
18256	Status *string `type:"string"`
18257
18258	// A flag that enables in-transit encryption when set to true.
18259	//
18260	// You cannot modify the value of TransitEncryptionEnabled after the cluster
18261	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
18262	// to true when you create a cluster.
18263	//
18264	// Required: Only available when creating a replication group in an Amazon VPC
18265	// using redis version 3.2.6, 4.x or later.
18266	//
18267	// Default: false
18268	TransitEncryptionEnabled *bool `type:"boolean"`
18269
18270	// The list of user group IDs that have access to the replication group.
18271	UserGroupIds []*string `type:"list"`
18272}
18273
18274// String returns the string representation
18275func (s ReplicationGroup) String() string {
18276	return awsutil.Prettify(s)
18277}
18278
18279// GoString returns the string representation
18280func (s ReplicationGroup) GoString() string {
18281	return s.String()
18282}
18283
18284// SetARN sets the ARN field's value.
18285func (s *ReplicationGroup) SetARN(v string) *ReplicationGroup {
18286	s.ARN = &v
18287	return s
18288}
18289
18290// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
18291func (s *ReplicationGroup) SetAtRestEncryptionEnabled(v bool) *ReplicationGroup {
18292	s.AtRestEncryptionEnabled = &v
18293	return s
18294}
18295
18296// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
18297func (s *ReplicationGroup) SetAuthTokenEnabled(v bool) *ReplicationGroup {
18298	s.AuthTokenEnabled = &v
18299	return s
18300}
18301
18302// SetAuthTokenLastModifiedDate sets the AuthTokenLastModifiedDate field's value.
18303func (s *ReplicationGroup) SetAuthTokenLastModifiedDate(v time.Time) *ReplicationGroup {
18304	s.AuthTokenLastModifiedDate = &v
18305	return s
18306}
18307
18308// SetAutomaticFailover sets the AutomaticFailover field's value.
18309func (s *ReplicationGroup) SetAutomaticFailover(v string) *ReplicationGroup {
18310	s.AutomaticFailover = &v
18311	return s
18312}
18313
18314// SetCacheNodeType sets the CacheNodeType field's value.
18315func (s *ReplicationGroup) SetCacheNodeType(v string) *ReplicationGroup {
18316	s.CacheNodeType = &v
18317	return s
18318}
18319
18320// SetClusterEnabled sets the ClusterEnabled field's value.
18321func (s *ReplicationGroup) SetClusterEnabled(v bool) *ReplicationGroup {
18322	s.ClusterEnabled = &v
18323	return s
18324}
18325
18326// SetConfigurationEndpoint sets the ConfigurationEndpoint field's value.
18327func (s *ReplicationGroup) SetConfigurationEndpoint(v *Endpoint) *ReplicationGroup {
18328	s.ConfigurationEndpoint = v
18329	return s
18330}
18331
18332// SetDescription sets the Description field's value.
18333func (s *ReplicationGroup) SetDescription(v string) *ReplicationGroup {
18334	s.Description = &v
18335	return s
18336}
18337
18338// SetGlobalReplicationGroupInfo sets the GlobalReplicationGroupInfo field's value.
18339func (s *ReplicationGroup) SetGlobalReplicationGroupInfo(v *GlobalReplicationGroupInfo) *ReplicationGroup {
18340	s.GlobalReplicationGroupInfo = v
18341	return s
18342}
18343
18344// SetKmsKeyId sets the KmsKeyId field's value.
18345func (s *ReplicationGroup) SetKmsKeyId(v string) *ReplicationGroup {
18346	s.KmsKeyId = &v
18347	return s
18348}
18349
18350// SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
18351func (s *ReplicationGroup) SetLogDeliveryConfigurations(v []*LogDeliveryConfiguration) *ReplicationGroup {
18352	s.LogDeliveryConfigurations = v
18353	return s
18354}
18355
18356// SetMemberClusters sets the MemberClusters field's value.
18357func (s *ReplicationGroup) SetMemberClusters(v []*string) *ReplicationGroup {
18358	s.MemberClusters = v
18359	return s
18360}
18361
18362// SetMemberClustersOutpostArns sets the MemberClustersOutpostArns field's value.
18363func (s *ReplicationGroup) SetMemberClustersOutpostArns(v []*string) *ReplicationGroup {
18364	s.MemberClustersOutpostArns = v
18365	return s
18366}
18367
18368// SetMultiAZ sets the MultiAZ field's value.
18369func (s *ReplicationGroup) SetMultiAZ(v string) *ReplicationGroup {
18370	s.MultiAZ = &v
18371	return s
18372}
18373
18374// SetNodeGroups sets the NodeGroups field's value.
18375func (s *ReplicationGroup) SetNodeGroups(v []*NodeGroup) *ReplicationGroup {
18376	s.NodeGroups = v
18377	return s
18378}
18379
18380// SetPendingModifiedValues sets the PendingModifiedValues field's value.
18381func (s *ReplicationGroup) SetPendingModifiedValues(v *ReplicationGroupPendingModifiedValues) *ReplicationGroup {
18382	s.PendingModifiedValues = v
18383	return s
18384}
18385
18386// SetReplicationGroupCreateTime sets the ReplicationGroupCreateTime field's value.
18387func (s *ReplicationGroup) SetReplicationGroupCreateTime(v time.Time) *ReplicationGroup {
18388	s.ReplicationGroupCreateTime = &v
18389	return s
18390}
18391
18392// SetReplicationGroupId sets the ReplicationGroupId field's value.
18393func (s *ReplicationGroup) SetReplicationGroupId(v string) *ReplicationGroup {
18394	s.ReplicationGroupId = &v
18395	return s
18396}
18397
18398// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
18399func (s *ReplicationGroup) SetSnapshotRetentionLimit(v int64) *ReplicationGroup {
18400	s.SnapshotRetentionLimit = &v
18401	return s
18402}
18403
18404// SetSnapshotWindow sets the SnapshotWindow field's value.
18405func (s *ReplicationGroup) SetSnapshotWindow(v string) *ReplicationGroup {
18406	s.SnapshotWindow = &v
18407	return s
18408}
18409
18410// SetSnapshottingClusterId sets the SnapshottingClusterId field's value.
18411func (s *ReplicationGroup) SetSnapshottingClusterId(v string) *ReplicationGroup {
18412	s.SnapshottingClusterId = &v
18413	return s
18414}
18415
18416// SetStatus sets the Status field's value.
18417func (s *ReplicationGroup) SetStatus(v string) *ReplicationGroup {
18418	s.Status = &v
18419	return s
18420}
18421
18422// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
18423func (s *ReplicationGroup) SetTransitEncryptionEnabled(v bool) *ReplicationGroup {
18424	s.TransitEncryptionEnabled = &v
18425	return s
18426}
18427
18428// SetUserGroupIds sets the UserGroupIds field's value.
18429func (s *ReplicationGroup) SetUserGroupIds(v []*string) *ReplicationGroup {
18430	s.UserGroupIds = v
18431	return s
18432}
18433
18434// The settings to be applied to the Redis replication group, either immediately
18435// or during the next maintenance window.
18436type ReplicationGroupPendingModifiedValues struct {
18437	_ struct{} `type:"structure"`
18438
18439	// The auth token status
18440	AuthTokenStatus *string `type:"string" enum:"AuthTokenUpdateStatus"`
18441
18442	// Indicates the status of automatic failover for this Redis replication group.
18443	AutomaticFailoverStatus *string `type:"string" enum:"PendingAutomaticFailoverStatus"`
18444
18445	// The log delivery configurations being modified
18446	LogDeliveryConfigurations []*PendingLogDeliveryConfiguration `locationName:"PendingLogDeliveryConfiguration" type:"list"`
18447
18448	// The primary cluster ID that is applied immediately (if --apply-immediately
18449	// was specified), or during the next maintenance window.
18450	PrimaryClusterId *string `type:"string"`
18451
18452	// The status of an online resharding operation.
18453	Resharding *ReshardingStatus `type:"structure"`
18454
18455	// The user groups being modified.
18456	UserGroups *UserGroupsUpdateStatus `type:"structure"`
18457}
18458
18459// String returns the string representation
18460func (s ReplicationGroupPendingModifiedValues) String() string {
18461	return awsutil.Prettify(s)
18462}
18463
18464// GoString returns the string representation
18465func (s ReplicationGroupPendingModifiedValues) GoString() string {
18466	return s.String()
18467}
18468
18469// SetAuthTokenStatus sets the AuthTokenStatus field's value.
18470func (s *ReplicationGroupPendingModifiedValues) SetAuthTokenStatus(v string) *ReplicationGroupPendingModifiedValues {
18471	s.AuthTokenStatus = &v
18472	return s
18473}
18474
18475// SetAutomaticFailoverStatus sets the AutomaticFailoverStatus field's value.
18476func (s *ReplicationGroupPendingModifiedValues) SetAutomaticFailoverStatus(v string) *ReplicationGroupPendingModifiedValues {
18477	s.AutomaticFailoverStatus = &v
18478	return s
18479}
18480
18481// SetLogDeliveryConfigurations sets the LogDeliveryConfigurations field's value.
18482func (s *ReplicationGroupPendingModifiedValues) SetLogDeliveryConfigurations(v []*PendingLogDeliveryConfiguration) *ReplicationGroupPendingModifiedValues {
18483	s.LogDeliveryConfigurations = v
18484	return s
18485}
18486
18487// SetPrimaryClusterId sets the PrimaryClusterId field's value.
18488func (s *ReplicationGroupPendingModifiedValues) SetPrimaryClusterId(v string) *ReplicationGroupPendingModifiedValues {
18489	s.PrimaryClusterId = &v
18490	return s
18491}
18492
18493// SetResharding sets the Resharding field's value.
18494func (s *ReplicationGroupPendingModifiedValues) SetResharding(v *ReshardingStatus) *ReplicationGroupPendingModifiedValues {
18495	s.Resharding = v
18496	return s
18497}
18498
18499// SetUserGroups sets the UserGroups field's value.
18500func (s *ReplicationGroupPendingModifiedValues) SetUserGroups(v *UserGroupsUpdateStatus) *ReplicationGroupPendingModifiedValues {
18501	s.UserGroups = v
18502	return s
18503}
18504
18505// Represents the output of a PurchaseReservedCacheNodesOffering operation.
18506type ReservedCacheNode struct {
18507	_ struct{} `type:"structure"`
18508
18509	// The number of cache nodes that have been reserved.
18510	CacheNodeCount *int64 `type:"integer"`
18511
18512	// The cache node type for the reserved cache nodes.
18513	//
18514	// The following node types are supported by ElastiCache. Generally speaking,
18515	// the current generation types provide more memory and computational power
18516	// at lower cost when compared to their equivalent previous generation counterparts.
18517	//
18518	//    * General purpose: Current generation: M6g node types (available only
18519	//    for Redis engine version 5.0.6 onward and for Memcached engine version
18520	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
18521	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
18522	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
18523	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
18524	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
18525	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
18526	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
18527	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
18528	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
18529	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
18530	//    cache.m3.2xlarge
18531	//
18532	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
18533	//    cache.c1.xlarge
18534	//
18535	//    * Memory optimized: Current generation: R6g node types (available only
18536	//    for Redis engine version 5.0.6 onward and for Memcached engine version
18537	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
18538	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
18539	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
18540	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
18541	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
18542	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
18543	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
18544	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
18545	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
18546	//
18547	// Additional node type info
18548	//
18549	//    * All current generation instance types are created in Amazon VPC by default.
18550	//
18551	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
18552	//
18553	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
18554	//
18555	//    * Redis configuration variables appendonly and appendfsync are not supported
18556	//    on Redis version 2.8.22 and later.
18557	CacheNodeType *string `type:"string"`
18558
18559	// The duration of the reservation in seconds.
18560	Duration *int64 `type:"integer"`
18561
18562	// The fixed price charged for this reserved cache node.
18563	FixedPrice *float64 `type:"double"`
18564
18565	// The offering type of this reserved cache node.
18566	OfferingType *string `type:"string"`
18567
18568	// The description of the reserved cache node.
18569	ProductDescription *string `type:"string"`
18570
18571	// The recurring price charged to run this reserved cache node.
18572	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`
18573
18574	// The Amazon Resource Name (ARN) of the reserved cache node.
18575	//
18576	// Example: arn:aws:elasticache:us-east-1:123456789012:reserved-instance:ri-2017-03-27-08-33-25-582
18577	ReservationARN *string `type:"string"`
18578
18579	// The unique identifier for the reservation.
18580	ReservedCacheNodeId *string `type:"string"`
18581
18582	// The offering identifier.
18583	ReservedCacheNodesOfferingId *string `type:"string"`
18584
18585	// The time the reservation started.
18586	StartTime *time.Time `type:"timestamp"`
18587
18588	// The state of the reserved cache node.
18589	State *string `type:"string"`
18590
18591	// The hourly price charged for this reserved cache node.
18592	UsagePrice *float64 `type:"double"`
18593}
18594
18595// String returns the string representation
18596func (s ReservedCacheNode) String() string {
18597	return awsutil.Prettify(s)
18598}
18599
18600// GoString returns the string representation
18601func (s ReservedCacheNode) GoString() string {
18602	return s.String()
18603}
18604
18605// SetCacheNodeCount sets the CacheNodeCount field's value.
18606func (s *ReservedCacheNode) SetCacheNodeCount(v int64) *ReservedCacheNode {
18607	s.CacheNodeCount = &v
18608	return s
18609}
18610
18611// SetCacheNodeType sets the CacheNodeType field's value.
18612func (s *ReservedCacheNode) SetCacheNodeType(v string) *ReservedCacheNode {
18613	s.CacheNodeType = &v
18614	return s
18615}
18616
18617// SetDuration sets the Duration field's value.
18618func (s *ReservedCacheNode) SetDuration(v int64) *ReservedCacheNode {
18619	s.Duration = &v
18620	return s
18621}
18622
18623// SetFixedPrice sets the FixedPrice field's value.
18624func (s *ReservedCacheNode) SetFixedPrice(v float64) *ReservedCacheNode {
18625	s.FixedPrice = &v
18626	return s
18627}
18628
18629// SetOfferingType sets the OfferingType field's value.
18630func (s *ReservedCacheNode) SetOfferingType(v string) *ReservedCacheNode {
18631	s.OfferingType = &v
18632	return s
18633}
18634
18635// SetProductDescription sets the ProductDescription field's value.
18636func (s *ReservedCacheNode) SetProductDescription(v string) *ReservedCacheNode {
18637	s.ProductDescription = &v
18638	return s
18639}
18640
18641// SetRecurringCharges sets the RecurringCharges field's value.
18642func (s *ReservedCacheNode) SetRecurringCharges(v []*RecurringCharge) *ReservedCacheNode {
18643	s.RecurringCharges = v
18644	return s
18645}
18646
18647// SetReservationARN sets the ReservationARN field's value.
18648func (s *ReservedCacheNode) SetReservationARN(v string) *ReservedCacheNode {
18649	s.ReservationARN = &v
18650	return s
18651}
18652
18653// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
18654func (s *ReservedCacheNode) SetReservedCacheNodeId(v string) *ReservedCacheNode {
18655	s.ReservedCacheNodeId = &v
18656	return s
18657}
18658
18659// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
18660func (s *ReservedCacheNode) SetReservedCacheNodesOfferingId(v string) *ReservedCacheNode {
18661	s.ReservedCacheNodesOfferingId = &v
18662	return s
18663}
18664
18665// SetStartTime sets the StartTime field's value.
18666func (s *ReservedCacheNode) SetStartTime(v time.Time) *ReservedCacheNode {
18667	s.StartTime = &v
18668	return s
18669}
18670
18671// SetState sets the State field's value.
18672func (s *ReservedCacheNode) SetState(v string) *ReservedCacheNode {
18673	s.State = &v
18674	return s
18675}
18676
18677// SetUsagePrice sets the UsagePrice field's value.
18678func (s *ReservedCacheNode) SetUsagePrice(v float64) *ReservedCacheNode {
18679	s.UsagePrice = &v
18680	return s
18681}
18682
18683// Describes all of the attributes of a reserved cache node offering.
18684type ReservedCacheNodesOffering struct {
18685	_ struct{} `type:"structure"`
18686
18687	// The cache node type for the reserved cache node.
18688	//
18689	// The following node types are supported by ElastiCache. Generally speaking,
18690	// the current generation types provide more memory and computational power
18691	// at lower cost when compared to their equivalent previous generation counterparts.
18692	//
18693	//    * General purpose: Current generation: M6g node types (available only
18694	//    for Redis engine version 5.0.6 onward and for Memcached engine version
18695	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
18696	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
18697	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
18698	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
18699	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
18700	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
18701	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
18702	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
18703	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
18704	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
18705	//    cache.m3.2xlarge
18706	//
18707	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
18708	//    cache.c1.xlarge
18709	//
18710	//    * Memory optimized: Current generation: R6g node types (available only
18711	//    for Redis engine version 5.0.6 onward and for Memcached engine version
18712	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
18713	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
18714	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
18715	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
18716	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
18717	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
18718	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
18719	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
18720	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
18721	//
18722	// Additional node type info
18723	//
18724	//    * All current generation instance types are created in Amazon VPC by default.
18725	//
18726	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
18727	//
18728	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
18729	//
18730	//    * Redis configuration variables appendonly and appendfsync are not supported
18731	//    on Redis version 2.8.22 and later.
18732	CacheNodeType *string `type:"string"`
18733
18734	// The duration of the offering. in seconds.
18735	Duration *int64 `type:"integer"`
18736
18737	// The fixed price charged for this offering.
18738	FixedPrice *float64 `type:"double"`
18739
18740	// The offering type.
18741	OfferingType *string `type:"string"`
18742
18743	// The cache engine used by the offering.
18744	ProductDescription *string `type:"string"`
18745
18746	// The recurring price charged to run this reserved cache node.
18747	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`
18748
18749	// A unique identifier for the reserved cache node offering.
18750	ReservedCacheNodesOfferingId *string `type:"string"`
18751
18752	// The hourly price charged for this offering.
18753	UsagePrice *float64 `type:"double"`
18754}
18755
18756// String returns the string representation
18757func (s ReservedCacheNodesOffering) String() string {
18758	return awsutil.Prettify(s)
18759}
18760
18761// GoString returns the string representation
18762func (s ReservedCacheNodesOffering) GoString() string {
18763	return s.String()
18764}
18765
18766// SetCacheNodeType sets the CacheNodeType field's value.
18767func (s *ReservedCacheNodesOffering) SetCacheNodeType(v string) *ReservedCacheNodesOffering {
18768	s.CacheNodeType = &v
18769	return s
18770}
18771
18772// SetDuration sets the Duration field's value.
18773func (s *ReservedCacheNodesOffering) SetDuration(v int64) *ReservedCacheNodesOffering {
18774	s.Duration = &v
18775	return s
18776}
18777
18778// SetFixedPrice sets the FixedPrice field's value.
18779func (s *ReservedCacheNodesOffering) SetFixedPrice(v float64) *ReservedCacheNodesOffering {
18780	s.FixedPrice = &v
18781	return s
18782}
18783
18784// SetOfferingType sets the OfferingType field's value.
18785func (s *ReservedCacheNodesOffering) SetOfferingType(v string) *ReservedCacheNodesOffering {
18786	s.OfferingType = &v
18787	return s
18788}
18789
18790// SetProductDescription sets the ProductDescription field's value.
18791func (s *ReservedCacheNodesOffering) SetProductDescription(v string) *ReservedCacheNodesOffering {
18792	s.ProductDescription = &v
18793	return s
18794}
18795
18796// SetRecurringCharges sets the RecurringCharges field's value.
18797func (s *ReservedCacheNodesOffering) SetRecurringCharges(v []*RecurringCharge) *ReservedCacheNodesOffering {
18798	s.RecurringCharges = v
18799	return s
18800}
18801
18802// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
18803func (s *ReservedCacheNodesOffering) SetReservedCacheNodesOfferingId(v string) *ReservedCacheNodesOffering {
18804	s.ReservedCacheNodesOfferingId = &v
18805	return s
18806}
18807
18808// SetUsagePrice sets the UsagePrice field's value.
18809func (s *ReservedCacheNodesOffering) SetUsagePrice(v float64) *ReservedCacheNodesOffering {
18810	s.UsagePrice = &v
18811	return s
18812}
18813
18814// Represents the input of a ResetCacheParameterGroup operation.
18815type ResetCacheParameterGroupInput struct {
18816	_ struct{} `type:"structure"`
18817
18818	// The name of the cache parameter group to reset.
18819	//
18820	// CacheParameterGroupName is a required field
18821	CacheParameterGroupName *string `type:"string" required:"true"`
18822
18823	// An array of parameter names to reset to their default values. If ResetAllParameters
18824	// is true, do not use ParameterNameValues. If ResetAllParameters is false,
18825	// you must specify the name of at least one parameter to reset.
18826	ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list"`
18827
18828	// If true, all parameters in the cache parameter group are reset to their default
18829	// values. If false, only the parameters listed by ParameterNameValues are reset
18830	// to their default values.
18831	//
18832	// Valid values: true | false
18833	ResetAllParameters *bool `type:"boolean"`
18834}
18835
18836// String returns the string representation
18837func (s ResetCacheParameterGroupInput) String() string {
18838	return awsutil.Prettify(s)
18839}
18840
18841// GoString returns the string representation
18842func (s ResetCacheParameterGroupInput) GoString() string {
18843	return s.String()
18844}
18845
18846// Validate inspects the fields of the type to determine if they are valid.
18847func (s *ResetCacheParameterGroupInput) Validate() error {
18848	invalidParams := request.ErrInvalidParams{Context: "ResetCacheParameterGroupInput"}
18849	if s.CacheParameterGroupName == nil {
18850		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
18851	}
18852
18853	if invalidParams.Len() > 0 {
18854		return invalidParams
18855	}
18856	return nil
18857}
18858
18859// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
18860func (s *ResetCacheParameterGroupInput) SetCacheParameterGroupName(v string) *ResetCacheParameterGroupInput {
18861	s.CacheParameterGroupName = &v
18862	return s
18863}
18864
18865// SetParameterNameValues sets the ParameterNameValues field's value.
18866func (s *ResetCacheParameterGroupInput) SetParameterNameValues(v []*ParameterNameValue) *ResetCacheParameterGroupInput {
18867	s.ParameterNameValues = v
18868	return s
18869}
18870
18871// SetResetAllParameters sets the ResetAllParameters field's value.
18872func (s *ResetCacheParameterGroupInput) SetResetAllParameters(v bool) *ResetCacheParameterGroupInput {
18873	s.ResetAllParameters = &v
18874	return s
18875}
18876
18877// A list of PreferredAvailabilityZones objects that specifies the configuration
18878// of a node group in the resharded cluster.
18879type ReshardingConfiguration struct {
18880	_ struct{} `type:"structure"`
18881
18882	// Either the ElastiCache for Redis supplied 4-digit id or a user supplied id
18883	// for the node group these configuration values apply to.
18884	NodeGroupId *string `min:"1" type:"string"`
18885
18886	// A list of preferred availability zones for the nodes in this cluster.
18887	PreferredAvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`
18888}
18889
18890// String returns the string representation
18891func (s ReshardingConfiguration) String() string {
18892	return awsutil.Prettify(s)
18893}
18894
18895// GoString returns the string representation
18896func (s ReshardingConfiguration) GoString() string {
18897	return s.String()
18898}
18899
18900// Validate inspects the fields of the type to determine if they are valid.
18901func (s *ReshardingConfiguration) Validate() error {
18902	invalidParams := request.ErrInvalidParams{Context: "ReshardingConfiguration"}
18903	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
18904		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
18905	}
18906
18907	if invalidParams.Len() > 0 {
18908		return invalidParams
18909	}
18910	return nil
18911}
18912
18913// SetNodeGroupId sets the NodeGroupId field's value.
18914func (s *ReshardingConfiguration) SetNodeGroupId(v string) *ReshardingConfiguration {
18915	s.NodeGroupId = &v
18916	return s
18917}
18918
18919// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
18920func (s *ReshardingConfiguration) SetPreferredAvailabilityZones(v []*string) *ReshardingConfiguration {
18921	s.PreferredAvailabilityZones = v
18922	return s
18923}
18924
18925// The status of an online resharding operation.
18926type ReshardingStatus struct {
18927	_ struct{} `type:"structure"`
18928
18929	// Represents the progress of an online resharding operation.
18930	SlotMigration *SlotMigration `type:"structure"`
18931}
18932
18933// String returns the string representation
18934func (s ReshardingStatus) String() string {
18935	return awsutil.Prettify(s)
18936}
18937
18938// GoString returns the string representation
18939func (s ReshardingStatus) GoString() string {
18940	return s.String()
18941}
18942
18943// SetSlotMigration sets the SlotMigration field's value.
18944func (s *ReshardingStatus) SetSlotMigration(v *SlotMigration) *ReshardingStatus {
18945	s.SlotMigration = v
18946	return s
18947}
18948
18949// Represents the input of a RevokeCacheSecurityGroupIngress operation.
18950type RevokeCacheSecurityGroupIngressInput struct {
18951	_ struct{} `type:"structure"`
18952
18953	// The name of the cache security group to revoke ingress from.
18954	//
18955	// CacheSecurityGroupName is a required field
18956	CacheSecurityGroupName *string `type:"string" required:"true"`
18957
18958	// The name of the Amazon EC2 security group to revoke access from.
18959	//
18960	// EC2SecurityGroupName is a required field
18961	EC2SecurityGroupName *string `type:"string" required:"true"`
18962
18963	// The Amazon account number of the Amazon EC2 security group owner. Note that
18964	// this is not the same thing as an Amazon access key ID - you must provide
18965	// a valid Amazon account number for this parameter.
18966	//
18967	// EC2SecurityGroupOwnerId is a required field
18968	EC2SecurityGroupOwnerId *string `type:"string" required:"true"`
18969}
18970
18971// String returns the string representation
18972func (s RevokeCacheSecurityGroupIngressInput) String() string {
18973	return awsutil.Prettify(s)
18974}
18975
18976// GoString returns the string representation
18977func (s RevokeCacheSecurityGroupIngressInput) GoString() string {
18978	return s.String()
18979}
18980
18981// Validate inspects the fields of the type to determine if they are valid.
18982func (s *RevokeCacheSecurityGroupIngressInput) Validate() error {
18983	invalidParams := request.ErrInvalidParams{Context: "RevokeCacheSecurityGroupIngressInput"}
18984	if s.CacheSecurityGroupName == nil {
18985		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
18986	}
18987	if s.EC2SecurityGroupName == nil {
18988		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupName"))
18989	}
18990	if s.EC2SecurityGroupOwnerId == nil {
18991		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupOwnerId"))
18992	}
18993
18994	if invalidParams.Len() > 0 {
18995		return invalidParams
18996	}
18997	return nil
18998}
18999
19000// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
19001func (s *RevokeCacheSecurityGroupIngressInput) SetCacheSecurityGroupName(v string) *RevokeCacheSecurityGroupIngressInput {
19002	s.CacheSecurityGroupName = &v
19003	return s
19004}
19005
19006// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
19007func (s *RevokeCacheSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *RevokeCacheSecurityGroupIngressInput {
19008	s.EC2SecurityGroupName = &v
19009	return s
19010}
19011
19012// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
19013func (s *RevokeCacheSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *RevokeCacheSecurityGroupIngressInput {
19014	s.EC2SecurityGroupOwnerId = &v
19015	return s
19016}
19017
19018type RevokeCacheSecurityGroupIngressOutput struct {
19019	_ struct{} `type:"structure"`
19020
19021	// Represents the output of one of the following operations:
19022	//
19023	//    * AuthorizeCacheSecurityGroupIngress
19024	//
19025	//    * CreateCacheSecurityGroup
19026	//
19027	//    * RevokeCacheSecurityGroupIngress
19028	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
19029}
19030
19031// String returns the string representation
19032func (s RevokeCacheSecurityGroupIngressOutput) String() string {
19033	return awsutil.Prettify(s)
19034}
19035
19036// GoString returns the string representation
19037func (s RevokeCacheSecurityGroupIngressOutput) GoString() string {
19038	return s.String()
19039}
19040
19041// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
19042func (s *RevokeCacheSecurityGroupIngressOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *RevokeCacheSecurityGroupIngressOutput {
19043	s.CacheSecurityGroup = v
19044	return s
19045}
19046
19047// Represents a single cache security group and its status.
19048type SecurityGroupMembership struct {
19049	_ struct{} `type:"structure"`
19050
19051	// The identifier of the cache security group.
19052	SecurityGroupId *string `type:"string"`
19053
19054	// The status of the cache security group membership. The status changes whenever
19055	// a cache security group is modified, or when the cache security groups assigned
19056	// to a cluster are modified.
19057	Status *string `type:"string"`
19058}
19059
19060// String returns the string representation
19061func (s SecurityGroupMembership) String() string {
19062	return awsutil.Prettify(s)
19063}
19064
19065// GoString returns the string representation
19066func (s SecurityGroupMembership) GoString() string {
19067	return s.String()
19068}
19069
19070// SetSecurityGroupId sets the SecurityGroupId field's value.
19071func (s *SecurityGroupMembership) SetSecurityGroupId(v string) *SecurityGroupMembership {
19072	s.SecurityGroupId = &v
19073	return s
19074}
19075
19076// SetStatus sets the Status field's value.
19077func (s *SecurityGroupMembership) SetStatus(v string) *SecurityGroupMembership {
19078	s.Status = &v
19079	return s
19080}
19081
19082// An update that you can apply to your Redis clusters.
19083type ServiceUpdate struct {
19084	_ struct{} `type:"structure"`
19085
19086	// Indicates whether the service update will be automatically applied once the
19087	// recommended apply-by date has expired.
19088	AutoUpdateAfterRecommendedApplyByDate *bool `type:"boolean"`
19089
19090	// The Elasticache engine to which the update applies. Either Redis or Memcached
19091	Engine *string `type:"string"`
19092
19093	// The Elasticache engine version to which the update applies. Either Redis
19094	// or Memcached engine version
19095	EngineVersion *string `type:"string"`
19096
19097	// The estimated length of time the service update will take
19098	EstimatedUpdateTime *string `type:"string"`
19099
19100	// Provides details of the service update
19101	ServiceUpdateDescription *string `type:"string"`
19102
19103	// The date after which the service update is no longer available
19104	ServiceUpdateEndDate *time.Time `type:"timestamp"`
19105
19106	// The unique ID of the service update
19107	ServiceUpdateName *string `type:"string"`
19108
19109	// The recommendend date to apply the service update in order to ensure compliance.
19110	// For information on compliance, see Self-Service Security Updates for Compliance
19111	// (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-compliance.html#elasticache-compliance-self-service).
19112	ServiceUpdateRecommendedApplyByDate *time.Time `type:"timestamp"`
19113
19114	// The date when the service update is initially available
19115	ServiceUpdateReleaseDate *time.Time `type:"timestamp"`
19116
19117	// The severity of the service update
19118	ServiceUpdateSeverity *string `type:"string" enum:"ServiceUpdateSeverity"`
19119
19120	// The status of the service update
19121	ServiceUpdateStatus *string `type:"string" enum:"ServiceUpdateStatus"`
19122
19123	// Reflects the nature of the service update
19124	ServiceUpdateType *string `type:"string" enum:"ServiceUpdateType"`
19125}
19126
19127// String returns the string representation
19128func (s ServiceUpdate) String() string {
19129	return awsutil.Prettify(s)
19130}
19131
19132// GoString returns the string representation
19133func (s ServiceUpdate) GoString() string {
19134	return s.String()
19135}
19136
19137// SetAutoUpdateAfterRecommendedApplyByDate sets the AutoUpdateAfterRecommendedApplyByDate field's value.
19138func (s *ServiceUpdate) SetAutoUpdateAfterRecommendedApplyByDate(v bool) *ServiceUpdate {
19139	s.AutoUpdateAfterRecommendedApplyByDate = &v
19140	return s
19141}
19142
19143// SetEngine sets the Engine field's value.
19144func (s *ServiceUpdate) SetEngine(v string) *ServiceUpdate {
19145	s.Engine = &v
19146	return s
19147}
19148
19149// SetEngineVersion sets the EngineVersion field's value.
19150func (s *ServiceUpdate) SetEngineVersion(v string) *ServiceUpdate {
19151	s.EngineVersion = &v
19152	return s
19153}
19154
19155// SetEstimatedUpdateTime sets the EstimatedUpdateTime field's value.
19156func (s *ServiceUpdate) SetEstimatedUpdateTime(v string) *ServiceUpdate {
19157	s.EstimatedUpdateTime = &v
19158	return s
19159}
19160
19161// SetServiceUpdateDescription sets the ServiceUpdateDescription field's value.
19162func (s *ServiceUpdate) SetServiceUpdateDescription(v string) *ServiceUpdate {
19163	s.ServiceUpdateDescription = &v
19164	return s
19165}
19166
19167// SetServiceUpdateEndDate sets the ServiceUpdateEndDate field's value.
19168func (s *ServiceUpdate) SetServiceUpdateEndDate(v time.Time) *ServiceUpdate {
19169	s.ServiceUpdateEndDate = &v
19170	return s
19171}
19172
19173// SetServiceUpdateName sets the ServiceUpdateName field's value.
19174func (s *ServiceUpdate) SetServiceUpdateName(v string) *ServiceUpdate {
19175	s.ServiceUpdateName = &v
19176	return s
19177}
19178
19179// SetServiceUpdateRecommendedApplyByDate sets the ServiceUpdateRecommendedApplyByDate field's value.
19180func (s *ServiceUpdate) SetServiceUpdateRecommendedApplyByDate(v time.Time) *ServiceUpdate {
19181	s.ServiceUpdateRecommendedApplyByDate = &v
19182	return s
19183}
19184
19185// SetServiceUpdateReleaseDate sets the ServiceUpdateReleaseDate field's value.
19186func (s *ServiceUpdate) SetServiceUpdateReleaseDate(v time.Time) *ServiceUpdate {
19187	s.ServiceUpdateReleaseDate = &v
19188	return s
19189}
19190
19191// SetServiceUpdateSeverity sets the ServiceUpdateSeverity field's value.
19192func (s *ServiceUpdate) SetServiceUpdateSeverity(v string) *ServiceUpdate {
19193	s.ServiceUpdateSeverity = &v
19194	return s
19195}
19196
19197// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
19198func (s *ServiceUpdate) SetServiceUpdateStatus(v string) *ServiceUpdate {
19199	s.ServiceUpdateStatus = &v
19200	return s
19201}
19202
19203// SetServiceUpdateType sets the ServiceUpdateType field's value.
19204func (s *ServiceUpdate) SetServiceUpdateType(v string) *ServiceUpdate {
19205	s.ServiceUpdateType = &v
19206	return s
19207}
19208
19209// Represents the progress of an online resharding operation.
19210type SlotMigration struct {
19211	_ struct{} `type:"structure"`
19212
19213	// The percentage of the slot migration that is complete.
19214	ProgressPercentage *float64 `type:"double"`
19215}
19216
19217// String returns the string representation
19218func (s SlotMigration) String() string {
19219	return awsutil.Prettify(s)
19220}
19221
19222// GoString returns the string representation
19223func (s SlotMigration) GoString() string {
19224	return s.String()
19225}
19226
19227// SetProgressPercentage sets the ProgressPercentage field's value.
19228func (s *SlotMigration) SetProgressPercentage(v float64) *SlotMigration {
19229	s.ProgressPercentage = &v
19230	return s
19231}
19232
19233// Represents a copy of an entire Redis cluster as of the time when the snapshot
19234// was taken.
19235type Snapshot struct {
19236	_ struct{} `type:"structure"`
19237
19238	// The ARN (Amazon Resource Name) of the snapshot.
19239	ARN *string `type:"string"`
19240
19241	// This parameter is currently disabled.
19242	AutoMinorVersionUpgrade *bool `type:"boolean"`
19243
19244	// Indicates the status of automatic failover for the source Redis replication
19245	// group.
19246	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
19247
19248	// The date and time when the source cluster was created.
19249	CacheClusterCreateTime *time.Time `type:"timestamp"`
19250
19251	// The user-supplied identifier of the source cluster.
19252	CacheClusterId *string `type:"string"`
19253
19254	// The name of the compute and memory capacity node type for the source cluster.
19255	//
19256	// The following node types are supported by ElastiCache. Generally speaking,
19257	// the current generation types provide more memory and computational power
19258	// at lower cost when compared to their equivalent previous generation counterparts.
19259	//
19260	//    * General purpose: Current generation: M6g node types (available only
19261	//    for Redis engine version 5.0.6 onward and for Memcached engine version
19262	//    1.5.16 onward). cache.m6g.large, cache.m6g.xlarge, cache.m6g.2xlarge,
19263	//    cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge, cache.m6g.16xlarge
19264	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
19265	//    M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge,
19266	//    cache.m5.12xlarge, cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge,
19267	//    cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro,
19268	//    cache.t3.small, cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small,
19269	//    cache.t2.medium Previous generation: (not recommended) T1 node types:
19270	//    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,
19271	//    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,
19272	//    cache.m3.2xlarge
19273	//
19274	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
19275	//    cache.c1.xlarge
19276	//
19277	//    * Memory optimized: Current generation: R6g node types (available only
19278	//    for Redis engine version 5.0.6 onward and for Memcached engine version
19279	//    1.5.16 onward). cache.r6g.large, cache.r6g.xlarge, cache.r6g.2xlarge,
19280	//    cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge, cache.r6g.16xlarge
19281	//    For region availability, see Supported Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)
19282	//    R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge,
19283	//    cache.r5.12xlarge, cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge,
19284	//    cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge
19285	//    Previous generation: (not recommended) M2 node types: cache.m2.xlarge,
19286	//    cache.m2.2xlarge, cache.m2.4xlarge R3 node types: cache.r3.large, cache.r3.xlarge,
19287	//    cache.r3.2xlarge, cache.r3.4xlarge, cache.r3.8xlarge
19288	//
19289	// Additional node type info
19290	//
19291	//    * All current generation instance types are created in Amazon VPC by default.
19292	//
19293	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
19294	//
19295	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
19296	//
19297	//    * Redis configuration variables appendonly and appendfsync are not supported
19298	//    on Redis version 2.8.22 and later.
19299	CacheNodeType *string `type:"string"`
19300
19301	// The cache parameter group that is associated with the source cluster.
19302	CacheParameterGroupName *string `type:"string"`
19303
19304	// The name of the cache subnet group associated with the source cluster.
19305	CacheSubnetGroupName *string `type:"string"`
19306
19307	// The name of the cache engine (memcached or redis) used by the source cluster.
19308	Engine *string `type:"string"`
19309
19310	// The version of the cache engine version that is used by the source cluster.
19311	EngineVersion *string `type:"string"`
19312
19313	// The ID of the KMS key used to encrypt the snapshot.
19314	KmsKeyId *string `type:"string"`
19315
19316	// A list of the cache nodes in the source cluster.
19317	NodeSnapshots []*NodeSnapshot `locationNameList:"NodeSnapshot" type:"list"`
19318
19319	// The number of cache nodes in the source cluster.
19320	//
19321	// For clusters running Redis, this value must be 1. For clusters running Memcached,
19322	// this value must be between 1 and 40.
19323	NumCacheNodes *int64 `type:"integer"`
19324
19325	// The number of node groups (shards) in this snapshot. When restoring from
19326	// a snapshot, the number of node groups (shards) in the snapshot and in the
19327	// restored replication group must be the same.
19328	NumNodeGroups *int64 `type:"integer"`
19329
19330	// The port number used by each cache nodes in the source cluster.
19331	Port *int64 `type:"integer"`
19332
19333	// The name of the Availability Zone in which the source cluster is located.
19334	PreferredAvailabilityZone *string `type:"string"`
19335
19336	// Specifies the weekly time range during which maintenance on the cluster is
19337	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
19338	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
19339	//
19340	// Valid values for ddd are:
19341	//
19342	//    * sun
19343	//
19344	//    * mon
19345	//
19346	//    * tue
19347	//
19348	//    * wed
19349	//
19350	//    * thu
19351	//
19352	//    * fri
19353	//
19354	//    * sat
19355	//
19356	// Example: sun:23:00-mon:01:30
19357	PreferredMaintenanceWindow *string `type:"string"`
19358
19359	// The ARN (Amazon Resource Name) of the preferred outpost.
19360	PreferredOutpostArn *string `type:"string"`
19361
19362	// A description of the source replication group.
19363	ReplicationGroupDescription *string `type:"string"`
19364
19365	// The unique identifier of the source replication group.
19366	ReplicationGroupId *string `type:"string"`
19367
19368	// The name of a snapshot. For an automatic snapshot, the name is system-generated.
19369	// For a manual snapshot, this is the user-provided name.
19370	SnapshotName *string `type:"string"`
19371
19372	// For an automatic snapshot, the number of days for which ElastiCache retains
19373	// the snapshot before deleting it.
19374	//
19375	// For manual snapshots, this field reflects the SnapshotRetentionLimit for
19376	// the source cluster when the snapshot was created. This field is otherwise
19377	// ignored: Manual snapshots do not expire, and can only be deleted using the
19378	// DeleteSnapshot operation.
19379	//
19380	// Important If the value of SnapshotRetentionLimit is set to zero (0), backups
19381	// are turned off.
19382	SnapshotRetentionLimit *int64 `type:"integer"`
19383
19384	// Indicates whether the snapshot is from an automatic backup (automated) or
19385	// was created manually (manual).
19386	SnapshotSource *string `type:"string"`
19387
19388	// The status of the snapshot. Valid values: creating | available | restoring
19389	// | copying | deleting.
19390	SnapshotStatus *string `type:"string"`
19391
19392	// The daily time range during which ElastiCache takes daily snapshots of the
19393	// source cluster.
19394	SnapshotWindow *string `type:"string"`
19395
19396	// The Amazon Resource Name (ARN) for the topic used by the source cluster for
19397	// publishing notifications.
19398	TopicArn *string `type:"string"`
19399
19400	// The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet
19401	// group for the source cluster.
19402	VpcId *string `type:"string"`
19403}
19404
19405// String returns the string representation
19406func (s Snapshot) String() string {
19407	return awsutil.Prettify(s)
19408}
19409
19410// GoString returns the string representation
19411func (s Snapshot) GoString() string {
19412	return s.String()
19413}
19414
19415// SetARN sets the ARN field's value.
19416func (s *Snapshot) SetARN(v string) *Snapshot {
19417	s.ARN = &v
19418	return s
19419}
19420
19421// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
19422func (s *Snapshot) SetAutoMinorVersionUpgrade(v bool) *Snapshot {
19423	s.AutoMinorVersionUpgrade = &v
19424	return s
19425}
19426
19427// SetAutomaticFailover sets the AutomaticFailover field's value.
19428func (s *Snapshot) SetAutomaticFailover(v string) *Snapshot {
19429	s.AutomaticFailover = &v
19430	return s
19431}
19432
19433// SetCacheClusterCreateTime sets the CacheClusterCreateTime field's value.
19434func (s *Snapshot) SetCacheClusterCreateTime(v time.Time) *Snapshot {
19435	s.CacheClusterCreateTime = &v
19436	return s
19437}
19438
19439// SetCacheClusterId sets the CacheClusterId field's value.
19440func (s *Snapshot) SetCacheClusterId(v string) *Snapshot {
19441	s.CacheClusterId = &v
19442	return s
19443}
19444
19445// SetCacheNodeType sets the CacheNodeType field's value.
19446func (s *Snapshot) SetCacheNodeType(v string) *Snapshot {
19447	s.CacheNodeType = &v
19448	return s
19449}
19450
19451// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
19452func (s *Snapshot) SetCacheParameterGroupName(v string) *Snapshot {
19453	s.CacheParameterGroupName = &v
19454	return s
19455}
19456
19457// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
19458func (s *Snapshot) SetCacheSubnetGroupName(v string) *Snapshot {
19459	s.CacheSubnetGroupName = &v
19460	return s
19461}
19462
19463// SetEngine sets the Engine field's value.
19464func (s *Snapshot) SetEngine(v string) *Snapshot {
19465	s.Engine = &v
19466	return s
19467}
19468
19469// SetEngineVersion sets the EngineVersion field's value.
19470func (s *Snapshot) SetEngineVersion(v string) *Snapshot {
19471	s.EngineVersion = &v
19472	return s
19473}
19474
19475// SetKmsKeyId sets the KmsKeyId field's value.
19476func (s *Snapshot) SetKmsKeyId(v string) *Snapshot {
19477	s.KmsKeyId = &v
19478	return s
19479}
19480
19481// SetNodeSnapshots sets the NodeSnapshots field's value.
19482func (s *Snapshot) SetNodeSnapshots(v []*NodeSnapshot) *Snapshot {
19483	s.NodeSnapshots = v
19484	return s
19485}
19486
19487// SetNumCacheNodes sets the NumCacheNodes field's value.
19488func (s *Snapshot) SetNumCacheNodes(v int64) *Snapshot {
19489	s.NumCacheNodes = &v
19490	return s
19491}
19492
19493// SetNumNodeGroups sets the NumNodeGroups field's value.
19494func (s *Snapshot) SetNumNodeGroups(v int64) *Snapshot {
19495	s.NumNodeGroups = &v
19496	return s
19497}
19498
19499// SetPort sets the Port field's value.
19500func (s *Snapshot) SetPort(v int64) *Snapshot {
19501	s.Port = &v
19502	return s
19503}
19504
19505// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
19506func (s *Snapshot) SetPreferredAvailabilityZone(v string) *Snapshot {
19507	s.PreferredAvailabilityZone = &v
19508	return s
19509}
19510
19511// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
19512func (s *Snapshot) SetPreferredMaintenanceWindow(v string) *Snapshot {
19513	s.PreferredMaintenanceWindow = &v
19514	return s
19515}
19516
19517// SetPreferredOutpostArn sets the PreferredOutpostArn field's value.
19518func (s *Snapshot) SetPreferredOutpostArn(v string) *Snapshot {
19519	s.PreferredOutpostArn = &v
19520	return s
19521}
19522
19523// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
19524func (s *Snapshot) SetReplicationGroupDescription(v string) *Snapshot {
19525	s.ReplicationGroupDescription = &v
19526	return s
19527}
19528
19529// SetReplicationGroupId sets the ReplicationGroupId field's value.
19530func (s *Snapshot) SetReplicationGroupId(v string) *Snapshot {
19531	s.ReplicationGroupId = &v
19532	return s
19533}
19534
19535// SetSnapshotName sets the SnapshotName field's value.
19536func (s *Snapshot) SetSnapshotName(v string) *Snapshot {
19537	s.SnapshotName = &v
19538	return s
19539}
19540
19541// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
19542func (s *Snapshot) SetSnapshotRetentionLimit(v int64) *Snapshot {
19543	s.SnapshotRetentionLimit = &v
19544	return s
19545}
19546
19547// SetSnapshotSource sets the SnapshotSource field's value.
19548func (s *Snapshot) SetSnapshotSource(v string) *Snapshot {
19549	s.SnapshotSource = &v
19550	return s
19551}
19552
19553// SetSnapshotStatus sets the SnapshotStatus field's value.
19554func (s *Snapshot) SetSnapshotStatus(v string) *Snapshot {
19555	s.SnapshotStatus = &v
19556	return s
19557}
19558
19559// SetSnapshotWindow sets the SnapshotWindow field's value.
19560func (s *Snapshot) SetSnapshotWindow(v string) *Snapshot {
19561	s.SnapshotWindow = &v
19562	return s
19563}
19564
19565// SetTopicArn sets the TopicArn field's value.
19566func (s *Snapshot) SetTopicArn(v string) *Snapshot {
19567	s.TopicArn = &v
19568	return s
19569}
19570
19571// SetVpcId sets the VpcId field's value.
19572func (s *Snapshot) SetVpcId(v string) *Snapshot {
19573	s.VpcId = &v
19574	return s
19575}
19576
19577type StartMigrationInput struct {
19578	_ struct{} `type:"structure"`
19579
19580	// List of endpoints from which data should be migrated. For Redis (cluster
19581	// mode disabled), list should have only one element.
19582	//
19583	// CustomerNodeEndpointList is a required field
19584	CustomerNodeEndpointList []*CustomerNodeEndpoint `type:"list" required:"true"`
19585
19586	// The ID of the replication group to which data should be migrated.
19587	//
19588	// ReplicationGroupId is a required field
19589	ReplicationGroupId *string `type:"string" required:"true"`
19590}
19591
19592// String returns the string representation
19593func (s StartMigrationInput) String() string {
19594	return awsutil.Prettify(s)
19595}
19596
19597// GoString returns the string representation
19598func (s StartMigrationInput) GoString() string {
19599	return s.String()
19600}
19601
19602// Validate inspects the fields of the type to determine if they are valid.
19603func (s *StartMigrationInput) Validate() error {
19604	invalidParams := request.ErrInvalidParams{Context: "StartMigrationInput"}
19605	if s.CustomerNodeEndpointList == nil {
19606		invalidParams.Add(request.NewErrParamRequired("CustomerNodeEndpointList"))
19607	}
19608	if s.ReplicationGroupId == nil {
19609		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
19610	}
19611
19612	if invalidParams.Len() > 0 {
19613		return invalidParams
19614	}
19615	return nil
19616}
19617
19618// SetCustomerNodeEndpointList sets the CustomerNodeEndpointList field's value.
19619func (s *StartMigrationInput) SetCustomerNodeEndpointList(v []*CustomerNodeEndpoint) *StartMigrationInput {
19620	s.CustomerNodeEndpointList = v
19621	return s
19622}
19623
19624// SetReplicationGroupId sets the ReplicationGroupId field's value.
19625func (s *StartMigrationInput) SetReplicationGroupId(v string) *StartMigrationInput {
19626	s.ReplicationGroupId = &v
19627	return s
19628}
19629
19630type StartMigrationOutput struct {
19631	_ struct{} `type:"structure"`
19632
19633	// Contains all of the attributes of a specific Redis replication group.
19634	ReplicationGroup *ReplicationGroup `type:"structure"`
19635}
19636
19637// String returns the string representation
19638func (s StartMigrationOutput) String() string {
19639	return awsutil.Prettify(s)
19640}
19641
19642// GoString returns the string representation
19643func (s StartMigrationOutput) GoString() string {
19644	return s.String()
19645}
19646
19647// SetReplicationGroup sets the ReplicationGroup field's value.
19648func (s *StartMigrationOutput) SetReplicationGroup(v *ReplicationGroup) *StartMigrationOutput {
19649	s.ReplicationGroup = v
19650	return s
19651}
19652
19653// Represents the subnet associated with a cluster. This parameter refers to
19654// subnets defined in Amazon Virtual Private Cloud (Amazon VPC) and used with
19655// ElastiCache.
19656type Subnet struct {
19657	_ struct{} `type:"structure"`
19658
19659	// The Availability Zone associated with the subnet.
19660	SubnetAvailabilityZone *AvailabilityZone `type:"structure"`
19661
19662	// The unique identifier for the subnet.
19663	SubnetIdentifier *string `type:"string"`
19664
19665	// The outpost ARN of the subnet.
19666	SubnetOutpost *SubnetOutpost `type:"structure"`
19667}
19668
19669// String returns the string representation
19670func (s Subnet) String() string {
19671	return awsutil.Prettify(s)
19672}
19673
19674// GoString returns the string representation
19675func (s Subnet) GoString() string {
19676	return s.String()
19677}
19678
19679// SetSubnetAvailabilityZone sets the SubnetAvailabilityZone field's value.
19680func (s *Subnet) SetSubnetAvailabilityZone(v *AvailabilityZone) *Subnet {
19681	s.SubnetAvailabilityZone = v
19682	return s
19683}
19684
19685// SetSubnetIdentifier sets the SubnetIdentifier field's value.
19686func (s *Subnet) SetSubnetIdentifier(v string) *Subnet {
19687	s.SubnetIdentifier = &v
19688	return s
19689}
19690
19691// SetSubnetOutpost sets the SubnetOutpost field's value.
19692func (s *Subnet) SetSubnetOutpost(v *SubnetOutpost) *Subnet {
19693	s.SubnetOutpost = v
19694	return s
19695}
19696
19697// The ID of the outpost subnet.
19698type SubnetOutpost struct {
19699	_ struct{} `type:"structure"`
19700
19701	// The outpost ARN of the subnet.
19702	SubnetOutpostArn *string `type:"string"`
19703}
19704
19705// String returns the string representation
19706func (s SubnetOutpost) String() string {
19707	return awsutil.Prettify(s)
19708}
19709
19710// GoString returns the string representation
19711func (s SubnetOutpost) GoString() string {
19712	return s.String()
19713}
19714
19715// SetSubnetOutpostArn sets the SubnetOutpostArn field's value.
19716func (s *SubnetOutpost) SetSubnetOutpostArn(v string) *SubnetOutpost {
19717	s.SubnetOutpostArn = &v
19718	return s
19719}
19720
19721// A tag that can be added to an ElastiCache cluster or replication group. Tags
19722// are composed of a Key/Value pair. You can use tags to categorize and track
19723// all your ElastiCache resources, with the exception of global replication
19724// group. When you add or remove tags on replication groups, those actions will
19725// be replicated to all nodes in the replication group. A tag with a null Value
19726// is permitted.
19727type Tag struct {
19728	_ struct{} `type:"structure"`
19729
19730	// The key for the tag. May not be null.
19731	Key *string `type:"string"`
19732
19733	// The tag's value. May be null.
19734	Value *string `type:"string"`
19735}
19736
19737// String returns the string representation
19738func (s Tag) String() string {
19739	return awsutil.Prettify(s)
19740}
19741
19742// GoString returns the string representation
19743func (s Tag) GoString() string {
19744	return s.String()
19745}
19746
19747// SetKey sets the Key field's value.
19748func (s *Tag) SetKey(v string) *Tag {
19749	s.Key = &v
19750	return s
19751}
19752
19753// SetValue sets the Value field's value.
19754func (s *Tag) SetValue(v string) *Tag {
19755	s.Value = &v
19756	return s
19757}
19758
19759// Represents the output from the AddTagsToResource, ListTagsForResource, and
19760// RemoveTagsFromResource operations.
19761type TagListMessage struct {
19762	_ struct{} `type:"structure"`
19763
19764	// A list of tags as key-value pairs.
19765	TagList []*Tag `locationNameList:"Tag" type:"list"`
19766}
19767
19768// String returns the string representation
19769func (s TagListMessage) String() string {
19770	return awsutil.Prettify(s)
19771}
19772
19773// GoString returns the string representation
19774func (s TagListMessage) GoString() string {
19775	return s.String()
19776}
19777
19778// SetTagList sets the TagList field's value.
19779func (s *TagListMessage) SetTagList(v []*Tag) *TagListMessage {
19780	s.TagList = v
19781	return s
19782}
19783
19784type TestFailoverInput struct {
19785	_ struct{} `type:"structure"`
19786
19787	// The name of the node group (called shard in the console) in this replication
19788	// group on which automatic failover is to be tested. You may test automatic
19789	// failover on up to 5 node groups in any rolling 24-hour period.
19790	//
19791	// NodeGroupId is a required field
19792	NodeGroupId *string `min:"1" type:"string" required:"true"`
19793
19794	// The name of the replication group (console: cluster) whose automatic failover
19795	// is being tested by this operation.
19796	//
19797	// ReplicationGroupId is a required field
19798	ReplicationGroupId *string `type:"string" required:"true"`
19799}
19800
19801// String returns the string representation
19802func (s TestFailoverInput) String() string {
19803	return awsutil.Prettify(s)
19804}
19805
19806// GoString returns the string representation
19807func (s TestFailoverInput) GoString() string {
19808	return s.String()
19809}
19810
19811// Validate inspects the fields of the type to determine if they are valid.
19812func (s *TestFailoverInput) Validate() error {
19813	invalidParams := request.ErrInvalidParams{Context: "TestFailoverInput"}
19814	if s.NodeGroupId == nil {
19815		invalidParams.Add(request.NewErrParamRequired("NodeGroupId"))
19816	}
19817	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
19818		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
19819	}
19820	if s.ReplicationGroupId == nil {
19821		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
19822	}
19823
19824	if invalidParams.Len() > 0 {
19825		return invalidParams
19826	}
19827	return nil
19828}
19829
19830// SetNodeGroupId sets the NodeGroupId field's value.
19831func (s *TestFailoverInput) SetNodeGroupId(v string) *TestFailoverInput {
19832	s.NodeGroupId = &v
19833	return s
19834}
19835
19836// SetReplicationGroupId sets the ReplicationGroupId field's value.
19837func (s *TestFailoverInput) SetReplicationGroupId(v string) *TestFailoverInput {
19838	s.ReplicationGroupId = &v
19839	return s
19840}
19841
19842type TestFailoverOutput struct {
19843	_ struct{} `type:"structure"`
19844
19845	// Contains all of the attributes of a specific Redis replication group.
19846	ReplicationGroup *ReplicationGroup `type:"structure"`
19847}
19848
19849// String returns the string representation
19850func (s TestFailoverOutput) String() string {
19851	return awsutil.Prettify(s)
19852}
19853
19854// GoString returns the string representation
19855func (s TestFailoverOutput) GoString() string {
19856	return s.String()
19857}
19858
19859// SetReplicationGroup sets the ReplicationGroup field's value.
19860func (s *TestFailoverOutput) SetReplicationGroup(v *ReplicationGroup) *TestFailoverOutput {
19861	s.ReplicationGroup = v
19862	return s
19863}
19864
19865// Filters update actions from the service updates that are in available status
19866// during the time range.
19867type TimeRangeFilter struct {
19868	_ struct{} `type:"structure"`
19869
19870	// The end time of the time range filter
19871	EndTime *time.Time `type:"timestamp"`
19872
19873	// The start time of the time range filter
19874	StartTime *time.Time `type:"timestamp"`
19875}
19876
19877// String returns the string representation
19878func (s TimeRangeFilter) String() string {
19879	return awsutil.Prettify(s)
19880}
19881
19882// GoString returns the string representation
19883func (s TimeRangeFilter) GoString() string {
19884	return s.String()
19885}
19886
19887// SetEndTime sets the EndTime field's value.
19888func (s *TimeRangeFilter) SetEndTime(v time.Time) *TimeRangeFilter {
19889	s.EndTime = &v
19890	return s
19891}
19892
19893// SetStartTime sets the StartTime field's value.
19894func (s *TimeRangeFilter) SetStartTime(v time.Time) *TimeRangeFilter {
19895	s.StartTime = &v
19896	return s
19897}
19898
19899// Update action that has failed to be processed for the corresponding apply/stop
19900// request
19901type UnprocessedUpdateAction struct {
19902	_ struct{} `type:"structure"`
19903
19904	// The ID of the cache cluster
19905	CacheClusterId *string `type:"string"`
19906
19907	// The error message that describes the reason the request was not processed
19908	ErrorMessage *string `type:"string"`
19909
19910	// The error type for requests that are not processed
19911	ErrorType *string `type:"string"`
19912
19913	// The replication group ID
19914	ReplicationGroupId *string `type:"string"`
19915
19916	// The unique ID of the service update
19917	ServiceUpdateName *string `type:"string"`
19918}
19919
19920// String returns the string representation
19921func (s UnprocessedUpdateAction) String() string {
19922	return awsutil.Prettify(s)
19923}
19924
19925// GoString returns the string representation
19926func (s UnprocessedUpdateAction) GoString() string {
19927	return s.String()
19928}
19929
19930// SetCacheClusterId sets the CacheClusterId field's value.
19931func (s *UnprocessedUpdateAction) SetCacheClusterId(v string) *UnprocessedUpdateAction {
19932	s.CacheClusterId = &v
19933	return s
19934}
19935
19936// SetErrorMessage sets the ErrorMessage field's value.
19937func (s *UnprocessedUpdateAction) SetErrorMessage(v string) *UnprocessedUpdateAction {
19938	s.ErrorMessage = &v
19939	return s
19940}
19941
19942// SetErrorType sets the ErrorType field's value.
19943func (s *UnprocessedUpdateAction) SetErrorType(v string) *UnprocessedUpdateAction {
19944	s.ErrorType = &v
19945	return s
19946}
19947
19948// SetReplicationGroupId sets the ReplicationGroupId field's value.
19949func (s *UnprocessedUpdateAction) SetReplicationGroupId(v string) *UnprocessedUpdateAction {
19950	s.ReplicationGroupId = &v
19951	return s
19952}
19953
19954// SetServiceUpdateName sets the ServiceUpdateName field's value.
19955func (s *UnprocessedUpdateAction) SetServiceUpdateName(v string) *UnprocessedUpdateAction {
19956	s.ServiceUpdateName = &v
19957	return s
19958}
19959
19960// The status of the service update for a specific replication group
19961type UpdateAction struct {
19962	_ struct{} `type:"structure"`
19963
19964	// The ID of the cache cluster
19965	CacheClusterId *string `type:"string"`
19966
19967	// The status of the service update on the cache node
19968	CacheNodeUpdateStatus []*CacheNodeUpdateStatus `locationNameList:"CacheNodeUpdateStatus" type:"list"`
19969
19970	// The Elasticache engine to which the update applies. Either Redis or Memcached
19971	Engine *string `type:"string"`
19972
19973	// The estimated length of time for the update to complete
19974	EstimatedUpdateTime *string `type:"string"`
19975
19976	// The status of the service update on the node group
19977	NodeGroupUpdateStatus []*NodeGroupUpdateStatus `locationNameList:"NodeGroupUpdateStatus" type:"list"`
19978
19979	// The progress of the service update on the replication group
19980	NodesUpdated *string `type:"string"`
19981
19982	// The ID of the replication group
19983	ReplicationGroupId *string `type:"string"`
19984
19985	// The unique ID of the service update
19986	ServiceUpdateName *string `type:"string"`
19987
19988	// The recommended date to apply the service update to ensure compliance. For
19989	// information on compliance, see Self-Service Security Updates for Compliance
19990	// (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-compliance.html#elasticache-compliance-self-service).
19991	ServiceUpdateRecommendedApplyByDate *time.Time `type:"timestamp"`
19992
19993	// The date the update is first available
19994	ServiceUpdateReleaseDate *time.Time `type:"timestamp"`
19995
19996	// The severity of the service update
19997	ServiceUpdateSeverity *string `type:"string" enum:"ServiceUpdateSeverity"`
19998
19999	// The status of the service update
20000	ServiceUpdateStatus *string `type:"string" enum:"ServiceUpdateStatus"`
20001
20002	// Reflects the nature of the service update
20003	ServiceUpdateType *string `type:"string" enum:"ServiceUpdateType"`
20004
20005	// If yes, all nodes in the replication group have been updated by the recommended
20006	// apply-by date. If no, at least one node in the replication group have not
20007	// been updated by the recommended apply-by date. If N/A, the replication group
20008	// was created after the recommended apply-by date.
20009	SlaMet *string `type:"string" enum:"SlaMet"`
20010
20011	// The date that the service update is available to a replication group
20012	UpdateActionAvailableDate *time.Time `type:"timestamp"`
20013
20014	// The status of the update action
20015	UpdateActionStatus *string `type:"string" enum:"UpdateActionStatus"`
20016
20017	// The date when the UpdateActionStatus was last modified
20018	UpdateActionStatusModifiedDate *time.Time `type:"timestamp"`
20019}
20020
20021// String returns the string representation
20022func (s UpdateAction) String() string {
20023	return awsutil.Prettify(s)
20024}
20025
20026// GoString returns the string representation
20027func (s UpdateAction) GoString() string {
20028	return s.String()
20029}
20030
20031// SetCacheClusterId sets the CacheClusterId field's value.
20032func (s *UpdateAction) SetCacheClusterId(v string) *UpdateAction {
20033	s.CacheClusterId = &v
20034	return s
20035}
20036
20037// SetCacheNodeUpdateStatus sets the CacheNodeUpdateStatus field's value.
20038func (s *UpdateAction) SetCacheNodeUpdateStatus(v []*CacheNodeUpdateStatus) *UpdateAction {
20039	s.CacheNodeUpdateStatus = v
20040	return s
20041}
20042
20043// SetEngine sets the Engine field's value.
20044func (s *UpdateAction) SetEngine(v string) *UpdateAction {
20045	s.Engine = &v
20046	return s
20047}
20048
20049// SetEstimatedUpdateTime sets the EstimatedUpdateTime field's value.
20050func (s *UpdateAction) SetEstimatedUpdateTime(v string) *UpdateAction {
20051	s.EstimatedUpdateTime = &v
20052	return s
20053}
20054
20055// SetNodeGroupUpdateStatus sets the NodeGroupUpdateStatus field's value.
20056func (s *UpdateAction) SetNodeGroupUpdateStatus(v []*NodeGroupUpdateStatus) *UpdateAction {
20057	s.NodeGroupUpdateStatus = v
20058	return s
20059}
20060
20061// SetNodesUpdated sets the NodesUpdated field's value.
20062func (s *UpdateAction) SetNodesUpdated(v string) *UpdateAction {
20063	s.NodesUpdated = &v
20064	return s
20065}
20066
20067// SetReplicationGroupId sets the ReplicationGroupId field's value.
20068func (s *UpdateAction) SetReplicationGroupId(v string) *UpdateAction {
20069	s.ReplicationGroupId = &v
20070	return s
20071}
20072
20073// SetServiceUpdateName sets the ServiceUpdateName field's value.
20074func (s *UpdateAction) SetServiceUpdateName(v string) *UpdateAction {
20075	s.ServiceUpdateName = &v
20076	return s
20077}
20078
20079// SetServiceUpdateRecommendedApplyByDate sets the ServiceUpdateRecommendedApplyByDate field's value.
20080func (s *UpdateAction) SetServiceUpdateRecommendedApplyByDate(v time.Time) *UpdateAction {
20081	s.ServiceUpdateRecommendedApplyByDate = &v
20082	return s
20083}
20084
20085// SetServiceUpdateReleaseDate sets the ServiceUpdateReleaseDate field's value.
20086func (s *UpdateAction) SetServiceUpdateReleaseDate(v time.Time) *UpdateAction {
20087	s.ServiceUpdateReleaseDate = &v
20088	return s
20089}
20090
20091// SetServiceUpdateSeverity sets the ServiceUpdateSeverity field's value.
20092func (s *UpdateAction) SetServiceUpdateSeverity(v string) *UpdateAction {
20093	s.ServiceUpdateSeverity = &v
20094	return s
20095}
20096
20097// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
20098func (s *UpdateAction) SetServiceUpdateStatus(v string) *UpdateAction {
20099	s.ServiceUpdateStatus = &v
20100	return s
20101}
20102
20103// SetServiceUpdateType sets the ServiceUpdateType field's value.
20104func (s *UpdateAction) SetServiceUpdateType(v string) *UpdateAction {
20105	s.ServiceUpdateType = &v
20106	return s
20107}
20108
20109// SetSlaMet sets the SlaMet field's value.
20110func (s *UpdateAction) SetSlaMet(v string) *UpdateAction {
20111	s.SlaMet = &v
20112	return s
20113}
20114
20115// SetUpdateActionAvailableDate sets the UpdateActionAvailableDate field's value.
20116func (s *UpdateAction) SetUpdateActionAvailableDate(v time.Time) *UpdateAction {
20117	s.UpdateActionAvailableDate = &v
20118	return s
20119}
20120
20121// SetUpdateActionStatus sets the UpdateActionStatus field's value.
20122func (s *UpdateAction) SetUpdateActionStatus(v string) *UpdateAction {
20123	s.UpdateActionStatus = &v
20124	return s
20125}
20126
20127// SetUpdateActionStatusModifiedDate sets the UpdateActionStatusModifiedDate field's value.
20128func (s *UpdateAction) SetUpdateActionStatusModifiedDate(v time.Time) *UpdateAction {
20129	s.UpdateActionStatusModifiedDate = &v
20130	return s
20131}
20132
20133type User struct {
20134	_ struct{} `type:"structure"`
20135
20136	// The Amazon Resource Name (ARN) of the user.
20137	ARN *string `type:"string"`
20138
20139	// Access permissions string used for this user.
20140	AccessString *string `type:"string"`
20141
20142	// Denotes whether the user requires a password to authenticate.
20143	Authentication *Authentication `type:"structure"`
20144
20145	// The current supported value is Redis.
20146	Engine *string `type:"string"`
20147
20148	// Indicates the user status. Can be "active", "modifying" or "deleting".
20149	Status *string `type:"string"`
20150
20151	// Returns a list of the user group IDs the user belongs to.
20152	UserGroupIds []*string `type:"list"`
20153
20154	// The ID of the user.
20155	UserId *string `type:"string"`
20156
20157	// The username of the user.
20158	UserName *string `type:"string"`
20159}
20160
20161// String returns the string representation
20162func (s User) String() string {
20163	return awsutil.Prettify(s)
20164}
20165
20166// GoString returns the string representation
20167func (s User) GoString() string {
20168	return s.String()
20169}
20170
20171// SetARN sets the ARN field's value.
20172func (s *User) SetARN(v string) *User {
20173	s.ARN = &v
20174	return s
20175}
20176
20177// SetAccessString sets the AccessString field's value.
20178func (s *User) SetAccessString(v string) *User {
20179	s.AccessString = &v
20180	return s
20181}
20182
20183// SetAuthentication sets the Authentication field's value.
20184func (s *User) SetAuthentication(v *Authentication) *User {
20185	s.Authentication = v
20186	return s
20187}
20188
20189// SetEngine sets the Engine field's value.
20190func (s *User) SetEngine(v string) *User {
20191	s.Engine = &v
20192	return s
20193}
20194
20195// SetStatus sets the Status field's value.
20196func (s *User) SetStatus(v string) *User {
20197	s.Status = &v
20198	return s
20199}
20200
20201// SetUserGroupIds sets the UserGroupIds field's value.
20202func (s *User) SetUserGroupIds(v []*string) *User {
20203	s.UserGroupIds = v
20204	return s
20205}
20206
20207// SetUserId sets the UserId field's value.
20208func (s *User) SetUserId(v string) *User {
20209	s.UserId = &v
20210	return s
20211}
20212
20213// SetUserName sets the UserName field's value.
20214func (s *User) SetUserName(v string) *User {
20215	s.UserName = &v
20216	return s
20217}
20218
20219type UserGroup struct {
20220	_ struct{} `type:"structure"`
20221
20222	// The Amazon Resource Name (ARN) of the user group.
20223	ARN *string `type:"string"`
20224
20225	// The current supported value is Redis.
20226	Engine *string `type:"string"`
20227
20228	// A list of updates being applied to the user groups.
20229	PendingChanges *UserGroupPendingChanges `type:"structure"`
20230
20231	// A list of replication groups that the user group can access.
20232	ReplicationGroups []*string `type:"list"`
20233
20234	// Indicates user group status. Can be "creating", "active", "modifying", "deleting".
20235	Status *string `type:"string"`
20236
20237	// The ID of the user group.
20238	UserGroupId *string `type:"string"`
20239
20240	// The list of user IDs that belong to the user group.
20241	UserIds []*string `type:"list"`
20242}
20243
20244// String returns the string representation
20245func (s UserGroup) String() string {
20246	return awsutil.Prettify(s)
20247}
20248
20249// GoString returns the string representation
20250func (s UserGroup) GoString() string {
20251	return s.String()
20252}
20253
20254// SetARN sets the ARN field's value.
20255func (s *UserGroup) SetARN(v string) *UserGroup {
20256	s.ARN = &v
20257	return s
20258}
20259
20260// SetEngine sets the Engine field's value.
20261func (s *UserGroup) SetEngine(v string) *UserGroup {
20262	s.Engine = &v
20263	return s
20264}
20265
20266// SetPendingChanges sets the PendingChanges field's value.
20267func (s *UserGroup) SetPendingChanges(v *UserGroupPendingChanges) *UserGroup {
20268	s.PendingChanges = v
20269	return s
20270}
20271
20272// SetReplicationGroups sets the ReplicationGroups field's value.
20273func (s *UserGroup) SetReplicationGroups(v []*string) *UserGroup {
20274	s.ReplicationGroups = v
20275	return s
20276}
20277
20278// SetStatus sets the Status field's value.
20279func (s *UserGroup) SetStatus(v string) *UserGroup {
20280	s.Status = &v
20281	return s
20282}
20283
20284// SetUserGroupId sets the UserGroupId field's value.
20285func (s *UserGroup) SetUserGroupId(v string) *UserGroup {
20286	s.UserGroupId = &v
20287	return s
20288}
20289
20290// SetUserIds sets the UserIds field's value.
20291func (s *UserGroup) SetUserIds(v []*string) *UserGroup {
20292	s.UserIds = v
20293	return s
20294}
20295
20296// Returns the updates being applied to the user group.
20297type UserGroupPendingChanges struct {
20298	_ struct{} `type:"structure"`
20299
20300	// The list of user IDs to add.
20301	UserIdsToAdd []*string `type:"list"`
20302
20303	// The list of user IDs to remove.
20304	UserIdsToRemove []*string `type:"list"`
20305}
20306
20307// String returns the string representation
20308func (s UserGroupPendingChanges) String() string {
20309	return awsutil.Prettify(s)
20310}
20311
20312// GoString returns the string representation
20313func (s UserGroupPendingChanges) GoString() string {
20314	return s.String()
20315}
20316
20317// SetUserIdsToAdd sets the UserIdsToAdd field's value.
20318func (s *UserGroupPendingChanges) SetUserIdsToAdd(v []*string) *UserGroupPendingChanges {
20319	s.UserIdsToAdd = v
20320	return s
20321}
20322
20323// SetUserIdsToRemove sets the UserIdsToRemove field's value.
20324func (s *UserGroupPendingChanges) SetUserIdsToRemove(v []*string) *UserGroupPendingChanges {
20325	s.UserIdsToRemove = v
20326	return s
20327}
20328
20329// The status of the user group update.
20330type UserGroupsUpdateStatus struct {
20331	_ struct{} `type:"structure"`
20332
20333	// The list of user group IDs to add.
20334	UserGroupIdsToAdd []*string `type:"list"`
20335
20336	// The list of user group IDs to remove.
20337	UserGroupIdsToRemove []*string `type:"list"`
20338}
20339
20340// String returns the string representation
20341func (s UserGroupsUpdateStatus) String() string {
20342	return awsutil.Prettify(s)
20343}
20344
20345// GoString returns the string representation
20346func (s UserGroupsUpdateStatus) GoString() string {
20347	return s.String()
20348}
20349
20350// SetUserGroupIdsToAdd sets the UserGroupIdsToAdd field's value.
20351func (s *UserGroupsUpdateStatus) SetUserGroupIdsToAdd(v []*string) *UserGroupsUpdateStatus {
20352	s.UserGroupIdsToAdd = v
20353	return s
20354}
20355
20356// SetUserGroupIdsToRemove sets the UserGroupIdsToRemove field's value.
20357func (s *UserGroupsUpdateStatus) SetUserGroupIdsToRemove(v []*string) *UserGroupsUpdateStatus {
20358	s.UserGroupIdsToRemove = v
20359	return s
20360}
20361
20362const (
20363	// AZModeSingleAz is a AZMode enum value
20364	AZModeSingleAz = "single-az"
20365
20366	// AZModeCrossAz is a AZMode enum value
20367	AZModeCrossAz = "cross-az"
20368)
20369
20370// AZMode_Values returns all elements of the AZMode enum
20371func AZMode_Values() []string {
20372	return []string{
20373		AZModeSingleAz,
20374		AZModeCrossAz,
20375	}
20376}
20377
20378const (
20379	// AuthTokenUpdateStatusSetting is a AuthTokenUpdateStatus enum value
20380	AuthTokenUpdateStatusSetting = "SETTING"
20381
20382	// AuthTokenUpdateStatusRotating is a AuthTokenUpdateStatus enum value
20383	AuthTokenUpdateStatusRotating = "ROTATING"
20384)
20385
20386// AuthTokenUpdateStatus_Values returns all elements of the AuthTokenUpdateStatus enum
20387func AuthTokenUpdateStatus_Values() []string {
20388	return []string{
20389		AuthTokenUpdateStatusSetting,
20390		AuthTokenUpdateStatusRotating,
20391	}
20392}
20393
20394const (
20395	// AuthTokenUpdateStrategyTypeSet is a AuthTokenUpdateStrategyType enum value
20396	AuthTokenUpdateStrategyTypeSet = "SET"
20397
20398	// AuthTokenUpdateStrategyTypeRotate is a AuthTokenUpdateStrategyType enum value
20399	AuthTokenUpdateStrategyTypeRotate = "ROTATE"
20400
20401	// AuthTokenUpdateStrategyTypeDelete is a AuthTokenUpdateStrategyType enum value
20402	AuthTokenUpdateStrategyTypeDelete = "DELETE"
20403)
20404
20405// AuthTokenUpdateStrategyType_Values returns all elements of the AuthTokenUpdateStrategyType enum
20406func AuthTokenUpdateStrategyType_Values() []string {
20407	return []string{
20408		AuthTokenUpdateStrategyTypeSet,
20409		AuthTokenUpdateStrategyTypeRotate,
20410		AuthTokenUpdateStrategyTypeDelete,
20411	}
20412}
20413
20414const (
20415	// AuthenticationTypePassword is a AuthenticationType enum value
20416	AuthenticationTypePassword = "password"
20417
20418	// AuthenticationTypeNoPassword is a AuthenticationType enum value
20419	AuthenticationTypeNoPassword = "no-password"
20420)
20421
20422// AuthenticationType_Values returns all elements of the AuthenticationType enum
20423func AuthenticationType_Values() []string {
20424	return []string{
20425		AuthenticationTypePassword,
20426		AuthenticationTypeNoPassword,
20427	}
20428}
20429
20430const (
20431	// AutomaticFailoverStatusEnabled is a AutomaticFailoverStatus enum value
20432	AutomaticFailoverStatusEnabled = "enabled"
20433
20434	// AutomaticFailoverStatusDisabled is a AutomaticFailoverStatus enum value
20435	AutomaticFailoverStatusDisabled = "disabled"
20436
20437	// AutomaticFailoverStatusEnabling is a AutomaticFailoverStatus enum value
20438	AutomaticFailoverStatusEnabling = "enabling"
20439
20440	// AutomaticFailoverStatusDisabling is a AutomaticFailoverStatus enum value
20441	AutomaticFailoverStatusDisabling = "disabling"
20442)
20443
20444// AutomaticFailoverStatus_Values returns all elements of the AutomaticFailoverStatus enum
20445func AutomaticFailoverStatus_Values() []string {
20446	return []string{
20447		AutomaticFailoverStatusEnabled,
20448		AutomaticFailoverStatusDisabled,
20449		AutomaticFailoverStatusEnabling,
20450		AutomaticFailoverStatusDisabling,
20451	}
20452}
20453
20454const (
20455	// ChangeTypeImmediate is a ChangeType enum value
20456	ChangeTypeImmediate = "immediate"
20457
20458	// ChangeTypeRequiresReboot is a ChangeType enum value
20459	ChangeTypeRequiresReboot = "requires-reboot"
20460)
20461
20462// ChangeType_Values returns all elements of the ChangeType enum
20463func ChangeType_Values() []string {
20464	return []string{
20465		ChangeTypeImmediate,
20466		ChangeTypeRequiresReboot,
20467	}
20468}
20469
20470const (
20471	// DestinationTypeCloudwatchLogs is a DestinationType enum value
20472	DestinationTypeCloudwatchLogs = "cloudwatch-logs"
20473
20474	// DestinationTypeKinesisFirehose is a DestinationType enum value
20475	DestinationTypeKinesisFirehose = "kinesis-firehose"
20476)
20477
20478// DestinationType_Values returns all elements of the DestinationType enum
20479func DestinationType_Values() []string {
20480	return []string{
20481		DestinationTypeCloudwatchLogs,
20482		DestinationTypeKinesisFirehose,
20483	}
20484}
20485
20486const (
20487	// LogDeliveryConfigurationStatusActive is a LogDeliveryConfigurationStatus enum value
20488	LogDeliveryConfigurationStatusActive = "active"
20489
20490	// LogDeliveryConfigurationStatusEnabling is a LogDeliveryConfigurationStatus enum value
20491	LogDeliveryConfigurationStatusEnabling = "enabling"
20492
20493	// LogDeliveryConfigurationStatusModifying is a LogDeliveryConfigurationStatus enum value
20494	LogDeliveryConfigurationStatusModifying = "modifying"
20495
20496	// LogDeliveryConfigurationStatusDisabling is a LogDeliveryConfigurationStatus enum value
20497	LogDeliveryConfigurationStatusDisabling = "disabling"
20498
20499	// LogDeliveryConfigurationStatusError is a LogDeliveryConfigurationStatus enum value
20500	LogDeliveryConfigurationStatusError = "error"
20501)
20502
20503// LogDeliveryConfigurationStatus_Values returns all elements of the LogDeliveryConfigurationStatus enum
20504func LogDeliveryConfigurationStatus_Values() []string {
20505	return []string{
20506		LogDeliveryConfigurationStatusActive,
20507		LogDeliveryConfigurationStatusEnabling,
20508		LogDeliveryConfigurationStatusModifying,
20509		LogDeliveryConfigurationStatusDisabling,
20510		LogDeliveryConfigurationStatusError,
20511	}
20512}
20513
20514const (
20515	// LogFormatText is a LogFormat enum value
20516	LogFormatText = "text"
20517
20518	// LogFormatJson is a LogFormat enum value
20519	LogFormatJson = "json"
20520)
20521
20522// LogFormat_Values returns all elements of the LogFormat enum
20523func LogFormat_Values() []string {
20524	return []string{
20525		LogFormatText,
20526		LogFormatJson,
20527	}
20528}
20529
20530const (
20531	// LogTypeSlowLog is a LogType enum value
20532	LogTypeSlowLog = "slow-log"
20533)
20534
20535// LogType_Values returns all elements of the LogType enum
20536func LogType_Values() []string {
20537	return []string{
20538		LogTypeSlowLog,
20539	}
20540}
20541
20542const (
20543	// MultiAZStatusEnabled is a MultiAZStatus enum value
20544	MultiAZStatusEnabled = "enabled"
20545
20546	// MultiAZStatusDisabled is a MultiAZStatus enum value
20547	MultiAZStatusDisabled = "disabled"
20548)
20549
20550// MultiAZStatus_Values returns all elements of the MultiAZStatus enum
20551func MultiAZStatus_Values() []string {
20552	return []string{
20553		MultiAZStatusEnabled,
20554		MultiAZStatusDisabled,
20555	}
20556}
20557
20558const (
20559	// NodeUpdateInitiatedBySystem is a NodeUpdateInitiatedBy enum value
20560	NodeUpdateInitiatedBySystem = "system"
20561
20562	// NodeUpdateInitiatedByCustomer is a NodeUpdateInitiatedBy enum value
20563	NodeUpdateInitiatedByCustomer = "customer"
20564)
20565
20566// NodeUpdateInitiatedBy_Values returns all elements of the NodeUpdateInitiatedBy enum
20567func NodeUpdateInitiatedBy_Values() []string {
20568	return []string{
20569		NodeUpdateInitiatedBySystem,
20570		NodeUpdateInitiatedByCustomer,
20571	}
20572}
20573
20574const (
20575	// NodeUpdateStatusNotApplied is a NodeUpdateStatus enum value
20576	NodeUpdateStatusNotApplied = "not-applied"
20577
20578	// NodeUpdateStatusWaitingToStart is a NodeUpdateStatus enum value
20579	NodeUpdateStatusWaitingToStart = "waiting-to-start"
20580
20581	// NodeUpdateStatusInProgress is a NodeUpdateStatus enum value
20582	NodeUpdateStatusInProgress = "in-progress"
20583
20584	// NodeUpdateStatusStopping is a NodeUpdateStatus enum value
20585	NodeUpdateStatusStopping = "stopping"
20586
20587	// NodeUpdateStatusStopped is a NodeUpdateStatus enum value
20588	NodeUpdateStatusStopped = "stopped"
20589
20590	// NodeUpdateStatusComplete is a NodeUpdateStatus enum value
20591	NodeUpdateStatusComplete = "complete"
20592)
20593
20594// NodeUpdateStatus_Values returns all elements of the NodeUpdateStatus enum
20595func NodeUpdateStatus_Values() []string {
20596	return []string{
20597		NodeUpdateStatusNotApplied,
20598		NodeUpdateStatusWaitingToStart,
20599		NodeUpdateStatusInProgress,
20600		NodeUpdateStatusStopping,
20601		NodeUpdateStatusStopped,
20602		NodeUpdateStatusComplete,
20603	}
20604}
20605
20606const (
20607	// OutpostModeSingleOutpost is a OutpostMode enum value
20608	OutpostModeSingleOutpost = "single-outpost"
20609
20610	// OutpostModeCrossOutpost is a OutpostMode enum value
20611	OutpostModeCrossOutpost = "cross-outpost"
20612)
20613
20614// OutpostMode_Values returns all elements of the OutpostMode enum
20615func OutpostMode_Values() []string {
20616	return []string{
20617		OutpostModeSingleOutpost,
20618		OutpostModeCrossOutpost,
20619	}
20620}
20621
20622const (
20623	// PendingAutomaticFailoverStatusEnabled is a PendingAutomaticFailoverStatus enum value
20624	PendingAutomaticFailoverStatusEnabled = "enabled"
20625
20626	// PendingAutomaticFailoverStatusDisabled is a PendingAutomaticFailoverStatus enum value
20627	PendingAutomaticFailoverStatusDisabled = "disabled"
20628)
20629
20630// PendingAutomaticFailoverStatus_Values returns all elements of the PendingAutomaticFailoverStatus enum
20631func PendingAutomaticFailoverStatus_Values() []string {
20632	return []string{
20633		PendingAutomaticFailoverStatusEnabled,
20634		PendingAutomaticFailoverStatusDisabled,
20635	}
20636}
20637
20638const (
20639	// ServiceUpdateSeverityCritical is a ServiceUpdateSeverity enum value
20640	ServiceUpdateSeverityCritical = "critical"
20641
20642	// ServiceUpdateSeverityImportant is a ServiceUpdateSeverity enum value
20643	ServiceUpdateSeverityImportant = "important"
20644
20645	// ServiceUpdateSeverityMedium is a ServiceUpdateSeverity enum value
20646	ServiceUpdateSeverityMedium = "medium"
20647
20648	// ServiceUpdateSeverityLow is a ServiceUpdateSeverity enum value
20649	ServiceUpdateSeverityLow = "low"
20650)
20651
20652// ServiceUpdateSeverity_Values returns all elements of the ServiceUpdateSeverity enum
20653func ServiceUpdateSeverity_Values() []string {
20654	return []string{
20655		ServiceUpdateSeverityCritical,
20656		ServiceUpdateSeverityImportant,
20657		ServiceUpdateSeverityMedium,
20658		ServiceUpdateSeverityLow,
20659	}
20660}
20661
20662const (
20663	// ServiceUpdateStatusAvailable is a ServiceUpdateStatus enum value
20664	ServiceUpdateStatusAvailable = "available"
20665
20666	// ServiceUpdateStatusCancelled is a ServiceUpdateStatus enum value
20667	ServiceUpdateStatusCancelled = "cancelled"
20668
20669	// ServiceUpdateStatusExpired is a ServiceUpdateStatus enum value
20670	ServiceUpdateStatusExpired = "expired"
20671)
20672
20673// ServiceUpdateStatus_Values returns all elements of the ServiceUpdateStatus enum
20674func ServiceUpdateStatus_Values() []string {
20675	return []string{
20676		ServiceUpdateStatusAvailable,
20677		ServiceUpdateStatusCancelled,
20678		ServiceUpdateStatusExpired,
20679	}
20680}
20681
20682const (
20683	// ServiceUpdateTypeSecurityUpdate is a ServiceUpdateType enum value
20684	ServiceUpdateTypeSecurityUpdate = "security-update"
20685)
20686
20687// ServiceUpdateType_Values returns all elements of the ServiceUpdateType enum
20688func ServiceUpdateType_Values() []string {
20689	return []string{
20690		ServiceUpdateTypeSecurityUpdate,
20691	}
20692}
20693
20694const (
20695	// SlaMetYes is a SlaMet enum value
20696	SlaMetYes = "yes"
20697
20698	// SlaMetNo is a SlaMet enum value
20699	SlaMetNo = "no"
20700
20701	// SlaMetNA is a SlaMet enum value
20702	SlaMetNA = "n/a"
20703)
20704
20705// SlaMet_Values returns all elements of the SlaMet enum
20706func SlaMet_Values() []string {
20707	return []string{
20708		SlaMetYes,
20709		SlaMetNo,
20710		SlaMetNA,
20711	}
20712}
20713
20714const (
20715	// SourceTypeCacheCluster is a SourceType enum value
20716	SourceTypeCacheCluster = "cache-cluster"
20717
20718	// SourceTypeCacheParameterGroup is a SourceType enum value
20719	SourceTypeCacheParameterGroup = "cache-parameter-group"
20720
20721	// SourceTypeCacheSecurityGroup is a SourceType enum value
20722	SourceTypeCacheSecurityGroup = "cache-security-group"
20723
20724	// SourceTypeCacheSubnetGroup is a SourceType enum value
20725	SourceTypeCacheSubnetGroup = "cache-subnet-group"
20726
20727	// SourceTypeReplicationGroup is a SourceType enum value
20728	SourceTypeReplicationGroup = "replication-group"
20729
20730	// SourceTypeUser is a SourceType enum value
20731	SourceTypeUser = "user"
20732
20733	// SourceTypeUserGroup is a SourceType enum value
20734	SourceTypeUserGroup = "user-group"
20735)
20736
20737// SourceType_Values returns all elements of the SourceType enum
20738func SourceType_Values() []string {
20739	return []string{
20740		SourceTypeCacheCluster,
20741		SourceTypeCacheParameterGroup,
20742		SourceTypeCacheSecurityGroup,
20743		SourceTypeCacheSubnetGroup,
20744		SourceTypeReplicationGroup,
20745		SourceTypeUser,
20746		SourceTypeUserGroup,
20747	}
20748}
20749
20750const (
20751	// UpdateActionStatusNotApplied is a UpdateActionStatus enum value
20752	UpdateActionStatusNotApplied = "not-applied"
20753
20754	// UpdateActionStatusWaitingToStart is a UpdateActionStatus enum value
20755	UpdateActionStatusWaitingToStart = "waiting-to-start"
20756
20757	// UpdateActionStatusInProgress is a UpdateActionStatus enum value
20758	UpdateActionStatusInProgress = "in-progress"
20759
20760	// UpdateActionStatusStopping is a UpdateActionStatus enum value
20761	UpdateActionStatusStopping = "stopping"
20762
20763	// UpdateActionStatusStopped is a UpdateActionStatus enum value
20764	UpdateActionStatusStopped = "stopped"
20765
20766	// UpdateActionStatusComplete is a UpdateActionStatus enum value
20767	UpdateActionStatusComplete = "complete"
20768
20769	// UpdateActionStatusScheduling is a UpdateActionStatus enum value
20770	UpdateActionStatusScheduling = "scheduling"
20771
20772	// UpdateActionStatusScheduled is a UpdateActionStatus enum value
20773	UpdateActionStatusScheduled = "scheduled"
20774
20775	// UpdateActionStatusNotApplicable is a UpdateActionStatus enum value
20776	UpdateActionStatusNotApplicable = "not-applicable"
20777)
20778
20779// UpdateActionStatus_Values returns all elements of the UpdateActionStatus enum
20780func UpdateActionStatus_Values() []string {
20781	return []string{
20782		UpdateActionStatusNotApplied,
20783		UpdateActionStatusWaitingToStart,
20784		UpdateActionStatusInProgress,
20785		UpdateActionStatusStopping,
20786		UpdateActionStatusStopped,
20787		UpdateActionStatusComplete,
20788		UpdateActionStatusScheduling,
20789		UpdateActionStatusScheduled,
20790		UpdateActionStatusNotApplicable,
20791	}
20792}
20793