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// Adds up to 50 cost allocation tags to the named resource. A cost allocation
61// tag is a key-value pair where the key and value are case-sensitive. You can
62// use cost allocation tags to categorize and track your AWS costs.
63//
64// When you apply tags to your ElastiCache resources, AWS generates a cost allocation
65// report as a comma-separated value (CSV) file with your usage and costs aggregated
66// by your tags. You can apply tags that represent business categories (such
67// as cost centers, application names, or owners) to organize your costs across
68// multiple services. For more information, see Using Cost Allocation Tags in
69// Amazon ElastiCache (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Tagging.html)
70// in the ElastiCache User Guide.
71//
72// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
73// with awserr.Error's Code and Message methods to get detailed information about
74// the error.
75//
76// See the AWS API reference guide for Amazon ElastiCache's
77// API operation AddTagsToResource for usage and error information.
78//
79// Returned Error Codes:
80//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
81//   The requested cluster ID does not refer to an existing cluster.
82//
83//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
84//   The requested snapshot name does not refer to an existing snapshot.
85//
86//   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
87//   The request cannot be processed because it would cause the resource to have
88//   more than the allowed number of tags. The maximum number of tags permitted
89//   on a resource is 50.
90//
91//   * ErrCodeInvalidARNFault "InvalidARN"
92//   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
93//
94// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/AddTagsToResource
95func (c *ElastiCache) AddTagsToResource(input *AddTagsToResourceInput) (*TagListMessage, error) {
96	req, out := c.AddTagsToResourceRequest(input)
97	return out, req.Send()
98}
99
100// AddTagsToResourceWithContext is the same as AddTagsToResource with the addition of
101// the ability to pass a context and additional request options.
102//
103// See AddTagsToResource for details on how to use this API operation.
104//
105// The context must be non-nil and will be used for request cancellation. If
106// the context is nil a panic will occur. In the future the SDK may create
107// sub-contexts for http.Requests. See https://golang.org/pkg/context/
108// for more information on using Contexts.
109func (c *ElastiCache) AddTagsToResourceWithContext(ctx aws.Context, input *AddTagsToResourceInput, opts ...request.Option) (*TagListMessage, error) {
110	req, out := c.AddTagsToResourceRequest(input)
111	req.SetContext(ctx)
112	req.ApplyOptions(opts...)
113	return out, req.Send()
114}
115
116const opAuthorizeCacheSecurityGroupIngress = "AuthorizeCacheSecurityGroupIngress"
117
118// AuthorizeCacheSecurityGroupIngressRequest generates a "aws/request.Request" representing the
119// client's request for the AuthorizeCacheSecurityGroupIngress operation. The "output" return
120// value will be populated with the request's response once the request completes
121// successfully.
122//
123// Use "Send" method on the returned Request to send the API call to the service.
124// the "output" return value is not valid until after Send returns without error.
125//
126// See AuthorizeCacheSecurityGroupIngress for more information on using the AuthorizeCacheSecurityGroupIngress
127// API call, and error handling.
128//
129// This method is useful when you want to inject custom logic or configuration
130// into the SDK's request lifecycle. Such as custom headers, or retry logic.
131//
132//
133//    // Example sending a request using the AuthorizeCacheSecurityGroupIngressRequest method.
134//    req, resp := client.AuthorizeCacheSecurityGroupIngressRequest(params)
135//
136//    err := req.Send()
137//    if err == nil { // resp is now filled
138//        fmt.Println(resp)
139//    }
140//
141// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/AuthorizeCacheSecurityGroupIngress
142func (c *ElastiCache) AuthorizeCacheSecurityGroupIngressRequest(input *AuthorizeCacheSecurityGroupIngressInput) (req *request.Request, output *AuthorizeCacheSecurityGroupIngressOutput) {
143	op := &request.Operation{
144		Name:       opAuthorizeCacheSecurityGroupIngress,
145		HTTPMethod: "POST",
146		HTTPPath:   "/",
147	}
148
149	if input == nil {
150		input = &AuthorizeCacheSecurityGroupIngressInput{}
151	}
152
153	output = &AuthorizeCacheSecurityGroupIngressOutput{}
154	req = c.newRequest(op, input, output)
155	return
156}
157
158// AuthorizeCacheSecurityGroupIngress API operation for Amazon ElastiCache.
159//
160// Allows network ingress to a cache security group. Applications using ElastiCache
161// must be running on Amazon EC2, and Amazon EC2 security groups are used as
162// the authorization mechanism.
163//
164// You cannot authorize ingress from an Amazon EC2 security group in one region
165// to an ElastiCache cluster in another region.
166//
167// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
168// with awserr.Error's Code and Message methods to get detailed information about
169// the error.
170//
171// See the AWS API reference guide for Amazon ElastiCache's
172// API operation AuthorizeCacheSecurityGroupIngress for usage and error information.
173//
174// Returned Error Codes:
175//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
176//   The requested cache security group name does not refer to an existing cache
177//   security group.
178//
179//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
180//   The current state of the cache security group does not allow deletion.
181//
182//   * ErrCodeAuthorizationAlreadyExistsFault "AuthorizationAlreadyExists"
183//   The specified Amazon EC2 security group is already authorized for the specified
184//   cache security group.
185//
186//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
187//   The value for a parameter is invalid.
188//
189//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
190//   Two or more incompatible parameters were specified.
191//
192// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/AuthorizeCacheSecurityGroupIngress
193func (c *ElastiCache) AuthorizeCacheSecurityGroupIngress(input *AuthorizeCacheSecurityGroupIngressInput) (*AuthorizeCacheSecurityGroupIngressOutput, error) {
194	req, out := c.AuthorizeCacheSecurityGroupIngressRequest(input)
195	return out, req.Send()
196}
197
198// AuthorizeCacheSecurityGroupIngressWithContext is the same as AuthorizeCacheSecurityGroupIngress with the addition of
199// the ability to pass a context and additional request options.
200//
201// See AuthorizeCacheSecurityGroupIngress for details on how to use this API operation.
202//
203// The context must be non-nil and will be used for request cancellation. If
204// the context is nil a panic will occur. In the future the SDK may create
205// sub-contexts for http.Requests. See https://golang.org/pkg/context/
206// for more information on using Contexts.
207func (c *ElastiCache) AuthorizeCacheSecurityGroupIngressWithContext(ctx aws.Context, input *AuthorizeCacheSecurityGroupIngressInput, opts ...request.Option) (*AuthorizeCacheSecurityGroupIngressOutput, error) {
208	req, out := c.AuthorizeCacheSecurityGroupIngressRequest(input)
209	req.SetContext(ctx)
210	req.ApplyOptions(opts...)
211	return out, req.Send()
212}
213
214const opBatchApplyUpdateAction = "BatchApplyUpdateAction"
215
216// BatchApplyUpdateActionRequest generates a "aws/request.Request" representing the
217// client's request for the BatchApplyUpdateAction operation. The "output" return
218// value will be populated with the request's response once the request completes
219// successfully.
220//
221// Use "Send" method on the returned Request to send the API call to the service.
222// the "output" return value is not valid until after Send returns without error.
223//
224// See BatchApplyUpdateAction for more information on using the BatchApplyUpdateAction
225// API call, and error handling.
226//
227// This method is useful when you want to inject custom logic or configuration
228// into the SDK's request lifecycle. Such as custom headers, or retry logic.
229//
230//
231//    // Example sending a request using the BatchApplyUpdateActionRequest method.
232//    req, resp := client.BatchApplyUpdateActionRequest(params)
233//
234//    err := req.Send()
235//    if err == nil { // resp is now filled
236//        fmt.Println(resp)
237//    }
238//
239// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/BatchApplyUpdateAction
240func (c *ElastiCache) BatchApplyUpdateActionRequest(input *BatchApplyUpdateActionInput) (req *request.Request, output *BatchApplyUpdateActionOutput) {
241	op := &request.Operation{
242		Name:       opBatchApplyUpdateAction,
243		HTTPMethod: "POST",
244		HTTPPath:   "/",
245	}
246
247	if input == nil {
248		input = &BatchApplyUpdateActionInput{}
249	}
250
251	output = &BatchApplyUpdateActionOutput{}
252	req = c.newRequest(op, input, output)
253	return
254}
255
256// BatchApplyUpdateAction API operation for Amazon ElastiCache.
257//
258// Apply the service update. For more information on service updates and applying
259// them, see Applying Service Updates (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/applying-updates.html).
260//
261// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
262// with awserr.Error's Code and Message methods to get detailed information about
263// the error.
264//
265// See the AWS API reference guide for Amazon ElastiCache's
266// API operation BatchApplyUpdateAction for usage and error information.
267//
268// Returned Error Codes:
269//   * ErrCodeServiceUpdateNotFoundFault "ServiceUpdateNotFoundFault"
270//   The service update doesn't exist
271//
272//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
273//   The value for a parameter is invalid.
274//
275// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/BatchApplyUpdateAction
276func (c *ElastiCache) BatchApplyUpdateAction(input *BatchApplyUpdateActionInput) (*BatchApplyUpdateActionOutput, error) {
277	req, out := c.BatchApplyUpdateActionRequest(input)
278	return out, req.Send()
279}
280
281// BatchApplyUpdateActionWithContext is the same as BatchApplyUpdateAction with the addition of
282// the ability to pass a context and additional request options.
283//
284// See BatchApplyUpdateAction for details on how to use this API operation.
285//
286// The context must be non-nil and will be used for request cancellation. If
287// the context is nil a panic will occur. In the future the SDK may create
288// sub-contexts for http.Requests. See https://golang.org/pkg/context/
289// for more information on using Contexts.
290func (c *ElastiCache) BatchApplyUpdateActionWithContext(ctx aws.Context, input *BatchApplyUpdateActionInput, opts ...request.Option) (*BatchApplyUpdateActionOutput, error) {
291	req, out := c.BatchApplyUpdateActionRequest(input)
292	req.SetContext(ctx)
293	req.ApplyOptions(opts...)
294	return out, req.Send()
295}
296
297const opBatchStopUpdateAction = "BatchStopUpdateAction"
298
299// BatchStopUpdateActionRequest generates a "aws/request.Request" representing the
300// client's request for the BatchStopUpdateAction operation. The "output" return
301// value will be populated with the request's response once the request completes
302// successfully.
303//
304// Use "Send" method on the returned Request to send the API call to the service.
305// the "output" return value is not valid until after Send returns without error.
306//
307// See BatchStopUpdateAction for more information on using the BatchStopUpdateAction
308// API call, and error handling.
309//
310// This method is useful when you want to inject custom logic or configuration
311// into the SDK's request lifecycle. Such as custom headers, or retry logic.
312//
313//
314//    // Example sending a request using the BatchStopUpdateActionRequest method.
315//    req, resp := client.BatchStopUpdateActionRequest(params)
316//
317//    err := req.Send()
318//    if err == nil { // resp is now filled
319//        fmt.Println(resp)
320//    }
321//
322// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/BatchStopUpdateAction
323func (c *ElastiCache) BatchStopUpdateActionRequest(input *BatchStopUpdateActionInput) (req *request.Request, output *BatchStopUpdateActionOutput) {
324	op := &request.Operation{
325		Name:       opBatchStopUpdateAction,
326		HTTPMethod: "POST",
327		HTTPPath:   "/",
328	}
329
330	if input == nil {
331		input = &BatchStopUpdateActionInput{}
332	}
333
334	output = &BatchStopUpdateActionOutput{}
335	req = c.newRequest(op, input, output)
336	return
337}
338
339// BatchStopUpdateAction API operation for Amazon ElastiCache.
340//
341// Stop the service update. For more information on service updates and stopping
342// them, see Stopping Service Updates (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/stopping-self-service-updates.html).
343//
344// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
345// with awserr.Error's Code and Message methods to get detailed information about
346// the error.
347//
348// See the AWS API reference guide for Amazon ElastiCache's
349// API operation BatchStopUpdateAction for usage and error information.
350//
351// Returned Error Codes:
352//   * ErrCodeServiceUpdateNotFoundFault "ServiceUpdateNotFoundFault"
353//   The service update doesn't exist
354//
355//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
356//   The value for a parameter is invalid.
357//
358// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/BatchStopUpdateAction
359func (c *ElastiCache) BatchStopUpdateAction(input *BatchStopUpdateActionInput) (*BatchStopUpdateActionOutput, error) {
360	req, out := c.BatchStopUpdateActionRequest(input)
361	return out, req.Send()
362}
363
364// BatchStopUpdateActionWithContext is the same as BatchStopUpdateAction with the addition of
365// the ability to pass a context and additional request options.
366//
367// See BatchStopUpdateAction for details on how to use this API operation.
368//
369// The context must be non-nil and will be used for request cancellation. If
370// the context is nil a panic will occur. In the future the SDK may create
371// sub-contexts for http.Requests. See https://golang.org/pkg/context/
372// for more information on using Contexts.
373func (c *ElastiCache) BatchStopUpdateActionWithContext(ctx aws.Context, input *BatchStopUpdateActionInput, opts ...request.Option) (*BatchStopUpdateActionOutput, error) {
374	req, out := c.BatchStopUpdateActionRequest(input)
375	req.SetContext(ctx)
376	req.ApplyOptions(opts...)
377	return out, req.Send()
378}
379
380const opCompleteMigration = "CompleteMigration"
381
382// CompleteMigrationRequest generates a "aws/request.Request" representing the
383// client's request for the CompleteMigration operation. The "output" return
384// value will be populated with the request's response once the request completes
385// successfully.
386//
387// Use "Send" method on the returned Request to send the API call to the service.
388// the "output" return value is not valid until after Send returns without error.
389//
390// See CompleteMigration for more information on using the CompleteMigration
391// API call, and error handling.
392//
393// This method is useful when you want to inject custom logic or configuration
394// into the SDK's request lifecycle. Such as custom headers, or retry logic.
395//
396//
397//    // Example sending a request using the CompleteMigrationRequest method.
398//    req, resp := client.CompleteMigrationRequest(params)
399//
400//    err := req.Send()
401//    if err == nil { // resp is now filled
402//        fmt.Println(resp)
403//    }
404//
405// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CompleteMigration
406func (c *ElastiCache) CompleteMigrationRequest(input *CompleteMigrationInput) (req *request.Request, output *CompleteMigrationOutput) {
407	op := &request.Operation{
408		Name:       opCompleteMigration,
409		HTTPMethod: "POST",
410		HTTPPath:   "/",
411	}
412
413	if input == nil {
414		input = &CompleteMigrationInput{}
415	}
416
417	output = &CompleteMigrationOutput{}
418	req = c.newRequest(op, input, output)
419	return
420}
421
422// CompleteMigration API operation for Amazon ElastiCache.
423//
424// Complete the migration of data.
425//
426// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
427// with awserr.Error's Code and Message methods to get detailed information about
428// the error.
429//
430// See the AWS API reference guide for Amazon ElastiCache's
431// API operation CompleteMigration for usage and error information.
432//
433// Returned Error Codes:
434//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
435//   The specified replication group does not exist.
436//
437//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
438//   The requested replication group is not in the available state.
439//
440//   * ErrCodeReplicationGroupNotUnderMigrationFault "ReplicationGroupNotUnderMigrationFault"
441//   The designated replication group is not available for data migration.
442//
443// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CompleteMigration
444func (c *ElastiCache) CompleteMigration(input *CompleteMigrationInput) (*CompleteMigrationOutput, error) {
445	req, out := c.CompleteMigrationRequest(input)
446	return out, req.Send()
447}
448
449// CompleteMigrationWithContext is the same as CompleteMigration with the addition of
450// the ability to pass a context and additional request options.
451//
452// See CompleteMigration for details on how to use this API operation.
453//
454// The context must be non-nil and will be used for request cancellation. If
455// the context is nil a panic will occur. In the future the SDK may create
456// sub-contexts for http.Requests. See https://golang.org/pkg/context/
457// for more information on using Contexts.
458func (c *ElastiCache) CompleteMigrationWithContext(ctx aws.Context, input *CompleteMigrationInput, opts ...request.Option) (*CompleteMigrationOutput, error) {
459	req, out := c.CompleteMigrationRequest(input)
460	req.SetContext(ctx)
461	req.ApplyOptions(opts...)
462	return out, req.Send()
463}
464
465const opCopySnapshot = "CopySnapshot"
466
467// CopySnapshotRequest generates a "aws/request.Request" representing the
468// client's request for the CopySnapshot operation. The "output" return
469// value will be populated with the request's response once the request completes
470// successfully.
471//
472// Use "Send" method on the returned Request to send the API call to the service.
473// the "output" return value is not valid until after Send returns without error.
474//
475// See CopySnapshot for more information on using the CopySnapshot
476// API call, and error handling.
477//
478// This method is useful when you want to inject custom logic or configuration
479// into the SDK's request lifecycle. Such as custom headers, or retry logic.
480//
481//
482//    // Example sending a request using the CopySnapshotRequest method.
483//    req, resp := client.CopySnapshotRequest(params)
484//
485//    err := req.Send()
486//    if err == nil { // resp is now filled
487//        fmt.Println(resp)
488//    }
489//
490// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CopySnapshot
491func (c *ElastiCache) CopySnapshotRequest(input *CopySnapshotInput) (req *request.Request, output *CopySnapshotOutput) {
492	op := &request.Operation{
493		Name:       opCopySnapshot,
494		HTTPMethod: "POST",
495		HTTPPath:   "/",
496	}
497
498	if input == nil {
499		input = &CopySnapshotInput{}
500	}
501
502	output = &CopySnapshotOutput{}
503	req = c.newRequest(op, input, output)
504	return
505}
506
507// CopySnapshot API operation for Amazon ElastiCache.
508//
509// Makes a copy of an existing snapshot.
510//
511// This operation is valid for Redis only.
512//
513// Users or groups that have permissions to use the CopySnapshot operation can
514// create their own Amazon S3 buckets and copy snapshots to it. To control access
515// to your snapshots, use an IAM policy to control who has the ability to use
516// the CopySnapshot operation. For more information about using IAM to control
517// the use of ElastiCache operations, see Exporting Snapshots (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html)
518// and Authentication & Access Control (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/IAM.html).
519//
520// You could receive the following error messages.
521//
522// Error Messages
523//
524//    * Error Message: The S3 bucket %s is outside of the region. Solution:
525//    Create an Amazon S3 bucket in the same region as your snapshot. For more
526//    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)
527//    in the ElastiCache User Guide.
528//
529//    * Error Message: The S3 bucket %s does not exist. Solution: Create an
530//    Amazon S3 bucket in the same region as your snapshot. For more information,
531//    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)
532//    in the ElastiCache User Guide.
533//
534//    * Error Message: The S3 bucket %s is not owned by the authenticated user.
535//    Solution: Create an Amazon S3 bucket in the same region as your snapshot.
536//    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)
537//    in the ElastiCache User Guide.
538//
539//    * Error Message: The authenticated user does not have sufficient permissions
540//    to perform the desired activity. Solution: Contact your system administrator
541//    to get the needed permissions.
542//
543//    * Error Message: The S3 bucket %s already contains an object with key
544//    %s. Solution: Give the TargetSnapshotName a new and unique value. If exporting
545//    a snapshot, you could alternatively create a new Amazon S3 bucket and
546//    use this same value for TargetSnapshotName.
547//
548//    * Error Message: ElastiCache has not been granted READ permissions %s
549//    on the S3 Bucket. Solution: Add List and Read permissions on the bucket.
550//    For more information, see Step 2: Grant ElastiCache Access to Your Amazon
551//    S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access)
552//    in the ElastiCache User Guide.
553//
554//    * Error Message: ElastiCache has not been granted WRITE permissions %s
555//    on the S3 Bucket. Solution: Add Upload/Delete permissions on the bucket.
556//    For more information, see Step 2: Grant ElastiCache Access to Your Amazon
557//    S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access)
558//    in the ElastiCache User Guide.
559//
560//    * Error Message: ElastiCache has not been granted READ_ACP permissions
561//    %s on the S3 Bucket. Solution: Add View Permissions on the bucket. For
562//    more information, see Step 2: Grant ElastiCache Access to Your Amazon
563//    S3 Bucket (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-exporting.html#backups-exporting-grant-access)
564//    in the ElastiCache User Guide.
565//
566// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
567// with awserr.Error's Code and Message methods to get detailed information about
568// the error.
569//
570// See the AWS API reference guide for Amazon ElastiCache's
571// API operation CopySnapshot for usage and error information.
572//
573// Returned Error Codes:
574//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
575//   You already have a snapshot with the given name.
576//
577//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
578//   The requested snapshot name does not refer to an existing snapshot.
579//
580//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
581//   The request cannot be processed because it would exceed the maximum number
582//   of snapshots.
583//
584//   * ErrCodeInvalidSnapshotStateFault "InvalidSnapshotState"
585//   The current state of the snapshot does not allow the requested operation
586//   to occur.
587//
588//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
589//   The value for a parameter is invalid.
590//
591//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
592//   Two or more incompatible parameters were specified.
593//
594// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CopySnapshot
595func (c *ElastiCache) CopySnapshot(input *CopySnapshotInput) (*CopySnapshotOutput, error) {
596	req, out := c.CopySnapshotRequest(input)
597	return out, req.Send()
598}
599
600// CopySnapshotWithContext is the same as CopySnapshot with the addition of
601// the ability to pass a context and additional request options.
602//
603// See CopySnapshot for details on how to use this API operation.
604//
605// The context must be non-nil and will be used for request cancellation. If
606// the context is nil a panic will occur. In the future the SDK may create
607// sub-contexts for http.Requests. See https://golang.org/pkg/context/
608// for more information on using Contexts.
609func (c *ElastiCache) CopySnapshotWithContext(ctx aws.Context, input *CopySnapshotInput, opts ...request.Option) (*CopySnapshotOutput, error) {
610	req, out := c.CopySnapshotRequest(input)
611	req.SetContext(ctx)
612	req.ApplyOptions(opts...)
613	return out, req.Send()
614}
615
616const opCreateCacheCluster = "CreateCacheCluster"
617
618// CreateCacheClusterRequest generates a "aws/request.Request" representing the
619// client's request for the CreateCacheCluster operation. The "output" return
620// value will be populated with the request's response once the request completes
621// successfully.
622//
623// Use "Send" method on the returned Request to send the API call to the service.
624// the "output" return value is not valid until after Send returns without error.
625//
626// See CreateCacheCluster for more information on using the CreateCacheCluster
627// API call, and error handling.
628//
629// This method is useful when you want to inject custom logic or configuration
630// into the SDK's request lifecycle. Such as custom headers, or retry logic.
631//
632//
633//    // Example sending a request using the CreateCacheClusterRequest method.
634//    req, resp := client.CreateCacheClusterRequest(params)
635//
636//    err := req.Send()
637//    if err == nil { // resp is now filled
638//        fmt.Println(resp)
639//    }
640//
641// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheCluster
642func (c *ElastiCache) CreateCacheClusterRequest(input *CreateCacheClusterInput) (req *request.Request, output *CreateCacheClusterOutput) {
643	op := &request.Operation{
644		Name:       opCreateCacheCluster,
645		HTTPMethod: "POST",
646		HTTPPath:   "/",
647	}
648
649	if input == nil {
650		input = &CreateCacheClusterInput{}
651	}
652
653	output = &CreateCacheClusterOutput{}
654	req = c.newRequest(op, input, output)
655	return
656}
657
658// CreateCacheCluster API operation for Amazon ElastiCache.
659//
660// Creates a cluster. All nodes in the cluster run the same protocol-compliant
661// cache engine software, either Memcached or Redis.
662//
663// This operation is not supported for Redis (cluster mode enabled) clusters.
664//
665// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
666// with awserr.Error's Code and Message methods to get detailed information about
667// the error.
668//
669// See the AWS API reference guide for Amazon ElastiCache's
670// API operation CreateCacheCluster for usage and error information.
671//
672// Returned Error Codes:
673//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
674//   The specified replication group does not exist.
675//
676//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
677//   The requested replication group is not in the available state.
678//
679//   * ErrCodeCacheClusterAlreadyExistsFault "CacheClusterAlreadyExists"
680//   You already have a cluster with the given identifier.
681//
682//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
683//   The requested cache node type is not available in the specified Availability
684//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
685//   in the ElastiCache User Guide.
686//
687//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
688//   The requested cache security group name does not refer to an existing cache
689//   security group.
690//
691//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
692//   The requested cache subnet group name does not refer to an existing cache
693//   subnet group.
694//
695//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
696//   The request cannot be processed because it would exceed the allowed number
697//   of clusters per customer.
698//
699//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
700//   The request cannot be processed because it would exceed the allowed number
701//   of cache nodes in a single cluster.
702//
703//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
704//   The request cannot be processed because it would exceed the allowed number
705//   of cache nodes per customer.
706//
707//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
708//   The requested cache parameter group name does not refer to an existing cache
709//   parameter group.
710//
711//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
712//   The VPC network is in an invalid state.
713//
714//   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
715//   The request cannot be processed because it would cause the resource to have
716//   more than the allowed number of tags. The maximum number of tags permitted
717//   on a resource is 50.
718//
719//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
720//   The value for a parameter is invalid.
721//
722//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
723//   Two or more incompatible parameters were specified.
724//
725// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheCluster
726func (c *ElastiCache) CreateCacheCluster(input *CreateCacheClusterInput) (*CreateCacheClusterOutput, error) {
727	req, out := c.CreateCacheClusterRequest(input)
728	return out, req.Send()
729}
730
731// CreateCacheClusterWithContext is the same as CreateCacheCluster with the addition of
732// the ability to pass a context and additional request options.
733//
734// See CreateCacheCluster for details on how to use this API operation.
735//
736// The context must be non-nil and will be used for request cancellation. If
737// the context is nil a panic will occur. In the future the SDK may create
738// sub-contexts for http.Requests. See https://golang.org/pkg/context/
739// for more information on using Contexts.
740func (c *ElastiCache) CreateCacheClusterWithContext(ctx aws.Context, input *CreateCacheClusterInput, opts ...request.Option) (*CreateCacheClusterOutput, error) {
741	req, out := c.CreateCacheClusterRequest(input)
742	req.SetContext(ctx)
743	req.ApplyOptions(opts...)
744	return out, req.Send()
745}
746
747const opCreateCacheParameterGroup = "CreateCacheParameterGroup"
748
749// CreateCacheParameterGroupRequest generates a "aws/request.Request" representing the
750// client's request for the CreateCacheParameterGroup operation. The "output" return
751// value will be populated with the request's response once the request completes
752// successfully.
753//
754// Use "Send" method on the returned Request to send the API call to the service.
755// the "output" return value is not valid until after Send returns without error.
756//
757// See CreateCacheParameterGroup for more information on using the CreateCacheParameterGroup
758// API call, and error handling.
759//
760// This method is useful when you want to inject custom logic or configuration
761// into the SDK's request lifecycle. Such as custom headers, or retry logic.
762//
763//
764//    // Example sending a request using the CreateCacheParameterGroupRequest method.
765//    req, resp := client.CreateCacheParameterGroupRequest(params)
766//
767//    err := req.Send()
768//    if err == nil { // resp is now filled
769//        fmt.Println(resp)
770//    }
771//
772// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheParameterGroup
773func (c *ElastiCache) CreateCacheParameterGroupRequest(input *CreateCacheParameterGroupInput) (req *request.Request, output *CreateCacheParameterGroupOutput) {
774	op := &request.Operation{
775		Name:       opCreateCacheParameterGroup,
776		HTTPMethod: "POST",
777		HTTPPath:   "/",
778	}
779
780	if input == nil {
781		input = &CreateCacheParameterGroupInput{}
782	}
783
784	output = &CreateCacheParameterGroupOutput{}
785	req = c.newRequest(op, input, output)
786	return
787}
788
789// CreateCacheParameterGroup API operation for Amazon ElastiCache.
790//
791// Creates a new Amazon ElastiCache cache parameter group. An ElastiCache cache
792// parameter group is a collection of parameters and their values that are applied
793// to all of the nodes in any cluster or replication group using the CacheParameterGroup.
794//
795// A newly created CacheParameterGroup is an exact duplicate of the default
796// parameter group for the CacheParameterGroupFamily. To customize the newly
797// created CacheParameterGroup you can change the values of specific parameters.
798// For more information, see:
799//
800//    * ModifyCacheParameterGroup (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheParameterGroup.html)
801//    in the ElastiCache API Reference.
802//
803//    * Parameters and Parameter Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ParameterGroups.html)
804//    in the ElastiCache User Guide.
805//
806// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
807// with awserr.Error's Code and Message methods to get detailed information about
808// the error.
809//
810// See the AWS API reference guide for Amazon ElastiCache's
811// API operation CreateCacheParameterGroup for usage and error information.
812//
813// Returned Error Codes:
814//   * ErrCodeCacheParameterGroupQuotaExceededFault "CacheParameterGroupQuotaExceeded"
815//   The request cannot be processed because it would exceed the maximum number
816//   of cache security groups.
817//
818//   * ErrCodeCacheParameterGroupAlreadyExistsFault "CacheParameterGroupAlreadyExists"
819//   A cache parameter group with the requested name already exists.
820//
821//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
822//   The current state of the cache parameter group does not allow the requested
823//   operation to occur.
824//
825//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
826//   The value for a parameter is invalid.
827//
828//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
829//   Two or more incompatible parameters were specified.
830//
831// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheParameterGroup
832func (c *ElastiCache) CreateCacheParameterGroup(input *CreateCacheParameterGroupInput) (*CreateCacheParameterGroupOutput, error) {
833	req, out := c.CreateCacheParameterGroupRequest(input)
834	return out, req.Send()
835}
836
837// CreateCacheParameterGroupWithContext is the same as CreateCacheParameterGroup with the addition of
838// the ability to pass a context and additional request options.
839//
840// See CreateCacheParameterGroup for details on how to use this API operation.
841//
842// The context must be non-nil and will be used for request cancellation. If
843// the context is nil a panic will occur. In the future the SDK may create
844// sub-contexts for http.Requests. See https://golang.org/pkg/context/
845// for more information on using Contexts.
846func (c *ElastiCache) CreateCacheParameterGroupWithContext(ctx aws.Context, input *CreateCacheParameterGroupInput, opts ...request.Option) (*CreateCacheParameterGroupOutput, error) {
847	req, out := c.CreateCacheParameterGroupRequest(input)
848	req.SetContext(ctx)
849	req.ApplyOptions(opts...)
850	return out, req.Send()
851}
852
853const opCreateCacheSecurityGroup = "CreateCacheSecurityGroup"
854
855// CreateCacheSecurityGroupRequest generates a "aws/request.Request" representing the
856// client's request for the CreateCacheSecurityGroup operation. The "output" return
857// value will be populated with the request's response once the request completes
858// successfully.
859//
860// Use "Send" method on the returned Request to send the API call to the service.
861// the "output" return value is not valid until after Send returns without error.
862//
863// See CreateCacheSecurityGroup for more information on using the CreateCacheSecurityGroup
864// API call, and error handling.
865//
866// This method is useful when you want to inject custom logic or configuration
867// into the SDK's request lifecycle. Such as custom headers, or retry logic.
868//
869//
870//    // Example sending a request using the CreateCacheSecurityGroupRequest method.
871//    req, resp := client.CreateCacheSecurityGroupRequest(params)
872//
873//    err := req.Send()
874//    if err == nil { // resp is now filled
875//        fmt.Println(resp)
876//    }
877//
878// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheSecurityGroup
879func (c *ElastiCache) CreateCacheSecurityGroupRequest(input *CreateCacheSecurityGroupInput) (req *request.Request, output *CreateCacheSecurityGroupOutput) {
880	op := &request.Operation{
881		Name:       opCreateCacheSecurityGroup,
882		HTTPMethod: "POST",
883		HTTPPath:   "/",
884	}
885
886	if input == nil {
887		input = &CreateCacheSecurityGroupInput{}
888	}
889
890	output = &CreateCacheSecurityGroupOutput{}
891	req = c.newRequest(op, input, output)
892	return
893}
894
895// CreateCacheSecurityGroup API operation for Amazon ElastiCache.
896//
897// Creates a new cache security group. Use a cache security group to control
898// access to one or more clusters.
899//
900// Cache security groups are only used when you are creating a cluster outside
901// of an Amazon Virtual Private Cloud (Amazon VPC). If you are creating a cluster
902// inside of a VPC, use a cache subnet group instead. For more information,
903// see CreateCacheSubnetGroup (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheSubnetGroup.html).
904//
905// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
906// with awserr.Error's Code and Message methods to get detailed information about
907// the error.
908//
909// See the AWS API reference guide for Amazon ElastiCache's
910// API operation CreateCacheSecurityGroup for usage and error information.
911//
912// Returned Error Codes:
913//   * ErrCodeCacheSecurityGroupAlreadyExistsFault "CacheSecurityGroupAlreadyExists"
914//   A cache security group with the specified name already exists.
915//
916//   * ErrCodeCacheSecurityGroupQuotaExceededFault "QuotaExceeded.CacheSecurityGroup"
917//   The request cannot be processed because it would exceed the allowed number
918//   of cache security groups.
919//
920//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
921//   The value for a parameter is invalid.
922//
923//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
924//   Two or more incompatible parameters were specified.
925//
926// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheSecurityGroup
927func (c *ElastiCache) CreateCacheSecurityGroup(input *CreateCacheSecurityGroupInput) (*CreateCacheSecurityGroupOutput, error) {
928	req, out := c.CreateCacheSecurityGroupRequest(input)
929	return out, req.Send()
930}
931
932// CreateCacheSecurityGroupWithContext is the same as CreateCacheSecurityGroup with the addition of
933// the ability to pass a context and additional request options.
934//
935// See CreateCacheSecurityGroup for details on how to use this API operation.
936//
937// The context must be non-nil and will be used for request cancellation. If
938// the context is nil a panic will occur. In the future the SDK may create
939// sub-contexts for http.Requests. See https://golang.org/pkg/context/
940// for more information on using Contexts.
941func (c *ElastiCache) CreateCacheSecurityGroupWithContext(ctx aws.Context, input *CreateCacheSecurityGroupInput, opts ...request.Option) (*CreateCacheSecurityGroupOutput, error) {
942	req, out := c.CreateCacheSecurityGroupRequest(input)
943	req.SetContext(ctx)
944	req.ApplyOptions(opts...)
945	return out, req.Send()
946}
947
948const opCreateCacheSubnetGroup = "CreateCacheSubnetGroup"
949
950// CreateCacheSubnetGroupRequest generates a "aws/request.Request" representing the
951// client's request for the CreateCacheSubnetGroup operation. The "output" return
952// value will be populated with the request's response once the request completes
953// successfully.
954//
955// Use "Send" method on the returned Request to send the API call to the service.
956// the "output" return value is not valid until after Send returns without error.
957//
958// See CreateCacheSubnetGroup for more information on using the CreateCacheSubnetGroup
959// API call, and error handling.
960//
961// This method is useful when you want to inject custom logic or configuration
962// into the SDK's request lifecycle. Such as custom headers, or retry logic.
963//
964//
965//    // Example sending a request using the CreateCacheSubnetGroupRequest method.
966//    req, resp := client.CreateCacheSubnetGroupRequest(params)
967//
968//    err := req.Send()
969//    if err == nil { // resp is now filled
970//        fmt.Println(resp)
971//    }
972//
973// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheSubnetGroup
974func (c *ElastiCache) CreateCacheSubnetGroupRequest(input *CreateCacheSubnetGroupInput) (req *request.Request, output *CreateCacheSubnetGroupOutput) {
975	op := &request.Operation{
976		Name:       opCreateCacheSubnetGroup,
977		HTTPMethod: "POST",
978		HTTPPath:   "/",
979	}
980
981	if input == nil {
982		input = &CreateCacheSubnetGroupInput{}
983	}
984
985	output = &CreateCacheSubnetGroupOutput{}
986	req = c.newRequest(op, input, output)
987	return
988}
989
990// CreateCacheSubnetGroup API operation for Amazon ElastiCache.
991//
992// Creates a new cache subnet group.
993//
994// Use this parameter only when you are creating a cluster in an Amazon Virtual
995// Private Cloud (Amazon VPC).
996//
997// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
998// with awserr.Error's Code and Message methods to get detailed information about
999// the error.
1000//
1001// See the AWS API reference guide for Amazon ElastiCache's
1002// API operation CreateCacheSubnetGroup for usage and error information.
1003//
1004// Returned Error Codes:
1005//   * ErrCodeCacheSubnetGroupAlreadyExistsFault "CacheSubnetGroupAlreadyExists"
1006//   The requested cache subnet group name is already in use by an existing cache
1007//   subnet group.
1008//
1009//   * ErrCodeCacheSubnetGroupQuotaExceededFault "CacheSubnetGroupQuotaExceeded"
1010//   The request cannot be processed because it would exceed the allowed number
1011//   of cache subnet groups.
1012//
1013//   * ErrCodeCacheSubnetQuotaExceededFault "CacheSubnetQuotaExceededFault"
1014//   The request cannot be processed because it would exceed the allowed number
1015//   of subnets in a cache subnet group.
1016//
1017//   * ErrCodeInvalidSubnet "InvalidSubnet"
1018//   An invalid subnet identifier was specified.
1019//
1020// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateCacheSubnetGroup
1021func (c *ElastiCache) CreateCacheSubnetGroup(input *CreateCacheSubnetGroupInput) (*CreateCacheSubnetGroupOutput, error) {
1022	req, out := c.CreateCacheSubnetGroupRequest(input)
1023	return out, req.Send()
1024}
1025
1026// CreateCacheSubnetGroupWithContext is the same as CreateCacheSubnetGroup with the addition of
1027// the ability to pass a context and additional request options.
1028//
1029// See CreateCacheSubnetGroup for details on how to use this API operation.
1030//
1031// The context must be non-nil and will be used for request cancellation. If
1032// the context is nil a panic will occur. In the future the SDK may create
1033// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1034// for more information on using Contexts.
1035func (c *ElastiCache) CreateCacheSubnetGroupWithContext(ctx aws.Context, input *CreateCacheSubnetGroupInput, opts ...request.Option) (*CreateCacheSubnetGroupOutput, error) {
1036	req, out := c.CreateCacheSubnetGroupRequest(input)
1037	req.SetContext(ctx)
1038	req.ApplyOptions(opts...)
1039	return out, req.Send()
1040}
1041
1042const opCreateGlobalReplicationGroup = "CreateGlobalReplicationGroup"
1043
1044// CreateGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
1045// client's request for the CreateGlobalReplicationGroup operation. The "output" return
1046// value will be populated with the request's response once the request completes
1047// successfully.
1048//
1049// Use "Send" method on the returned Request to send the API call to the service.
1050// the "output" return value is not valid until after Send returns without error.
1051//
1052// See CreateGlobalReplicationGroup for more information on using the CreateGlobalReplicationGroup
1053// API call, and error handling.
1054//
1055// This method is useful when you want to inject custom logic or configuration
1056// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1057//
1058//
1059//    // Example sending a request using the CreateGlobalReplicationGroupRequest method.
1060//    req, resp := client.CreateGlobalReplicationGroupRequest(params)
1061//
1062//    err := req.Send()
1063//    if err == nil { // resp is now filled
1064//        fmt.Println(resp)
1065//    }
1066//
1067// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateGlobalReplicationGroup
1068func (c *ElastiCache) CreateGlobalReplicationGroupRequest(input *CreateGlobalReplicationGroupInput) (req *request.Request, output *CreateGlobalReplicationGroupOutput) {
1069	op := &request.Operation{
1070		Name:       opCreateGlobalReplicationGroup,
1071		HTTPMethod: "POST",
1072		HTTPPath:   "/",
1073	}
1074
1075	if input == nil {
1076		input = &CreateGlobalReplicationGroupInput{}
1077	}
1078
1079	output = &CreateGlobalReplicationGroupOutput{}
1080	req = c.newRequest(op, input, output)
1081	return
1082}
1083
1084// CreateGlobalReplicationGroup API operation for Amazon ElastiCache.
1085//
1086// Global Datastore for Redis offers fully managed, fast, reliable and secure
1087// cross-region replication. Using Global Datastore for Redis, you can create
1088// cross-region read replica clusters for ElastiCache for Redis to enable low-latency
1089// reads and disaster recovery across regions. For more information, see Replication
1090// Across Regions Using Global Datastore (/AmazonElastiCache/latest/red-ug/Redis-Global-Clusters.html).
1091//
1092//    * The GlobalReplicationGroupIdSuffix is the name of the Global Datastore.
1093//
1094//    * The PrimaryReplicationGroupId represents the name of the primary cluster
1095//    that accepts writes and will replicate updates to the secondary cluster.
1096//
1097// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1098// with awserr.Error's Code and Message methods to get detailed information about
1099// the error.
1100//
1101// See the AWS API reference guide for Amazon ElastiCache's
1102// API operation CreateGlobalReplicationGroup for usage and error information.
1103//
1104// Returned Error Codes:
1105//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
1106//   The specified replication group does not exist.
1107//
1108//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
1109//   The requested replication group is not in the available state.
1110//
1111//   * ErrCodeGlobalReplicationGroupAlreadyExistsFault "GlobalReplicationGroupAlreadyExistsFault"
1112//   The Global Datastore name already exists.
1113//
1114//   * ErrCodeServiceLinkedRoleNotFoundFault "ServiceLinkedRoleNotFoundFault"
1115//   The specified service linked role (SLR) was not found.
1116//
1117//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1118//   The value for a parameter is invalid.
1119//
1120// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateGlobalReplicationGroup
1121func (c *ElastiCache) CreateGlobalReplicationGroup(input *CreateGlobalReplicationGroupInput) (*CreateGlobalReplicationGroupOutput, error) {
1122	req, out := c.CreateGlobalReplicationGroupRequest(input)
1123	return out, req.Send()
1124}
1125
1126// CreateGlobalReplicationGroupWithContext is the same as CreateGlobalReplicationGroup with the addition of
1127// the ability to pass a context and additional request options.
1128//
1129// See CreateGlobalReplicationGroup for details on how to use this API operation.
1130//
1131// The context must be non-nil and will be used for request cancellation. If
1132// the context is nil a panic will occur. In the future the SDK may create
1133// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1134// for more information on using Contexts.
1135func (c *ElastiCache) CreateGlobalReplicationGroupWithContext(ctx aws.Context, input *CreateGlobalReplicationGroupInput, opts ...request.Option) (*CreateGlobalReplicationGroupOutput, error) {
1136	req, out := c.CreateGlobalReplicationGroupRequest(input)
1137	req.SetContext(ctx)
1138	req.ApplyOptions(opts...)
1139	return out, req.Send()
1140}
1141
1142const opCreateReplicationGroup = "CreateReplicationGroup"
1143
1144// CreateReplicationGroupRequest generates a "aws/request.Request" representing the
1145// client's request for the CreateReplicationGroup operation. The "output" return
1146// value will be populated with the request's response once the request completes
1147// successfully.
1148//
1149// Use "Send" method on the returned Request to send the API call to the service.
1150// the "output" return value is not valid until after Send returns without error.
1151//
1152// See CreateReplicationGroup for more information on using the CreateReplicationGroup
1153// API call, and error handling.
1154//
1155// This method is useful when you want to inject custom logic or configuration
1156// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1157//
1158//
1159//    // Example sending a request using the CreateReplicationGroupRequest method.
1160//    req, resp := client.CreateReplicationGroupRequest(params)
1161//
1162//    err := req.Send()
1163//    if err == nil { // resp is now filled
1164//        fmt.Println(resp)
1165//    }
1166//
1167// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateReplicationGroup
1168func (c *ElastiCache) CreateReplicationGroupRequest(input *CreateReplicationGroupInput) (req *request.Request, output *CreateReplicationGroupOutput) {
1169	op := &request.Operation{
1170		Name:       opCreateReplicationGroup,
1171		HTTPMethod: "POST",
1172		HTTPPath:   "/",
1173	}
1174
1175	if input == nil {
1176		input = &CreateReplicationGroupInput{}
1177	}
1178
1179	output = &CreateReplicationGroupOutput{}
1180	req = c.newRequest(op, input, output)
1181	return
1182}
1183
1184// CreateReplicationGroup API operation for Amazon ElastiCache.
1185//
1186// Creates a Redis (cluster mode disabled) or a Redis (cluster mode enabled)
1187// replication group.
1188//
1189// This API can be used to create a standalone regional replication group or
1190// a secondary replication group associated with a Global Datastore.
1191//
1192// A Redis (cluster mode disabled) replication group is a collection of clusters,
1193// where one of the clusters is a read/write primary and the others are read-only
1194// replicas. Writes to the primary are asynchronously propagated to the replicas.
1195//
1196// A Redis (cluster mode enabled) replication group is a collection of 1 to
1197// 90 node groups (shards). Each node group (shard) has one read/write primary
1198// node and up to 5 read-only replica nodes. Writes to the primary are asynchronously
1199// propagated to the replicas. Redis (cluster mode enabled) replication groups
1200// partition the data across node groups (shards).
1201//
1202// When a Redis (cluster mode disabled) replication group has been successfully
1203// created, you can add one or more read replicas to it, up to a total of 5
1204// read replicas. You cannot alter a Redis (cluster mode enabled) replication
1205// group after it has been created. However, if you need to increase or decrease
1206// the number of node groups (console: shards), you can avail yourself of ElastiCache
1207// for Redis' enhanced backup and restore. For more information, see Restoring
1208// From a Backup with Cluster Resizing (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/backups-restoring.html)
1209// in the ElastiCache User Guide.
1210//
1211// This operation is valid for Redis only.
1212//
1213// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1214// with awserr.Error's Code and Message methods to get detailed information about
1215// the error.
1216//
1217// See the AWS API reference guide for Amazon ElastiCache's
1218// API operation CreateReplicationGroup for usage and error information.
1219//
1220// Returned Error Codes:
1221//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
1222//   The requested cluster ID does not refer to an existing cluster.
1223//
1224//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1225//   The requested cluster is not in the available state.
1226//
1227//   * ErrCodeReplicationGroupAlreadyExistsFault "ReplicationGroupAlreadyExists"
1228//   The specified replication group already exists.
1229//
1230//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
1231//   The requested cache node type is not available in the specified Availability
1232//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
1233//   in the ElastiCache User Guide.
1234//
1235//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
1236//   The requested cache security group name does not refer to an existing cache
1237//   security group.
1238//
1239//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
1240//   The requested cache subnet group name does not refer to an existing cache
1241//   subnet group.
1242//
1243//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
1244//   The request cannot be processed because it would exceed the allowed number
1245//   of clusters per customer.
1246//
1247//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
1248//   The request cannot be processed because it would exceed the allowed number
1249//   of cache nodes in a single cluster.
1250//
1251//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
1252//   The request cannot be processed because it would exceed the allowed number
1253//   of cache nodes per customer.
1254//
1255//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
1256//   The requested cache parameter group name does not refer to an existing cache
1257//   parameter group.
1258//
1259//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
1260//   The VPC network is in an invalid state.
1261//
1262//   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
1263//   The request cannot be processed because it would cause the resource to have
1264//   more than the allowed number of tags. The maximum number of tags permitted
1265//   on a resource is 50.
1266//
1267//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
1268//   The request cannot be processed because it would exceed the maximum allowed
1269//   number of node groups (shards) in a single replication group. The default
1270//   maximum is 90
1271//
1272//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
1273//   The Global Datastore does not exist
1274//
1275//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
1276//   The Global Datastore is not available or in primary-only state.
1277//
1278//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1279//   The value for a parameter is invalid.
1280//
1281//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1282//   Two or more incompatible parameters were specified.
1283//
1284// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateReplicationGroup
1285func (c *ElastiCache) CreateReplicationGroup(input *CreateReplicationGroupInput) (*CreateReplicationGroupOutput, error) {
1286	req, out := c.CreateReplicationGroupRequest(input)
1287	return out, req.Send()
1288}
1289
1290// CreateReplicationGroupWithContext is the same as CreateReplicationGroup with the addition of
1291// the ability to pass a context and additional request options.
1292//
1293// See CreateReplicationGroup for details on how to use this API operation.
1294//
1295// The context must be non-nil and will be used for request cancellation. If
1296// the context is nil a panic will occur. In the future the SDK may create
1297// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1298// for more information on using Contexts.
1299func (c *ElastiCache) CreateReplicationGroupWithContext(ctx aws.Context, input *CreateReplicationGroupInput, opts ...request.Option) (*CreateReplicationGroupOutput, error) {
1300	req, out := c.CreateReplicationGroupRequest(input)
1301	req.SetContext(ctx)
1302	req.ApplyOptions(opts...)
1303	return out, req.Send()
1304}
1305
1306const opCreateSnapshot = "CreateSnapshot"
1307
1308// CreateSnapshotRequest generates a "aws/request.Request" representing the
1309// client's request for the CreateSnapshot operation. The "output" return
1310// value will be populated with the request's response once the request completes
1311// successfully.
1312//
1313// Use "Send" method on the returned Request to send the API call to the service.
1314// the "output" return value is not valid until after Send returns without error.
1315//
1316// See CreateSnapshot for more information on using the CreateSnapshot
1317// API call, and error handling.
1318//
1319// This method is useful when you want to inject custom logic or configuration
1320// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1321//
1322//
1323//    // Example sending a request using the CreateSnapshotRequest method.
1324//    req, resp := client.CreateSnapshotRequest(params)
1325//
1326//    err := req.Send()
1327//    if err == nil { // resp is now filled
1328//        fmt.Println(resp)
1329//    }
1330//
1331// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateSnapshot
1332func (c *ElastiCache) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Request, output *CreateSnapshotOutput) {
1333	op := &request.Operation{
1334		Name:       opCreateSnapshot,
1335		HTTPMethod: "POST",
1336		HTTPPath:   "/",
1337	}
1338
1339	if input == nil {
1340		input = &CreateSnapshotInput{}
1341	}
1342
1343	output = &CreateSnapshotOutput{}
1344	req = c.newRequest(op, input, output)
1345	return
1346}
1347
1348// CreateSnapshot API operation for Amazon ElastiCache.
1349//
1350// Creates a copy of an entire cluster or replication group at a specific moment
1351// in time.
1352//
1353// This operation is valid for Redis only.
1354//
1355// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1356// with awserr.Error's Code and Message methods to get detailed information about
1357// the error.
1358//
1359// See the AWS API reference guide for Amazon ElastiCache's
1360// API operation CreateSnapshot for usage and error information.
1361//
1362// Returned Error Codes:
1363//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
1364//   You already have a snapshot with the given name.
1365//
1366//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
1367//   The requested cluster ID does not refer to an existing cluster.
1368//
1369//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
1370//   The specified replication group does not exist.
1371//
1372//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1373//   The requested cluster is not in the available state.
1374//
1375//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
1376//   The requested replication group is not in the available state.
1377//
1378//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
1379//   The request cannot be processed because it would exceed the maximum number
1380//   of snapshots.
1381//
1382//   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
1383//   You attempted one of the following operations:
1384//
1385//      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
1386//      node.
1387//
1388//      * Creating a snapshot of a cluster that is running Memcached rather than
1389//      Redis.
1390//
1391//   Neither of these are supported by ElastiCache.
1392//
1393//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1394//   Two or more incompatible parameters were specified.
1395//
1396//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1397//   The value for a parameter is invalid.
1398//
1399// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateSnapshot
1400func (c *ElastiCache) CreateSnapshot(input *CreateSnapshotInput) (*CreateSnapshotOutput, error) {
1401	req, out := c.CreateSnapshotRequest(input)
1402	return out, req.Send()
1403}
1404
1405// CreateSnapshotWithContext is the same as CreateSnapshot with the addition of
1406// the ability to pass a context and additional request options.
1407//
1408// See CreateSnapshot for details on how to use this API operation.
1409//
1410// The context must be non-nil and will be used for request cancellation. If
1411// the context is nil a panic will occur. In the future the SDK may create
1412// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1413// for more information on using Contexts.
1414func (c *ElastiCache) CreateSnapshotWithContext(ctx aws.Context, input *CreateSnapshotInput, opts ...request.Option) (*CreateSnapshotOutput, error) {
1415	req, out := c.CreateSnapshotRequest(input)
1416	req.SetContext(ctx)
1417	req.ApplyOptions(opts...)
1418	return out, req.Send()
1419}
1420
1421const opDecreaseNodeGroupsInGlobalReplicationGroup = "DecreaseNodeGroupsInGlobalReplicationGroup"
1422
1423// DecreaseNodeGroupsInGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
1424// client's request for the DecreaseNodeGroupsInGlobalReplicationGroup operation. The "output" return
1425// value will be populated with the request's response once the request completes
1426// successfully.
1427//
1428// Use "Send" method on the returned Request to send the API call to the service.
1429// the "output" return value is not valid until after Send returns without error.
1430//
1431// See DecreaseNodeGroupsInGlobalReplicationGroup for more information on using the DecreaseNodeGroupsInGlobalReplicationGroup
1432// API call, and error handling.
1433//
1434// This method is useful when you want to inject custom logic or configuration
1435// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1436//
1437//
1438//    // Example sending a request using the DecreaseNodeGroupsInGlobalReplicationGroupRequest method.
1439//    req, resp := client.DecreaseNodeGroupsInGlobalReplicationGroupRequest(params)
1440//
1441//    err := req.Send()
1442//    if err == nil { // resp is now filled
1443//        fmt.Println(resp)
1444//    }
1445//
1446// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseNodeGroupsInGlobalReplicationGroup
1447func (c *ElastiCache) DecreaseNodeGroupsInGlobalReplicationGroupRequest(input *DecreaseNodeGroupsInGlobalReplicationGroupInput) (req *request.Request, output *DecreaseNodeGroupsInGlobalReplicationGroupOutput) {
1448	op := &request.Operation{
1449		Name:       opDecreaseNodeGroupsInGlobalReplicationGroup,
1450		HTTPMethod: "POST",
1451		HTTPPath:   "/",
1452	}
1453
1454	if input == nil {
1455		input = &DecreaseNodeGroupsInGlobalReplicationGroupInput{}
1456	}
1457
1458	output = &DecreaseNodeGroupsInGlobalReplicationGroupOutput{}
1459	req = c.newRequest(op, input, output)
1460	return
1461}
1462
1463// DecreaseNodeGroupsInGlobalReplicationGroup API operation for Amazon ElastiCache.
1464//
1465// Decreases the number of node groups in a Global Datastore
1466//
1467// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1468// with awserr.Error's Code and Message methods to get detailed information about
1469// the error.
1470//
1471// See the AWS API reference guide for Amazon ElastiCache's
1472// API operation DecreaseNodeGroupsInGlobalReplicationGroup for usage and error information.
1473//
1474// Returned Error Codes:
1475//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
1476//   The Global Datastore does not exist
1477//
1478//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
1479//   The Global Datastore is not available or in primary-only state.
1480//
1481//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1482//   The value for a parameter is invalid.
1483//
1484//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1485//   Two or more incompatible parameters were specified.
1486//
1487// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseNodeGroupsInGlobalReplicationGroup
1488func (c *ElastiCache) DecreaseNodeGroupsInGlobalReplicationGroup(input *DecreaseNodeGroupsInGlobalReplicationGroupInput) (*DecreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
1489	req, out := c.DecreaseNodeGroupsInGlobalReplicationGroupRequest(input)
1490	return out, req.Send()
1491}
1492
1493// DecreaseNodeGroupsInGlobalReplicationGroupWithContext is the same as DecreaseNodeGroupsInGlobalReplicationGroup with the addition of
1494// the ability to pass a context and additional request options.
1495//
1496// See DecreaseNodeGroupsInGlobalReplicationGroup for details on how to use this API operation.
1497//
1498// The context must be non-nil and will be used for request cancellation. If
1499// the context is nil a panic will occur. In the future the SDK may create
1500// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1501// for more information on using Contexts.
1502func (c *ElastiCache) DecreaseNodeGroupsInGlobalReplicationGroupWithContext(ctx aws.Context, input *DecreaseNodeGroupsInGlobalReplicationGroupInput, opts ...request.Option) (*DecreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
1503	req, out := c.DecreaseNodeGroupsInGlobalReplicationGroupRequest(input)
1504	req.SetContext(ctx)
1505	req.ApplyOptions(opts...)
1506	return out, req.Send()
1507}
1508
1509const opDecreaseReplicaCount = "DecreaseReplicaCount"
1510
1511// DecreaseReplicaCountRequest generates a "aws/request.Request" representing the
1512// client's request for the DecreaseReplicaCount operation. The "output" return
1513// value will be populated with the request's response once the request completes
1514// successfully.
1515//
1516// Use "Send" method on the returned Request to send the API call to the service.
1517// the "output" return value is not valid until after Send returns without error.
1518//
1519// See DecreaseReplicaCount for more information on using the DecreaseReplicaCount
1520// API call, and error handling.
1521//
1522// This method is useful when you want to inject custom logic or configuration
1523// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1524//
1525//
1526//    // Example sending a request using the DecreaseReplicaCountRequest method.
1527//    req, resp := client.DecreaseReplicaCountRequest(params)
1528//
1529//    err := req.Send()
1530//    if err == nil { // resp is now filled
1531//        fmt.Println(resp)
1532//    }
1533//
1534// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseReplicaCount
1535func (c *ElastiCache) DecreaseReplicaCountRequest(input *DecreaseReplicaCountInput) (req *request.Request, output *DecreaseReplicaCountOutput) {
1536	op := &request.Operation{
1537		Name:       opDecreaseReplicaCount,
1538		HTTPMethod: "POST",
1539		HTTPPath:   "/",
1540	}
1541
1542	if input == nil {
1543		input = &DecreaseReplicaCountInput{}
1544	}
1545
1546	output = &DecreaseReplicaCountOutput{}
1547	req = c.newRequest(op, input, output)
1548	return
1549}
1550
1551// DecreaseReplicaCount API operation for Amazon ElastiCache.
1552//
1553// Dynamically decreases the number of replicas in a Redis (cluster mode disabled)
1554// replication group or the number of replica nodes in one or more node groups
1555// (shards) of a Redis (cluster mode enabled) replication group. This operation
1556// is performed with no cluster down time.
1557//
1558// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1559// with awserr.Error's Code and Message methods to get detailed information about
1560// the error.
1561//
1562// See the AWS API reference guide for Amazon ElastiCache's
1563// API operation DecreaseReplicaCount for usage and error information.
1564//
1565// Returned Error Codes:
1566//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
1567//   The specified replication group does not exist.
1568//
1569//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
1570//   The requested replication group is not in the available state.
1571//
1572//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1573//   The requested cluster is not in the available state.
1574//
1575//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
1576//   The VPC network is in an invalid state.
1577//
1578//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
1579//   The requested cache node type is not available in the specified Availability
1580//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
1581//   in the ElastiCache User Guide.
1582//
1583//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
1584//   The request cannot be processed because it would exceed the allowed number
1585//   of clusters per customer.
1586//
1587//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
1588//   The request cannot be processed because it would exceed the maximum allowed
1589//   number of node groups (shards) in a single replication group. The default
1590//   maximum is 90
1591//
1592//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
1593//   The request cannot be processed because it would exceed the allowed number
1594//   of cache nodes per customer.
1595//
1596//   * ErrCodeServiceLinkedRoleNotFoundFault "ServiceLinkedRoleNotFoundFault"
1597//   The specified service linked role (SLR) was not found.
1598//
1599//   * ErrCodeNoOperationFault "NoOperationFault"
1600//   The operation was not performed because no changes were required.
1601//
1602//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1603//   The value for a parameter is invalid.
1604//
1605//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1606//   Two or more incompatible parameters were specified.
1607//
1608// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseReplicaCount
1609func (c *ElastiCache) DecreaseReplicaCount(input *DecreaseReplicaCountInput) (*DecreaseReplicaCountOutput, error) {
1610	req, out := c.DecreaseReplicaCountRequest(input)
1611	return out, req.Send()
1612}
1613
1614// DecreaseReplicaCountWithContext is the same as DecreaseReplicaCount with the addition of
1615// the ability to pass a context and additional request options.
1616//
1617// See DecreaseReplicaCount for details on how to use this API operation.
1618//
1619// The context must be non-nil and will be used for request cancellation. If
1620// the context is nil a panic will occur. In the future the SDK may create
1621// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1622// for more information on using Contexts.
1623func (c *ElastiCache) DecreaseReplicaCountWithContext(ctx aws.Context, input *DecreaseReplicaCountInput, opts ...request.Option) (*DecreaseReplicaCountOutput, error) {
1624	req, out := c.DecreaseReplicaCountRequest(input)
1625	req.SetContext(ctx)
1626	req.ApplyOptions(opts...)
1627	return out, req.Send()
1628}
1629
1630const opDeleteCacheCluster = "DeleteCacheCluster"
1631
1632// DeleteCacheClusterRequest generates a "aws/request.Request" representing the
1633// client's request for the DeleteCacheCluster operation. The "output" return
1634// value will be populated with the request's response once the request completes
1635// successfully.
1636//
1637// Use "Send" method on the returned Request to send the API call to the service.
1638// the "output" return value is not valid until after Send returns without error.
1639//
1640// See DeleteCacheCluster for more information on using the DeleteCacheCluster
1641// API call, and error handling.
1642//
1643// This method is useful when you want to inject custom logic or configuration
1644// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1645//
1646//
1647//    // Example sending a request using the DeleteCacheClusterRequest method.
1648//    req, resp := client.DeleteCacheClusterRequest(params)
1649//
1650//    err := req.Send()
1651//    if err == nil { // resp is now filled
1652//        fmt.Println(resp)
1653//    }
1654//
1655// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheCluster
1656func (c *ElastiCache) DeleteCacheClusterRequest(input *DeleteCacheClusterInput) (req *request.Request, output *DeleteCacheClusterOutput) {
1657	op := &request.Operation{
1658		Name:       opDeleteCacheCluster,
1659		HTTPMethod: "POST",
1660		HTTPPath:   "/",
1661	}
1662
1663	if input == nil {
1664		input = &DeleteCacheClusterInput{}
1665	}
1666
1667	output = &DeleteCacheClusterOutput{}
1668	req = c.newRequest(op, input, output)
1669	return
1670}
1671
1672// DeleteCacheCluster API operation for Amazon ElastiCache.
1673//
1674// Deletes a previously provisioned cluster. DeleteCacheCluster deletes all
1675// associated cache nodes, node endpoints and the cluster itself. When you receive
1676// a successful response from this operation, Amazon ElastiCache immediately
1677// begins deleting the cluster; you cannot cancel or revert this operation.
1678//
1679// This operation is not valid for:
1680//
1681//    * Redis (cluster mode enabled) clusters
1682//
1683//    * A cluster that is the last read replica of a replication group
1684//
1685//    * A node group (shard) that has Multi-AZ mode enabled
1686//
1687//    * A cluster from a Redis (cluster mode enabled) replication group
1688//
1689//    * A cluster that is not in the available state
1690//
1691// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1692// with awserr.Error's Code and Message methods to get detailed information about
1693// the error.
1694//
1695// See the AWS API reference guide for Amazon ElastiCache's
1696// API operation DeleteCacheCluster for usage and error information.
1697//
1698// Returned Error Codes:
1699//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
1700//   The requested cluster ID does not refer to an existing cluster.
1701//
1702//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1703//   The requested cluster is not in the available state.
1704//
1705//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
1706//   You already have a snapshot with the given name.
1707//
1708//   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
1709//   You attempted one of the following operations:
1710//
1711//      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
1712//      node.
1713//
1714//      * Creating a snapshot of a cluster that is running Memcached rather than
1715//      Redis.
1716//
1717//   Neither of these are supported by ElastiCache.
1718//
1719//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
1720//   The request cannot be processed because it would exceed the maximum number
1721//   of snapshots.
1722//
1723//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1724//   The value for a parameter is invalid.
1725//
1726//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1727//   Two or more incompatible parameters were specified.
1728//
1729// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheCluster
1730func (c *ElastiCache) DeleteCacheCluster(input *DeleteCacheClusterInput) (*DeleteCacheClusterOutput, error) {
1731	req, out := c.DeleteCacheClusterRequest(input)
1732	return out, req.Send()
1733}
1734
1735// DeleteCacheClusterWithContext is the same as DeleteCacheCluster with the addition of
1736// the ability to pass a context and additional request options.
1737//
1738// See DeleteCacheCluster for details on how to use this API operation.
1739//
1740// The context must be non-nil and will be used for request cancellation. If
1741// the context is nil a panic will occur. In the future the SDK may create
1742// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1743// for more information on using Contexts.
1744func (c *ElastiCache) DeleteCacheClusterWithContext(ctx aws.Context, input *DeleteCacheClusterInput, opts ...request.Option) (*DeleteCacheClusterOutput, error) {
1745	req, out := c.DeleteCacheClusterRequest(input)
1746	req.SetContext(ctx)
1747	req.ApplyOptions(opts...)
1748	return out, req.Send()
1749}
1750
1751const opDeleteCacheParameterGroup = "DeleteCacheParameterGroup"
1752
1753// DeleteCacheParameterGroupRequest generates a "aws/request.Request" representing the
1754// client's request for the DeleteCacheParameterGroup operation. The "output" return
1755// value will be populated with the request's response once the request completes
1756// successfully.
1757//
1758// Use "Send" method on the returned Request to send the API call to the service.
1759// the "output" return value is not valid until after Send returns without error.
1760//
1761// See DeleteCacheParameterGroup for more information on using the DeleteCacheParameterGroup
1762// API call, and error handling.
1763//
1764// This method is useful when you want to inject custom logic or configuration
1765// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1766//
1767//
1768//    // Example sending a request using the DeleteCacheParameterGroupRequest method.
1769//    req, resp := client.DeleteCacheParameterGroupRequest(params)
1770//
1771//    err := req.Send()
1772//    if err == nil { // resp is now filled
1773//        fmt.Println(resp)
1774//    }
1775//
1776// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheParameterGroup
1777func (c *ElastiCache) DeleteCacheParameterGroupRequest(input *DeleteCacheParameterGroupInput) (req *request.Request, output *DeleteCacheParameterGroupOutput) {
1778	op := &request.Operation{
1779		Name:       opDeleteCacheParameterGroup,
1780		HTTPMethod: "POST",
1781		HTTPPath:   "/",
1782	}
1783
1784	if input == nil {
1785		input = &DeleteCacheParameterGroupInput{}
1786	}
1787
1788	output = &DeleteCacheParameterGroupOutput{}
1789	req = c.newRequest(op, input, output)
1790	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1791	return
1792}
1793
1794// DeleteCacheParameterGroup API operation for Amazon ElastiCache.
1795//
1796// Deletes the specified cache parameter group. You cannot delete a cache parameter
1797// group if it is associated with any cache clusters.
1798//
1799// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1800// with awserr.Error's Code and Message methods to get detailed information about
1801// the error.
1802//
1803// See the AWS API reference guide for Amazon ElastiCache's
1804// API operation DeleteCacheParameterGroup for usage and error information.
1805//
1806// Returned Error Codes:
1807//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
1808//   The current state of the cache parameter group does not allow the requested
1809//   operation to occur.
1810//
1811//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
1812//   The requested cache parameter group name does not refer to an existing cache
1813//   parameter group.
1814//
1815//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1816//   The value for a parameter is invalid.
1817//
1818//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1819//   Two or more incompatible parameters were specified.
1820//
1821// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheParameterGroup
1822func (c *ElastiCache) DeleteCacheParameterGroup(input *DeleteCacheParameterGroupInput) (*DeleteCacheParameterGroupOutput, error) {
1823	req, out := c.DeleteCacheParameterGroupRequest(input)
1824	return out, req.Send()
1825}
1826
1827// DeleteCacheParameterGroupWithContext is the same as DeleteCacheParameterGroup with the addition of
1828// the ability to pass a context and additional request options.
1829//
1830// See DeleteCacheParameterGroup for details on how to use this API operation.
1831//
1832// The context must be non-nil and will be used for request cancellation. If
1833// the context is nil a panic will occur. In the future the SDK may create
1834// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1835// for more information on using Contexts.
1836func (c *ElastiCache) DeleteCacheParameterGroupWithContext(ctx aws.Context, input *DeleteCacheParameterGroupInput, opts ...request.Option) (*DeleteCacheParameterGroupOutput, error) {
1837	req, out := c.DeleteCacheParameterGroupRequest(input)
1838	req.SetContext(ctx)
1839	req.ApplyOptions(opts...)
1840	return out, req.Send()
1841}
1842
1843const opDeleteCacheSecurityGroup = "DeleteCacheSecurityGroup"
1844
1845// DeleteCacheSecurityGroupRequest generates a "aws/request.Request" representing the
1846// client's request for the DeleteCacheSecurityGroup operation. The "output" return
1847// value will be populated with the request's response once the request completes
1848// successfully.
1849//
1850// Use "Send" method on the returned Request to send the API call to the service.
1851// the "output" return value is not valid until after Send returns without error.
1852//
1853// See DeleteCacheSecurityGroup for more information on using the DeleteCacheSecurityGroup
1854// API call, and error handling.
1855//
1856// This method is useful when you want to inject custom logic or configuration
1857// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1858//
1859//
1860//    // Example sending a request using the DeleteCacheSecurityGroupRequest method.
1861//    req, resp := client.DeleteCacheSecurityGroupRequest(params)
1862//
1863//    err := req.Send()
1864//    if err == nil { // resp is now filled
1865//        fmt.Println(resp)
1866//    }
1867//
1868// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSecurityGroup
1869func (c *ElastiCache) DeleteCacheSecurityGroupRequest(input *DeleteCacheSecurityGroupInput) (req *request.Request, output *DeleteCacheSecurityGroupOutput) {
1870	op := &request.Operation{
1871		Name:       opDeleteCacheSecurityGroup,
1872		HTTPMethod: "POST",
1873		HTTPPath:   "/",
1874	}
1875
1876	if input == nil {
1877		input = &DeleteCacheSecurityGroupInput{}
1878	}
1879
1880	output = &DeleteCacheSecurityGroupOutput{}
1881	req = c.newRequest(op, input, output)
1882	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1883	return
1884}
1885
1886// DeleteCacheSecurityGroup API operation for Amazon ElastiCache.
1887//
1888// Deletes a cache security group.
1889//
1890// You cannot delete a cache security group if it is associated with any clusters.
1891//
1892// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1893// with awserr.Error's Code and Message methods to get detailed information about
1894// the error.
1895//
1896// See the AWS API reference guide for Amazon ElastiCache's
1897// API operation DeleteCacheSecurityGroup for usage and error information.
1898//
1899// Returned Error Codes:
1900//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
1901//   The current state of the cache security group does not allow deletion.
1902//
1903//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
1904//   The requested cache security group name does not refer to an existing cache
1905//   security group.
1906//
1907//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1908//   The value for a parameter is invalid.
1909//
1910//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1911//   Two or more incompatible parameters were specified.
1912//
1913// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSecurityGroup
1914func (c *ElastiCache) DeleteCacheSecurityGroup(input *DeleteCacheSecurityGroupInput) (*DeleteCacheSecurityGroupOutput, error) {
1915	req, out := c.DeleteCacheSecurityGroupRequest(input)
1916	return out, req.Send()
1917}
1918
1919// DeleteCacheSecurityGroupWithContext is the same as DeleteCacheSecurityGroup with the addition of
1920// the ability to pass a context and additional request options.
1921//
1922// See DeleteCacheSecurityGroup for details on how to use this API operation.
1923//
1924// The context must be non-nil and will be used for request cancellation. If
1925// the context is nil a panic will occur. In the future the SDK may create
1926// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1927// for more information on using Contexts.
1928func (c *ElastiCache) DeleteCacheSecurityGroupWithContext(ctx aws.Context, input *DeleteCacheSecurityGroupInput, opts ...request.Option) (*DeleteCacheSecurityGroupOutput, error) {
1929	req, out := c.DeleteCacheSecurityGroupRequest(input)
1930	req.SetContext(ctx)
1931	req.ApplyOptions(opts...)
1932	return out, req.Send()
1933}
1934
1935const opDeleteCacheSubnetGroup = "DeleteCacheSubnetGroup"
1936
1937// DeleteCacheSubnetGroupRequest generates a "aws/request.Request" representing the
1938// client's request for the DeleteCacheSubnetGroup operation. The "output" return
1939// value will be populated with the request's response once the request completes
1940// successfully.
1941//
1942// Use "Send" method on the returned Request to send the API call to the service.
1943// the "output" return value is not valid until after Send returns without error.
1944//
1945// See DeleteCacheSubnetGroup for more information on using the DeleteCacheSubnetGroup
1946// API call, and error handling.
1947//
1948// This method is useful when you want to inject custom logic or configuration
1949// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1950//
1951//
1952//    // Example sending a request using the DeleteCacheSubnetGroupRequest method.
1953//    req, resp := client.DeleteCacheSubnetGroupRequest(params)
1954//
1955//    err := req.Send()
1956//    if err == nil { // resp is now filled
1957//        fmt.Println(resp)
1958//    }
1959//
1960// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSubnetGroup
1961func (c *ElastiCache) DeleteCacheSubnetGroupRequest(input *DeleteCacheSubnetGroupInput) (req *request.Request, output *DeleteCacheSubnetGroupOutput) {
1962	op := &request.Operation{
1963		Name:       opDeleteCacheSubnetGroup,
1964		HTTPMethod: "POST",
1965		HTTPPath:   "/",
1966	}
1967
1968	if input == nil {
1969		input = &DeleteCacheSubnetGroupInput{}
1970	}
1971
1972	output = &DeleteCacheSubnetGroupOutput{}
1973	req = c.newRequest(op, input, output)
1974	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1975	return
1976}
1977
1978// DeleteCacheSubnetGroup API operation for Amazon ElastiCache.
1979//
1980// Deletes a cache subnet group.
1981//
1982// You cannot delete a cache subnet group if it is associated with any clusters.
1983//
1984// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1985// with awserr.Error's Code and Message methods to get detailed information about
1986// the error.
1987//
1988// See the AWS API reference guide for Amazon ElastiCache's
1989// API operation DeleteCacheSubnetGroup for usage and error information.
1990//
1991// Returned Error Codes:
1992//   * ErrCodeCacheSubnetGroupInUse "CacheSubnetGroupInUse"
1993//   The requested cache subnet group is currently in use.
1994//
1995//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
1996//   The requested cache subnet group name does not refer to an existing cache
1997//   subnet group.
1998//
1999// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSubnetGroup
2000func (c *ElastiCache) DeleteCacheSubnetGroup(input *DeleteCacheSubnetGroupInput) (*DeleteCacheSubnetGroupOutput, error) {
2001	req, out := c.DeleteCacheSubnetGroupRequest(input)
2002	return out, req.Send()
2003}
2004
2005// DeleteCacheSubnetGroupWithContext is the same as DeleteCacheSubnetGroup with the addition of
2006// the ability to pass a context and additional request options.
2007//
2008// See DeleteCacheSubnetGroup for details on how to use this API operation.
2009//
2010// The context must be non-nil and will be used for request cancellation. If
2011// the context is nil a panic will occur. In the future the SDK may create
2012// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2013// for more information on using Contexts.
2014func (c *ElastiCache) DeleteCacheSubnetGroupWithContext(ctx aws.Context, input *DeleteCacheSubnetGroupInput, opts ...request.Option) (*DeleteCacheSubnetGroupOutput, error) {
2015	req, out := c.DeleteCacheSubnetGroupRequest(input)
2016	req.SetContext(ctx)
2017	req.ApplyOptions(opts...)
2018	return out, req.Send()
2019}
2020
2021const opDeleteGlobalReplicationGroup = "DeleteGlobalReplicationGroup"
2022
2023// DeleteGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
2024// client's request for the DeleteGlobalReplicationGroup operation. The "output" return
2025// value will be populated with the request's response once the request completes
2026// successfully.
2027//
2028// Use "Send" method on the returned Request to send the API call to the service.
2029// the "output" return value is not valid until after Send returns without error.
2030//
2031// See DeleteGlobalReplicationGroup for more information on using the DeleteGlobalReplicationGroup
2032// API call, and error handling.
2033//
2034// This method is useful when you want to inject custom logic or configuration
2035// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2036//
2037//
2038//    // Example sending a request using the DeleteGlobalReplicationGroupRequest method.
2039//    req, resp := client.DeleteGlobalReplicationGroupRequest(params)
2040//
2041//    err := req.Send()
2042//    if err == nil { // resp is now filled
2043//        fmt.Println(resp)
2044//    }
2045//
2046// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteGlobalReplicationGroup
2047func (c *ElastiCache) DeleteGlobalReplicationGroupRequest(input *DeleteGlobalReplicationGroupInput) (req *request.Request, output *DeleteGlobalReplicationGroupOutput) {
2048	op := &request.Operation{
2049		Name:       opDeleteGlobalReplicationGroup,
2050		HTTPMethod: "POST",
2051		HTTPPath:   "/",
2052	}
2053
2054	if input == nil {
2055		input = &DeleteGlobalReplicationGroupInput{}
2056	}
2057
2058	output = &DeleteGlobalReplicationGroupOutput{}
2059	req = c.newRequest(op, input, output)
2060	return
2061}
2062
2063// DeleteGlobalReplicationGroup API operation for Amazon ElastiCache.
2064//
2065// Deleting a Global Datastore is a two-step process:
2066//
2067//    * First, you must DisassociateGlobalReplicationGroup to remove the secondary
2068//    clusters in the Global Datastore.
2069//
2070//    * Once the Global Datastore contains only the primary cluster, you can
2071//    use DeleteGlobalReplicationGroup API to delete the Global Datastore while
2072//    retainining the primary cluster using Retain…= true.
2073//
2074// Since the Global Datastore has only a primary cluster, you can delete the
2075// Global Datastore while retaining the primary by setting RetainPrimaryCluster=true.
2076//
2077// When you receive a successful response from this operation, Amazon ElastiCache
2078// immediately begins deleting the selected resources; you cannot cancel or
2079// revert this operation.
2080//
2081// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2082// with awserr.Error's Code and Message methods to get detailed information about
2083// the error.
2084//
2085// See the AWS API reference guide for Amazon ElastiCache's
2086// API operation DeleteGlobalReplicationGroup for usage and error information.
2087//
2088// Returned Error Codes:
2089//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
2090//   The Global Datastore does not exist
2091//
2092//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
2093//   The Global Datastore is not available or in primary-only state.
2094//
2095//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2096//   The value for a parameter is invalid.
2097//
2098// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteGlobalReplicationGroup
2099func (c *ElastiCache) DeleteGlobalReplicationGroup(input *DeleteGlobalReplicationGroupInput) (*DeleteGlobalReplicationGroupOutput, error) {
2100	req, out := c.DeleteGlobalReplicationGroupRequest(input)
2101	return out, req.Send()
2102}
2103
2104// DeleteGlobalReplicationGroupWithContext is the same as DeleteGlobalReplicationGroup with the addition of
2105// the ability to pass a context and additional request options.
2106//
2107// See DeleteGlobalReplicationGroup for details on how to use this API operation.
2108//
2109// The context must be non-nil and will be used for request cancellation. If
2110// the context is nil a panic will occur. In the future the SDK may create
2111// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2112// for more information on using Contexts.
2113func (c *ElastiCache) DeleteGlobalReplicationGroupWithContext(ctx aws.Context, input *DeleteGlobalReplicationGroupInput, opts ...request.Option) (*DeleteGlobalReplicationGroupOutput, error) {
2114	req, out := c.DeleteGlobalReplicationGroupRequest(input)
2115	req.SetContext(ctx)
2116	req.ApplyOptions(opts...)
2117	return out, req.Send()
2118}
2119
2120const opDeleteReplicationGroup = "DeleteReplicationGroup"
2121
2122// DeleteReplicationGroupRequest generates a "aws/request.Request" representing the
2123// client's request for the DeleteReplicationGroup operation. The "output" return
2124// value will be populated with the request's response once the request completes
2125// successfully.
2126//
2127// Use "Send" method on the returned Request to send the API call to the service.
2128// the "output" return value is not valid until after Send returns without error.
2129//
2130// See DeleteReplicationGroup for more information on using the DeleteReplicationGroup
2131// API call, and error handling.
2132//
2133// This method is useful when you want to inject custom logic or configuration
2134// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2135//
2136//
2137//    // Example sending a request using the DeleteReplicationGroupRequest method.
2138//    req, resp := client.DeleteReplicationGroupRequest(params)
2139//
2140//    err := req.Send()
2141//    if err == nil { // resp is now filled
2142//        fmt.Println(resp)
2143//    }
2144//
2145// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteReplicationGroup
2146func (c *ElastiCache) DeleteReplicationGroupRequest(input *DeleteReplicationGroupInput) (req *request.Request, output *DeleteReplicationGroupOutput) {
2147	op := &request.Operation{
2148		Name:       opDeleteReplicationGroup,
2149		HTTPMethod: "POST",
2150		HTTPPath:   "/",
2151	}
2152
2153	if input == nil {
2154		input = &DeleteReplicationGroupInput{}
2155	}
2156
2157	output = &DeleteReplicationGroupOutput{}
2158	req = c.newRequest(op, input, output)
2159	return
2160}
2161
2162// DeleteReplicationGroup API operation for Amazon ElastiCache.
2163//
2164// Deletes an existing replication group. By default, this operation deletes
2165// the entire replication group, including the primary/primaries and all of
2166// the read replicas. If the replication group has only one primary, you can
2167// optionally delete only the read replicas, while retaining the primary by
2168// setting RetainPrimaryCluster=true.
2169//
2170// When you receive a successful response from this operation, Amazon ElastiCache
2171// immediately begins deleting the selected resources; you cannot cancel or
2172// revert this operation.
2173//
2174// This operation is valid for Redis only.
2175//
2176// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2177// with awserr.Error's Code and Message methods to get detailed information about
2178// the error.
2179//
2180// See the AWS API reference guide for Amazon ElastiCache's
2181// API operation DeleteReplicationGroup for usage and error information.
2182//
2183// Returned Error Codes:
2184//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
2185//   The specified replication group does not exist.
2186//
2187//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
2188//   The requested replication group is not in the available state.
2189//
2190//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
2191//   You already have a snapshot with the given name.
2192//
2193//   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
2194//   You attempted one of the following operations:
2195//
2196//      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
2197//      node.
2198//
2199//      * Creating a snapshot of a cluster that is running Memcached rather than
2200//      Redis.
2201//
2202//   Neither of these are supported by ElastiCache.
2203//
2204//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
2205//   The request cannot be processed because it would exceed the maximum number
2206//   of snapshots.
2207//
2208//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2209//   The value for a parameter is invalid.
2210//
2211//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2212//   Two or more incompatible parameters were specified.
2213//
2214// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteReplicationGroup
2215func (c *ElastiCache) DeleteReplicationGroup(input *DeleteReplicationGroupInput) (*DeleteReplicationGroupOutput, error) {
2216	req, out := c.DeleteReplicationGroupRequest(input)
2217	return out, req.Send()
2218}
2219
2220// DeleteReplicationGroupWithContext is the same as DeleteReplicationGroup with the addition of
2221// the ability to pass a context and additional request options.
2222//
2223// See DeleteReplicationGroup for details on how to use this API operation.
2224//
2225// The context must be non-nil and will be used for request cancellation. If
2226// the context is nil a panic will occur. In the future the SDK may create
2227// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2228// for more information on using Contexts.
2229func (c *ElastiCache) DeleteReplicationGroupWithContext(ctx aws.Context, input *DeleteReplicationGroupInput, opts ...request.Option) (*DeleteReplicationGroupOutput, error) {
2230	req, out := c.DeleteReplicationGroupRequest(input)
2231	req.SetContext(ctx)
2232	req.ApplyOptions(opts...)
2233	return out, req.Send()
2234}
2235
2236const opDeleteSnapshot = "DeleteSnapshot"
2237
2238// DeleteSnapshotRequest generates a "aws/request.Request" representing the
2239// client's request for the DeleteSnapshot operation. The "output" return
2240// value will be populated with the request's response once the request completes
2241// successfully.
2242//
2243// Use "Send" method on the returned Request to send the API call to the service.
2244// the "output" return value is not valid until after Send returns without error.
2245//
2246// See DeleteSnapshot for more information on using the DeleteSnapshot
2247// API call, and error handling.
2248//
2249// This method is useful when you want to inject custom logic or configuration
2250// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2251//
2252//
2253//    // Example sending a request using the DeleteSnapshotRequest method.
2254//    req, resp := client.DeleteSnapshotRequest(params)
2255//
2256//    err := req.Send()
2257//    if err == nil { // resp is now filled
2258//        fmt.Println(resp)
2259//    }
2260//
2261// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteSnapshot
2262func (c *ElastiCache) DeleteSnapshotRequest(input *DeleteSnapshotInput) (req *request.Request, output *DeleteSnapshotOutput) {
2263	op := &request.Operation{
2264		Name:       opDeleteSnapshot,
2265		HTTPMethod: "POST",
2266		HTTPPath:   "/",
2267	}
2268
2269	if input == nil {
2270		input = &DeleteSnapshotInput{}
2271	}
2272
2273	output = &DeleteSnapshotOutput{}
2274	req = c.newRequest(op, input, output)
2275	return
2276}
2277
2278// DeleteSnapshot API operation for Amazon ElastiCache.
2279//
2280// Deletes an existing snapshot. When you receive a successful response from
2281// this operation, ElastiCache immediately begins deleting the snapshot; you
2282// cannot cancel or revert this operation.
2283//
2284// This operation is valid for Redis only.
2285//
2286// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2287// with awserr.Error's Code and Message methods to get detailed information about
2288// the error.
2289//
2290// See the AWS API reference guide for Amazon ElastiCache's
2291// API operation DeleteSnapshot for usage and error information.
2292//
2293// Returned Error Codes:
2294//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
2295//   The requested snapshot name does not refer to an existing snapshot.
2296//
2297//   * ErrCodeInvalidSnapshotStateFault "InvalidSnapshotState"
2298//   The current state of the snapshot does not allow the requested operation
2299//   to occur.
2300//
2301//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2302//   The value for a parameter is invalid.
2303//
2304//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2305//   Two or more incompatible parameters were specified.
2306//
2307// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteSnapshot
2308func (c *ElastiCache) DeleteSnapshot(input *DeleteSnapshotInput) (*DeleteSnapshotOutput, error) {
2309	req, out := c.DeleteSnapshotRequest(input)
2310	return out, req.Send()
2311}
2312
2313// DeleteSnapshotWithContext is the same as DeleteSnapshot with the addition of
2314// the ability to pass a context and additional request options.
2315//
2316// See DeleteSnapshot for details on how to use this API operation.
2317//
2318// The context must be non-nil and will be used for request cancellation. If
2319// the context is nil a panic will occur. In the future the SDK may create
2320// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2321// for more information on using Contexts.
2322func (c *ElastiCache) DeleteSnapshotWithContext(ctx aws.Context, input *DeleteSnapshotInput, opts ...request.Option) (*DeleteSnapshotOutput, error) {
2323	req, out := c.DeleteSnapshotRequest(input)
2324	req.SetContext(ctx)
2325	req.ApplyOptions(opts...)
2326	return out, req.Send()
2327}
2328
2329const opDescribeCacheClusters = "DescribeCacheClusters"
2330
2331// DescribeCacheClustersRequest generates a "aws/request.Request" representing the
2332// client's request for the DescribeCacheClusters operation. The "output" return
2333// value will be populated with the request's response once the request completes
2334// successfully.
2335//
2336// Use "Send" method on the returned Request to send the API call to the service.
2337// the "output" return value is not valid until after Send returns without error.
2338//
2339// See DescribeCacheClusters for more information on using the DescribeCacheClusters
2340// API call, and error handling.
2341//
2342// This method is useful when you want to inject custom logic or configuration
2343// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2344//
2345//
2346//    // Example sending a request using the DescribeCacheClustersRequest method.
2347//    req, resp := client.DescribeCacheClustersRequest(params)
2348//
2349//    err := req.Send()
2350//    if err == nil { // resp is now filled
2351//        fmt.Println(resp)
2352//    }
2353//
2354// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheClusters
2355func (c *ElastiCache) DescribeCacheClustersRequest(input *DescribeCacheClustersInput) (req *request.Request, output *DescribeCacheClustersOutput) {
2356	op := &request.Operation{
2357		Name:       opDescribeCacheClusters,
2358		HTTPMethod: "POST",
2359		HTTPPath:   "/",
2360		Paginator: &request.Paginator{
2361			InputTokens:     []string{"Marker"},
2362			OutputTokens:    []string{"Marker"},
2363			LimitToken:      "MaxRecords",
2364			TruncationToken: "",
2365		},
2366	}
2367
2368	if input == nil {
2369		input = &DescribeCacheClustersInput{}
2370	}
2371
2372	output = &DescribeCacheClustersOutput{}
2373	req = c.newRequest(op, input, output)
2374	return
2375}
2376
2377// DescribeCacheClusters API operation for Amazon ElastiCache.
2378//
2379// Returns information about all provisioned clusters if no cluster identifier
2380// is specified, or about a specific cache cluster if a cluster identifier is
2381// supplied.
2382//
2383// By default, abbreviated information about the clusters is returned. You can
2384// use the optional ShowCacheNodeInfo flag to retrieve detailed information
2385// about the cache nodes associated with the clusters. These details include
2386// the DNS address and port for the cache node endpoint.
2387//
2388// If the cluster is in the creating state, only cluster-level information is
2389// displayed until all of the nodes are successfully provisioned.
2390//
2391// If the cluster is in the deleting state, only cluster-level information is
2392// displayed.
2393//
2394// If cache nodes are currently being added to the cluster, node endpoint information
2395// and creation time for the additional nodes are not displayed until they are
2396// completely provisioned. When the cluster state is available, the cluster
2397// is ready for use.
2398//
2399// If cache nodes are currently being removed from the cluster, no endpoint
2400// information for the removed nodes is displayed.
2401//
2402// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2403// with awserr.Error's Code and Message methods to get detailed information about
2404// the error.
2405//
2406// See the AWS API reference guide for Amazon ElastiCache's
2407// API operation DescribeCacheClusters for usage and error information.
2408//
2409// Returned Error Codes:
2410//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
2411//   The requested cluster ID does not refer to an existing cluster.
2412//
2413//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2414//   The value for a parameter is invalid.
2415//
2416//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2417//   Two or more incompatible parameters were specified.
2418//
2419// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheClusters
2420func (c *ElastiCache) DescribeCacheClusters(input *DescribeCacheClustersInput) (*DescribeCacheClustersOutput, error) {
2421	req, out := c.DescribeCacheClustersRequest(input)
2422	return out, req.Send()
2423}
2424
2425// DescribeCacheClustersWithContext is the same as DescribeCacheClusters with the addition of
2426// the ability to pass a context and additional request options.
2427//
2428// See DescribeCacheClusters for details on how to use this API operation.
2429//
2430// The context must be non-nil and will be used for request cancellation. If
2431// the context is nil a panic will occur. In the future the SDK may create
2432// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2433// for more information on using Contexts.
2434func (c *ElastiCache) DescribeCacheClustersWithContext(ctx aws.Context, input *DescribeCacheClustersInput, opts ...request.Option) (*DescribeCacheClustersOutput, error) {
2435	req, out := c.DescribeCacheClustersRequest(input)
2436	req.SetContext(ctx)
2437	req.ApplyOptions(opts...)
2438	return out, req.Send()
2439}
2440
2441// DescribeCacheClustersPages iterates over the pages of a DescribeCacheClusters operation,
2442// calling the "fn" function with the response data for each page. To stop
2443// iterating, return false from the fn function.
2444//
2445// See DescribeCacheClusters method for more information on how to use this operation.
2446//
2447// Note: This operation can generate multiple requests to a service.
2448//
2449//    // Example iterating over at most 3 pages of a DescribeCacheClusters operation.
2450//    pageNum := 0
2451//    err := client.DescribeCacheClustersPages(params,
2452//        func(page *elasticache.DescribeCacheClustersOutput, lastPage bool) bool {
2453//            pageNum++
2454//            fmt.Println(page)
2455//            return pageNum <= 3
2456//        })
2457//
2458func (c *ElastiCache) DescribeCacheClustersPages(input *DescribeCacheClustersInput, fn func(*DescribeCacheClustersOutput, bool) bool) error {
2459	return c.DescribeCacheClustersPagesWithContext(aws.BackgroundContext(), input, fn)
2460}
2461
2462// DescribeCacheClustersPagesWithContext same as DescribeCacheClustersPages except
2463// it takes a Context and allows setting request options on the pages.
2464//
2465// The context must be non-nil and will be used for request cancellation. If
2466// the context is nil a panic will occur. In the future the SDK may create
2467// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2468// for more information on using Contexts.
2469func (c *ElastiCache) DescribeCacheClustersPagesWithContext(ctx aws.Context, input *DescribeCacheClustersInput, fn func(*DescribeCacheClustersOutput, bool) bool, opts ...request.Option) error {
2470	p := request.Pagination{
2471		NewRequest: func() (*request.Request, error) {
2472			var inCpy *DescribeCacheClustersInput
2473			if input != nil {
2474				tmp := *input
2475				inCpy = &tmp
2476			}
2477			req, _ := c.DescribeCacheClustersRequest(inCpy)
2478			req.SetContext(ctx)
2479			req.ApplyOptions(opts...)
2480			return req, nil
2481		},
2482	}
2483
2484	for p.Next() {
2485		if !fn(p.Page().(*DescribeCacheClustersOutput), !p.HasNextPage()) {
2486			break
2487		}
2488	}
2489
2490	return p.Err()
2491}
2492
2493const opDescribeCacheEngineVersions = "DescribeCacheEngineVersions"
2494
2495// DescribeCacheEngineVersionsRequest generates a "aws/request.Request" representing the
2496// client's request for the DescribeCacheEngineVersions operation. The "output" return
2497// value will be populated with the request's response once the request completes
2498// successfully.
2499//
2500// Use "Send" method on the returned Request to send the API call to the service.
2501// the "output" return value is not valid until after Send returns without error.
2502//
2503// See DescribeCacheEngineVersions for more information on using the DescribeCacheEngineVersions
2504// API call, and error handling.
2505//
2506// This method is useful when you want to inject custom logic or configuration
2507// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2508//
2509//
2510//    // Example sending a request using the DescribeCacheEngineVersionsRequest method.
2511//    req, resp := client.DescribeCacheEngineVersionsRequest(params)
2512//
2513//    err := req.Send()
2514//    if err == nil { // resp is now filled
2515//        fmt.Println(resp)
2516//    }
2517//
2518// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheEngineVersions
2519func (c *ElastiCache) DescribeCacheEngineVersionsRequest(input *DescribeCacheEngineVersionsInput) (req *request.Request, output *DescribeCacheEngineVersionsOutput) {
2520	op := &request.Operation{
2521		Name:       opDescribeCacheEngineVersions,
2522		HTTPMethod: "POST",
2523		HTTPPath:   "/",
2524		Paginator: &request.Paginator{
2525			InputTokens:     []string{"Marker"},
2526			OutputTokens:    []string{"Marker"},
2527			LimitToken:      "MaxRecords",
2528			TruncationToken: "",
2529		},
2530	}
2531
2532	if input == nil {
2533		input = &DescribeCacheEngineVersionsInput{}
2534	}
2535
2536	output = &DescribeCacheEngineVersionsOutput{}
2537	req = c.newRequest(op, input, output)
2538	return
2539}
2540
2541// DescribeCacheEngineVersions API operation for Amazon ElastiCache.
2542//
2543// Returns a list of the available cache engines and their versions.
2544//
2545// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2546// with awserr.Error's Code and Message methods to get detailed information about
2547// the error.
2548//
2549// See the AWS API reference guide for Amazon ElastiCache's
2550// API operation DescribeCacheEngineVersions for usage and error information.
2551// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheEngineVersions
2552func (c *ElastiCache) DescribeCacheEngineVersions(input *DescribeCacheEngineVersionsInput) (*DescribeCacheEngineVersionsOutput, error) {
2553	req, out := c.DescribeCacheEngineVersionsRequest(input)
2554	return out, req.Send()
2555}
2556
2557// DescribeCacheEngineVersionsWithContext is the same as DescribeCacheEngineVersions with the addition of
2558// the ability to pass a context and additional request options.
2559//
2560// See DescribeCacheEngineVersions for details on how to use this API operation.
2561//
2562// The context must be non-nil and will be used for request cancellation. If
2563// the context is nil a panic will occur. In the future the SDK may create
2564// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2565// for more information on using Contexts.
2566func (c *ElastiCache) DescribeCacheEngineVersionsWithContext(ctx aws.Context, input *DescribeCacheEngineVersionsInput, opts ...request.Option) (*DescribeCacheEngineVersionsOutput, error) {
2567	req, out := c.DescribeCacheEngineVersionsRequest(input)
2568	req.SetContext(ctx)
2569	req.ApplyOptions(opts...)
2570	return out, req.Send()
2571}
2572
2573// DescribeCacheEngineVersionsPages iterates over the pages of a DescribeCacheEngineVersions operation,
2574// calling the "fn" function with the response data for each page. To stop
2575// iterating, return false from the fn function.
2576//
2577// See DescribeCacheEngineVersions method for more information on how to use this operation.
2578//
2579// Note: This operation can generate multiple requests to a service.
2580//
2581//    // Example iterating over at most 3 pages of a DescribeCacheEngineVersions operation.
2582//    pageNum := 0
2583//    err := client.DescribeCacheEngineVersionsPages(params,
2584//        func(page *elasticache.DescribeCacheEngineVersionsOutput, lastPage bool) bool {
2585//            pageNum++
2586//            fmt.Println(page)
2587//            return pageNum <= 3
2588//        })
2589//
2590func (c *ElastiCache) DescribeCacheEngineVersionsPages(input *DescribeCacheEngineVersionsInput, fn func(*DescribeCacheEngineVersionsOutput, bool) bool) error {
2591	return c.DescribeCacheEngineVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
2592}
2593
2594// DescribeCacheEngineVersionsPagesWithContext same as DescribeCacheEngineVersionsPages except
2595// it takes a Context and allows setting request options on the pages.
2596//
2597// The context must be non-nil and will be used for request cancellation. If
2598// the context is nil a panic will occur. In the future the SDK may create
2599// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2600// for more information on using Contexts.
2601func (c *ElastiCache) DescribeCacheEngineVersionsPagesWithContext(ctx aws.Context, input *DescribeCacheEngineVersionsInput, fn func(*DescribeCacheEngineVersionsOutput, bool) bool, opts ...request.Option) error {
2602	p := request.Pagination{
2603		NewRequest: func() (*request.Request, error) {
2604			var inCpy *DescribeCacheEngineVersionsInput
2605			if input != nil {
2606				tmp := *input
2607				inCpy = &tmp
2608			}
2609			req, _ := c.DescribeCacheEngineVersionsRequest(inCpy)
2610			req.SetContext(ctx)
2611			req.ApplyOptions(opts...)
2612			return req, nil
2613		},
2614	}
2615
2616	for p.Next() {
2617		if !fn(p.Page().(*DescribeCacheEngineVersionsOutput), !p.HasNextPage()) {
2618			break
2619		}
2620	}
2621
2622	return p.Err()
2623}
2624
2625const opDescribeCacheParameterGroups = "DescribeCacheParameterGroups"
2626
2627// DescribeCacheParameterGroupsRequest generates a "aws/request.Request" representing the
2628// client's request for the DescribeCacheParameterGroups operation. The "output" return
2629// value will be populated with the request's response once the request completes
2630// successfully.
2631//
2632// Use "Send" method on the returned Request to send the API call to the service.
2633// the "output" return value is not valid until after Send returns without error.
2634//
2635// See DescribeCacheParameterGroups for more information on using the DescribeCacheParameterGroups
2636// API call, and error handling.
2637//
2638// This method is useful when you want to inject custom logic or configuration
2639// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2640//
2641//
2642//    // Example sending a request using the DescribeCacheParameterGroupsRequest method.
2643//    req, resp := client.DescribeCacheParameterGroupsRequest(params)
2644//
2645//    err := req.Send()
2646//    if err == nil { // resp is now filled
2647//        fmt.Println(resp)
2648//    }
2649//
2650// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameterGroups
2651func (c *ElastiCache) DescribeCacheParameterGroupsRequest(input *DescribeCacheParameterGroupsInput) (req *request.Request, output *DescribeCacheParameterGroupsOutput) {
2652	op := &request.Operation{
2653		Name:       opDescribeCacheParameterGroups,
2654		HTTPMethod: "POST",
2655		HTTPPath:   "/",
2656		Paginator: &request.Paginator{
2657			InputTokens:     []string{"Marker"},
2658			OutputTokens:    []string{"Marker"},
2659			LimitToken:      "MaxRecords",
2660			TruncationToken: "",
2661		},
2662	}
2663
2664	if input == nil {
2665		input = &DescribeCacheParameterGroupsInput{}
2666	}
2667
2668	output = &DescribeCacheParameterGroupsOutput{}
2669	req = c.newRequest(op, input, output)
2670	return
2671}
2672
2673// DescribeCacheParameterGroups API operation for Amazon ElastiCache.
2674//
2675// Returns a list of cache parameter group descriptions. If a cache parameter
2676// group name is specified, the list contains only the descriptions for that
2677// group.
2678//
2679// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2680// with awserr.Error's Code and Message methods to get detailed information about
2681// the error.
2682//
2683// See the AWS API reference guide for Amazon ElastiCache's
2684// API operation DescribeCacheParameterGroups for usage and error information.
2685//
2686// Returned Error Codes:
2687//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
2688//   The requested cache parameter group name does not refer to an existing cache
2689//   parameter group.
2690//
2691//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2692//   The value for a parameter is invalid.
2693//
2694//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2695//   Two or more incompatible parameters were specified.
2696//
2697// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameterGroups
2698func (c *ElastiCache) DescribeCacheParameterGroups(input *DescribeCacheParameterGroupsInput) (*DescribeCacheParameterGroupsOutput, error) {
2699	req, out := c.DescribeCacheParameterGroupsRequest(input)
2700	return out, req.Send()
2701}
2702
2703// DescribeCacheParameterGroupsWithContext is the same as DescribeCacheParameterGroups with the addition of
2704// the ability to pass a context and additional request options.
2705//
2706// See DescribeCacheParameterGroups for details on how to use this API operation.
2707//
2708// The context must be non-nil and will be used for request cancellation. If
2709// the context is nil a panic will occur. In the future the SDK may create
2710// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2711// for more information on using Contexts.
2712func (c *ElastiCache) DescribeCacheParameterGroupsWithContext(ctx aws.Context, input *DescribeCacheParameterGroupsInput, opts ...request.Option) (*DescribeCacheParameterGroupsOutput, error) {
2713	req, out := c.DescribeCacheParameterGroupsRequest(input)
2714	req.SetContext(ctx)
2715	req.ApplyOptions(opts...)
2716	return out, req.Send()
2717}
2718
2719// DescribeCacheParameterGroupsPages iterates over the pages of a DescribeCacheParameterGroups operation,
2720// calling the "fn" function with the response data for each page. To stop
2721// iterating, return false from the fn function.
2722//
2723// See DescribeCacheParameterGroups method for more information on how to use this operation.
2724//
2725// Note: This operation can generate multiple requests to a service.
2726//
2727//    // Example iterating over at most 3 pages of a DescribeCacheParameterGroups operation.
2728//    pageNum := 0
2729//    err := client.DescribeCacheParameterGroupsPages(params,
2730//        func(page *elasticache.DescribeCacheParameterGroupsOutput, lastPage bool) bool {
2731//            pageNum++
2732//            fmt.Println(page)
2733//            return pageNum <= 3
2734//        })
2735//
2736func (c *ElastiCache) DescribeCacheParameterGroupsPages(input *DescribeCacheParameterGroupsInput, fn func(*DescribeCacheParameterGroupsOutput, bool) bool) error {
2737	return c.DescribeCacheParameterGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
2738}
2739
2740// DescribeCacheParameterGroupsPagesWithContext same as DescribeCacheParameterGroupsPages except
2741// it takes a Context and allows setting request options on the pages.
2742//
2743// The context must be non-nil and will be used for request cancellation. If
2744// the context is nil a panic will occur. In the future the SDK may create
2745// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2746// for more information on using Contexts.
2747func (c *ElastiCache) DescribeCacheParameterGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheParameterGroupsInput, fn func(*DescribeCacheParameterGroupsOutput, bool) bool, opts ...request.Option) error {
2748	p := request.Pagination{
2749		NewRequest: func() (*request.Request, error) {
2750			var inCpy *DescribeCacheParameterGroupsInput
2751			if input != nil {
2752				tmp := *input
2753				inCpy = &tmp
2754			}
2755			req, _ := c.DescribeCacheParameterGroupsRequest(inCpy)
2756			req.SetContext(ctx)
2757			req.ApplyOptions(opts...)
2758			return req, nil
2759		},
2760	}
2761
2762	for p.Next() {
2763		if !fn(p.Page().(*DescribeCacheParameterGroupsOutput), !p.HasNextPage()) {
2764			break
2765		}
2766	}
2767
2768	return p.Err()
2769}
2770
2771const opDescribeCacheParameters = "DescribeCacheParameters"
2772
2773// DescribeCacheParametersRequest generates a "aws/request.Request" representing the
2774// client's request for the DescribeCacheParameters operation. The "output" return
2775// value will be populated with the request's response once the request completes
2776// successfully.
2777//
2778// Use "Send" method on the returned Request to send the API call to the service.
2779// the "output" return value is not valid until after Send returns without error.
2780//
2781// See DescribeCacheParameters for more information on using the DescribeCacheParameters
2782// API call, and error handling.
2783//
2784// This method is useful when you want to inject custom logic or configuration
2785// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2786//
2787//
2788//    // Example sending a request using the DescribeCacheParametersRequest method.
2789//    req, resp := client.DescribeCacheParametersRequest(params)
2790//
2791//    err := req.Send()
2792//    if err == nil { // resp is now filled
2793//        fmt.Println(resp)
2794//    }
2795//
2796// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameters
2797func (c *ElastiCache) DescribeCacheParametersRequest(input *DescribeCacheParametersInput) (req *request.Request, output *DescribeCacheParametersOutput) {
2798	op := &request.Operation{
2799		Name:       opDescribeCacheParameters,
2800		HTTPMethod: "POST",
2801		HTTPPath:   "/",
2802		Paginator: &request.Paginator{
2803			InputTokens:     []string{"Marker"},
2804			OutputTokens:    []string{"Marker"},
2805			LimitToken:      "MaxRecords",
2806			TruncationToken: "",
2807		},
2808	}
2809
2810	if input == nil {
2811		input = &DescribeCacheParametersInput{}
2812	}
2813
2814	output = &DescribeCacheParametersOutput{}
2815	req = c.newRequest(op, input, output)
2816	return
2817}
2818
2819// DescribeCacheParameters API operation for Amazon ElastiCache.
2820//
2821// Returns the detailed parameter list for a particular cache parameter group.
2822//
2823// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2824// with awserr.Error's Code and Message methods to get detailed information about
2825// the error.
2826//
2827// See the AWS API reference guide for Amazon ElastiCache's
2828// API operation DescribeCacheParameters for usage and error information.
2829//
2830// Returned Error Codes:
2831//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
2832//   The requested cache parameter group name does not refer to an existing cache
2833//   parameter group.
2834//
2835//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2836//   The value for a parameter is invalid.
2837//
2838//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2839//   Two or more incompatible parameters were specified.
2840//
2841// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameters
2842func (c *ElastiCache) DescribeCacheParameters(input *DescribeCacheParametersInput) (*DescribeCacheParametersOutput, error) {
2843	req, out := c.DescribeCacheParametersRequest(input)
2844	return out, req.Send()
2845}
2846
2847// DescribeCacheParametersWithContext is the same as DescribeCacheParameters with the addition of
2848// the ability to pass a context and additional request options.
2849//
2850// See DescribeCacheParameters for details on how to use this API operation.
2851//
2852// The context must be non-nil and will be used for request cancellation. If
2853// the context is nil a panic will occur. In the future the SDK may create
2854// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2855// for more information on using Contexts.
2856func (c *ElastiCache) DescribeCacheParametersWithContext(ctx aws.Context, input *DescribeCacheParametersInput, opts ...request.Option) (*DescribeCacheParametersOutput, error) {
2857	req, out := c.DescribeCacheParametersRequest(input)
2858	req.SetContext(ctx)
2859	req.ApplyOptions(opts...)
2860	return out, req.Send()
2861}
2862
2863// DescribeCacheParametersPages iterates over the pages of a DescribeCacheParameters operation,
2864// calling the "fn" function with the response data for each page. To stop
2865// iterating, return false from the fn function.
2866//
2867// See DescribeCacheParameters method for more information on how to use this operation.
2868//
2869// Note: This operation can generate multiple requests to a service.
2870//
2871//    // Example iterating over at most 3 pages of a DescribeCacheParameters operation.
2872//    pageNum := 0
2873//    err := client.DescribeCacheParametersPages(params,
2874//        func(page *elasticache.DescribeCacheParametersOutput, lastPage bool) bool {
2875//            pageNum++
2876//            fmt.Println(page)
2877//            return pageNum <= 3
2878//        })
2879//
2880func (c *ElastiCache) DescribeCacheParametersPages(input *DescribeCacheParametersInput, fn func(*DescribeCacheParametersOutput, bool) bool) error {
2881	return c.DescribeCacheParametersPagesWithContext(aws.BackgroundContext(), input, fn)
2882}
2883
2884// DescribeCacheParametersPagesWithContext same as DescribeCacheParametersPages except
2885// it takes a Context and allows setting request options on the pages.
2886//
2887// The context must be non-nil and will be used for request cancellation. If
2888// the context is nil a panic will occur. In the future the SDK may create
2889// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2890// for more information on using Contexts.
2891func (c *ElastiCache) DescribeCacheParametersPagesWithContext(ctx aws.Context, input *DescribeCacheParametersInput, fn func(*DescribeCacheParametersOutput, bool) bool, opts ...request.Option) error {
2892	p := request.Pagination{
2893		NewRequest: func() (*request.Request, error) {
2894			var inCpy *DescribeCacheParametersInput
2895			if input != nil {
2896				tmp := *input
2897				inCpy = &tmp
2898			}
2899			req, _ := c.DescribeCacheParametersRequest(inCpy)
2900			req.SetContext(ctx)
2901			req.ApplyOptions(opts...)
2902			return req, nil
2903		},
2904	}
2905
2906	for p.Next() {
2907		if !fn(p.Page().(*DescribeCacheParametersOutput), !p.HasNextPage()) {
2908			break
2909		}
2910	}
2911
2912	return p.Err()
2913}
2914
2915const opDescribeCacheSecurityGroups = "DescribeCacheSecurityGroups"
2916
2917// DescribeCacheSecurityGroupsRequest generates a "aws/request.Request" representing the
2918// client's request for the DescribeCacheSecurityGroups operation. The "output" return
2919// value will be populated with the request's response once the request completes
2920// successfully.
2921//
2922// Use "Send" method on the returned Request to send the API call to the service.
2923// the "output" return value is not valid until after Send returns without error.
2924//
2925// See DescribeCacheSecurityGroups for more information on using the DescribeCacheSecurityGroups
2926// API call, and error handling.
2927//
2928// This method is useful when you want to inject custom logic or configuration
2929// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2930//
2931//
2932//    // Example sending a request using the DescribeCacheSecurityGroupsRequest method.
2933//    req, resp := client.DescribeCacheSecurityGroupsRequest(params)
2934//
2935//    err := req.Send()
2936//    if err == nil { // resp is now filled
2937//        fmt.Println(resp)
2938//    }
2939//
2940// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSecurityGroups
2941func (c *ElastiCache) DescribeCacheSecurityGroupsRequest(input *DescribeCacheSecurityGroupsInput) (req *request.Request, output *DescribeCacheSecurityGroupsOutput) {
2942	op := &request.Operation{
2943		Name:       opDescribeCacheSecurityGroups,
2944		HTTPMethod: "POST",
2945		HTTPPath:   "/",
2946		Paginator: &request.Paginator{
2947			InputTokens:     []string{"Marker"},
2948			OutputTokens:    []string{"Marker"},
2949			LimitToken:      "MaxRecords",
2950			TruncationToken: "",
2951		},
2952	}
2953
2954	if input == nil {
2955		input = &DescribeCacheSecurityGroupsInput{}
2956	}
2957
2958	output = &DescribeCacheSecurityGroupsOutput{}
2959	req = c.newRequest(op, input, output)
2960	return
2961}
2962
2963// DescribeCacheSecurityGroups API operation for Amazon ElastiCache.
2964//
2965// Returns a list of cache security group descriptions. If a cache security
2966// group name is specified, the list contains only the description of that group.
2967// This applicable only when you have ElastiCache in Classic setup
2968//
2969// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2970// with awserr.Error's Code and Message methods to get detailed information about
2971// the error.
2972//
2973// See the AWS API reference guide for Amazon ElastiCache's
2974// API operation DescribeCacheSecurityGroups for usage and error information.
2975//
2976// Returned Error Codes:
2977//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
2978//   The requested cache security group name does not refer to an existing cache
2979//   security group.
2980//
2981//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2982//   The value for a parameter is invalid.
2983//
2984//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2985//   Two or more incompatible parameters were specified.
2986//
2987// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSecurityGroups
2988func (c *ElastiCache) DescribeCacheSecurityGroups(input *DescribeCacheSecurityGroupsInput) (*DescribeCacheSecurityGroupsOutput, error) {
2989	req, out := c.DescribeCacheSecurityGroupsRequest(input)
2990	return out, req.Send()
2991}
2992
2993// DescribeCacheSecurityGroupsWithContext is the same as DescribeCacheSecurityGroups with the addition of
2994// the ability to pass a context and additional request options.
2995//
2996// See DescribeCacheSecurityGroups for details on how to use this API operation.
2997//
2998// The context must be non-nil and will be used for request cancellation. If
2999// the context is nil a panic will occur. In the future the SDK may create
3000// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3001// for more information on using Contexts.
3002func (c *ElastiCache) DescribeCacheSecurityGroupsWithContext(ctx aws.Context, input *DescribeCacheSecurityGroupsInput, opts ...request.Option) (*DescribeCacheSecurityGroupsOutput, error) {
3003	req, out := c.DescribeCacheSecurityGroupsRequest(input)
3004	req.SetContext(ctx)
3005	req.ApplyOptions(opts...)
3006	return out, req.Send()
3007}
3008
3009// DescribeCacheSecurityGroupsPages iterates over the pages of a DescribeCacheSecurityGroups operation,
3010// calling the "fn" function with the response data for each page. To stop
3011// iterating, return false from the fn function.
3012//
3013// See DescribeCacheSecurityGroups method for more information on how to use this operation.
3014//
3015// Note: This operation can generate multiple requests to a service.
3016//
3017//    // Example iterating over at most 3 pages of a DescribeCacheSecurityGroups operation.
3018//    pageNum := 0
3019//    err := client.DescribeCacheSecurityGroupsPages(params,
3020//        func(page *elasticache.DescribeCacheSecurityGroupsOutput, lastPage bool) bool {
3021//            pageNum++
3022//            fmt.Println(page)
3023//            return pageNum <= 3
3024//        })
3025//
3026func (c *ElastiCache) DescribeCacheSecurityGroupsPages(input *DescribeCacheSecurityGroupsInput, fn func(*DescribeCacheSecurityGroupsOutput, bool) bool) error {
3027	return c.DescribeCacheSecurityGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3028}
3029
3030// DescribeCacheSecurityGroupsPagesWithContext same as DescribeCacheSecurityGroupsPages except
3031// it takes a Context and allows setting request options on the pages.
3032//
3033// The context must be non-nil and will be used for request cancellation. If
3034// the context is nil a panic will occur. In the future the SDK may create
3035// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3036// for more information on using Contexts.
3037func (c *ElastiCache) DescribeCacheSecurityGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheSecurityGroupsInput, fn func(*DescribeCacheSecurityGroupsOutput, bool) bool, opts ...request.Option) error {
3038	p := request.Pagination{
3039		NewRequest: func() (*request.Request, error) {
3040			var inCpy *DescribeCacheSecurityGroupsInput
3041			if input != nil {
3042				tmp := *input
3043				inCpy = &tmp
3044			}
3045			req, _ := c.DescribeCacheSecurityGroupsRequest(inCpy)
3046			req.SetContext(ctx)
3047			req.ApplyOptions(opts...)
3048			return req, nil
3049		},
3050	}
3051
3052	for p.Next() {
3053		if !fn(p.Page().(*DescribeCacheSecurityGroupsOutput), !p.HasNextPage()) {
3054			break
3055		}
3056	}
3057
3058	return p.Err()
3059}
3060
3061const opDescribeCacheSubnetGroups = "DescribeCacheSubnetGroups"
3062
3063// DescribeCacheSubnetGroupsRequest generates a "aws/request.Request" representing the
3064// client's request for the DescribeCacheSubnetGroups operation. The "output" return
3065// value will be populated with the request's response once the request completes
3066// successfully.
3067//
3068// Use "Send" method on the returned Request to send the API call to the service.
3069// the "output" return value is not valid until after Send returns without error.
3070//
3071// See DescribeCacheSubnetGroups for more information on using the DescribeCacheSubnetGroups
3072// API call, and error handling.
3073//
3074// This method is useful when you want to inject custom logic or configuration
3075// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3076//
3077//
3078//    // Example sending a request using the DescribeCacheSubnetGroupsRequest method.
3079//    req, resp := client.DescribeCacheSubnetGroupsRequest(params)
3080//
3081//    err := req.Send()
3082//    if err == nil { // resp is now filled
3083//        fmt.Println(resp)
3084//    }
3085//
3086// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSubnetGroups
3087func (c *ElastiCache) DescribeCacheSubnetGroupsRequest(input *DescribeCacheSubnetGroupsInput) (req *request.Request, output *DescribeCacheSubnetGroupsOutput) {
3088	op := &request.Operation{
3089		Name:       opDescribeCacheSubnetGroups,
3090		HTTPMethod: "POST",
3091		HTTPPath:   "/",
3092		Paginator: &request.Paginator{
3093			InputTokens:     []string{"Marker"},
3094			OutputTokens:    []string{"Marker"},
3095			LimitToken:      "MaxRecords",
3096			TruncationToken: "",
3097		},
3098	}
3099
3100	if input == nil {
3101		input = &DescribeCacheSubnetGroupsInput{}
3102	}
3103
3104	output = &DescribeCacheSubnetGroupsOutput{}
3105	req = c.newRequest(op, input, output)
3106	return
3107}
3108
3109// DescribeCacheSubnetGroups API operation for Amazon ElastiCache.
3110//
3111// Returns a list of cache subnet group descriptions. If a subnet group name
3112// is specified, the list contains only the description of that group. This
3113// is applicable only when you have ElastiCache in VPC setup. All ElastiCache
3114// clusters now launch in VPC by default.
3115//
3116// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3117// with awserr.Error's Code and Message methods to get detailed information about
3118// the error.
3119//
3120// See the AWS API reference guide for Amazon ElastiCache's
3121// API operation DescribeCacheSubnetGroups for usage and error information.
3122//
3123// Returned Error Codes:
3124//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
3125//   The requested cache subnet group name does not refer to an existing cache
3126//   subnet group.
3127//
3128// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSubnetGroups
3129func (c *ElastiCache) DescribeCacheSubnetGroups(input *DescribeCacheSubnetGroupsInput) (*DescribeCacheSubnetGroupsOutput, error) {
3130	req, out := c.DescribeCacheSubnetGroupsRequest(input)
3131	return out, req.Send()
3132}
3133
3134// DescribeCacheSubnetGroupsWithContext is the same as DescribeCacheSubnetGroups with the addition of
3135// the ability to pass a context and additional request options.
3136//
3137// See DescribeCacheSubnetGroups for details on how to use this API operation.
3138//
3139// The context must be non-nil and will be used for request cancellation. If
3140// the context is nil a panic will occur. In the future the SDK may create
3141// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3142// for more information on using Contexts.
3143func (c *ElastiCache) DescribeCacheSubnetGroupsWithContext(ctx aws.Context, input *DescribeCacheSubnetGroupsInput, opts ...request.Option) (*DescribeCacheSubnetGroupsOutput, error) {
3144	req, out := c.DescribeCacheSubnetGroupsRequest(input)
3145	req.SetContext(ctx)
3146	req.ApplyOptions(opts...)
3147	return out, req.Send()
3148}
3149
3150// DescribeCacheSubnetGroupsPages iterates over the pages of a DescribeCacheSubnetGroups operation,
3151// calling the "fn" function with the response data for each page. To stop
3152// iterating, return false from the fn function.
3153//
3154// See DescribeCacheSubnetGroups method for more information on how to use this operation.
3155//
3156// Note: This operation can generate multiple requests to a service.
3157//
3158//    // Example iterating over at most 3 pages of a DescribeCacheSubnetGroups operation.
3159//    pageNum := 0
3160//    err := client.DescribeCacheSubnetGroupsPages(params,
3161//        func(page *elasticache.DescribeCacheSubnetGroupsOutput, lastPage bool) bool {
3162//            pageNum++
3163//            fmt.Println(page)
3164//            return pageNum <= 3
3165//        })
3166//
3167func (c *ElastiCache) DescribeCacheSubnetGroupsPages(input *DescribeCacheSubnetGroupsInput, fn func(*DescribeCacheSubnetGroupsOutput, bool) bool) error {
3168	return c.DescribeCacheSubnetGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3169}
3170
3171// DescribeCacheSubnetGroupsPagesWithContext same as DescribeCacheSubnetGroupsPages except
3172// it takes a Context and allows setting request options on the pages.
3173//
3174// The context must be non-nil and will be used for request cancellation. If
3175// the context is nil a panic will occur. In the future the SDK may create
3176// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3177// for more information on using Contexts.
3178func (c *ElastiCache) DescribeCacheSubnetGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheSubnetGroupsInput, fn func(*DescribeCacheSubnetGroupsOutput, bool) bool, opts ...request.Option) error {
3179	p := request.Pagination{
3180		NewRequest: func() (*request.Request, error) {
3181			var inCpy *DescribeCacheSubnetGroupsInput
3182			if input != nil {
3183				tmp := *input
3184				inCpy = &tmp
3185			}
3186			req, _ := c.DescribeCacheSubnetGroupsRequest(inCpy)
3187			req.SetContext(ctx)
3188			req.ApplyOptions(opts...)
3189			return req, nil
3190		},
3191	}
3192
3193	for p.Next() {
3194		if !fn(p.Page().(*DescribeCacheSubnetGroupsOutput), !p.HasNextPage()) {
3195			break
3196		}
3197	}
3198
3199	return p.Err()
3200}
3201
3202const opDescribeEngineDefaultParameters = "DescribeEngineDefaultParameters"
3203
3204// DescribeEngineDefaultParametersRequest generates a "aws/request.Request" representing the
3205// client's request for the DescribeEngineDefaultParameters operation. The "output" return
3206// value will be populated with the request's response once the request completes
3207// successfully.
3208//
3209// Use "Send" method on the returned Request to send the API call to the service.
3210// the "output" return value is not valid until after Send returns without error.
3211//
3212// See DescribeEngineDefaultParameters for more information on using the DescribeEngineDefaultParameters
3213// API call, and error handling.
3214//
3215// This method is useful when you want to inject custom logic or configuration
3216// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3217//
3218//
3219//    // Example sending a request using the DescribeEngineDefaultParametersRequest method.
3220//    req, resp := client.DescribeEngineDefaultParametersRequest(params)
3221//
3222//    err := req.Send()
3223//    if err == nil { // resp is now filled
3224//        fmt.Println(resp)
3225//    }
3226//
3227// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEngineDefaultParameters
3228func (c *ElastiCache) DescribeEngineDefaultParametersRequest(input *DescribeEngineDefaultParametersInput) (req *request.Request, output *DescribeEngineDefaultParametersOutput) {
3229	op := &request.Operation{
3230		Name:       opDescribeEngineDefaultParameters,
3231		HTTPMethod: "POST",
3232		HTTPPath:   "/",
3233		Paginator: &request.Paginator{
3234			InputTokens:     []string{"Marker"},
3235			OutputTokens:    []string{"EngineDefaults.Marker"},
3236			LimitToken:      "MaxRecords",
3237			TruncationToken: "",
3238		},
3239	}
3240
3241	if input == nil {
3242		input = &DescribeEngineDefaultParametersInput{}
3243	}
3244
3245	output = &DescribeEngineDefaultParametersOutput{}
3246	req = c.newRequest(op, input, output)
3247	return
3248}
3249
3250// DescribeEngineDefaultParameters API operation for Amazon ElastiCache.
3251//
3252// Returns the default engine and system parameter information for the specified
3253// cache engine.
3254//
3255// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3256// with awserr.Error's Code and Message methods to get detailed information about
3257// the error.
3258//
3259// See the AWS API reference guide for Amazon ElastiCache's
3260// API operation DescribeEngineDefaultParameters for usage and error information.
3261//
3262// Returned Error Codes:
3263//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3264//   The value for a parameter is invalid.
3265//
3266//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3267//   Two or more incompatible parameters were specified.
3268//
3269// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEngineDefaultParameters
3270func (c *ElastiCache) DescribeEngineDefaultParameters(input *DescribeEngineDefaultParametersInput) (*DescribeEngineDefaultParametersOutput, error) {
3271	req, out := c.DescribeEngineDefaultParametersRequest(input)
3272	return out, req.Send()
3273}
3274
3275// DescribeEngineDefaultParametersWithContext is the same as DescribeEngineDefaultParameters with the addition of
3276// the ability to pass a context and additional request options.
3277//
3278// See DescribeEngineDefaultParameters for details on how to use this API operation.
3279//
3280// The context must be non-nil and will be used for request cancellation. If
3281// the context is nil a panic will occur. In the future the SDK may create
3282// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3283// for more information on using Contexts.
3284func (c *ElastiCache) DescribeEngineDefaultParametersWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, opts ...request.Option) (*DescribeEngineDefaultParametersOutput, error) {
3285	req, out := c.DescribeEngineDefaultParametersRequest(input)
3286	req.SetContext(ctx)
3287	req.ApplyOptions(opts...)
3288	return out, req.Send()
3289}
3290
3291// DescribeEngineDefaultParametersPages iterates over the pages of a DescribeEngineDefaultParameters operation,
3292// calling the "fn" function with the response data for each page. To stop
3293// iterating, return false from the fn function.
3294//
3295// See DescribeEngineDefaultParameters method for more information on how to use this operation.
3296//
3297// Note: This operation can generate multiple requests to a service.
3298//
3299//    // Example iterating over at most 3 pages of a DescribeEngineDefaultParameters operation.
3300//    pageNum := 0
3301//    err := client.DescribeEngineDefaultParametersPages(params,
3302//        func(page *elasticache.DescribeEngineDefaultParametersOutput, lastPage bool) bool {
3303//            pageNum++
3304//            fmt.Println(page)
3305//            return pageNum <= 3
3306//        })
3307//
3308func (c *ElastiCache) DescribeEngineDefaultParametersPages(input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool) error {
3309	return c.DescribeEngineDefaultParametersPagesWithContext(aws.BackgroundContext(), input, fn)
3310}
3311
3312// DescribeEngineDefaultParametersPagesWithContext same as DescribeEngineDefaultParametersPages except
3313// it takes a Context and allows setting request options on the pages.
3314//
3315// The context must be non-nil and will be used for request cancellation. If
3316// the context is nil a panic will occur. In the future the SDK may create
3317// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3318// for more information on using Contexts.
3319func (c *ElastiCache) DescribeEngineDefaultParametersPagesWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool, opts ...request.Option) error {
3320	p := request.Pagination{
3321		NewRequest: func() (*request.Request, error) {
3322			var inCpy *DescribeEngineDefaultParametersInput
3323			if input != nil {
3324				tmp := *input
3325				inCpy = &tmp
3326			}
3327			req, _ := c.DescribeEngineDefaultParametersRequest(inCpy)
3328			req.SetContext(ctx)
3329			req.ApplyOptions(opts...)
3330			return req, nil
3331		},
3332	}
3333
3334	for p.Next() {
3335		if !fn(p.Page().(*DescribeEngineDefaultParametersOutput), !p.HasNextPage()) {
3336			break
3337		}
3338	}
3339
3340	return p.Err()
3341}
3342
3343const opDescribeEvents = "DescribeEvents"
3344
3345// DescribeEventsRequest generates a "aws/request.Request" representing the
3346// client's request for the DescribeEvents operation. The "output" return
3347// value will be populated with the request's response once the request completes
3348// successfully.
3349//
3350// Use "Send" method on the returned Request to send the API call to the service.
3351// the "output" return value is not valid until after Send returns without error.
3352//
3353// See DescribeEvents for more information on using the DescribeEvents
3354// API call, and error handling.
3355//
3356// This method is useful when you want to inject custom logic or configuration
3357// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3358//
3359//
3360//    // Example sending a request using the DescribeEventsRequest method.
3361//    req, resp := client.DescribeEventsRequest(params)
3362//
3363//    err := req.Send()
3364//    if err == nil { // resp is now filled
3365//        fmt.Println(resp)
3366//    }
3367//
3368// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEvents
3369func (c *ElastiCache) DescribeEventsRequest(input *DescribeEventsInput) (req *request.Request, output *DescribeEventsOutput) {
3370	op := &request.Operation{
3371		Name:       opDescribeEvents,
3372		HTTPMethod: "POST",
3373		HTTPPath:   "/",
3374		Paginator: &request.Paginator{
3375			InputTokens:     []string{"Marker"},
3376			OutputTokens:    []string{"Marker"},
3377			LimitToken:      "MaxRecords",
3378			TruncationToken: "",
3379		},
3380	}
3381
3382	if input == nil {
3383		input = &DescribeEventsInput{}
3384	}
3385
3386	output = &DescribeEventsOutput{}
3387	req = c.newRequest(op, input, output)
3388	return
3389}
3390
3391// DescribeEvents API operation for Amazon ElastiCache.
3392//
3393// Returns events related to clusters, cache security groups, and cache parameter
3394// groups. You can obtain events specific to a particular cluster, cache security
3395// group, or cache parameter group by providing the name as a parameter.
3396//
3397// By default, only the events occurring within the last hour are returned;
3398// however, you can retrieve up to 14 days' worth of events if necessary.
3399//
3400// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3401// with awserr.Error's Code and Message methods to get detailed information about
3402// the error.
3403//
3404// See the AWS API reference guide for Amazon ElastiCache's
3405// API operation DescribeEvents for usage and error information.
3406//
3407// Returned Error Codes:
3408//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3409//   The value for a parameter is invalid.
3410//
3411//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3412//   Two or more incompatible parameters were specified.
3413//
3414// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEvents
3415func (c *ElastiCache) DescribeEvents(input *DescribeEventsInput) (*DescribeEventsOutput, error) {
3416	req, out := c.DescribeEventsRequest(input)
3417	return out, req.Send()
3418}
3419
3420// DescribeEventsWithContext is the same as DescribeEvents with the addition of
3421// the ability to pass a context and additional request options.
3422//
3423// See DescribeEvents for details on how to use this API operation.
3424//
3425// The context must be non-nil and will be used for request cancellation. If
3426// the context is nil a panic will occur. In the future the SDK may create
3427// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3428// for more information on using Contexts.
3429func (c *ElastiCache) DescribeEventsWithContext(ctx aws.Context, input *DescribeEventsInput, opts ...request.Option) (*DescribeEventsOutput, error) {
3430	req, out := c.DescribeEventsRequest(input)
3431	req.SetContext(ctx)
3432	req.ApplyOptions(opts...)
3433	return out, req.Send()
3434}
3435
3436// DescribeEventsPages iterates over the pages of a DescribeEvents operation,
3437// calling the "fn" function with the response data for each page. To stop
3438// iterating, return false from the fn function.
3439//
3440// See DescribeEvents method for more information on how to use this operation.
3441//
3442// Note: This operation can generate multiple requests to a service.
3443//
3444//    // Example iterating over at most 3 pages of a DescribeEvents operation.
3445//    pageNum := 0
3446//    err := client.DescribeEventsPages(params,
3447//        func(page *elasticache.DescribeEventsOutput, lastPage bool) bool {
3448//            pageNum++
3449//            fmt.Println(page)
3450//            return pageNum <= 3
3451//        })
3452//
3453func (c *ElastiCache) DescribeEventsPages(input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool) error {
3454	return c.DescribeEventsPagesWithContext(aws.BackgroundContext(), input, fn)
3455}
3456
3457// DescribeEventsPagesWithContext same as DescribeEventsPages except
3458// it takes a Context and allows setting request options on the pages.
3459//
3460// The context must be non-nil and will be used for request cancellation. If
3461// the context is nil a panic will occur. In the future the SDK may create
3462// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3463// for more information on using Contexts.
3464func (c *ElastiCache) DescribeEventsPagesWithContext(ctx aws.Context, input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool, opts ...request.Option) error {
3465	p := request.Pagination{
3466		NewRequest: func() (*request.Request, error) {
3467			var inCpy *DescribeEventsInput
3468			if input != nil {
3469				tmp := *input
3470				inCpy = &tmp
3471			}
3472			req, _ := c.DescribeEventsRequest(inCpy)
3473			req.SetContext(ctx)
3474			req.ApplyOptions(opts...)
3475			return req, nil
3476		},
3477	}
3478
3479	for p.Next() {
3480		if !fn(p.Page().(*DescribeEventsOutput), !p.HasNextPage()) {
3481			break
3482		}
3483	}
3484
3485	return p.Err()
3486}
3487
3488const opDescribeGlobalReplicationGroups = "DescribeGlobalReplicationGroups"
3489
3490// DescribeGlobalReplicationGroupsRequest generates a "aws/request.Request" representing the
3491// client's request for the DescribeGlobalReplicationGroups operation. The "output" return
3492// value will be populated with the request's response once the request completes
3493// successfully.
3494//
3495// Use "Send" method on the returned Request to send the API call to the service.
3496// the "output" return value is not valid until after Send returns without error.
3497//
3498// See DescribeGlobalReplicationGroups for more information on using the DescribeGlobalReplicationGroups
3499// API call, and error handling.
3500//
3501// This method is useful when you want to inject custom logic or configuration
3502// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3503//
3504//
3505//    // Example sending a request using the DescribeGlobalReplicationGroupsRequest method.
3506//    req, resp := client.DescribeGlobalReplicationGroupsRequest(params)
3507//
3508//    err := req.Send()
3509//    if err == nil { // resp is now filled
3510//        fmt.Println(resp)
3511//    }
3512//
3513// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeGlobalReplicationGroups
3514func (c *ElastiCache) DescribeGlobalReplicationGroupsRequest(input *DescribeGlobalReplicationGroupsInput) (req *request.Request, output *DescribeGlobalReplicationGroupsOutput) {
3515	op := &request.Operation{
3516		Name:       opDescribeGlobalReplicationGroups,
3517		HTTPMethod: "POST",
3518		HTTPPath:   "/",
3519		Paginator: &request.Paginator{
3520			InputTokens:     []string{"Marker"},
3521			OutputTokens:    []string{"Marker"},
3522			LimitToken:      "MaxRecords",
3523			TruncationToken: "",
3524		},
3525	}
3526
3527	if input == nil {
3528		input = &DescribeGlobalReplicationGroupsInput{}
3529	}
3530
3531	output = &DescribeGlobalReplicationGroupsOutput{}
3532	req = c.newRequest(op, input, output)
3533	return
3534}
3535
3536// DescribeGlobalReplicationGroups API operation for Amazon ElastiCache.
3537//
3538// Returns information about a particular global replication group. If no identifier
3539// is specified, returns information about all Global Datastores.
3540//
3541// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3542// with awserr.Error's Code and Message methods to get detailed information about
3543// the error.
3544//
3545// See the AWS API reference guide for Amazon ElastiCache's
3546// API operation DescribeGlobalReplicationGroups for usage and error information.
3547//
3548// Returned Error Codes:
3549//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
3550//   The Global Datastore does not exist
3551//
3552//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3553//   The value for a parameter is invalid.
3554//
3555//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3556//   Two or more incompatible parameters were specified.
3557//
3558// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeGlobalReplicationGroups
3559func (c *ElastiCache) DescribeGlobalReplicationGroups(input *DescribeGlobalReplicationGroupsInput) (*DescribeGlobalReplicationGroupsOutput, error) {
3560	req, out := c.DescribeGlobalReplicationGroupsRequest(input)
3561	return out, req.Send()
3562}
3563
3564// DescribeGlobalReplicationGroupsWithContext is the same as DescribeGlobalReplicationGroups with the addition of
3565// the ability to pass a context and additional request options.
3566//
3567// See DescribeGlobalReplicationGroups for details on how to use this API operation.
3568//
3569// The context must be non-nil and will be used for request cancellation. If
3570// the context is nil a panic will occur. In the future the SDK may create
3571// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3572// for more information on using Contexts.
3573func (c *ElastiCache) DescribeGlobalReplicationGroupsWithContext(ctx aws.Context, input *DescribeGlobalReplicationGroupsInput, opts ...request.Option) (*DescribeGlobalReplicationGroupsOutput, error) {
3574	req, out := c.DescribeGlobalReplicationGroupsRequest(input)
3575	req.SetContext(ctx)
3576	req.ApplyOptions(opts...)
3577	return out, req.Send()
3578}
3579
3580// DescribeGlobalReplicationGroupsPages iterates over the pages of a DescribeGlobalReplicationGroups operation,
3581// calling the "fn" function with the response data for each page. To stop
3582// iterating, return false from the fn function.
3583//
3584// See DescribeGlobalReplicationGroups method for more information on how to use this operation.
3585//
3586// Note: This operation can generate multiple requests to a service.
3587//
3588//    // Example iterating over at most 3 pages of a DescribeGlobalReplicationGroups operation.
3589//    pageNum := 0
3590//    err := client.DescribeGlobalReplicationGroupsPages(params,
3591//        func(page *elasticache.DescribeGlobalReplicationGroupsOutput, lastPage bool) bool {
3592//            pageNum++
3593//            fmt.Println(page)
3594//            return pageNum <= 3
3595//        })
3596//
3597func (c *ElastiCache) DescribeGlobalReplicationGroupsPages(input *DescribeGlobalReplicationGroupsInput, fn func(*DescribeGlobalReplicationGroupsOutput, bool) bool) error {
3598	return c.DescribeGlobalReplicationGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3599}
3600
3601// DescribeGlobalReplicationGroupsPagesWithContext same as DescribeGlobalReplicationGroupsPages except
3602// it takes a Context and allows setting request options on the pages.
3603//
3604// The context must be non-nil and will be used for request cancellation. If
3605// the context is nil a panic will occur. In the future the SDK may create
3606// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3607// for more information on using Contexts.
3608func (c *ElastiCache) DescribeGlobalReplicationGroupsPagesWithContext(ctx aws.Context, input *DescribeGlobalReplicationGroupsInput, fn func(*DescribeGlobalReplicationGroupsOutput, bool) bool, opts ...request.Option) error {
3609	p := request.Pagination{
3610		NewRequest: func() (*request.Request, error) {
3611			var inCpy *DescribeGlobalReplicationGroupsInput
3612			if input != nil {
3613				tmp := *input
3614				inCpy = &tmp
3615			}
3616			req, _ := c.DescribeGlobalReplicationGroupsRequest(inCpy)
3617			req.SetContext(ctx)
3618			req.ApplyOptions(opts...)
3619			return req, nil
3620		},
3621	}
3622
3623	for p.Next() {
3624		if !fn(p.Page().(*DescribeGlobalReplicationGroupsOutput), !p.HasNextPage()) {
3625			break
3626		}
3627	}
3628
3629	return p.Err()
3630}
3631
3632const opDescribeReplicationGroups = "DescribeReplicationGroups"
3633
3634// DescribeReplicationGroupsRequest generates a "aws/request.Request" representing the
3635// client's request for the DescribeReplicationGroups operation. The "output" return
3636// value will be populated with the request's response once the request completes
3637// successfully.
3638//
3639// Use "Send" method on the returned Request to send the API call to the service.
3640// the "output" return value is not valid until after Send returns without error.
3641//
3642// See DescribeReplicationGroups for more information on using the DescribeReplicationGroups
3643// API call, and error handling.
3644//
3645// This method is useful when you want to inject custom logic or configuration
3646// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3647//
3648//
3649//    // Example sending a request using the DescribeReplicationGroupsRequest method.
3650//    req, resp := client.DescribeReplicationGroupsRequest(params)
3651//
3652//    err := req.Send()
3653//    if err == nil { // resp is now filled
3654//        fmt.Println(resp)
3655//    }
3656//
3657// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReplicationGroups
3658func (c *ElastiCache) DescribeReplicationGroupsRequest(input *DescribeReplicationGroupsInput) (req *request.Request, output *DescribeReplicationGroupsOutput) {
3659	op := &request.Operation{
3660		Name:       opDescribeReplicationGroups,
3661		HTTPMethod: "POST",
3662		HTTPPath:   "/",
3663		Paginator: &request.Paginator{
3664			InputTokens:     []string{"Marker"},
3665			OutputTokens:    []string{"Marker"},
3666			LimitToken:      "MaxRecords",
3667			TruncationToken: "",
3668		},
3669	}
3670
3671	if input == nil {
3672		input = &DescribeReplicationGroupsInput{}
3673	}
3674
3675	output = &DescribeReplicationGroupsOutput{}
3676	req = c.newRequest(op, input, output)
3677	return
3678}
3679
3680// DescribeReplicationGroups API operation for Amazon ElastiCache.
3681//
3682// Returns information about a particular replication group. If no identifier
3683// is specified, DescribeReplicationGroups returns information about all replication
3684// groups.
3685//
3686// This operation is valid for Redis only.
3687//
3688// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3689// with awserr.Error's Code and Message methods to get detailed information about
3690// the error.
3691//
3692// See the AWS API reference guide for Amazon ElastiCache's
3693// API operation DescribeReplicationGroups for usage and error information.
3694//
3695// Returned Error Codes:
3696//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
3697//   The specified replication group does not exist.
3698//
3699//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3700//   The value for a parameter is invalid.
3701//
3702//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3703//   Two or more incompatible parameters were specified.
3704//
3705// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReplicationGroups
3706func (c *ElastiCache) DescribeReplicationGroups(input *DescribeReplicationGroupsInput) (*DescribeReplicationGroupsOutput, error) {
3707	req, out := c.DescribeReplicationGroupsRequest(input)
3708	return out, req.Send()
3709}
3710
3711// DescribeReplicationGroupsWithContext is the same as DescribeReplicationGroups with the addition of
3712// the ability to pass a context and additional request options.
3713//
3714// See DescribeReplicationGroups for details on how to use this API operation.
3715//
3716// The context must be non-nil and will be used for request cancellation. If
3717// the context is nil a panic will occur. In the future the SDK may create
3718// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3719// for more information on using Contexts.
3720func (c *ElastiCache) DescribeReplicationGroupsWithContext(ctx aws.Context, input *DescribeReplicationGroupsInput, opts ...request.Option) (*DescribeReplicationGroupsOutput, error) {
3721	req, out := c.DescribeReplicationGroupsRequest(input)
3722	req.SetContext(ctx)
3723	req.ApplyOptions(opts...)
3724	return out, req.Send()
3725}
3726
3727// DescribeReplicationGroupsPages iterates over the pages of a DescribeReplicationGroups operation,
3728// calling the "fn" function with the response data for each page. To stop
3729// iterating, return false from the fn function.
3730//
3731// See DescribeReplicationGroups method for more information on how to use this operation.
3732//
3733// Note: This operation can generate multiple requests to a service.
3734//
3735//    // Example iterating over at most 3 pages of a DescribeReplicationGroups operation.
3736//    pageNum := 0
3737//    err := client.DescribeReplicationGroupsPages(params,
3738//        func(page *elasticache.DescribeReplicationGroupsOutput, lastPage bool) bool {
3739//            pageNum++
3740//            fmt.Println(page)
3741//            return pageNum <= 3
3742//        })
3743//
3744func (c *ElastiCache) DescribeReplicationGroupsPages(input *DescribeReplicationGroupsInput, fn func(*DescribeReplicationGroupsOutput, bool) bool) error {
3745	return c.DescribeReplicationGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3746}
3747
3748// DescribeReplicationGroupsPagesWithContext same as DescribeReplicationGroupsPages except
3749// it takes a Context and allows setting request options on the pages.
3750//
3751// The context must be non-nil and will be used for request cancellation. If
3752// the context is nil a panic will occur. In the future the SDK may create
3753// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3754// for more information on using Contexts.
3755func (c *ElastiCache) DescribeReplicationGroupsPagesWithContext(ctx aws.Context, input *DescribeReplicationGroupsInput, fn func(*DescribeReplicationGroupsOutput, bool) bool, opts ...request.Option) error {
3756	p := request.Pagination{
3757		NewRequest: func() (*request.Request, error) {
3758			var inCpy *DescribeReplicationGroupsInput
3759			if input != nil {
3760				tmp := *input
3761				inCpy = &tmp
3762			}
3763			req, _ := c.DescribeReplicationGroupsRequest(inCpy)
3764			req.SetContext(ctx)
3765			req.ApplyOptions(opts...)
3766			return req, nil
3767		},
3768	}
3769
3770	for p.Next() {
3771		if !fn(p.Page().(*DescribeReplicationGroupsOutput), !p.HasNextPage()) {
3772			break
3773		}
3774	}
3775
3776	return p.Err()
3777}
3778
3779const opDescribeReservedCacheNodes = "DescribeReservedCacheNodes"
3780
3781// DescribeReservedCacheNodesRequest generates a "aws/request.Request" representing the
3782// client's request for the DescribeReservedCacheNodes operation. The "output" return
3783// value will be populated with the request's response once the request completes
3784// successfully.
3785//
3786// Use "Send" method on the returned Request to send the API call to the service.
3787// the "output" return value is not valid until after Send returns without error.
3788//
3789// See DescribeReservedCacheNodes for more information on using the DescribeReservedCacheNodes
3790// API call, and error handling.
3791//
3792// This method is useful when you want to inject custom logic or configuration
3793// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3794//
3795//
3796//    // Example sending a request using the DescribeReservedCacheNodesRequest method.
3797//    req, resp := client.DescribeReservedCacheNodesRequest(params)
3798//
3799//    err := req.Send()
3800//    if err == nil { // resp is now filled
3801//        fmt.Println(resp)
3802//    }
3803//
3804// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodes
3805func (c *ElastiCache) DescribeReservedCacheNodesRequest(input *DescribeReservedCacheNodesInput) (req *request.Request, output *DescribeReservedCacheNodesOutput) {
3806	op := &request.Operation{
3807		Name:       opDescribeReservedCacheNodes,
3808		HTTPMethod: "POST",
3809		HTTPPath:   "/",
3810		Paginator: &request.Paginator{
3811			InputTokens:     []string{"Marker"},
3812			OutputTokens:    []string{"Marker"},
3813			LimitToken:      "MaxRecords",
3814			TruncationToken: "",
3815		},
3816	}
3817
3818	if input == nil {
3819		input = &DescribeReservedCacheNodesInput{}
3820	}
3821
3822	output = &DescribeReservedCacheNodesOutput{}
3823	req = c.newRequest(op, input, output)
3824	return
3825}
3826
3827// DescribeReservedCacheNodes API operation for Amazon ElastiCache.
3828//
3829// Returns information about reserved cache nodes for this account, or about
3830// a specified reserved cache node.
3831//
3832// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3833// with awserr.Error's Code and Message methods to get detailed information about
3834// the error.
3835//
3836// See the AWS API reference guide for Amazon ElastiCache's
3837// API operation DescribeReservedCacheNodes for usage and error information.
3838//
3839// Returned Error Codes:
3840//   * ErrCodeReservedCacheNodeNotFoundFault "ReservedCacheNodeNotFound"
3841//   The requested reserved cache node was not found.
3842//
3843//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3844//   The value for a parameter is invalid.
3845//
3846//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3847//   Two or more incompatible parameters were specified.
3848//
3849// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodes
3850func (c *ElastiCache) DescribeReservedCacheNodes(input *DescribeReservedCacheNodesInput) (*DescribeReservedCacheNodesOutput, error) {
3851	req, out := c.DescribeReservedCacheNodesRequest(input)
3852	return out, req.Send()
3853}
3854
3855// DescribeReservedCacheNodesWithContext is the same as DescribeReservedCacheNodes with the addition of
3856// the ability to pass a context and additional request options.
3857//
3858// See DescribeReservedCacheNodes for details on how to use this API operation.
3859//
3860// The context must be non-nil and will be used for request cancellation. If
3861// the context is nil a panic will occur. In the future the SDK may create
3862// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3863// for more information on using Contexts.
3864func (c *ElastiCache) DescribeReservedCacheNodesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesInput, opts ...request.Option) (*DescribeReservedCacheNodesOutput, error) {
3865	req, out := c.DescribeReservedCacheNodesRequest(input)
3866	req.SetContext(ctx)
3867	req.ApplyOptions(opts...)
3868	return out, req.Send()
3869}
3870
3871// DescribeReservedCacheNodesPages iterates over the pages of a DescribeReservedCacheNodes operation,
3872// calling the "fn" function with the response data for each page. To stop
3873// iterating, return false from the fn function.
3874//
3875// See DescribeReservedCacheNodes method for more information on how to use this operation.
3876//
3877// Note: This operation can generate multiple requests to a service.
3878//
3879//    // Example iterating over at most 3 pages of a DescribeReservedCacheNodes operation.
3880//    pageNum := 0
3881//    err := client.DescribeReservedCacheNodesPages(params,
3882//        func(page *elasticache.DescribeReservedCacheNodesOutput, lastPage bool) bool {
3883//            pageNum++
3884//            fmt.Println(page)
3885//            return pageNum <= 3
3886//        })
3887//
3888func (c *ElastiCache) DescribeReservedCacheNodesPages(input *DescribeReservedCacheNodesInput, fn func(*DescribeReservedCacheNodesOutput, bool) bool) error {
3889	return c.DescribeReservedCacheNodesPagesWithContext(aws.BackgroundContext(), input, fn)
3890}
3891
3892// DescribeReservedCacheNodesPagesWithContext same as DescribeReservedCacheNodesPages except
3893// it takes a Context and allows setting request options on the pages.
3894//
3895// The context must be non-nil and will be used for request cancellation. If
3896// the context is nil a panic will occur. In the future the SDK may create
3897// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3898// for more information on using Contexts.
3899func (c *ElastiCache) DescribeReservedCacheNodesPagesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesInput, fn func(*DescribeReservedCacheNodesOutput, bool) bool, opts ...request.Option) error {
3900	p := request.Pagination{
3901		NewRequest: func() (*request.Request, error) {
3902			var inCpy *DescribeReservedCacheNodesInput
3903			if input != nil {
3904				tmp := *input
3905				inCpy = &tmp
3906			}
3907			req, _ := c.DescribeReservedCacheNodesRequest(inCpy)
3908			req.SetContext(ctx)
3909			req.ApplyOptions(opts...)
3910			return req, nil
3911		},
3912	}
3913
3914	for p.Next() {
3915		if !fn(p.Page().(*DescribeReservedCacheNodesOutput), !p.HasNextPage()) {
3916			break
3917		}
3918	}
3919
3920	return p.Err()
3921}
3922
3923const opDescribeReservedCacheNodesOfferings = "DescribeReservedCacheNodesOfferings"
3924
3925// DescribeReservedCacheNodesOfferingsRequest generates a "aws/request.Request" representing the
3926// client's request for the DescribeReservedCacheNodesOfferings operation. The "output" return
3927// value will be populated with the request's response once the request completes
3928// successfully.
3929//
3930// Use "Send" method on the returned Request to send the API call to the service.
3931// the "output" return value is not valid until after Send returns without error.
3932//
3933// See DescribeReservedCacheNodesOfferings for more information on using the DescribeReservedCacheNodesOfferings
3934// API call, and error handling.
3935//
3936// This method is useful when you want to inject custom logic or configuration
3937// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3938//
3939//
3940//    // Example sending a request using the DescribeReservedCacheNodesOfferingsRequest method.
3941//    req, resp := client.DescribeReservedCacheNodesOfferingsRequest(params)
3942//
3943//    err := req.Send()
3944//    if err == nil { // resp is now filled
3945//        fmt.Println(resp)
3946//    }
3947//
3948// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodesOfferings
3949func (c *ElastiCache) DescribeReservedCacheNodesOfferingsRequest(input *DescribeReservedCacheNodesOfferingsInput) (req *request.Request, output *DescribeReservedCacheNodesOfferingsOutput) {
3950	op := &request.Operation{
3951		Name:       opDescribeReservedCacheNodesOfferings,
3952		HTTPMethod: "POST",
3953		HTTPPath:   "/",
3954		Paginator: &request.Paginator{
3955			InputTokens:     []string{"Marker"},
3956			OutputTokens:    []string{"Marker"},
3957			LimitToken:      "MaxRecords",
3958			TruncationToken: "",
3959		},
3960	}
3961
3962	if input == nil {
3963		input = &DescribeReservedCacheNodesOfferingsInput{}
3964	}
3965
3966	output = &DescribeReservedCacheNodesOfferingsOutput{}
3967	req = c.newRequest(op, input, output)
3968	return
3969}
3970
3971// DescribeReservedCacheNodesOfferings API operation for Amazon ElastiCache.
3972//
3973// Lists available reserved cache node offerings.
3974//
3975// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3976// with awserr.Error's Code and Message methods to get detailed information about
3977// the error.
3978//
3979// See the AWS API reference guide for Amazon ElastiCache's
3980// API operation DescribeReservedCacheNodesOfferings for usage and error information.
3981//
3982// Returned Error Codes:
3983//   * ErrCodeReservedCacheNodesOfferingNotFoundFault "ReservedCacheNodesOfferingNotFound"
3984//   The requested cache node offering does not exist.
3985//
3986//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3987//   The value for a parameter is invalid.
3988//
3989//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3990//   Two or more incompatible parameters were specified.
3991//
3992// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodesOfferings
3993func (c *ElastiCache) DescribeReservedCacheNodesOfferings(input *DescribeReservedCacheNodesOfferingsInput) (*DescribeReservedCacheNodesOfferingsOutput, error) {
3994	req, out := c.DescribeReservedCacheNodesOfferingsRequest(input)
3995	return out, req.Send()
3996}
3997
3998// DescribeReservedCacheNodesOfferingsWithContext is the same as DescribeReservedCacheNodesOfferings with the addition of
3999// the ability to pass a context and additional request options.
4000//
4001// See DescribeReservedCacheNodesOfferings for details on how to use this API operation.
4002//
4003// The context must be non-nil and will be used for request cancellation. If
4004// the context is nil a panic will occur. In the future the SDK may create
4005// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4006// for more information on using Contexts.
4007func (c *ElastiCache) DescribeReservedCacheNodesOfferingsWithContext(ctx aws.Context, input *DescribeReservedCacheNodesOfferingsInput, opts ...request.Option) (*DescribeReservedCacheNodesOfferingsOutput, error) {
4008	req, out := c.DescribeReservedCacheNodesOfferingsRequest(input)
4009	req.SetContext(ctx)
4010	req.ApplyOptions(opts...)
4011	return out, req.Send()
4012}
4013
4014// DescribeReservedCacheNodesOfferingsPages iterates over the pages of a DescribeReservedCacheNodesOfferings operation,
4015// calling the "fn" function with the response data for each page. To stop
4016// iterating, return false from the fn function.
4017//
4018// See DescribeReservedCacheNodesOfferings method for more information on how to use this operation.
4019//
4020// Note: This operation can generate multiple requests to a service.
4021//
4022//    // Example iterating over at most 3 pages of a DescribeReservedCacheNodesOfferings operation.
4023//    pageNum := 0
4024//    err := client.DescribeReservedCacheNodesOfferingsPages(params,
4025//        func(page *elasticache.DescribeReservedCacheNodesOfferingsOutput, lastPage bool) bool {
4026//            pageNum++
4027//            fmt.Println(page)
4028//            return pageNum <= 3
4029//        })
4030//
4031func (c *ElastiCache) DescribeReservedCacheNodesOfferingsPages(input *DescribeReservedCacheNodesOfferingsInput, fn func(*DescribeReservedCacheNodesOfferingsOutput, bool) bool) error {
4032	return c.DescribeReservedCacheNodesOfferingsPagesWithContext(aws.BackgroundContext(), input, fn)
4033}
4034
4035// DescribeReservedCacheNodesOfferingsPagesWithContext same as DescribeReservedCacheNodesOfferingsPages except
4036// it takes a Context and allows setting request options on the pages.
4037//
4038// The context must be non-nil and will be used for request cancellation. If
4039// the context is nil a panic will occur. In the future the SDK may create
4040// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4041// for more information on using Contexts.
4042func (c *ElastiCache) DescribeReservedCacheNodesOfferingsPagesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesOfferingsInput, fn func(*DescribeReservedCacheNodesOfferingsOutput, bool) bool, opts ...request.Option) error {
4043	p := request.Pagination{
4044		NewRequest: func() (*request.Request, error) {
4045			var inCpy *DescribeReservedCacheNodesOfferingsInput
4046			if input != nil {
4047				tmp := *input
4048				inCpy = &tmp
4049			}
4050			req, _ := c.DescribeReservedCacheNodesOfferingsRequest(inCpy)
4051			req.SetContext(ctx)
4052			req.ApplyOptions(opts...)
4053			return req, nil
4054		},
4055	}
4056
4057	for p.Next() {
4058		if !fn(p.Page().(*DescribeReservedCacheNodesOfferingsOutput), !p.HasNextPage()) {
4059			break
4060		}
4061	}
4062
4063	return p.Err()
4064}
4065
4066const opDescribeServiceUpdates = "DescribeServiceUpdates"
4067
4068// DescribeServiceUpdatesRequest generates a "aws/request.Request" representing the
4069// client's request for the DescribeServiceUpdates operation. The "output" return
4070// value will be populated with the request's response once the request completes
4071// successfully.
4072//
4073// Use "Send" method on the returned Request to send the API call to the service.
4074// the "output" return value is not valid until after Send returns without error.
4075//
4076// See DescribeServiceUpdates for more information on using the DescribeServiceUpdates
4077// API call, and error handling.
4078//
4079// This method is useful when you want to inject custom logic or configuration
4080// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4081//
4082//
4083//    // Example sending a request using the DescribeServiceUpdatesRequest method.
4084//    req, resp := client.DescribeServiceUpdatesRequest(params)
4085//
4086//    err := req.Send()
4087//    if err == nil { // resp is now filled
4088//        fmt.Println(resp)
4089//    }
4090//
4091// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeServiceUpdates
4092func (c *ElastiCache) DescribeServiceUpdatesRequest(input *DescribeServiceUpdatesInput) (req *request.Request, output *DescribeServiceUpdatesOutput) {
4093	op := &request.Operation{
4094		Name:       opDescribeServiceUpdates,
4095		HTTPMethod: "POST",
4096		HTTPPath:   "/",
4097		Paginator: &request.Paginator{
4098			InputTokens:     []string{"Marker"},
4099			OutputTokens:    []string{"Marker"},
4100			LimitToken:      "MaxRecords",
4101			TruncationToken: "",
4102		},
4103	}
4104
4105	if input == nil {
4106		input = &DescribeServiceUpdatesInput{}
4107	}
4108
4109	output = &DescribeServiceUpdatesOutput{}
4110	req = c.newRequest(op, input, output)
4111	return
4112}
4113
4114// DescribeServiceUpdates API operation for Amazon ElastiCache.
4115//
4116// Returns details of the service updates
4117//
4118// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4119// with awserr.Error's Code and Message methods to get detailed information about
4120// the error.
4121//
4122// See the AWS API reference guide for Amazon ElastiCache's
4123// API operation DescribeServiceUpdates for usage and error information.
4124//
4125// Returned Error Codes:
4126//   * ErrCodeServiceUpdateNotFoundFault "ServiceUpdateNotFoundFault"
4127//   The service update doesn't exist
4128//
4129//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4130//   The value for a parameter is invalid.
4131//
4132//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4133//   Two or more incompatible parameters were specified.
4134//
4135// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeServiceUpdates
4136func (c *ElastiCache) DescribeServiceUpdates(input *DescribeServiceUpdatesInput) (*DescribeServiceUpdatesOutput, error) {
4137	req, out := c.DescribeServiceUpdatesRequest(input)
4138	return out, req.Send()
4139}
4140
4141// DescribeServiceUpdatesWithContext is the same as DescribeServiceUpdates with the addition of
4142// the ability to pass a context and additional request options.
4143//
4144// See DescribeServiceUpdates for details on how to use this API operation.
4145//
4146// The context must be non-nil and will be used for request cancellation. If
4147// the context is nil a panic will occur. In the future the SDK may create
4148// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4149// for more information on using Contexts.
4150func (c *ElastiCache) DescribeServiceUpdatesWithContext(ctx aws.Context, input *DescribeServiceUpdatesInput, opts ...request.Option) (*DescribeServiceUpdatesOutput, error) {
4151	req, out := c.DescribeServiceUpdatesRequest(input)
4152	req.SetContext(ctx)
4153	req.ApplyOptions(opts...)
4154	return out, req.Send()
4155}
4156
4157// DescribeServiceUpdatesPages iterates over the pages of a DescribeServiceUpdates operation,
4158// calling the "fn" function with the response data for each page. To stop
4159// iterating, return false from the fn function.
4160//
4161// See DescribeServiceUpdates method for more information on how to use this operation.
4162//
4163// Note: This operation can generate multiple requests to a service.
4164//
4165//    // Example iterating over at most 3 pages of a DescribeServiceUpdates operation.
4166//    pageNum := 0
4167//    err := client.DescribeServiceUpdatesPages(params,
4168//        func(page *elasticache.DescribeServiceUpdatesOutput, lastPage bool) bool {
4169//            pageNum++
4170//            fmt.Println(page)
4171//            return pageNum <= 3
4172//        })
4173//
4174func (c *ElastiCache) DescribeServiceUpdatesPages(input *DescribeServiceUpdatesInput, fn func(*DescribeServiceUpdatesOutput, bool) bool) error {
4175	return c.DescribeServiceUpdatesPagesWithContext(aws.BackgroundContext(), input, fn)
4176}
4177
4178// DescribeServiceUpdatesPagesWithContext same as DescribeServiceUpdatesPages except
4179// it takes a Context and allows setting request options on the pages.
4180//
4181// The context must be non-nil and will be used for request cancellation. If
4182// the context is nil a panic will occur. In the future the SDK may create
4183// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4184// for more information on using Contexts.
4185func (c *ElastiCache) DescribeServiceUpdatesPagesWithContext(ctx aws.Context, input *DescribeServiceUpdatesInput, fn func(*DescribeServiceUpdatesOutput, bool) bool, opts ...request.Option) error {
4186	p := request.Pagination{
4187		NewRequest: func() (*request.Request, error) {
4188			var inCpy *DescribeServiceUpdatesInput
4189			if input != nil {
4190				tmp := *input
4191				inCpy = &tmp
4192			}
4193			req, _ := c.DescribeServiceUpdatesRequest(inCpy)
4194			req.SetContext(ctx)
4195			req.ApplyOptions(opts...)
4196			return req, nil
4197		},
4198	}
4199
4200	for p.Next() {
4201		if !fn(p.Page().(*DescribeServiceUpdatesOutput), !p.HasNextPage()) {
4202			break
4203		}
4204	}
4205
4206	return p.Err()
4207}
4208
4209const opDescribeSnapshots = "DescribeSnapshots"
4210
4211// DescribeSnapshotsRequest generates a "aws/request.Request" representing the
4212// client's request for the DescribeSnapshots operation. The "output" return
4213// value will be populated with the request's response once the request completes
4214// successfully.
4215//
4216// Use "Send" method on the returned Request to send the API call to the service.
4217// the "output" return value is not valid until after Send returns without error.
4218//
4219// See DescribeSnapshots for more information on using the DescribeSnapshots
4220// API call, and error handling.
4221//
4222// This method is useful when you want to inject custom logic or configuration
4223// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4224//
4225//
4226//    // Example sending a request using the DescribeSnapshotsRequest method.
4227//    req, resp := client.DescribeSnapshotsRequest(params)
4228//
4229//    err := req.Send()
4230//    if err == nil { // resp is now filled
4231//        fmt.Println(resp)
4232//    }
4233//
4234// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeSnapshots
4235func (c *ElastiCache) DescribeSnapshotsRequest(input *DescribeSnapshotsInput) (req *request.Request, output *DescribeSnapshotsOutput) {
4236	op := &request.Operation{
4237		Name:       opDescribeSnapshots,
4238		HTTPMethod: "POST",
4239		HTTPPath:   "/",
4240		Paginator: &request.Paginator{
4241			InputTokens:     []string{"Marker"},
4242			OutputTokens:    []string{"Marker"},
4243			LimitToken:      "MaxRecords",
4244			TruncationToken: "",
4245		},
4246	}
4247
4248	if input == nil {
4249		input = &DescribeSnapshotsInput{}
4250	}
4251
4252	output = &DescribeSnapshotsOutput{}
4253	req = c.newRequest(op, input, output)
4254	return
4255}
4256
4257// DescribeSnapshots API operation for Amazon ElastiCache.
4258//
4259// Returns information about cluster or replication group snapshots. By default,
4260// DescribeSnapshots lists all of your snapshots; it can optionally describe
4261// a single snapshot, or just the snapshots associated with a particular cache
4262// cluster.
4263//
4264// This operation is valid for Redis only.
4265//
4266// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4267// with awserr.Error's Code and Message methods to get detailed information about
4268// the error.
4269//
4270// See the AWS API reference guide for Amazon ElastiCache's
4271// API operation DescribeSnapshots for usage and error information.
4272//
4273// Returned Error Codes:
4274//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4275//   The requested cluster ID does not refer to an existing cluster.
4276//
4277//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
4278//   The requested snapshot name does not refer to an existing snapshot.
4279//
4280//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4281//   The value for a parameter is invalid.
4282//
4283//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4284//   Two or more incompatible parameters were specified.
4285//
4286// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeSnapshots
4287func (c *ElastiCache) DescribeSnapshots(input *DescribeSnapshotsInput) (*DescribeSnapshotsOutput, error) {
4288	req, out := c.DescribeSnapshotsRequest(input)
4289	return out, req.Send()
4290}
4291
4292// DescribeSnapshotsWithContext is the same as DescribeSnapshots with the addition of
4293// the ability to pass a context and additional request options.
4294//
4295// See DescribeSnapshots for details on how to use this API operation.
4296//
4297// The context must be non-nil and will be used for request cancellation. If
4298// the context is nil a panic will occur. In the future the SDK may create
4299// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4300// for more information on using Contexts.
4301func (c *ElastiCache) DescribeSnapshotsWithContext(ctx aws.Context, input *DescribeSnapshotsInput, opts ...request.Option) (*DescribeSnapshotsOutput, error) {
4302	req, out := c.DescribeSnapshotsRequest(input)
4303	req.SetContext(ctx)
4304	req.ApplyOptions(opts...)
4305	return out, req.Send()
4306}
4307
4308// DescribeSnapshotsPages iterates over the pages of a DescribeSnapshots operation,
4309// calling the "fn" function with the response data for each page. To stop
4310// iterating, return false from the fn function.
4311//
4312// See DescribeSnapshots method for more information on how to use this operation.
4313//
4314// Note: This operation can generate multiple requests to a service.
4315//
4316//    // Example iterating over at most 3 pages of a DescribeSnapshots operation.
4317//    pageNum := 0
4318//    err := client.DescribeSnapshotsPages(params,
4319//        func(page *elasticache.DescribeSnapshotsOutput, lastPage bool) bool {
4320//            pageNum++
4321//            fmt.Println(page)
4322//            return pageNum <= 3
4323//        })
4324//
4325func (c *ElastiCache) DescribeSnapshotsPages(input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool) error {
4326	return c.DescribeSnapshotsPagesWithContext(aws.BackgroundContext(), input, fn)
4327}
4328
4329// DescribeSnapshotsPagesWithContext same as DescribeSnapshotsPages except
4330// it takes a Context and allows setting request options on the pages.
4331//
4332// The context must be non-nil and will be used for request cancellation. If
4333// the context is nil a panic will occur. In the future the SDK may create
4334// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4335// for more information on using Contexts.
4336func (c *ElastiCache) DescribeSnapshotsPagesWithContext(ctx aws.Context, input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool, opts ...request.Option) error {
4337	p := request.Pagination{
4338		NewRequest: func() (*request.Request, error) {
4339			var inCpy *DescribeSnapshotsInput
4340			if input != nil {
4341				tmp := *input
4342				inCpy = &tmp
4343			}
4344			req, _ := c.DescribeSnapshotsRequest(inCpy)
4345			req.SetContext(ctx)
4346			req.ApplyOptions(opts...)
4347			return req, nil
4348		},
4349	}
4350
4351	for p.Next() {
4352		if !fn(p.Page().(*DescribeSnapshotsOutput), !p.HasNextPage()) {
4353			break
4354		}
4355	}
4356
4357	return p.Err()
4358}
4359
4360const opDescribeUpdateActions = "DescribeUpdateActions"
4361
4362// DescribeUpdateActionsRequest generates a "aws/request.Request" representing the
4363// client's request for the DescribeUpdateActions operation. The "output" return
4364// value will be populated with the request's response once the request completes
4365// successfully.
4366//
4367// Use "Send" method on the returned Request to send the API call to the service.
4368// the "output" return value is not valid until after Send returns without error.
4369//
4370// See DescribeUpdateActions for more information on using the DescribeUpdateActions
4371// API call, and error handling.
4372//
4373// This method is useful when you want to inject custom logic or configuration
4374// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4375//
4376//
4377//    // Example sending a request using the DescribeUpdateActionsRequest method.
4378//    req, resp := client.DescribeUpdateActionsRequest(params)
4379//
4380//    err := req.Send()
4381//    if err == nil { // resp is now filled
4382//        fmt.Println(resp)
4383//    }
4384//
4385// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUpdateActions
4386func (c *ElastiCache) DescribeUpdateActionsRequest(input *DescribeUpdateActionsInput) (req *request.Request, output *DescribeUpdateActionsOutput) {
4387	op := &request.Operation{
4388		Name:       opDescribeUpdateActions,
4389		HTTPMethod: "POST",
4390		HTTPPath:   "/",
4391		Paginator: &request.Paginator{
4392			InputTokens:     []string{"Marker"},
4393			OutputTokens:    []string{"Marker"},
4394			LimitToken:      "MaxRecords",
4395			TruncationToken: "",
4396		},
4397	}
4398
4399	if input == nil {
4400		input = &DescribeUpdateActionsInput{}
4401	}
4402
4403	output = &DescribeUpdateActionsOutput{}
4404	req = c.newRequest(op, input, output)
4405	return
4406}
4407
4408// DescribeUpdateActions API operation for Amazon ElastiCache.
4409//
4410// Returns details of the update actions
4411//
4412// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4413// with awserr.Error's Code and Message methods to get detailed information about
4414// the error.
4415//
4416// See the AWS API reference guide for Amazon ElastiCache's
4417// API operation DescribeUpdateActions for usage and error information.
4418//
4419// Returned Error Codes:
4420//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4421//   The value for a parameter is invalid.
4422//
4423//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4424//   Two or more incompatible parameters were specified.
4425//
4426// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUpdateActions
4427func (c *ElastiCache) DescribeUpdateActions(input *DescribeUpdateActionsInput) (*DescribeUpdateActionsOutput, error) {
4428	req, out := c.DescribeUpdateActionsRequest(input)
4429	return out, req.Send()
4430}
4431
4432// DescribeUpdateActionsWithContext is the same as DescribeUpdateActions with the addition of
4433// the ability to pass a context and additional request options.
4434//
4435// See DescribeUpdateActions for details on how to use this API operation.
4436//
4437// The context must be non-nil and will be used for request cancellation. If
4438// the context is nil a panic will occur. In the future the SDK may create
4439// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4440// for more information on using Contexts.
4441func (c *ElastiCache) DescribeUpdateActionsWithContext(ctx aws.Context, input *DescribeUpdateActionsInput, opts ...request.Option) (*DescribeUpdateActionsOutput, error) {
4442	req, out := c.DescribeUpdateActionsRequest(input)
4443	req.SetContext(ctx)
4444	req.ApplyOptions(opts...)
4445	return out, req.Send()
4446}
4447
4448// DescribeUpdateActionsPages iterates over the pages of a DescribeUpdateActions operation,
4449// calling the "fn" function with the response data for each page. To stop
4450// iterating, return false from the fn function.
4451//
4452// See DescribeUpdateActions method for more information on how to use this operation.
4453//
4454// Note: This operation can generate multiple requests to a service.
4455//
4456//    // Example iterating over at most 3 pages of a DescribeUpdateActions operation.
4457//    pageNum := 0
4458//    err := client.DescribeUpdateActionsPages(params,
4459//        func(page *elasticache.DescribeUpdateActionsOutput, lastPage bool) bool {
4460//            pageNum++
4461//            fmt.Println(page)
4462//            return pageNum <= 3
4463//        })
4464//
4465func (c *ElastiCache) DescribeUpdateActionsPages(input *DescribeUpdateActionsInput, fn func(*DescribeUpdateActionsOutput, bool) bool) error {
4466	return c.DescribeUpdateActionsPagesWithContext(aws.BackgroundContext(), input, fn)
4467}
4468
4469// DescribeUpdateActionsPagesWithContext same as DescribeUpdateActionsPages except
4470// it takes a Context and allows setting request options on the pages.
4471//
4472// The context must be non-nil and will be used for request cancellation. If
4473// the context is nil a panic will occur. In the future the SDK may create
4474// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4475// for more information on using Contexts.
4476func (c *ElastiCache) DescribeUpdateActionsPagesWithContext(ctx aws.Context, input *DescribeUpdateActionsInput, fn func(*DescribeUpdateActionsOutput, bool) bool, opts ...request.Option) error {
4477	p := request.Pagination{
4478		NewRequest: func() (*request.Request, error) {
4479			var inCpy *DescribeUpdateActionsInput
4480			if input != nil {
4481				tmp := *input
4482				inCpy = &tmp
4483			}
4484			req, _ := c.DescribeUpdateActionsRequest(inCpy)
4485			req.SetContext(ctx)
4486			req.ApplyOptions(opts...)
4487			return req, nil
4488		},
4489	}
4490
4491	for p.Next() {
4492		if !fn(p.Page().(*DescribeUpdateActionsOutput), !p.HasNextPage()) {
4493			break
4494		}
4495	}
4496
4497	return p.Err()
4498}
4499
4500const opDisassociateGlobalReplicationGroup = "DisassociateGlobalReplicationGroup"
4501
4502// DisassociateGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
4503// client's request for the DisassociateGlobalReplicationGroup operation. The "output" return
4504// value will be populated with the request's response once the request completes
4505// successfully.
4506//
4507// Use "Send" method on the returned Request to send the API call to the service.
4508// the "output" return value is not valid until after Send returns without error.
4509//
4510// See DisassociateGlobalReplicationGroup for more information on using the DisassociateGlobalReplicationGroup
4511// API call, and error handling.
4512//
4513// This method is useful when you want to inject custom logic or configuration
4514// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4515//
4516//
4517//    // Example sending a request using the DisassociateGlobalReplicationGroupRequest method.
4518//    req, resp := client.DisassociateGlobalReplicationGroupRequest(params)
4519//
4520//    err := req.Send()
4521//    if err == nil { // resp is now filled
4522//        fmt.Println(resp)
4523//    }
4524//
4525// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DisassociateGlobalReplicationGroup
4526func (c *ElastiCache) DisassociateGlobalReplicationGroupRequest(input *DisassociateGlobalReplicationGroupInput) (req *request.Request, output *DisassociateGlobalReplicationGroupOutput) {
4527	op := &request.Operation{
4528		Name:       opDisassociateGlobalReplicationGroup,
4529		HTTPMethod: "POST",
4530		HTTPPath:   "/",
4531	}
4532
4533	if input == nil {
4534		input = &DisassociateGlobalReplicationGroupInput{}
4535	}
4536
4537	output = &DisassociateGlobalReplicationGroupOutput{}
4538	req = c.newRequest(op, input, output)
4539	return
4540}
4541
4542// DisassociateGlobalReplicationGroup API operation for Amazon ElastiCache.
4543//
4544// Remove a secondary cluster from the Global Datastore using the Global Datastore
4545// name. The secondary cluster will no longer receive updates from the primary
4546// cluster, but will remain as a standalone cluster in that AWS region.
4547//
4548// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4549// with awserr.Error's Code and Message methods to get detailed information about
4550// the error.
4551//
4552// See the AWS API reference guide for Amazon ElastiCache's
4553// API operation DisassociateGlobalReplicationGroup for usage and error information.
4554//
4555// Returned Error Codes:
4556//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
4557//   The Global Datastore does not exist
4558//
4559//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
4560//   The Global Datastore is not available or in primary-only state.
4561//
4562//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4563//   The value for a parameter is invalid.
4564//
4565//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4566//   Two or more incompatible parameters were specified.
4567//
4568// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DisassociateGlobalReplicationGroup
4569func (c *ElastiCache) DisassociateGlobalReplicationGroup(input *DisassociateGlobalReplicationGroupInput) (*DisassociateGlobalReplicationGroupOutput, error) {
4570	req, out := c.DisassociateGlobalReplicationGroupRequest(input)
4571	return out, req.Send()
4572}
4573
4574// DisassociateGlobalReplicationGroupWithContext is the same as DisassociateGlobalReplicationGroup with the addition of
4575// the ability to pass a context and additional request options.
4576//
4577// See DisassociateGlobalReplicationGroup for details on how to use this API operation.
4578//
4579// The context must be non-nil and will be used for request cancellation. If
4580// the context is nil a panic will occur. In the future the SDK may create
4581// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4582// for more information on using Contexts.
4583func (c *ElastiCache) DisassociateGlobalReplicationGroupWithContext(ctx aws.Context, input *DisassociateGlobalReplicationGroupInput, opts ...request.Option) (*DisassociateGlobalReplicationGroupOutput, error) {
4584	req, out := c.DisassociateGlobalReplicationGroupRequest(input)
4585	req.SetContext(ctx)
4586	req.ApplyOptions(opts...)
4587	return out, req.Send()
4588}
4589
4590const opFailoverGlobalReplicationGroup = "FailoverGlobalReplicationGroup"
4591
4592// FailoverGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
4593// client's request for the FailoverGlobalReplicationGroup operation. The "output" return
4594// value will be populated with the request's response once the request completes
4595// successfully.
4596//
4597// Use "Send" method on the returned Request to send the API call to the service.
4598// the "output" return value is not valid until after Send returns without error.
4599//
4600// See FailoverGlobalReplicationGroup for more information on using the FailoverGlobalReplicationGroup
4601// API call, and error handling.
4602//
4603// This method is useful when you want to inject custom logic or configuration
4604// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4605//
4606//
4607//    // Example sending a request using the FailoverGlobalReplicationGroupRequest method.
4608//    req, resp := client.FailoverGlobalReplicationGroupRequest(params)
4609//
4610//    err := req.Send()
4611//    if err == nil { // resp is now filled
4612//        fmt.Println(resp)
4613//    }
4614//
4615// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/FailoverGlobalReplicationGroup
4616func (c *ElastiCache) FailoverGlobalReplicationGroupRequest(input *FailoverGlobalReplicationGroupInput) (req *request.Request, output *FailoverGlobalReplicationGroupOutput) {
4617	op := &request.Operation{
4618		Name:       opFailoverGlobalReplicationGroup,
4619		HTTPMethod: "POST",
4620		HTTPPath:   "/",
4621	}
4622
4623	if input == nil {
4624		input = &FailoverGlobalReplicationGroupInput{}
4625	}
4626
4627	output = &FailoverGlobalReplicationGroupOutput{}
4628	req = c.newRequest(op, input, output)
4629	return
4630}
4631
4632// FailoverGlobalReplicationGroup API operation for Amazon ElastiCache.
4633//
4634// Used to failover the primary region to a selected secondary region. The selected
4635// secondary region will be come primary, and all other clusters will become
4636// secondary.
4637//
4638// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4639// with awserr.Error's Code and Message methods to get detailed information about
4640// the error.
4641//
4642// See the AWS API reference guide for Amazon ElastiCache's
4643// API operation FailoverGlobalReplicationGroup for usage and error information.
4644//
4645// Returned Error Codes:
4646//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
4647//   The Global Datastore does not exist
4648//
4649//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
4650//   The Global Datastore is not available or in primary-only state.
4651//
4652//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4653//   The value for a parameter is invalid.
4654//
4655//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4656//   Two or more incompatible parameters were specified.
4657//
4658// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/FailoverGlobalReplicationGroup
4659func (c *ElastiCache) FailoverGlobalReplicationGroup(input *FailoverGlobalReplicationGroupInput) (*FailoverGlobalReplicationGroupOutput, error) {
4660	req, out := c.FailoverGlobalReplicationGroupRequest(input)
4661	return out, req.Send()
4662}
4663
4664// FailoverGlobalReplicationGroupWithContext is the same as FailoverGlobalReplicationGroup with the addition of
4665// the ability to pass a context and additional request options.
4666//
4667// See FailoverGlobalReplicationGroup for details on how to use this API operation.
4668//
4669// The context must be non-nil and will be used for request cancellation. If
4670// the context is nil a panic will occur. In the future the SDK may create
4671// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4672// for more information on using Contexts.
4673func (c *ElastiCache) FailoverGlobalReplicationGroupWithContext(ctx aws.Context, input *FailoverGlobalReplicationGroupInput, opts ...request.Option) (*FailoverGlobalReplicationGroupOutput, error) {
4674	req, out := c.FailoverGlobalReplicationGroupRequest(input)
4675	req.SetContext(ctx)
4676	req.ApplyOptions(opts...)
4677	return out, req.Send()
4678}
4679
4680const opIncreaseNodeGroupsInGlobalReplicationGroup = "IncreaseNodeGroupsInGlobalReplicationGroup"
4681
4682// IncreaseNodeGroupsInGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
4683// client's request for the IncreaseNodeGroupsInGlobalReplicationGroup operation. The "output" return
4684// value will be populated with the request's response once the request completes
4685// successfully.
4686//
4687// Use "Send" method on the returned Request to send the API call to the service.
4688// the "output" return value is not valid until after Send returns without error.
4689//
4690// See IncreaseNodeGroupsInGlobalReplicationGroup for more information on using the IncreaseNodeGroupsInGlobalReplicationGroup
4691// API call, and error handling.
4692//
4693// This method is useful when you want to inject custom logic or configuration
4694// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4695//
4696//
4697//    // Example sending a request using the IncreaseNodeGroupsInGlobalReplicationGroupRequest method.
4698//    req, resp := client.IncreaseNodeGroupsInGlobalReplicationGroupRequest(params)
4699//
4700//    err := req.Send()
4701//    if err == nil { // resp is now filled
4702//        fmt.Println(resp)
4703//    }
4704//
4705// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseNodeGroupsInGlobalReplicationGroup
4706func (c *ElastiCache) IncreaseNodeGroupsInGlobalReplicationGroupRequest(input *IncreaseNodeGroupsInGlobalReplicationGroupInput) (req *request.Request, output *IncreaseNodeGroupsInGlobalReplicationGroupOutput) {
4707	op := &request.Operation{
4708		Name:       opIncreaseNodeGroupsInGlobalReplicationGroup,
4709		HTTPMethod: "POST",
4710		HTTPPath:   "/",
4711	}
4712
4713	if input == nil {
4714		input = &IncreaseNodeGroupsInGlobalReplicationGroupInput{}
4715	}
4716
4717	output = &IncreaseNodeGroupsInGlobalReplicationGroupOutput{}
4718	req = c.newRequest(op, input, output)
4719	return
4720}
4721
4722// IncreaseNodeGroupsInGlobalReplicationGroup API operation for Amazon ElastiCache.
4723//
4724// Increase the number of node groups in the Global Datastore
4725//
4726// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4727// with awserr.Error's Code and Message methods to get detailed information about
4728// the error.
4729//
4730// See the AWS API reference guide for Amazon ElastiCache's
4731// API operation IncreaseNodeGroupsInGlobalReplicationGroup for usage and error information.
4732//
4733// Returned Error Codes:
4734//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
4735//   The Global Datastore does not exist
4736//
4737//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
4738//   The Global Datastore is not available or in primary-only state.
4739//
4740//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4741//   The value for a parameter is invalid.
4742//
4743// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseNodeGroupsInGlobalReplicationGroup
4744func (c *ElastiCache) IncreaseNodeGroupsInGlobalReplicationGroup(input *IncreaseNodeGroupsInGlobalReplicationGroupInput) (*IncreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
4745	req, out := c.IncreaseNodeGroupsInGlobalReplicationGroupRequest(input)
4746	return out, req.Send()
4747}
4748
4749// IncreaseNodeGroupsInGlobalReplicationGroupWithContext is the same as IncreaseNodeGroupsInGlobalReplicationGroup with the addition of
4750// the ability to pass a context and additional request options.
4751//
4752// See IncreaseNodeGroupsInGlobalReplicationGroup for details on how to use this API operation.
4753//
4754// The context must be non-nil and will be used for request cancellation. If
4755// the context is nil a panic will occur. In the future the SDK may create
4756// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4757// for more information on using Contexts.
4758func (c *ElastiCache) IncreaseNodeGroupsInGlobalReplicationGroupWithContext(ctx aws.Context, input *IncreaseNodeGroupsInGlobalReplicationGroupInput, opts ...request.Option) (*IncreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
4759	req, out := c.IncreaseNodeGroupsInGlobalReplicationGroupRequest(input)
4760	req.SetContext(ctx)
4761	req.ApplyOptions(opts...)
4762	return out, req.Send()
4763}
4764
4765const opIncreaseReplicaCount = "IncreaseReplicaCount"
4766
4767// IncreaseReplicaCountRequest generates a "aws/request.Request" representing the
4768// client's request for the IncreaseReplicaCount operation. The "output" return
4769// value will be populated with the request's response once the request completes
4770// successfully.
4771//
4772// Use "Send" method on the returned Request to send the API call to the service.
4773// the "output" return value is not valid until after Send returns without error.
4774//
4775// See IncreaseReplicaCount for more information on using the IncreaseReplicaCount
4776// API call, and error handling.
4777//
4778// This method is useful when you want to inject custom logic or configuration
4779// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4780//
4781//
4782//    // Example sending a request using the IncreaseReplicaCountRequest method.
4783//    req, resp := client.IncreaseReplicaCountRequest(params)
4784//
4785//    err := req.Send()
4786//    if err == nil { // resp is now filled
4787//        fmt.Println(resp)
4788//    }
4789//
4790// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseReplicaCount
4791func (c *ElastiCache) IncreaseReplicaCountRequest(input *IncreaseReplicaCountInput) (req *request.Request, output *IncreaseReplicaCountOutput) {
4792	op := &request.Operation{
4793		Name:       opIncreaseReplicaCount,
4794		HTTPMethod: "POST",
4795		HTTPPath:   "/",
4796	}
4797
4798	if input == nil {
4799		input = &IncreaseReplicaCountInput{}
4800	}
4801
4802	output = &IncreaseReplicaCountOutput{}
4803	req = c.newRequest(op, input, output)
4804	return
4805}
4806
4807// IncreaseReplicaCount API operation for Amazon ElastiCache.
4808//
4809// Dynamically increases the number of replics in a Redis (cluster mode disabled)
4810// replication group or the number of replica nodes in one or more node groups
4811// (shards) of a Redis (cluster mode enabled) replication group. This operation
4812// is performed with no cluster down time.
4813//
4814// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4815// with awserr.Error's Code and Message methods to get detailed information about
4816// the error.
4817//
4818// See the AWS API reference guide for Amazon ElastiCache's
4819// API operation IncreaseReplicaCount for usage and error information.
4820//
4821// Returned Error Codes:
4822//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4823//   The specified replication group does not exist.
4824//
4825//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
4826//   The requested replication group is not in the available state.
4827//
4828//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
4829//   The requested cluster is not in the available state.
4830//
4831//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
4832//   The VPC network is in an invalid state.
4833//
4834//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
4835//   The requested cache node type is not available in the specified Availability
4836//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
4837//   in the ElastiCache User Guide.
4838//
4839//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
4840//   The request cannot be processed because it would exceed the allowed number
4841//   of clusters per customer.
4842//
4843//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
4844//   The request cannot be processed because it would exceed the maximum allowed
4845//   number of node groups (shards) in a single replication group. The default
4846//   maximum is 90
4847//
4848//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
4849//   The request cannot be processed because it would exceed the allowed number
4850//   of cache nodes per customer.
4851//
4852//   * ErrCodeNoOperationFault "NoOperationFault"
4853//   The operation was not performed because no changes were required.
4854//
4855//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
4856//   The KMS key supplied is not valid.
4857//
4858//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4859//   The value for a parameter is invalid.
4860//
4861//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4862//   Two or more incompatible parameters were specified.
4863//
4864// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseReplicaCount
4865func (c *ElastiCache) IncreaseReplicaCount(input *IncreaseReplicaCountInput) (*IncreaseReplicaCountOutput, error) {
4866	req, out := c.IncreaseReplicaCountRequest(input)
4867	return out, req.Send()
4868}
4869
4870// IncreaseReplicaCountWithContext is the same as IncreaseReplicaCount with the addition of
4871// the ability to pass a context and additional request options.
4872//
4873// See IncreaseReplicaCount for details on how to use this API operation.
4874//
4875// The context must be non-nil and will be used for request cancellation. If
4876// the context is nil a panic will occur. In the future the SDK may create
4877// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4878// for more information on using Contexts.
4879func (c *ElastiCache) IncreaseReplicaCountWithContext(ctx aws.Context, input *IncreaseReplicaCountInput, opts ...request.Option) (*IncreaseReplicaCountOutput, error) {
4880	req, out := c.IncreaseReplicaCountRequest(input)
4881	req.SetContext(ctx)
4882	req.ApplyOptions(opts...)
4883	return out, req.Send()
4884}
4885
4886const opListAllowedNodeTypeModifications = "ListAllowedNodeTypeModifications"
4887
4888// ListAllowedNodeTypeModificationsRequest generates a "aws/request.Request" representing the
4889// client's request for the ListAllowedNodeTypeModifications operation. The "output" return
4890// value will be populated with the request's response once the request completes
4891// successfully.
4892//
4893// Use "Send" method on the returned Request to send the API call to the service.
4894// the "output" return value is not valid until after Send returns without error.
4895//
4896// See ListAllowedNodeTypeModifications for more information on using the ListAllowedNodeTypeModifications
4897// API call, and error handling.
4898//
4899// This method is useful when you want to inject custom logic or configuration
4900// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4901//
4902//
4903//    // Example sending a request using the ListAllowedNodeTypeModificationsRequest method.
4904//    req, resp := client.ListAllowedNodeTypeModificationsRequest(params)
4905//
4906//    err := req.Send()
4907//    if err == nil { // resp is now filled
4908//        fmt.Println(resp)
4909//    }
4910//
4911// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListAllowedNodeTypeModifications
4912func (c *ElastiCache) ListAllowedNodeTypeModificationsRequest(input *ListAllowedNodeTypeModificationsInput) (req *request.Request, output *ListAllowedNodeTypeModificationsOutput) {
4913	op := &request.Operation{
4914		Name:       opListAllowedNodeTypeModifications,
4915		HTTPMethod: "POST",
4916		HTTPPath:   "/",
4917	}
4918
4919	if input == nil {
4920		input = &ListAllowedNodeTypeModificationsInput{}
4921	}
4922
4923	output = &ListAllowedNodeTypeModificationsOutput{}
4924	req = c.newRequest(op, input, output)
4925	return
4926}
4927
4928// ListAllowedNodeTypeModifications API operation for Amazon ElastiCache.
4929//
4930// Lists all available node types that you can scale your Redis cluster's or
4931// replication group's current node type.
4932//
4933// When you use the ModifyCacheCluster or ModifyReplicationGroup operations
4934// to scale your cluster or replication group, the value of the CacheNodeType
4935// parameter must be one of the node types returned by this operation.
4936//
4937// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4938// with awserr.Error's Code and Message methods to get detailed information about
4939// the error.
4940//
4941// See the AWS API reference guide for Amazon ElastiCache's
4942// API operation ListAllowedNodeTypeModifications for usage and error information.
4943//
4944// Returned Error Codes:
4945//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4946//   The requested cluster ID does not refer to an existing cluster.
4947//
4948//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4949//   The specified replication group does not exist.
4950//
4951//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4952//   Two or more incompatible parameters were specified.
4953//
4954//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4955//   The value for a parameter is invalid.
4956//
4957// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListAllowedNodeTypeModifications
4958func (c *ElastiCache) ListAllowedNodeTypeModifications(input *ListAllowedNodeTypeModificationsInput) (*ListAllowedNodeTypeModificationsOutput, error) {
4959	req, out := c.ListAllowedNodeTypeModificationsRequest(input)
4960	return out, req.Send()
4961}
4962
4963// ListAllowedNodeTypeModificationsWithContext is the same as ListAllowedNodeTypeModifications with the addition of
4964// the ability to pass a context and additional request options.
4965//
4966// See ListAllowedNodeTypeModifications for details on how to use this API operation.
4967//
4968// The context must be non-nil and will be used for request cancellation. If
4969// the context is nil a panic will occur. In the future the SDK may create
4970// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4971// for more information on using Contexts.
4972func (c *ElastiCache) ListAllowedNodeTypeModificationsWithContext(ctx aws.Context, input *ListAllowedNodeTypeModificationsInput, opts ...request.Option) (*ListAllowedNodeTypeModificationsOutput, error) {
4973	req, out := c.ListAllowedNodeTypeModificationsRequest(input)
4974	req.SetContext(ctx)
4975	req.ApplyOptions(opts...)
4976	return out, req.Send()
4977}
4978
4979const opListTagsForResource = "ListTagsForResource"
4980
4981// ListTagsForResourceRequest generates a "aws/request.Request" representing the
4982// client's request for the ListTagsForResource operation. The "output" return
4983// value will be populated with the request's response once the request completes
4984// successfully.
4985//
4986// Use "Send" method on the returned Request to send the API call to the service.
4987// the "output" return value is not valid until after Send returns without error.
4988//
4989// See ListTagsForResource for more information on using the ListTagsForResource
4990// API call, and error handling.
4991//
4992// This method is useful when you want to inject custom logic or configuration
4993// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4994//
4995//
4996//    // Example sending a request using the ListTagsForResourceRequest method.
4997//    req, resp := client.ListTagsForResourceRequest(params)
4998//
4999//    err := req.Send()
5000//    if err == nil { // resp is now filled
5001//        fmt.Println(resp)
5002//    }
5003//
5004// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListTagsForResource
5005func (c *ElastiCache) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *TagListMessage) {
5006	op := &request.Operation{
5007		Name:       opListTagsForResource,
5008		HTTPMethod: "POST",
5009		HTTPPath:   "/",
5010	}
5011
5012	if input == nil {
5013		input = &ListTagsForResourceInput{}
5014	}
5015
5016	output = &TagListMessage{}
5017	req = c.newRequest(op, input, output)
5018	return
5019}
5020
5021// ListTagsForResource API operation for Amazon ElastiCache.
5022//
5023// Lists all cost allocation tags currently on the named resource. A cost allocation
5024// tag is a key-value pair where the key is case-sensitive and the value is
5025// optional. You can use cost allocation tags to categorize and track your AWS
5026// costs.
5027//
5028// If the cluster is not in the available state, ListTagsForResource returns
5029// an error.
5030//
5031// You can have a maximum of 50 cost allocation tags on an ElastiCache resource.
5032// For more information, see Monitoring Costs with Tags (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Tagging.html).
5033//
5034// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5035// with awserr.Error's Code and Message methods to get detailed information about
5036// the error.
5037//
5038// See the AWS API reference guide for Amazon ElastiCache's
5039// API operation ListTagsForResource for usage and error information.
5040//
5041// Returned Error Codes:
5042//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5043//   The requested cluster ID does not refer to an existing cluster.
5044//
5045//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
5046//   The requested snapshot name does not refer to an existing snapshot.
5047//
5048//   * ErrCodeInvalidARNFault "InvalidARN"
5049//   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
5050//
5051// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListTagsForResource
5052func (c *ElastiCache) ListTagsForResource(input *ListTagsForResourceInput) (*TagListMessage, error) {
5053	req, out := c.ListTagsForResourceRequest(input)
5054	return out, req.Send()
5055}
5056
5057// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
5058// the ability to pass a context and additional request options.
5059//
5060// See ListTagsForResource for details on how to use this API operation.
5061//
5062// The context must be non-nil and will be used for request cancellation. If
5063// the context is nil a panic will occur. In the future the SDK may create
5064// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5065// for more information on using Contexts.
5066func (c *ElastiCache) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*TagListMessage, error) {
5067	req, out := c.ListTagsForResourceRequest(input)
5068	req.SetContext(ctx)
5069	req.ApplyOptions(opts...)
5070	return out, req.Send()
5071}
5072
5073const opModifyCacheCluster = "ModifyCacheCluster"
5074
5075// ModifyCacheClusterRequest generates a "aws/request.Request" representing the
5076// client's request for the ModifyCacheCluster operation. The "output" return
5077// value will be populated with the request's response once the request completes
5078// successfully.
5079//
5080// Use "Send" method on the returned Request to send the API call to the service.
5081// the "output" return value is not valid until after Send returns without error.
5082//
5083// See ModifyCacheCluster for more information on using the ModifyCacheCluster
5084// API call, and error handling.
5085//
5086// This method is useful when you want to inject custom logic or configuration
5087// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5088//
5089//
5090//    // Example sending a request using the ModifyCacheClusterRequest method.
5091//    req, resp := client.ModifyCacheClusterRequest(params)
5092//
5093//    err := req.Send()
5094//    if err == nil { // resp is now filled
5095//        fmt.Println(resp)
5096//    }
5097//
5098// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster
5099func (c *ElastiCache) ModifyCacheClusterRequest(input *ModifyCacheClusterInput) (req *request.Request, output *ModifyCacheClusterOutput) {
5100	op := &request.Operation{
5101		Name:       opModifyCacheCluster,
5102		HTTPMethod: "POST",
5103		HTTPPath:   "/",
5104	}
5105
5106	if input == nil {
5107		input = &ModifyCacheClusterInput{}
5108	}
5109
5110	output = &ModifyCacheClusterOutput{}
5111	req = c.newRequest(op, input, output)
5112	return
5113}
5114
5115// ModifyCacheCluster API operation for Amazon ElastiCache.
5116//
5117// Modifies the settings for a cluster. You can use this operation to change
5118// one or more cluster configuration parameters by specifying the parameters
5119// and the new values.
5120//
5121// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5122// with awserr.Error's Code and Message methods to get detailed information about
5123// the error.
5124//
5125// See the AWS API reference guide for Amazon ElastiCache's
5126// API operation ModifyCacheCluster for usage and error information.
5127//
5128// Returned Error Codes:
5129//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5130//   The requested cluster is not in the available state.
5131//
5132//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
5133//   The current state of the cache security group does not allow deletion.
5134//
5135//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
5136//   The requested cache node type is not available in the specified Availability
5137//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
5138//   in the ElastiCache User Guide.
5139//
5140//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5141//   The requested cluster ID does not refer to an existing cluster.
5142//
5143//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
5144//   The request cannot be processed because it would exceed the allowed number
5145//   of cache nodes in a single cluster.
5146//
5147//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
5148//   The request cannot be processed because it would exceed the allowed number
5149//   of cache nodes per customer.
5150//
5151//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
5152//   The requested cache security group name does not refer to an existing cache
5153//   security group.
5154//
5155//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
5156//   The requested cache parameter group name does not refer to an existing cache
5157//   parameter group.
5158//
5159//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
5160//   The VPC network is in an invalid state.
5161//
5162//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5163//   The value for a parameter is invalid.
5164//
5165//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5166//   Two or more incompatible parameters were specified.
5167//
5168// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster
5169func (c *ElastiCache) ModifyCacheCluster(input *ModifyCacheClusterInput) (*ModifyCacheClusterOutput, error) {
5170	req, out := c.ModifyCacheClusterRequest(input)
5171	return out, req.Send()
5172}
5173
5174// ModifyCacheClusterWithContext is the same as ModifyCacheCluster with the addition of
5175// the ability to pass a context and additional request options.
5176//
5177// See ModifyCacheCluster for details on how to use this API operation.
5178//
5179// The context must be non-nil and will be used for request cancellation. If
5180// the context is nil a panic will occur. In the future the SDK may create
5181// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5182// for more information on using Contexts.
5183func (c *ElastiCache) ModifyCacheClusterWithContext(ctx aws.Context, input *ModifyCacheClusterInput, opts ...request.Option) (*ModifyCacheClusterOutput, error) {
5184	req, out := c.ModifyCacheClusterRequest(input)
5185	req.SetContext(ctx)
5186	req.ApplyOptions(opts...)
5187	return out, req.Send()
5188}
5189
5190const opModifyCacheParameterGroup = "ModifyCacheParameterGroup"
5191
5192// ModifyCacheParameterGroupRequest generates a "aws/request.Request" representing the
5193// client's request for the ModifyCacheParameterGroup operation. The "output" return
5194// value will be populated with the request's response once the request completes
5195// successfully.
5196//
5197// Use "Send" method on the returned Request to send the API call to the service.
5198// the "output" return value is not valid until after Send returns without error.
5199//
5200// See ModifyCacheParameterGroup for more information on using the ModifyCacheParameterGroup
5201// API call, and error handling.
5202//
5203// This method is useful when you want to inject custom logic or configuration
5204// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5205//
5206//
5207//    // Example sending a request using the ModifyCacheParameterGroupRequest method.
5208//    req, resp := client.ModifyCacheParameterGroupRequest(params)
5209//
5210//    err := req.Send()
5211//    if err == nil { // resp is now filled
5212//        fmt.Println(resp)
5213//    }
5214//
5215// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheParameterGroup
5216func (c *ElastiCache) ModifyCacheParameterGroupRequest(input *ModifyCacheParameterGroupInput) (req *request.Request, output *CacheParameterGroupNameMessage) {
5217	op := &request.Operation{
5218		Name:       opModifyCacheParameterGroup,
5219		HTTPMethod: "POST",
5220		HTTPPath:   "/",
5221	}
5222
5223	if input == nil {
5224		input = &ModifyCacheParameterGroupInput{}
5225	}
5226
5227	output = &CacheParameterGroupNameMessage{}
5228	req = c.newRequest(op, input, output)
5229	return
5230}
5231
5232// ModifyCacheParameterGroup API operation for Amazon ElastiCache.
5233//
5234// Modifies the parameters of a cache parameter group. You can modify up to
5235// 20 parameters in a single request by submitting a list parameter name and
5236// value pairs.
5237//
5238// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5239// with awserr.Error's Code and Message methods to get detailed information about
5240// the error.
5241//
5242// See the AWS API reference guide for Amazon ElastiCache's
5243// API operation ModifyCacheParameterGroup for usage and error information.
5244//
5245// Returned Error Codes:
5246//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
5247//   The requested cache parameter group name does not refer to an existing cache
5248//   parameter group.
5249//
5250//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
5251//   The current state of the cache parameter group does not allow the requested
5252//   operation to occur.
5253//
5254//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5255//   The value for a parameter is invalid.
5256//
5257//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5258//   Two or more incompatible parameters were specified.
5259//
5260//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
5261//   The Global Datastore is not available or in primary-only state.
5262//
5263// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheParameterGroup
5264func (c *ElastiCache) ModifyCacheParameterGroup(input *ModifyCacheParameterGroupInput) (*CacheParameterGroupNameMessage, error) {
5265	req, out := c.ModifyCacheParameterGroupRequest(input)
5266	return out, req.Send()
5267}
5268
5269// ModifyCacheParameterGroupWithContext is the same as ModifyCacheParameterGroup with the addition of
5270// the ability to pass a context and additional request options.
5271//
5272// See ModifyCacheParameterGroup for details on how to use this API operation.
5273//
5274// The context must be non-nil and will be used for request cancellation. If
5275// the context is nil a panic will occur. In the future the SDK may create
5276// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5277// for more information on using Contexts.
5278func (c *ElastiCache) ModifyCacheParameterGroupWithContext(ctx aws.Context, input *ModifyCacheParameterGroupInput, opts ...request.Option) (*CacheParameterGroupNameMessage, error) {
5279	req, out := c.ModifyCacheParameterGroupRequest(input)
5280	req.SetContext(ctx)
5281	req.ApplyOptions(opts...)
5282	return out, req.Send()
5283}
5284
5285const opModifyCacheSubnetGroup = "ModifyCacheSubnetGroup"
5286
5287// ModifyCacheSubnetGroupRequest generates a "aws/request.Request" representing the
5288// client's request for the ModifyCacheSubnetGroup operation. The "output" return
5289// value will be populated with the request's response once the request completes
5290// successfully.
5291//
5292// Use "Send" method on the returned Request to send the API call to the service.
5293// the "output" return value is not valid until after Send returns without error.
5294//
5295// See ModifyCacheSubnetGroup for more information on using the ModifyCacheSubnetGroup
5296// API call, and error handling.
5297//
5298// This method is useful when you want to inject custom logic or configuration
5299// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5300//
5301//
5302//    // Example sending a request using the ModifyCacheSubnetGroupRequest method.
5303//    req, resp := client.ModifyCacheSubnetGroupRequest(params)
5304//
5305//    err := req.Send()
5306//    if err == nil { // resp is now filled
5307//        fmt.Println(resp)
5308//    }
5309//
5310// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheSubnetGroup
5311func (c *ElastiCache) ModifyCacheSubnetGroupRequest(input *ModifyCacheSubnetGroupInput) (req *request.Request, output *ModifyCacheSubnetGroupOutput) {
5312	op := &request.Operation{
5313		Name:       opModifyCacheSubnetGroup,
5314		HTTPMethod: "POST",
5315		HTTPPath:   "/",
5316	}
5317
5318	if input == nil {
5319		input = &ModifyCacheSubnetGroupInput{}
5320	}
5321
5322	output = &ModifyCacheSubnetGroupOutput{}
5323	req = c.newRequest(op, input, output)
5324	return
5325}
5326
5327// ModifyCacheSubnetGroup API operation for Amazon ElastiCache.
5328//
5329// Modifies an existing cache subnet group.
5330//
5331// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5332// with awserr.Error's Code and Message methods to get detailed information about
5333// the error.
5334//
5335// See the AWS API reference guide for Amazon ElastiCache's
5336// API operation ModifyCacheSubnetGroup for usage and error information.
5337//
5338// Returned Error Codes:
5339//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
5340//   The requested cache subnet group name does not refer to an existing cache
5341//   subnet group.
5342//
5343//   * ErrCodeCacheSubnetQuotaExceededFault "CacheSubnetQuotaExceededFault"
5344//   The request cannot be processed because it would exceed the allowed number
5345//   of subnets in a cache subnet group.
5346//
5347//   * ErrCodeSubnetInUse "SubnetInUse"
5348//   The requested subnet is being used by another cache subnet group.
5349//
5350//   * ErrCodeInvalidSubnet "InvalidSubnet"
5351//   An invalid subnet identifier was specified.
5352//
5353// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheSubnetGroup
5354func (c *ElastiCache) ModifyCacheSubnetGroup(input *ModifyCacheSubnetGroupInput) (*ModifyCacheSubnetGroupOutput, error) {
5355	req, out := c.ModifyCacheSubnetGroupRequest(input)
5356	return out, req.Send()
5357}
5358
5359// ModifyCacheSubnetGroupWithContext is the same as ModifyCacheSubnetGroup with the addition of
5360// the ability to pass a context and additional request options.
5361//
5362// See ModifyCacheSubnetGroup for details on how to use this API operation.
5363//
5364// The context must be non-nil and will be used for request cancellation. If
5365// the context is nil a panic will occur. In the future the SDK may create
5366// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5367// for more information on using Contexts.
5368func (c *ElastiCache) ModifyCacheSubnetGroupWithContext(ctx aws.Context, input *ModifyCacheSubnetGroupInput, opts ...request.Option) (*ModifyCacheSubnetGroupOutput, error) {
5369	req, out := c.ModifyCacheSubnetGroupRequest(input)
5370	req.SetContext(ctx)
5371	req.ApplyOptions(opts...)
5372	return out, req.Send()
5373}
5374
5375const opModifyGlobalReplicationGroup = "ModifyGlobalReplicationGroup"
5376
5377// ModifyGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
5378// client's request for the ModifyGlobalReplicationGroup operation. The "output" return
5379// value will be populated with the request's response once the request completes
5380// successfully.
5381//
5382// Use "Send" method on the returned Request to send the API call to the service.
5383// the "output" return value is not valid until after Send returns without error.
5384//
5385// See ModifyGlobalReplicationGroup for more information on using the ModifyGlobalReplicationGroup
5386// API call, and error handling.
5387//
5388// This method is useful when you want to inject custom logic or configuration
5389// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5390//
5391//
5392//    // Example sending a request using the ModifyGlobalReplicationGroupRequest method.
5393//    req, resp := client.ModifyGlobalReplicationGroupRequest(params)
5394//
5395//    err := req.Send()
5396//    if err == nil { // resp is now filled
5397//        fmt.Println(resp)
5398//    }
5399//
5400// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyGlobalReplicationGroup
5401func (c *ElastiCache) ModifyGlobalReplicationGroupRequest(input *ModifyGlobalReplicationGroupInput) (req *request.Request, output *ModifyGlobalReplicationGroupOutput) {
5402	op := &request.Operation{
5403		Name:       opModifyGlobalReplicationGroup,
5404		HTTPMethod: "POST",
5405		HTTPPath:   "/",
5406	}
5407
5408	if input == nil {
5409		input = &ModifyGlobalReplicationGroupInput{}
5410	}
5411
5412	output = &ModifyGlobalReplicationGroupOutput{}
5413	req = c.newRequest(op, input, output)
5414	return
5415}
5416
5417// ModifyGlobalReplicationGroup API operation for Amazon ElastiCache.
5418//
5419// Modifies the settings for a Global Datastore.
5420//
5421// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5422// with awserr.Error's Code and Message methods to get detailed information about
5423// the error.
5424//
5425// See the AWS API reference guide for Amazon ElastiCache's
5426// API operation ModifyGlobalReplicationGroup for usage and error information.
5427//
5428// Returned Error Codes:
5429//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
5430//   The Global Datastore does not exist
5431//
5432//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
5433//   The Global Datastore is not available or in primary-only state.
5434//
5435//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5436//   The value for a parameter is invalid.
5437//
5438// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyGlobalReplicationGroup
5439func (c *ElastiCache) ModifyGlobalReplicationGroup(input *ModifyGlobalReplicationGroupInput) (*ModifyGlobalReplicationGroupOutput, error) {
5440	req, out := c.ModifyGlobalReplicationGroupRequest(input)
5441	return out, req.Send()
5442}
5443
5444// ModifyGlobalReplicationGroupWithContext is the same as ModifyGlobalReplicationGroup with the addition of
5445// the ability to pass a context and additional request options.
5446//
5447// See ModifyGlobalReplicationGroup for details on how to use this API operation.
5448//
5449// The context must be non-nil and will be used for request cancellation. If
5450// the context is nil a panic will occur. In the future the SDK may create
5451// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5452// for more information on using Contexts.
5453func (c *ElastiCache) ModifyGlobalReplicationGroupWithContext(ctx aws.Context, input *ModifyGlobalReplicationGroupInput, opts ...request.Option) (*ModifyGlobalReplicationGroupOutput, error) {
5454	req, out := c.ModifyGlobalReplicationGroupRequest(input)
5455	req.SetContext(ctx)
5456	req.ApplyOptions(opts...)
5457	return out, req.Send()
5458}
5459
5460const opModifyReplicationGroup = "ModifyReplicationGroup"
5461
5462// ModifyReplicationGroupRequest generates a "aws/request.Request" representing the
5463// client's request for the ModifyReplicationGroup operation. The "output" return
5464// value will be populated with the request's response once the request completes
5465// successfully.
5466//
5467// Use "Send" method on the returned Request to send the API call to the service.
5468// the "output" return value is not valid until after Send returns without error.
5469//
5470// See ModifyReplicationGroup for more information on using the ModifyReplicationGroup
5471// API call, and error handling.
5472//
5473// This method is useful when you want to inject custom logic or configuration
5474// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5475//
5476//
5477//    // Example sending a request using the ModifyReplicationGroupRequest method.
5478//    req, resp := client.ModifyReplicationGroupRequest(params)
5479//
5480//    err := req.Send()
5481//    if err == nil { // resp is now filled
5482//        fmt.Println(resp)
5483//    }
5484//
5485// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroup
5486func (c *ElastiCache) ModifyReplicationGroupRequest(input *ModifyReplicationGroupInput) (req *request.Request, output *ModifyReplicationGroupOutput) {
5487	op := &request.Operation{
5488		Name:       opModifyReplicationGroup,
5489		HTTPMethod: "POST",
5490		HTTPPath:   "/",
5491	}
5492
5493	if input == nil {
5494		input = &ModifyReplicationGroupInput{}
5495	}
5496
5497	output = &ModifyReplicationGroupOutput{}
5498	req = c.newRequest(op, input, output)
5499	return
5500}
5501
5502// ModifyReplicationGroup API operation for Amazon ElastiCache.
5503//
5504// Modifies the settings for a replication group.
5505//
5506//    * Scaling for Amazon ElastiCache for Redis (cluster mode enabled) (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/scaling-redis-cluster-mode-enabled.html)
5507//    in the ElastiCache User Guide
5508//
5509//    * ModifyReplicationGroupShardConfiguration (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html)
5510//    in the ElastiCache API Reference
5511//
5512// This operation is valid for Redis only.
5513//
5514// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5515// with awserr.Error's Code and Message methods to get detailed information about
5516// the error.
5517//
5518// See the AWS API reference guide for Amazon ElastiCache's
5519// API operation ModifyReplicationGroup for usage and error information.
5520//
5521// Returned Error Codes:
5522//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
5523//   The specified replication group does not exist.
5524//
5525//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
5526//   The requested replication group is not in the available state.
5527//
5528//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5529//   The requested cluster is not in the available state.
5530//
5531//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
5532//   The current state of the cache security group does not allow deletion.
5533//
5534//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
5535//   The requested cache node type is not available in the specified Availability
5536//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
5537//   in the ElastiCache User Guide.
5538//
5539//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5540//   The requested cluster ID does not refer to an existing cluster.
5541//
5542//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
5543//   The request cannot be processed because it would exceed the allowed number
5544//   of cache nodes in a single cluster.
5545//
5546//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
5547//   The request cannot be processed because it would exceed the allowed number
5548//   of cache nodes per customer.
5549//
5550//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
5551//   The requested cache security group name does not refer to an existing cache
5552//   security group.
5553//
5554//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
5555//   The requested cache parameter group name does not refer to an existing cache
5556//   parameter group.
5557//
5558//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
5559//   The VPC network is in an invalid state.
5560//
5561//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
5562//   The KMS key supplied is not valid.
5563//
5564//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5565//   The value for a parameter is invalid.
5566//
5567//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5568//   Two or more incompatible parameters were specified.
5569//
5570// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroup
5571func (c *ElastiCache) ModifyReplicationGroup(input *ModifyReplicationGroupInput) (*ModifyReplicationGroupOutput, error) {
5572	req, out := c.ModifyReplicationGroupRequest(input)
5573	return out, req.Send()
5574}
5575
5576// ModifyReplicationGroupWithContext is the same as ModifyReplicationGroup with the addition of
5577// the ability to pass a context and additional request options.
5578//
5579// See ModifyReplicationGroup for details on how to use this API operation.
5580//
5581// The context must be non-nil and will be used for request cancellation. If
5582// the context is nil a panic will occur. In the future the SDK may create
5583// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5584// for more information on using Contexts.
5585func (c *ElastiCache) ModifyReplicationGroupWithContext(ctx aws.Context, input *ModifyReplicationGroupInput, opts ...request.Option) (*ModifyReplicationGroupOutput, error) {
5586	req, out := c.ModifyReplicationGroupRequest(input)
5587	req.SetContext(ctx)
5588	req.ApplyOptions(opts...)
5589	return out, req.Send()
5590}
5591
5592const opModifyReplicationGroupShardConfiguration = "ModifyReplicationGroupShardConfiguration"
5593
5594// ModifyReplicationGroupShardConfigurationRequest generates a "aws/request.Request" representing the
5595// client's request for the ModifyReplicationGroupShardConfiguration operation. The "output" return
5596// value will be populated with the request's response once the request completes
5597// successfully.
5598//
5599// Use "Send" method on the returned Request to send the API call to the service.
5600// the "output" return value is not valid until after Send returns without error.
5601//
5602// See ModifyReplicationGroupShardConfiguration for more information on using the ModifyReplicationGroupShardConfiguration
5603// API call, and error handling.
5604//
5605// This method is useful when you want to inject custom logic or configuration
5606// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5607//
5608//
5609//    // Example sending a request using the ModifyReplicationGroupShardConfigurationRequest method.
5610//    req, resp := client.ModifyReplicationGroupShardConfigurationRequest(params)
5611//
5612//    err := req.Send()
5613//    if err == nil { // resp is now filled
5614//        fmt.Println(resp)
5615//    }
5616//
5617// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroupShardConfiguration
5618func (c *ElastiCache) ModifyReplicationGroupShardConfigurationRequest(input *ModifyReplicationGroupShardConfigurationInput) (req *request.Request, output *ModifyReplicationGroupShardConfigurationOutput) {
5619	op := &request.Operation{
5620		Name:       opModifyReplicationGroupShardConfiguration,
5621		HTTPMethod: "POST",
5622		HTTPPath:   "/",
5623	}
5624
5625	if input == nil {
5626		input = &ModifyReplicationGroupShardConfigurationInput{}
5627	}
5628
5629	output = &ModifyReplicationGroupShardConfigurationOutput{}
5630	req = c.newRequest(op, input, output)
5631	return
5632}
5633
5634// ModifyReplicationGroupShardConfiguration API operation for Amazon ElastiCache.
5635//
5636// Modifies a replication group's shards (node groups) by allowing you to add
5637// shards, remove shards, or rebalance the keyspaces among exisiting shards.
5638//
5639// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5640// with awserr.Error's Code and Message methods to get detailed information about
5641// the error.
5642//
5643// See the AWS API reference guide for Amazon ElastiCache's
5644// API operation ModifyReplicationGroupShardConfiguration for usage and error information.
5645//
5646// Returned Error Codes:
5647//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
5648//   The specified replication group does not exist.
5649//
5650//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
5651//   The requested replication group is not in the available state.
5652//
5653//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5654//   The requested cluster is not in the available state.
5655//
5656//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
5657//   The VPC network is in an invalid state.
5658//
5659//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
5660//   The requested cache node type is not available in the specified Availability
5661//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
5662//   in the ElastiCache User Guide.
5663//
5664//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
5665//   The request cannot be processed because it would exceed the maximum allowed
5666//   number of node groups (shards) in a single replication group. The default
5667//   maximum is 90
5668//
5669//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
5670//   The request cannot be processed because it would exceed the allowed number
5671//   of cache nodes per customer.
5672//
5673//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
5674//   The KMS key supplied is not valid.
5675//
5676//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5677//   The value for a parameter is invalid.
5678//
5679//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5680//   Two or more incompatible parameters were specified.
5681//
5682// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroupShardConfiguration
5683func (c *ElastiCache) ModifyReplicationGroupShardConfiguration(input *ModifyReplicationGroupShardConfigurationInput) (*ModifyReplicationGroupShardConfigurationOutput, error) {
5684	req, out := c.ModifyReplicationGroupShardConfigurationRequest(input)
5685	return out, req.Send()
5686}
5687
5688// ModifyReplicationGroupShardConfigurationWithContext is the same as ModifyReplicationGroupShardConfiguration with the addition of
5689// the ability to pass a context and additional request options.
5690//
5691// See ModifyReplicationGroupShardConfiguration for details on how to use this API operation.
5692//
5693// The context must be non-nil and will be used for request cancellation. If
5694// the context is nil a panic will occur. In the future the SDK may create
5695// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5696// for more information on using Contexts.
5697func (c *ElastiCache) ModifyReplicationGroupShardConfigurationWithContext(ctx aws.Context, input *ModifyReplicationGroupShardConfigurationInput, opts ...request.Option) (*ModifyReplicationGroupShardConfigurationOutput, error) {
5698	req, out := c.ModifyReplicationGroupShardConfigurationRequest(input)
5699	req.SetContext(ctx)
5700	req.ApplyOptions(opts...)
5701	return out, req.Send()
5702}
5703
5704const opPurchaseReservedCacheNodesOffering = "PurchaseReservedCacheNodesOffering"
5705
5706// PurchaseReservedCacheNodesOfferingRequest generates a "aws/request.Request" representing the
5707// client's request for the PurchaseReservedCacheNodesOffering operation. The "output" return
5708// value will be populated with the request's response once the request completes
5709// successfully.
5710//
5711// Use "Send" method on the returned Request to send the API call to the service.
5712// the "output" return value is not valid until after Send returns without error.
5713//
5714// See PurchaseReservedCacheNodesOffering for more information on using the PurchaseReservedCacheNodesOffering
5715// API call, and error handling.
5716//
5717// This method is useful when you want to inject custom logic or configuration
5718// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5719//
5720//
5721//    // Example sending a request using the PurchaseReservedCacheNodesOfferingRequest method.
5722//    req, resp := client.PurchaseReservedCacheNodesOfferingRequest(params)
5723//
5724//    err := req.Send()
5725//    if err == nil { // resp is now filled
5726//        fmt.Println(resp)
5727//    }
5728//
5729// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/PurchaseReservedCacheNodesOffering
5730func (c *ElastiCache) PurchaseReservedCacheNodesOfferingRequest(input *PurchaseReservedCacheNodesOfferingInput) (req *request.Request, output *PurchaseReservedCacheNodesOfferingOutput) {
5731	op := &request.Operation{
5732		Name:       opPurchaseReservedCacheNodesOffering,
5733		HTTPMethod: "POST",
5734		HTTPPath:   "/",
5735	}
5736
5737	if input == nil {
5738		input = &PurchaseReservedCacheNodesOfferingInput{}
5739	}
5740
5741	output = &PurchaseReservedCacheNodesOfferingOutput{}
5742	req = c.newRequest(op, input, output)
5743	return
5744}
5745
5746// PurchaseReservedCacheNodesOffering API operation for Amazon ElastiCache.
5747//
5748// Allows you to purchase a reserved cache node offering.
5749//
5750// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5751// with awserr.Error's Code and Message methods to get detailed information about
5752// the error.
5753//
5754// See the AWS API reference guide for Amazon ElastiCache's
5755// API operation PurchaseReservedCacheNodesOffering for usage and error information.
5756//
5757// Returned Error Codes:
5758//   * ErrCodeReservedCacheNodesOfferingNotFoundFault "ReservedCacheNodesOfferingNotFound"
5759//   The requested cache node offering does not exist.
5760//
5761//   * ErrCodeReservedCacheNodeAlreadyExistsFault "ReservedCacheNodeAlreadyExists"
5762//   You already have a reservation with the given identifier.
5763//
5764//   * ErrCodeReservedCacheNodeQuotaExceededFault "ReservedCacheNodeQuotaExceeded"
5765//   The request cannot be processed because it would exceed the user's cache
5766//   node quota.
5767//
5768//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5769//   The value for a parameter is invalid.
5770//
5771//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5772//   Two or more incompatible parameters were specified.
5773//
5774// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/PurchaseReservedCacheNodesOffering
5775func (c *ElastiCache) PurchaseReservedCacheNodesOffering(input *PurchaseReservedCacheNodesOfferingInput) (*PurchaseReservedCacheNodesOfferingOutput, error) {
5776	req, out := c.PurchaseReservedCacheNodesOfferingRequest(input)
5777	return out, req.Send()
5778}
5779
5780// PurchaseReservedCacheNodesOfferingWithContext is the same as PurchaseReservedCacheNodesOffering with the addition of
5781// the ability to pass a context and additional request options.
5782//
5783// See PurchaseReservedCacheNodesOffering for details on how to use this API operation.
5784//
5785// The context must be non-nil and will be used for request cancellation. If
5786// the context is nil a panic will occur. In the future the SDK may create
5787// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5788// for more information on using Contexts.
5789func (c *ElastiCache) PurchaseReservedCacheNodesOfferingWithContext(ctx aws.Context, input *PurchaseReservedCacheNodesOfferingInput, opts ...request.Option) (*PurchaseReservedCacheNodesOfferingOutput, error) {
5790	req, out := c.PurchaseReservedCacheNodesOfferingRequest(input)
5791	req.SetContext(ctx)
5792	req.ApplyOptions(opts...)
5793	return out, req.Send()
5794}
5795
5796const opRebalanceSlotsInGlobalReplicationGroup = "RebalanceSlotsInGlobalReplicationGroup"
5797
5798// RebalanceSlotsInGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
5799// client's request for the RebalanceSlotsInGlobalReplicationGroup operation. The "output" return
5800// value will be populated with the request's response once the request completes
5801// successfully.
5802//
5803// Use "Send" method on the returned Request to send the API call to the service.
5804// the "output" return value is not valid until after Send returns without error.
5805//
5806// See RebalanceSlotsInGlobalReplicationGroup for more information on using the RebalanceSlotsInGlobalReplicationGroup
5807// API call, and error handling.
5808//
5809// This method is useful when you want to inject custom logic or configuration
5810// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5811//
5812//
5813//    // Example sending a request using the RebalanceSlotsInGlobalReplicationGroupRequest method.
5814//    req, resp := client.RebalanceSlotsInGlobalReplicationGroupRequest(params)
5815//
5816//    err := req.Send()
5817//    if err == nil { // resp is now filled
5818//        fmt.Println(resp)
5819//    }
5820//
5821// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebalanceSlotsInGlobalReplicationGroup
5822func (c *ElastiCache) RebalanceSlotsInGlobalReplicationGroupRequest(input *RebalanceSlotsInGlobalReplicationGroupInput) (req *request.Request, output *RebalanceSlotsInGlobalReplicationGroupOutput) {
5823	op := &request.Operation{
5824		Name:       opRebalanceSlotsInGlobalReplicationGroup,
5825		HTTPMethod: "POST",
5826		HTTPPath:   "/",
5827	}
5828
5829	if input == nil {
5830		input = &RebalanceSlotsInGlobalReplicationGroupInput{}
5831	}
5832
5833	output = &RebalanceSlotsInGlobalReplicationGroupOutput{}
5834	req = c.newRequest(op, input, output)
5835	return
5836}
5837
5838// RebalanceSlotsInGlobalReplicationGroup API operation for Amazon ElastiCache.
5839//
5840// Redistribute slots to ensure uniform distribution across existing shards
5841// in the cluster.
5842//
5843// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5844// with awserr.Error's Code and Message methods to get detailed information about
5845// the error.
5846//
5847// See the AWS API reference guide for Amazon ElastiCache's
5848// API operation RebalanceSlotsInGlobalReplicationGroup for usage and error information.
5849//
5850// Returned Error Codes:
5851//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
5852//   The Global Datastore does not exist
5853//
5854//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
5855//   The Global Datastore is not available or in primary-only state.
5856//
5857//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5858//   The value for a parameter is invalid.
5859//
5860// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebalanceSlotsInGlobalReplicationGroup
5861func (c *ElastiCache) RebalanceSlotsInGlobalReplicationGroup(input *RebalanceSlotsInGlobalReplicationGroupInput) (*RebalanceSlotsInGlobalReplicationGroupOutput, error) {
5862	req, out := c.RebalanceSlotsInGlobalReplicationGroupRequest(input)
5863	return out, req.Send()
5864}
5865
5866// RebalanceSlotsInGlobalReplicationGroupWithContext is the same as RebalanceSlotsInGlobalReplicationGroup with the addition of
5867// the ability to pass a context and additional request options.
5868//
5869// See RebalanceSlotsInGlobalReplicationGroup for details on how to use this API operation.
5870//
5871// The context must be non-nil and will be used for request cancellation. If
5872// the context is nil a panic will occur. In the future the SDK may create
5873// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5874// for more information on using Contexts.
5875func (c *ElastiCache) RebalanceSlotsInGlobalReplicationGroupWithContext(ctx aws.Context, input *RebalanceSlotsInGlobalReplicationGroupInput, opts ...request.Option) (*RebalanceSlotsInGlobalReplicationGroupOutput, error) {
5876	req, out := c.RebalanceSlotsInGlobalReplicationGroupRequest(input)
5877	req.SetContext(ctx)
5878	req.ApplyOptions(opts...)
5879	return out, req.Send()
5880}
5881
5882const opRebootCacheCluster = "RebootCacheCluster"
5883
5884// RebootCacheClusterRequest generates a "aws/request.Request" representing the
5885// client's request for the RebootCacheCluster operation. The "output" return
5886// value will be populated with the request's response once the request completes
5887// successfully.
5888//
5889// Use "Send" method on the returned Request to send the API call to the service.
5890// the "output" return value is not valid until after Send returns without error.
5891//
5892// See RebootCacheCluster for more information on using the RebootCacheCluster
5893// API call, and error handling.
5894//
5895// This method is useful when you want to inject custom logic or configuration
5896// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5897//
5898//
5899//    // Example sending a request using the RebootCacheClusterRequest method.
5900//    req, resp := client.RebootCacheClusterRequest(params)
5901//
5902//    err := req.Send()
5903//    if err == nil { // resp is now filled
5904//        fmt.Println(resp)
5905//    }
5906//
5907// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebootCacheCluster
5908func (c *ElastiCache) RebootCacheClusterRequest(input *RebootCacheClusterInput) (req *request.Request, output *RebootCacheClusterOutput) {
5909	op := &request.Operation{
5910		Name:       opRebootCacheCluster,
5911		HTTPMethod: "POST",
5912		HTTPPath:   "/",
5913	}
5914
5915	if input == nil {
5916		input = &RebootCacheClusterInput{}
5917	}
5918
5919	output = &RebootCacheClusterOutput{}
5920	req = c.newRequest(op, input, output)
5921	return
5922}
5923
5924// RebootCacheCluster API operation for Amazon ElastiCache.
5925//
5926// Reboots some, or all, of the cache nodes within a provisioned cluster. This
5927// operation applies any modified cache parameter groups to the cluster. The
5928// reboot operation takes place as soon as possible, and results in a momentary
5929// outage to the cluster. During the reboot, the cluster status is set to REBOOTING.
5930//
5931// The reboot causes the contents of the cache (for each cache node being rebooted)
5932// to be lost.
5933//
5934// When the reboot is complete, a cluster event is created.
5935//
5936// Rebooting a cluster is currently supported on Memcached and Redis (cluster
5937// mode disabled) clusters. Rebooting is not supported on Redis (cluster mode
5938// enabled) clusters.
5939//
5940// If you make changes to parameters that require a Redis (cluster mode enabled)
5941// cluster reboot for the changes to be applied, see Rebooting a Cluster (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html)
5942// for an alternate process.
5943//
5944// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5945// with awserr.Error's Code and Message methods to get detailed information about
5946// the error.
5947//
5948// See the AWS API reference guide for Amazon ElastiCache's
5949// API operation RebootCacheCluster for usage and error information.
5950//
5951// Returned Error Codes:
5952//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5953//   The requested cluster is not in the available state.
5954//
5955//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5956//   The requested cluster ID does not refer to an existing cluster.
5957//
5958// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebootCacheCluster
5959func (c *ElastiCache) RebootCacheCluster(input *RebootCacheClusterInput) (*RebootCacheClusterOutput, error) {
5960	req, out := c.RebootCacheClusterRequest(input)
5961	return out, req.Send()
5962}
5963
5964// RebootCacheClusterWithContext is the same as RebootCacheCluster with the addition of
5965// the ability to pass a context and additional request options.
5966//
5967// See RebootCacheCluster for details on how to use this API operation.
5968//
5969// The context must be non-nil and will be used for request cancellation. If
5970// the context is nil a panic will occur. In the future the SDK may create
5971// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5972// for more information on using Contexts.
5973func (c *ElastiCache) RebootCacheClusterWithContext(ctx aws.Context, input *RebootCacheClusterInput, opts ...request.Option) (*RebootCacheClusterOutput, error) {
5974	req, out := c.RebootCacheClusterRequest(input)
5975	req.SetContext(ctx)
5976	req.ApplyOptions(opts...)
5977	return out, req.Send()
5978}
5979
5980const opRemoveTagsFromResource = "RemoveTagsFromResource"
5981
5982// RemoveTagsFromResourceRequest generates a "aws/request.Request" representing the
5983// client's request for the RemoveTagsFromResource operation. The "output" return
5984// value will be populated with the request's response once the request completes
5985// successfully.
5986//
5987// Use "Send" method on the returned Request to send the API call to the service.
5988// the "output" return value is not valid until after Send returns without error.
5989//
5990// See RemoveTagsFromResource for more information on using the RemoveTagsFromResource
5991// API call, and error handling.
5992//
5993// This method is useful when you want to inject custom logic or configuration
5994// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5995//
5996//
5997//    // Example sending a request using the RemoveTagsFromResourceRequest method.
5998//    req, resp := client.RemoveTagsFromResourceRequest(params)
5999//
6000//    err := req.Send()
6001//    if err == nil { // resp is now filled
6002//        fmt.Println(resp)
6003//    }
6004//
6005// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RemoveTagsFromResource
6006func (c *ElastiCache) RemoveTagsFromResourceRequest(input *RemoveTagsFromResourceInput) (req *request.Request, output *TagListMessage) {
6007	op := &request.Operation{
6008		Name:       opRemoveTagsFromResource,
6009		HTTPMethod: "POST",
6010		HTTPPath:   "/",
6011	}
6012
6013	if input == nil {
6014		input = &RemoveTagsFromResourceInput{}
6015	}
6016
6017	output = &TagListMessage{}
6018	req = c.newRequest(op, input, output)
6019	return
6020}
6021
6022// RemoveTagsFromResource API operation for Amazon ElastiCache.
6023//
6024// Removes the tags identified by the TagKeys list from the named resource.
6025//
6026// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6027// with awserr.Error's Code and Message methods to get detailed information about
6028// the error.
6029//
6030// See the AWS API reference guide for Amazon ElastiCache's
6031// API operation RemoveTagsFromResource for usage and error information.
6032//
6033// Returned Error Codes:
6034//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
6035//   The requested cluster ID does not refer to an existing cluster.
6036//
6037//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
6038//   The requested snapshot name does not refer to an existing snapshot.
6039//
6040//   * ErrCodeInvalidARNFault "InvalidARN"
6041//   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
6042//
6043//   * ErrCodeTagNotFoundFault "TagNotFound"
6044//   The requested tag was not found on this resource.
6045//
6046// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RemoveTagsFromResource
6047func (c *ElastiCache) RemoveTagsFromResource(input *RemoveTagsFromResourceInput) (*TagListMessage, error) {
6048	req, out := c.RemoveTagsFromResourceRequest(input)
6049	return out, req.Send()
6050}
6051
6052// RemoveTagsFromResourceWithContext is the same as RemoveTagsFromResource with the addition of
6053// the ability to pass a context and additional request options.
6054//
6055// See RemoveTagsFromResource for details on how to use this API operation.
6056//
6057// The context must be non-nil and will be used for request cancellation. If
6058// the context is nil a panic will occur. In the future the SDK may create
6059// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6060// for more information on using Contexts.
6061func (c *ElastiCache) RemoveTagsFromResourceWithContext(ctx aws.Context, input *RemoveTagsFromResourceInput, opts ...request.Option) (*TagListMessage, error) {
6062	req, out := c.RemoveTagsFromResourceRequest(input)
6063	req.SetContext(ctx)
6064	req.ApplyOptions(opts...)
6065	return out, req.Send()
6066}
6067
6068const opResetCacheParameterGroup = "ResetCacheParameterGroup"
6069
6070// ResetCacheParameterGroupRequest generates a "aws/request.Request" representing the
6071// client's request for the ResetCacheParameterGroup operation. The "output" return
6072// value will be populated with the request's response once the request completes
6073// successfully.
6074//
6075// Use "Send" method on the returned Request to send the API call to the service.
6076// the "output" return value is not valid until after Send returns without error.
6077//
6078// See ResetCacheParameterGroup for more information on using the ResetCacheParameterGroup
6079// API call, and error handling.
6080//
6081// This method is useful when you want to inject custom logic or configuration
6082// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6083//
6084//
6085//    // Example sending a request using the ResetCacheParameterGroupRequest method.
6086//    req, resp := client.ResetCacheParameterGroupRequest(params)
6087//
6088//    err := req.Send()
6089//    if err == nil { // resp is now filled
6090//        fmt.Println(resp)
6091//    }
6092//
6093// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ResetCacheParameterGroup
6094func (c *ElastiCache) ResetCacheParameterGroupRequest(input *ResetCacheParameterGroupInput) (req *request.Request, output *CacheParameterGroupNameMessage) {
6095	op := &request.Operation{
6096		Name:       opResetCacheParameterGroup,
6097		HTTPMethod: "POST",
6098		HTTPPath:   "/",
6099	}
6100
6101	if input == nil {
6102		input = &ResetCacheParameterGroupInput{}
6103	}
6104
6105	output = &CacheParameterGroupNameMessage{}
6106	req = c.newRequest(op, input, output)
6107	return
6108}
6109
6110// ResetCacheParameterGroup API operation for Amazon ElastiCache.
6111//
6112// Modifies the parameters of a cache parameter group to the engine or system
6113// default value. You can reset specific parameters by submitting a list of
6114// parameter names. To reset the entire cache parameter group, specify the ResetAllParameters
6115// and CacheParameterGroupName parameters.
6116//
6117// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6118// with awserr.Error's Code and Message methods to get detailed information about
6119// the error.
6120//
6121// See the AWS API reference guide for Amazon ElastiCache's
6122// API operation ResetCacheParameterGroup for usage and error information.
6123//
6124// Returned Error Codes:
6125//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
6126//   The current state of the cache parameter group does not allow the requested
6127//   operation to occur.
6128//
6129//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
6130//   The requested cache parameter group name does not refer to an existing cache
6131//   parameter group.
6132//
6133//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6134//   The value for a parameter is invalid.
6135//
6136//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
6137//   Two or more incompatible parameters were specified.
6138//
6139//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
6140//   The Global Datastore is not available or in primary-only state.
6141//
6142// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ResetCacheParameterGroup
6143func (c *ElastiCache) ResetCacheParameterGroup(input *ResetCacheParameterGroupInput) (*CacheParameterGroupNameMessage, error) {
6144	req, out := c.ResetCacheParameterGroupRequest(input)
6145	return out, req.Send()
6146}
6147
6148// ResetCacheParameterGroupWithContext is the same as ResetCacheParameterGroup with the addition of
6149// the ability to pass a context and additional request options.
6150//
6151// See ResetCacheParameterGroup for details on how to use this API operation.
6152//
6153// The context must be non-nil and will be used for request cancellation. If
6154// the context is nil a panic will occur. In the future the SDK may create
6155// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6156// for more information on using Contexts.
6157func (c *ElastiCache) ResetCacheParameterGroupWithContext(ctx aws.Context, input *ResetCacheParameterGroupInput, opts ...request.Option) (*CacheParameterGroupNameMessage, error) {
6158	req, out := c.ResetCacheParameterGroupRequest(input)
6159	req.SetContext(ctx)
6160	req.ApplyOptions(opts...)
6161	return out, req.Send()
6162}
6163
6164const opRevokeCacheSecurityGroupIngress = "RevokeCacheSecurityGroupIngress"
6165
6166// RevokeCacheSecurityGroupIngressRequest generates a "aws/request.Request" representing the
6167// client's request for the RevokeCacheSecurityGroupIngress operation. The "output" return
6168// value will be populated with the request's response once the request completes
6169// successfully.
6170//
6171// Use "Send" method on the returned Request to send the API call to the service.
6172// the "output" return value is not valid until after Send returns without error.
6173//
6174// See RevokeCacheSecurityGroupIngress for more information on using the RevokeCacheSecurityGroupIngress
6175// API call, and error handling.
6176//
6177// This method is useful when you want to inject custom logic or configuration
6178// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6179//
6180//
6181//    // Example sending a request using the RevokeCacheSecurityGroupIngressRequest method.
6182//    req, resp := client.RevokeCacheSecurityGroupIngressRequest(params)
6183//
6184//    err := req.Send()
6185//    if err == nil { // resp is now filled
6186//        fmt.Println(resp)
6187//    }
6188//
6189// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RevokeCacheSecurityGroupIngress
6190func (c *ElastiCache) RevokeCacheSecurityGroupIngressRequest(input *RevokeCacheSecurityGroupIngressInput) (req *request.Request, output *RevokeCacheSecurityGroupIngressOutput) {
6191	op := &request.Operation{
6192		Name:       opRevokeCacheSecurityGroupIngress,
6193		HTTPMethod: "POST",
6194		HTTPPath:   "/",
6195	}
6196
6197	if input == nil {
6198		input = &RevokeCacheSecurityGroupIngressInput{}
6199	}
6200
6201	output = &RevokeCacheSecurityGroupIngressOutput{}
6202	req = c.newRequest(op, input, output)
6203	return
6204}
6205
6206// RevokeCacheSecurityGroupIngress API operation for Amazon ElastiCache.
6207//
6208// Revokes ingress from a cache security group. Use this operation to disallow
6209// access from an Amazon EC2 security group that had been previously authorized.
6210//
6211// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6212// with awserr.Error's Code and Message methods to get detailed information about
6213// the error.
6214//
6215// See the AWS API reference guide for Amazon ElastiCache's
6216// API operation RevokeCacheSecurityGroupIngress for usage and error information.
6217//
6218// Returned Error Codes:
6219//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
6220//   The requested cache security group name does not refer to an existing cache
6221//   security group.
6222//
6223//   * ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
6224//   The specified Amazon EC2 security group is not authorized for the specified
6225//   cache security group.
6226//
6227//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
6228//   The current state of the cache security group does not allow deletion.
6229//
6230//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6231//   The value for a parameter is invalid.
6232//
6233//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
6234//   Two or more incompatible parameters were specified.
6235//
6236// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RevokeCacheSecurityGroupIngress
6237func (c *ElastiCache) RevokeCacheSecurityGroupIngress(input *RevokeCacheSecurityGroupIngressInput) (*RevokeCacheSecurityGroupIngressOutput, error) {
6238	req, out := c.RevokeCacheSecurityGroupIngressRequest(input)
6239	return out, req.Send()
6240}
6241
6242// RevokeCacheSecurityGroupIngressWithContext is the same as RevokeCacheSecurityGroupIngress with the addition of
6243// the ability to pass a context and additional request options.
6244//
6245// See RevokeCacheSecurityGroupIngress for details on how to use this API operation.
6246//
6247// The context must be non-nil and will be used for request cancellation. If
6248// the context is nil a panic will occur. In the future the SDK may create
6249// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6250// for more information on using Contexts.
6251func (c *ElastiCache) RevokeCacheSecurityGroupIngressWithContext(ctx aws.Context, input *RevokeCacheSecurityGroupIngressInput, opts ...request.Option) (*RevokeCacheSecurityGroupIngressOutput, error) {
6252	req, out := c.RevokeCacheSecurityGroupIngressRequest(input)
6253	req.SetContext(ctx)
6254	req.ApplyOptions(opts...)
6255	return out, req.Send()
6256}
6257
6258const opStartMigration = "StartMigration"
6259
6260// StartMigrationRequest generates a "aws/request.Request" representing the
6261// client's request for the StartMigration operation. The "output" return
6262// value will be populated with the request's response once the request completes
6263// successfully.
6264//
6265// Use "Send" method on the returned Request to send the API call to the service.
6266// the "output" return value is not valid until after Send returns without error.
6267//
6268// See StartMigration for more information on using the StartMigration
6269// API call, and error handling.
6270//
6271// This method is useful when you want to inject custom logic or configuration
6272// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6273//
6274//
6275//    // Example sending a request using the StartMigrationRequest method.
6276//    req, resp := client.StartMigrationRequest(params)
6277//
6278//    err := req.Send()
6279//    if err == nil { // resp is now filled
6280//        fmt.Println(resp)
6281//    }
6282//
6283// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/StartMigration
6284func (c *ElastiCache) StartMigrationRequest(input *StartMigrationInput) (req *request.Request, output *StartMigrationOutput) {
6285	op := &request.Operation{
6286		Name:       opStartMigration,
6287		HTTPMethod: "POST",
6288		HTTPPath:   "/",
6289	}
6290
6291	if input == nil {
6292		input = &StartMigrationInput{}
6293	}
6294
6295	output = &StartMigrationOutput{}
6296	req = c.newRequest(op, input, output)
6297	return
6298}
6299
6300// StartMigration API operation for Amazon ElastiCache.
6301//
6302// Start the migration of data.
6303//
6304// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6305// with awserr.Error's Code and Message methods to get detailed information about
6306// the error.
6307//
6308// See the AWS API reference guide for Amazon ElastiCache's
6309// API operation StartMigration for usage and error information.
6310//
6311// Returned Error Codes:
6312//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
6313//   The specified replication group does not exist.
6314//
6315//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
6316//   The requested replication group is not in the available state.
6317//
6318//   * ErrCodeReplicationGroupAlreadyUnderMigrationFault "ReplicationGroupAlreadyUnderMigrationFault"
6319//   The targeted replication group is not available.
6320//
6321//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6322//   The value for a parameter is invalid.
6323//
6324// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/StartMigration
6325func (c *ElastiCache) StartMigration(input *StartMigrationInput) (*StartMigrationOutput, error) {
6326	req, out := c.StartMigrationRequest(input)
6327	return out, req.Send()
6328}
6329
6330// StartMigrationWithContext is the same as StartMigration with the addition of
6331// the ability to pass a context and additional request options.
6332//
6333// See StartMigration for details on how to use this API operation.
6334//
6335// The context must be non-nil and will be used for request cancellation. If
6336// the context is nil a panic will occur. In the future the SDK may create
6337// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6338// for more information on using Contexts.
6339func (c *ElastiCache) StartMigrationWithContext(ctx aws.Context, input *StartMigrationInput, opts ...request.Option) (*StartMigrationOutput, error) {
6340	req, out := c.StartMigrationRequest(input)
6341	req.SetContext(ctx)
6342	req.ApplyOptions(opts...)
6343	return out, req.Send()
6344}
6345
6346const opTestFailover = "TestFailover"
6347
6348// TestFailoverRequest generates a "aws/request.Request" representing the
6349// client's request for the TestFailover operation. The "output" return
6350// value will be populated with the request's response once the request completes
6351// successfully.
6352//
6353// Use "Send" method on the returned Request to send the API call to the service.
6354// the "output" return value is not valid until after Send returns without error.
6355//
6356// See TestFailover for more information on using the TestFailover
6357// API call, and error handling.
6358//
6359// This method is useful when you want to inject custom logic or configuration
6360// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6361//
6362//
6363//    // Example sending a request using the TestFailoverRequest method.
6364//    req, resp := client.TestFailoverRequest(params)
6365//
6366//    err := req.Send()
6367//    if err == nil { // resp is now filled
6368//        fmt.Println(resp)
6369//    }
6370//
6371// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/TestFailover
6372func (c *ElastiCache) TestFailoverRequest(input *TestFailoverInput) (req *request.Request, output *TestFailoverOutput) {
6373	op := &request.Operation{
6374		Name:       opTestFailover,
6375		HTTPMethod: "POST",
6376		HTTPPath:   "/",
6377	}
6378
6379	if input == nil {
6380		input = &TestFailoverInput{}
6381	}
6382
6383	output = &TestFailoverOutput{}
6384	req = c.newRequest(op, input, output)
6385	return
6386}
6387
6388// TestFailover API operation for Amazon ElastiCache.
6389//
6390// Represents the input of a TestFailover operation which test automatic failover
6391// on a specified node group (called shard in the console) in a replication
6392// group (called cluster in the console).
6393//
6394// Note the following
6395//
6396//    * A customer can use this operation to test automatic failover on up to
6397//    5 shards (called node groups in the ElastiCache API and AWS CLI) in any
6398//    rolling 24-hour period.
6399//
6400//    * If calling this operation on shards in different clusters (called replication
6401//    groups in the API and CLI), the calls can be made concurrently.
6402//
6403//    * If calling this operation multiple times on different shards in the
6404//    same Redis (cluster mode enabled) replication group, the first node replacement
6405//    must complete before a subsequent call can be made.
6406//
6407//    * To determine whether the node replacement is complete you can check
6408//    Events using the Amazon ElastiCache console, the AWS CLI, or the ElastiCache
6409//    API. Look for the following automatic failover related events, listed
6410//    here in order of occurrance: Replication group message: Test Failover
6411//    API called for node group <node-group-id> Cache cluster message: Failover
6412//    from master node <primary-node-id> to replica node <node-id> completed
6413//    Replication group message: Failover from master node <primary-node-id>
6414//    to replica node <node-id> completed Cache cluster message: Recovering
6415//    cache nodes <node-id> Cache cluster message: Finished recovery for cache
6416//    nodes <node-id> For more information see: Viewing ElastiCache Events (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ECEvents.Viewing.html)
6417//    in the ElastiCache User Guide DescribeEvents (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEvents.html)
6418//    in the ElastiCache API Reference
6419//
6420// Also see, Testing Multi-AZ with Automatic Failover (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html#auto-failover-test)
6421// in the ElastiCache User Guide.
6422//
6423// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6424// with awserr.Error's Code and Message methods to get detailed information about
6425// the error.
6426//
6427// See the AWS API reference guide for Amazon ElastiCache's
6428// API operation TestFailover for usage and error information.
6429//
6430// Returned Error Codes:
6431//   * ErrCodeAPICallRateForCustomerExceededFault "APICallRateForCustomerExceeded"
6432//   The customer has exceeded the allowed rate of API calls.
6433//
6434//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
6435//   The requested cluster is not in the available state.
6436//
6437//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
6438//   The requested replication group is not in the available state.
6439//
6440//   * ErrCodeNodeGroupNotFoundFault "NodeGroupNotFoundFault"
6441//   The node group specified by the NodeGroupId parameter could not be found.
6442//   Please verify that the node group exists and that you spelled the NodeGroupId
6443//   value correctly.
6444//
6445//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
6446//   The specified replication group does not exist.
6447//
6448//   * ErrCodeTestFailoverNotAvailableFault "TestFailoverNotAvailableFault"
6449//   The TestFailover action is not available.
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/TestFailover
6461func (c *ElastiCache) TestFailover(input *TestFailoverInput) (*TestFailoverOutput, error) {
6462	req, out := c.TestFailoverRequest(input)
6463	return out, req.Send()
6464}
6465
6466// TestFailoverWithContext is the same as TestFailover with the addition of
6467// the ability to pass a context and additional request options.
6468//
6469// See TestFailover 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) TestFailoverWithContext(ctx aws.Context, input *TestFailoverInput, opts ...request.Option) (*TestFailoverOutput, error) {
6476	req, out := c.TestFailoverRequest(input)
6477	req.SetContext(ctx)
6478	req.ApplyOptions(opts...)
6479	return out, req.Send()
6480}
6481
6482// Represents the input of an AddTagsToResource operation.
6483type AddTagsToResourceInput struct {
6484	_ struct{} `type:"structure"`
6485
6486	// The Amazon Resource Name (ARN) of the resource to which the tags are to be
6487	// added, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
6488	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot. ElastiCache
6489	// resources are cluster and snapshot.
6490	//
6491	// For more information about ARNs, see Amazon Resource Names (ARNs) and AWS
6492	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
6493	//
6494	// ResourceName is a required field
6495	ResourceName *string `type:"string" required:"true"`
6496
6497	// A list of cost allocation tags to be added to this resource. A tag is a key-value
6498	// pair. A tag key must be accompanied by a tag value.
6499	//
6500	// Tags is a required field
6501	Tags []*Tag `locationNameList:"Tag" type:"list" required:"true"`
6502}
6503
6504// String returns the string representation
6505func (s AddTagsToResourceInput) String() string {
6506	return awsutil.Prettify(s)
6507}
6508
6509// GoString returns the string representation
6510func (s AddTagsToResourceInput) GoString() string {
6511	return s.String()
6512}
6513
6514// Validate inspects the fields of the type to determine if they are valid.
6515func (s *AddTagsToResourceInput) Validate() error {
6516	invalidParams := request.ErrInvalidParams{Context: "AddTagsToResourceInput"}
6517	if s.ResourceName == nil {
6518		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
6519	}
6520	if s.Tags == nil {
6521		invalidParams.Add(request.NewErrParamRequired("Tags"))
6522	}
6523
6524	if invalidParams.Len() > 0 {
6525		return invalidParams
6526	}
6527	return nil
6528}
6529
6530// SetResourceName sets the ResourceName field's value.
6531func (s *AddTagsToResourceInput) SetResourceName(v string) *AddTagsToResourceInput {
6532	s.ResourceName = &v
6533	return s
6534}
6535
6536// SetTags sets the Tags field's value.
6537func (s *AddTagsToResourceInput) SetTags(v []*Tag) *AddTagsToResourceInput {
6538	s.Tags = v
6539	return s
6540}
6541
6542// Represents the input of an AuthorizeCacheSecurityGroupIngress operation.
6543type AuthorizeCacheSecurityGroupIngressInput struct {
6544	_ struct{} `type:"structure"`
6545
6546	// The cache security group that allows network ingress.
6547	//
6548	// CacheSecurityGroupName is a required field
6549	CacheSecurityGroupName *string `type:"string" required:"true"`
6550
6551	// The Amazon EC2 security group to be authorized for ingress to the cache security
6552	// group.
6553	//
6554	// EC2SecurityGroupName is a required field
6555	EC2SecurityGroupName *string `type:"string" required:"true"`
6556
6557	// The AWS account number of the Amazon EC2 security group owner. Note that
6558	// this is not the same thing as an AWS access key ID - you must provide a valid
6559	// AWS account number for this parameter.
6560	//
6561	// EC2SecurityGroupOwnerId is a required field
6562	EC2SecurityGroupOwnerId *string `type:"string" required:"true"`
6563}
6564
6565// String returns the string representation
6566func (s AuthorizeCacheSecurityGroupIngressInput) String() string {
6567	return awsutil.Prettify(s)
6568}
6569
6570// GoString returns the string representation
6571func (s AuthorizeCacheSecurityGroupIngressInput) GoString() string {
6572	return s.String()
6573}
6574
6575// Validate inspects the fields of the type to determine if they are valid.
6576func (s *AuthorizeCacheSecurityGroupIngressInput) Validate() error {
6577	invalidParams := request.ErrInvalidParams{Context: "AuthorizeCacheSecurityGroupIngressInput"}
6578	if s.CacheSecurityGroupName == nil {
6579		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
6580	}
6581	if s.EC2SecurityGroupName == nil {
6582		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupName"))
6583	}
6584	if s.EC2SecurityGroupOwnerId == nil {
6585		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupOwnerId"))
6586	}
6587
6588	if invalidParams.Len() > 0 {
6589		return invalidParams
6590	}
6591	return nil
6592}
6593
6594// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
6595func (s *AuthorizeCacheSecurityGroupIngressInput) SetCacheSecurityGroupName(v string) *AuthorizeCacheSecurityGroupIngressInput {
6596	s.CacheSecurityGroupName = &v
6597	return s
6598}
6599
6600// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
6601func (s *AuthorizeCacheSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *AuthorizeCacheSecurityGroupIngressInput {
6602	s.EC2SecurityGroupName = &v
6603	return s
6604}
6605
6606// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
6607func (s *AuthorizeCacheSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *AuthorizeCacheSecurityGroupIngressInput {
6608	s.EC2SecurityGroupOwnerId = &v
6609	return s
6610}
6611
6612type AuthorizeCacheSecurityGroupIngressOutput struct {
6613	_ struct{} `type:"structure"`
6614
6615	// Represents the output of one of the following operations:
6616	//
6617	//    * AuthorizeCacheSecurityGroupIngress
6618	//
6619	//    * CreateCacheSecurityGroup
6620	//
6621	//    * RevokeCacheSecurityGroupIngress
6622	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
6623}
6624
6625// String returns the string representation
6626func (s AuthorizeCacheSecurityGroupIngressOutput) String() string {
6627	return awsutil.Prettify(s)
6628}
6629
6630// GoString returns the string representation
6631func (s AuthorizeCacheSecurityGroupIngressOutput) GoString() string {
6632	return s.String()
6633}
6634
6635// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
6636func (s *AuthorizeCacheSecurityGroupIngressOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *AuthorizeCacheSecurityGroupIngressOutput {
6637	s.CacheSecurityGroup = v
6638	return s
6639}
6640
6641// Describes an Availability Zone in which the cluster is launched.
6642type AvailabilityZone struct {
6643	_ struct{} `type:"structure"`
6644
6645	// The name of the Availability Zone.
6646	Name *string `type:"string"`
6647}
6648
6649// String returns the string representation
6650func (s AvailabilityZone) String() string {
6651	return awsutil.Prettify(s)
6652}
6653
6654// GoString returns the string representation
6655func (s AvailabilityZone) GoString() string {
6656	return s.String()
6657}
6658
6659// SetName sets the Name field's value.
6660func (s *AvailabilityZone) SetName(v string) *AvailabilityZone {
6661	s.Name = &v
6662	return s
6663}
6664
6665type BatchApplyUpdateActionInput struct {
6666	_ struct{} `type:"structure"`
6667
6668	// The cache cluster IDs
6669	CacheClusterIds []*string `type:"list"`
6670
6671	// The replication group IDs
6672	ReplicationGroupIds []*string `type:"list"`
6673
6674	// The unique ID of the service update
6675	//
6676	// ServiceUpdateName is a required field
6677	ServiceUpdateName *string `type:"string" required:"true"`
6678}
6679
6680// String returns the string representation
6681func (s BatchApplyUpdateActionInput) String() string {
6682	return awsutil.Prettify(s)
6683}
6684
6685// GoString returns the string representation
6686func (s BatchApplyUpdateActionInput) GoString() string {
6687	return s.String()
6688}
6689
6690// Validate inspects the fields of the type to determine if they are valid.
6691func (s *BatchApplyUpdateActionInput) Validate() error {
6692	invalidParams := request.ErrInvalidParams{Context: "BatchApplyUpdateActionInput"}
6693	if s.ServiceUpdateName == nil {
6694		invalidParams.Add(request.NewErrParamRequired("ServiceUpdateName"))
6695	}
6696
6697	if invalidParams.Len() > 0 {
6698		return invalidParams
6699	}
6700	return nil
6701}
6702
6703// SetCacheClusterIds sets the CacheClusterIds field's value.
6704func (s *BatchApplyUpdateActionInput) SetCacheClusterIds(v []*string) *BatchApplyUpdateActionInput {
6705	s.CacheClusterIds = v
6706	return s
6707}
6708
6709// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
6710func (s *BatchApplyUpdateActionInput) SetReplicationGroupIds(v []*string) *BatchApplyUpdateActionInput {
6711	s.ReplicationGroupIds = v
6712	return s
6713}
6714
6715// SetServiceUpdateName sets the ServiceUpdateName field's value.
6716func (s *BatchApplyUpdateActionInput) SetServiceUpdateName(v string) *BatchApplyUpdateActionInput {
6717	s.ServiceUpdateName = &v
6718	return s
6719}
6720
6721type BatchApplyUpdateActionOutput struct {
6722	_ struct{} `type:"structure"`
6723
6724	// Update actions that have been processed successfully
6725	ProcessedUpdateActions []*ProcessedUpdateAction `locationNameList:"ProcessedUpdateAction" type:"list"`
6726
6727	// Update actions that haven't been processed successfully
6728	UnprocessedUpdateActions []*UnprocessedUpdateAction `locationNameList:"UnprocessedUpdateAction" type:"list"`
6729}
6730
6731// String returns the string representation
6732func (s BatchApplyUpdateActionOutput) String() string {
6733	return awsutil.Prettify(s)
6734}
6735
6736// GoString returns the string representation
6737func (s BatchApplyUpdateActionOutput) GoString() string {
6738	return s.String()
6739}
6740
6741// SetProcessedUpdateActions sets the ProcessedUpdateActions field's value.
6742func (s *BatchApplyUpdateActionOutput) SetProcessedUpdateActions(v []*ProcessedUpdateAction) *BatchApplyUpdateActionOutput {
6743	s.ProcessedUpdateActions = v
6744	return s
6745}
6746
6747// SetUnprocessedUpdateActions sets the UnprocessedUpdateActions field's value.
6748func (s *BatchApplyUpdateActionOutput) SetUnprocessedUpdateActions(v []*UnprocessedUpdateAction) *BatchApplyUpdateActionOutput {
6749	s.UnprocessedUpdateActions = v
6750	return s
6751}
6752
6753type BatchStopUpdateActionInput struct {
6754	_ struct{} `type:"structure"`
6755
6756	// The cache cluster IDs
6757	CacheClusterIds []*string `type:"list"`
6758
6759	// The replication group IDs
6760	ReplicationGroupIds []*string `type:"list"`
6761
6762	// The unique ID of the service update
6763	//
6764	// ServiceUpdateName is a required field
6765	ServiceUpdateName *string `type:"string" required:"true"`
6766}
6767
6768// String returns the string representation
6769func (s BatchStopUpdateActionInput) String() string {
6770	return awsutil.Prettify(s)
6771}
6772
6773// GoString returns the string representation
6774func (s BatchStopUpdateActionInput) GoString() string {
6775	return s.String()
6776}
6777
6778// Validate inspects the fields of the type to determine if they are valid.
6779func (s *BatchStopUpdateActionInput) Validate() error {
6780	invalidParams := request.ErrInvalidParams{Context: "BatchStopUpdateActionInput"}
6781	if s.ServiceUpdateName == nil {
6782		invalidParams.Add(request.NewErrParamRequired("ServiceUpdateName"))
6783	}
6784
6785	if invalidParams.Len() > 0 {
6786		return invalidParams
6787	}
6788	return nil
6789}
6790
6791// SetCacheClusterIds sets the CacheClusterIds field's value.
6792func (s *BatchStopUpdateActionInput) SetCacheClusterIds(v []*string) *BatchStopUpdateActionInput {
6793	s.CacheClusterIds = v
6794	return s
6795}
6796
6797// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
6798func (s *BatchStopUpdateActionInput) SetReplicationGroupIds(v []*string) *BatchStopUpdateActionInput {
6799	s.ReplicationGroupIds = v
6800	return s
6801}
6802
6803// SetServiceUpdateName sets the ServiceUpdateName field's value.
6804func (s *BatchStopUpdateActionInput) SetServiceUpdateName(v string) *BatchStopUpdateActionInput {
6805	s.ServiceUpdateName = &v
6806	return s
6807}
6808
6809type BatchStopUpdateActionOutput struct {
6810	_ struct{} `type:"structure"`
6811
6812	// Update actions that have been processed successfully
6813	ProcessedUpdateActions []*ProcessedUpdateAction `locationNameList:"ProcessedUpdateAction" type:"list"`
6814
6815	// Update actions that haven't been processed successfully
6816	UnprocessedUpdateActions []*UnprocessedUpdateAction `locationNameList:"UnprocessedUpdateAction" type:"list"`
6817}
6818
6819// String returns the string representation
6820func (s BatchStopUpdateActionOutput) String() string {
6821	return awsutil.Prettify(s)
6822}
6823
6824// GoString returns the string representation
6825func (s BatchStopUpdateActionOutput) GoString() string {
6826	return s.String()
6827}
6828
6829// SetProcessedUpdateActions sets the ProcessedUpdateActions field's value.
6830func (s *BatchStopUpdateActionOutput) SetProcessedUpdateActions(v []*ProcessedUpdateAction) *BatchStopUpdateActionOutput {
6831	s.ProcessedUpdateActions = v
6832	return s
6833}
6834
6835// SetUnprocessedUpdateActions sets the UnprocessedUpdateActions field's value.
6836func (s *BatchStopUpdateActionOutput) SetUnprocessedUpdateActions(v []*UnprocessedUpdateAction) *BatchStopUpdateActionOutput {
6837	s.UnprocessedUpdateActions = v
6838	return s
6839}
6840
6841// Contains all of the attributes of a specific cluster.
6842type CacheCluster struct {
6843	_ struct{} `type:"structure"`
6844
6845	// The ARN (Amazon Resource Name) of the cache cluster.
6846	ARN *string `type:"string"`
6847
6848	// A flag that enables encryption at-rest when set to true.
6849	//
6850	// You cannot modify the value of AtRestEncryptionEnabled after the cluster
6851	// is created. To enable at-rest encryption on a cluster you must set AtRestEncryptionEnabled
6852	// to true when you create a cluster.
6853	//
6854	// Required: Only available when creating a replication group in an Amazon VPC
6855	// using redis version 3.2.6, 4.x or later.
6856	//
6857	// Default: false
6858	AtRestEncryptionEnabled *bool `type:"boolean"`
6859
6860	// A flag that enables using an AuthToken (password) when issuing Redis commands.
6861	//
6862	// Default: false
6863	AuthTokenEnabled *bool `type:"boolean"`
6864
6865	// The date the auth token was last modified
6866	AuthTokenLastModifiedDate *time.Time `type:"timestamp"`
6867
6868	// This parameter is currently disabled.
6869	AutoMinorVersionUpgrade *bool `type:"boolean"`
6870
6871	// The date and time when the cluster was created.
6872	CacheClusterCreateTime *time.Time `type:"timestamp"`
6873
6874	// The user-supplied identifier of the cluster. This identifier is a unique
6875	// key that identifies a cluster.
6876	CacheClusterId *string `type:"string"`
6877
6878	// The current state of this cluster, one of the following values: available,
6879	// creating, deleted, deleting, incompatible-network, modifying, rebooting cluster
6880	// nodes, restore-failed, or snapshotting.
6881	CacheClusterStatus *string `type:"string"`
6882
6883	// The name of the compute and memory capacity node type for the cluster.
6884	//
6885	// The following node types are supported by ElastiCache. Generally speaking,
6886	// the current generation types provide more memory and computational power
6887	// at lower cost when compared to their equivalent previous generation counterparts.
6888	//
6889	//    * General purpose: Current generation: M5 node types: cache.m5.large,
6890	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
6891	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
6892	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
6893	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
6894	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
6895	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
6896	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
6897	//
6898	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
6899	//    cache.c1.xlarge
6900	//
6901	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
6902	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
6903	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
6904	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
6905	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
6906	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
6907	//    cache.r3.8xlarge
6908	//
6909	// Additional node type info
6910	//
6911	//    * All current generation instance types are created in Amazon VPC by default.
6912	//
6913	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
6914	//
6915	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
6916	//
6917	//    * Redis configuration variables appendonly and appendfsync are not supported
6918	//    on Redis version 2.8.22 and later.
6919	CacheNodeType *string `type:"string"`
6920
6921	// A list of cache nodes that are members of the cluster.
6922	CacheNodes []*CacheNode `locationNameList:"CacheNode" type:"list"`
6923
6924	// Status of the cache parameter group.
6925	CacheParameterGroup *CacheParameterGroupStatus `type:"structure"`
6926
6927	// A list of cache security group elements, composed of name and status sub-elements.
6928	CacheSecurityGroups []*CacheSecurityGroupMembership `locationNameList:"CacheSecurityGroup" type:"list"`
6929
6930	// The name of the cache subnet group associated with the cluster.
6931	CacheSubnetGroupName *string `type:"string"`
6932
6933	// The URL of the web page where you can download the latest ElastiCache client
6934	// library.
6935	ClientDownloadLandingPage *string `type:"string"`
6936
6937	// Represents a Memcached cluster endpoint which, if Automatic Discovery is
6938	// enabled on the cluster, can be used by an application to connect to any node
6939	// in the cluster. The configuration endpoint will always have .cfg in it.
6940	//
6941	// Example: mem-3.9dvc4r.cfg.usw2.cache.amazonaws.com:11211
6942	ConfigurationEndpoint *Endpoint `type:"structure"`
6943
6944	// The name of the cache engine (memcached or redis) to be used for this cluster.
6945	Engine *string `type:"string"`
6946
6947	// The version of the cache engine that is used in this cluster.
6948	EngineVersion *string `type:"string"`
6949
6950	// Describes a notification topic and its status. Notification topics are used
6951	// for publishing ElastiCache events to subscribers using Amazon Simple Notification
6952	// Service (SNS).
6953	NotificationConfiguration *NotificationConfiguration `type:"structure"`
6954
6955	// The number of cache nodes in the cluster.
6956	//
6957	// For clusters running Redis, this value must be 1. For clusters running Memcached,
6958	// this value must be between 1 and 20.
6959	NumCacheNodes *int64 `type:"integer"`
6960
6961	// A group of settings that are applied to the cluster in the future, or that
6962	// are currently being applied.
6963	PendingModifiedValues *PendingModifiedValues `type:"structure"`
6964
6965	// The name of the Availability Zone in which the cluster is located or "Multiple"
6966	// if the cache nodes are located in different Availability Zones.
6967	PreferredAvailabilityZone *string `type:"string"`
6968
6969	// Specifies the weekly time range during which maintenance on the cluster is
6970	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
6971	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
6972	//
6973	// Valid values for ddd are:
6974	//
6975	//    * sun
6976	//
6977	//    * mon
6978	//
6979	//    * tue
6980	//
6981	//    * wed
6982	//
6983	//    * thu
6984	//
6985	//    * fri
6986	//
6987	//    * sat
6988	//
6989	// Example: sun:23:00-mon:01:30
6990	PreferredMaintenanceWindow *string `type:"string"`
6991
6992	// The replication group to which this cluster belongs. If this field is empty,
6993	// the cluster is not associated with any replication group.
6994	ReplicationGroupId *string `type:"string"`
6995
6996	// A list of VPC Security Groups associated with the cluster.
6997	SecurityGroups []*SecurityGroupMembership `type:"list"`
6998
6999	// The number of days for which ElastiCache retains automatic cluster snapshots
7000	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
7001	// a snapshot that was taken today is retained for 5 days before being deleted.
7002	//
7003	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
7004	// off.
7005	SnapshotRetentionLimit *int64 `type:"integer"`
7006
7007	// The daily time range (in UTC) during which ElastiCache begins taking a daily
7008	// snapshot of your cluster.
7009	//
7010	// Example: 05:00-09:00
7011	SnapshotWindow *string `type:"string"`
7012
7013	// A flag that enables in-transit encryption when set to true.
7014	//
7015	// You cannot modify the value of TransitEncryptionEnabled after the cluster
7016	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
7017	// to true when you create a cluster.
7018	//
7019	// Required: Only available when creating a replication group in an Amazon VPC
7020	// using redis version 3.2.6, 4.x or later.
7021	//
7022	// Default: false
7023	TransitEncryptionEnabled *bool `type:"boolean"`
7024}
7025
7026// String returns the string representation
7027func (s CacheCluster) String() string {
7028	return awsutil.Prettify(s)
7029}
7030
7031// GoString returns the string representation
7032func (s CacheCluster) GoString() string {
7033	return s.String()
7034}
7035
7036// SetARN sets the ARN field's value.
7037func (s *CacheCluster) SetARN(v string) *CacheCluster {
7038	s.ARN = &v
7039	return s
7040}
7041
7042// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
7043func (s *CacheCluster) SetAtRestEncryptionEnabled(v bool) *CacheCluster {
7044	s.AtRestEncryptionEnabled = &v
7045	return s
7046}
7047
7048// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
7049func (s *CacheCluster) SetAuthTokenEnabled(v bool) *CacheCluster {
7050	s.AuthTokenEnabled = &v
7051	return s
7052}
7053
7054// SetAuthTokenLastModifiedDate sets the AuthTokenLastModifiedDate field's value.
7055func (s *CacheCluster) SetAuthTokenLastModifiedDate(v time.Time) *CacheCluster {
7056	s.AuthTokenLastModifiedDate = &v
7057	return s
7058}
7059
7060// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
7061func (s *CacheCluster) SetAutoMinorVersionUpgrade(v bool) *CacheCluster {
7062	s.AutoMinorVersionUpgrade = &v
7063	return s
7064}
7065
7066// SetCacheClusterCreateTime sets the CacheClusterCreateTime field's value.
7067func (s *CacheCluster) SetCacheClusterCreateTime(v time.Time) *CacheCluster {
7068	s.CacheClusterCreateTime = &v
7069	return s
7070}
7071
7072// SetCacheClusterId sets the CacheClusterId field's value.
7073func (s *CacheCluster) SetCacheClusterId(v string) *CacheCluster {
7074	s.CacheClusterId = &v
7075	return s
7076}
7077
7078// SetCacheClusterStatus sets the CacheClusterStatus field's value.
7079func (s *CacheCluster) SetCacheClusterStatus(v string) *CacheCluster {
7080	s.CacheClusterStatus = &v
7081	return s
7082}
7083
7084// SetCacheNodeType sets the CacheNodeType field's value.
7085func (s *CacheCluster) SetCacheNodeType(v string) *CacheCluster {
7086	s.CacheNodeType = &v
7087	return s
7088}
7089
7090// SetCacheNodes sets the CacheNodes field's value.
7091func (s *CacheCluster) SetCacheNodes(v []*CacheNode) *CacheCluster {
7092	s.CacheNodes = v
7093	return s
7094}
7095
7096// SetCacheParameterGroup sets the CacheParameterGroup field's value.
7097func (s *CacheCluster) SetCacheParameterGroup(v *CacheParameterGroupStatus) *CacheCluster {
7098	s.CacheParameterGroup = v
7099	return s
7100}
7101
7102// SetCacheSecurityGroups sets the CacheSecurityGroups field's value.
7103func (s *CacheCluster) SetCacheSecurityGroups(v []*CacheSecurityGroupMembership) *CacheCluster {
7104	s.CacheSecurityGroups = v
7105	return s
7106}
7107
7108// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
7109func (s *CacheCluster) SetCacheSubnetGroupName(v string) *CacheCluster {
7110	s.CacheSubnetGroupName = &v
7111	return s
7112}
7113
7114// SetClientDownloadLandingPage sets the ClientDownloadLandingPage field's value.
7115func (s *CacheCluster) SetClientDownloadLandingPage(v string) *CacheCluster {
7116	s.ClientDownloadLandingPage = &v
7117	return s
7118}
7119
7120// SetConfigurationEndpoint sets the ConfigurationEndpoint field's value.
7121func (s *CacheCluster) SetConfigurationEndpoint(v *Endpoint) *CacheCluster {
7122	s.ConfigurationEndpoint = v
7123	return s
7124}
7125
7126// SetEngine sets the Engine field's value.
7127func (s *CacheCluster) SetEngine(v string) *CacheCluster {
7128	s.Engine = &v
7129	return s
7130}
7131
7132// SetEngineVersion sets the EngineVersion field's value.
7133func (s *CacheCluster) SetEngineVersion(v string) *CacheCluster {
7134	s.EngineVersion = &v
7135	return s
7136}
7137
7138// SetNotificationConfiguration sets the NotificationConfiguration field's value.
7139func (s *CacheCluster) SetNotificationConfiguration(v *NotificationConfiguration) *CacheCluster {
7140	s.NotificationConfiguration = v
7141	return s
7142}
7143
7144// SetNumCacheNodes sets the NumCacheNodes field's value.
7145func (s *CacheCluster) SetNumCacheNodes(v int64) *CacheCluster {
7146	s.NumCacheNodes = &v
7147	return s
7148}
7149
7150// SetPendingModifiedValues sets the PendingModifiedValues field's value.
7151func (s *CacheCluster) SetPendingModifiedValues(v *PendingModifiedValues) *CacheCluster {
7152	s.PendingModifiedValues = v
7153	return s
7154}
7155
7156// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
7157func (s *CacheCluster) SetPreferredAvailabilityZone(v string) *CacheCluster {
7158	s.PreferredAvailabilityZone = &v
7159	return s
7160}
7161
7162// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
7163func (s *CacheCluster) SetPreferredMaintenanceWindow(v string) *CacheCluster {
7164	s.PreferredMaintenanceWindow = &v
7165	return s
7166}
7167
7168// SetReplicationGroupId sets the ReplicationGroupId field's value.
7169func (s *CacheCluster) SetReplicationGroupId(v string) *CacheCluster {
7170	s.ReplicationGroupId = &v
7171	return s
7172}
7173
7174// SetSecurityGroups sets the SecurityGroups field's value.
7175func (s *CacheCluster) SetSecurityGroups(v []*SecurityGroupMembership) *CacheCluster {
7176	s.SecurityGroups = v
7177	return s
7178}
7179
7180// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
7181func (s *CacheCluster) SetSnapshotRetentionLimit(v int64) *CacheCluster {
7182	s.SnapshotRetentionLimit = &v
7183	return s
7184}
7185
7186// SetSnapshotWindow sets the SnapshotWindow field's value.
7187func (s *CacheCluster) SetSnapshotWindow(v string) *CacheCluster {
7188	s.SnapshotWindow = &v
7189	return s
7190}
7191
7192// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
7193func (s *CacheCluster) SetTransitEncryptionEnabled(v bool) *CacheCluster {
7194	s.TransitEncryptionEnabled = &v
7195	return s
7196}
7197
7198// Provides all of the details about a particular cache engine version.
7199type CacheEngineVersion struct {
7200	_ struct{} `type:"structure"`
7201
7202	// The description of the cache engine.
7203	CacheEngineDescription *string `type:"string"`
7204
7205	// The description of the cache engine version.
7206	CacheEngineVersionDescription *string `type:"string"`
7207
7208	// The name of the cache parameter group family associated with this cache engine.
7209	//
7210	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
7211	// | redis4.0 | redis5.0 |
7212	CacheParameterGroupFamily *string `type:"string"`
7213
7214	// The name of the cache engine.
7215	Engine *string `type:"string"`
7216
7217	// The version number of the cache engine.
7218	EngineVersion *string `type:"string"`
7219}
7220
7221// String returns the string representation
7222func (s CacheEngineVersion) String() string {
7223	return awsutil.Prettify(s)
7224}
7225
7226// GoString returns the string representation
7227func (s CacheEngineVersion) GoString() string {
7228	return s.String()
7229}
7230
7231// SetCacheEngineDescription sets the CacheEngineDescription field's value.
7232func (s *CacheEngineVersion) SetCacheEngineDescription(v string) *CacheEngineVersion {
7233	s.CacheEngineDescription = &v
7234	return s
7235}
7236
7237// SetCacheEngineVersionDescription sets the CacheEngineVersionDescription field's value.
7238func (s *CacheEngineVersion) SetCacheEngineVersionDescription(v string) *CacheEngineVersion {
7239	s.CacheEngineVersionDescription = &v
7240	return s
7241}
7242
7243// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
7244func (s *CacheEngineVersion) SetCacheParameterGroupFamily(v string) *CacheEngineVersion {
7245	s.CacheParameterGroupFamily = &v
7246	return s
7247}
7248
7249// SetEngine sets the Engine field's value.
7250func (s *CacheEngineVersion) SetEngine(v string) *CacheEngineVersion {
7251	s.Engine = &v
7252	return s
7253}
7254
7255// SetEngineVersion sets the EngineVersion field's value.
7256func (s *CacheEngineVersion) SetEngineVersion(v string) *CacheEngineVersion {
7257	s.EngineVersion = &v
7258	return s
7259}
7260
7261// Represents an individual cache node within a cluster. Each cache node runs
7262// its own instance of the cluster's protocol-compliant caching software - either
7263// Memcached or Redis.
7264//
7265// The following node types are supported by ElastiCache. Generally speaking,
7266// the current generation types provide more memory and computational power
7267// at lower cost when compared to their equivalent previous generation counterparts.
7268//
7269//    * General purpose: Current generation: M5 node types: cache.m5.large,
7270//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
7271//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
7272//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
7273//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
7274//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
7275//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
7276//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
7277//
7278//    * Compute optimized: Previous generation: (not recommended) C1 node types:
7279//    cache.c1.xlarge
7280//
7281//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
7282//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
7283//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
7284//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
7285//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
7286//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
7287//    cache.r3.8xlarge
7288//
7289// Additional node type info
7290//
7291//    * All current generation instance types are created in Amazon VPC by default.
7292//
7293//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
7294//
7295//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
7296//
7297//    * Redis configuration variables appendonly and appendfsync are not supported
7298//    on Redis version 2.8.22 and later.
7299type CacheNode struct {
7300	_ struct{} `type:"structure"`
7301
7302	// The date and time when the cache node was created.
7303	CacheNodeCreateTime *time.Time `type:"timestamp"`
7304
7305	// The cache node identifier. A node ID is a numeric identifier (0001, 0002,
7306	// etc.). The combination of cluster ID and node ID uniquely identifies every
7307	// cache node used in a customer's AWS account.
7308	CacheNodeId *string `type:"string"`
7309
7310	// The current state of this cache node, one of the following values: available,
7311	// creating, rebooting, or deleting.
7312	CacheNodeStatus *string `type:"string"`
7313
7314	// The Availability Zone where this node was created and now resides.
7315	CustomerAvailabilityZone *string `type:"string"`
7316
7317	// The hostname for connecting to this cache node.
7318	Endpoint *Endpoint `type:"structure"`
7319
7320	// The status of the parameter group applied to this cache node.
7321	ParameterGroupStatus *string `type:"string"`
7322
7323	// The ID of the primary node to which this read replica node is synchronized.
7324	// If this field is empty, this node is not associated with a primary cluster.
7325	SourceCacheNodeId *string `type:"string"`
7326}
7327
7328// String returns the string representation
7329func (s CacheNode) String() string {
7330	return awsutil.Prettify(s)
7331}
7332
7333// GoString returns the string representation
7334func (s CacheNode) GoString() string {
7335	return s.String()
7336}
7337
7338// SetCacheNodeCreateTime sets the CacheNodeCreateTime field's value.
7339func (s *CacheNode) SetCacheNodeCreateTime(v time.Time) *CacheNode {
7340	s.CacheNodeCreateTime = &v
7341	return s
7342}
7343
7344// SetCacheNodeId sets the CacheNodeId field's value.
7345func (s *CacheNode) SetCacheNodeId(v string) *CacheNode {
7346	s.CacheNodeId = &v
7347	return s
7348}
7349
7350// SetCacheNodeStatus sets the CacheNodeStatus field's value.
7351func (s *CacheNode) SetCacheNodeStatus(v string) *CacheNode {
7352	s.CacheNodeStatus = &v
7353	return s
7354}
7355
7356// SetCustomerAvailabilityZone sets the CustomerAvailabilityZone field's value.
7357func (s *CacheNode) SetCustomerAvailabilityZone(v string) *CacheNode {
7358	s.CustomerAvailabilityZone = &v
7359	return s
7360}
7361
7362// SetEndpoint sets the Endpoint field's value.
7363func (s *CacheNode) SetEndpoint(v *Endpoint) *CacheNode {
7364	s.Endpoint = v
7365	return s
7366}
7367
7368// SetParameterGroupStatus sets the ParameterGroupStatus field's value.
7369func (s *CacheNode) SetParameterGroupStatus(v string) *CacheNode {
7370	s.ParameterGroupStatus = &v
7371	return s
7372}
7373
7374// SetSourceCacheNodeId sets the SourceCacheNodeId field's value.
7375func (s *CacheNode) SetSourceCacheNodeId(v string) *CacheNode {
7376	s.SourceCacheNodeId = &v
7377	return s
7378}
7379
7380// A parameter that has a different value for each cache node type it is applied
7381// to. For example, in a Redis cluster, a cache.m1.large cache node type would
7382// have a larger maxmemory value than a cache.m1.small type.
7383type CacheNodeTypeSpecificParameter struct {
7384	_ struct{} `type:"structure"`
7385
7386	// The valid range of values for the parameter.
7387	AllowedValues *string `type:"string"`
7388
7389	// A list of cache node types and their corresponding values for this parameter.
7390	CacheNodeTypeSpecificValues []*CacheNodeTypeSpecificValue `locationNameList:"CacheNodeTypeSpecificValue" type:"list"`
7391
7392	// Indicates whether a change to the parameter is applied immediately or requires
7393	// a reboot for the change to be applied. You can force a reboot or wait until
7394	// the next maintenance window's reboot. For more information, see Rebooting
7395	// a Cluster (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html).
7396	ChangeType *string `type:"string" enum:"ChangeType"`
7397
7398	// The valid data type for the parameter.
7399	DataType *string `type:"string"`
7400
7401	// A description of the parameter.
7402	Description *string `type:"string"`
7403
7404	// Indicates whether (true) or not (false) the parameter can be modified. Some
7405	// parameters have security or operational implications that prevent them from
7406	// being changed.
7407	IsModifiable *bool `type:"boolean"`
7408
7409	// The earliest cache engine version to which the parameter can apply.
7410	MinimumEngineVersion *string `type:"string"`
7411
7412	// The name of the parameter.
7413	ParameterName *string `type:"string"`
7414
7415	// The source of the parameter value.
7416	Source *string `type:"string"`
7417}
7418
7419// String returns the string representation
7420func (s CacheNodeTypeSpecificParameter) String() string {
7421	return awsutil.Prettify(s)
7422}
7423
7424// GoString returns the string representation
7425func (s CacheNodeTypeSpecificParameter) GoString() string {
7426	return s.String()
7427}
7428
7429// SetAllowedValues sets the AllowedValues field's value.
7430func (s *CacheNodeTypeSpecificParameter) SetAllowedValues(v string) *CacheNodeTypeSpecificParameter {
7431	s.AllowedValues = &v
7432	return s
7433}
7434
7435// SetCacheNodeTypeSpecificValues sets the CacheNodeTypeSpecificValues field's value.
7436func (s *CacheNodeTypeSpecificParameter) SetCacheNodeTypeSpecificValues(v []*CacheNodeTypeSpecificValue) *CacheNodeTypeSpecificParameter {
7437	s.CacheNodeTypeSpecificValues = v
7438	return s
7439}
7440
7441// SetChangeType sets the ChangeType field's value.
7442func (s *CacheNodeTypeSpecificParameter) SetChangeType(v string) *CacheNodeTypeSpecificParameter {
7443	s.ChangeType = &v
7444	return s
7445}
7446
7447// SetDataType sets the DataType field's value.
7448func (s *CacheNodeTypeSpecificParameter) SetDataType(v string) *CacheNodeTypeSpecificParameter {
7449	s.DataType = &v
7450	return s
7451}
7452
7453// SetDescription sets the Description field's value.
7454func (s *CacheNodeTypeSpecificParameter) SetDescription(v string) *CacheNodeTypeSpecificParameter {
7455	s.Description = &v
7456	return s
7457}
7458
7459// SetIsModifiable sets the IsModifiable field's value.
7460func (s *CacheNodeTypeSpecificParameter) SetIsModifiable(v bool) *CacheNodeTypeSpecificParameter {
7461	s.IsModifiable = &v
7462	return s
7463}
7464
7465// SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
7466func (s *CacheNodeTypeSpecificParameter) SetMinimumEngineVersion(v string) *CacheNodeTypeSpecificParameter {
7467	s.MinimumEngineVersion = &v
7468	return s
7469}
7470
7471// SetParameterName sets the ParameterName field's value.
7472func (s *CacheNodeTypeSpecificParameter) SetParameterName(v string) *CacheNodeTypeSpecificParameter {
7473	s.ParameterName = &v
7474	return s
7475}
7476
7477// SetSource sets the Source field's value.
7478func (s *CacheNodeTypeSpecificParameter) SetSource(v string) *CacheNodeTypeSpecificParameter {
7479	s.Source = &v
7480	return s
7481}
7482
7483// A value that applies only to a certain cache node type.
7484type CacheNodeTypeSpecificValue struct {
7485	_ struct{} `type:"structure"`
7486
7487	// The cache node type for which this value applies.
7488	CacheNodeType *string `type:"string"`
7489
7490	// The value for the cache node type.
7491	Value *string `type:"string"`
7492}
7493
7494// String returns the string representation
7495func (s CacheNodeTypeSpecificValue) String() string {
7496	return awsutil.Prettify(s)
7497}
7498
7499// GoString returns the string representation
7500func (s CacheNodeTypeSpecificValue) GoString() string {
7501	return s.String()
7502}
7503
7504// SetCacheNodeType sets the CacheNodeType field's value.
7505func (s *CacheNodeTypeSpecificValue) SetCacheNodeType(v string) *CacheNodeTypeSpecificValue {
7506	s.CacheNodeType = &v
7507	return s
7508}
7509
7510// SetValue sets the Value field's value.
7511func (s *CacheNodeTypeSpecificValue) SetValue(v string) *CacheNodeTypeSpecificValue {
7512	s.Value = &v
7513	return s
7514}
7515
7516// The status of the service update on the cache node
7517type CacheNodeUpdateStatus struct {
7518	_ struct{} `type:"structure"`
7519
7520	// The node ID of the cache cluster
7521	CacheNodeId *string `type:"string"`
7522
7523	// The deletion date of the node
7524	NodeDeletionDate *time.Time `type:"timestamp"`
7525
7526	// The end date of the update for a node
7527	NodeUpdateEndDate *time.Time `type:"timestamp"`
7528
7529	// Reflects whether the update was initiated by the customer or automatically
7530	// applied
7531	NodeUpdateInitiatedBy *string `type:"string" enum:"NodeUpdateInitiatedBy"`
7532
7533	// The date when the update is triggered
7534	NodeUpdateInitiatedDate *time.Time `type:"timestamp"`
7535
7536	// The start date of the update for a node
7537	NodeUpdateStartDate *time.Time `type:"timestamp"`
7538
7539	// The update status of the node
7540	NodeUpdateStatus *string `type:"string" enum:"NodeUpdateStatus"`
7541
7542	// The date when the NodeUpdateStatus was last modified>
7543	NodeUpdateStatusModifiedDate *time.Time `type:"timestamp"`
7544}
7545
7546// String returns the string representation
7547func (s CacheNodeUpdateStatus) String() string {
7548	return awsutil.Prettify(s)
7549}
7550
7551// GoString returns the string representation
7552func (s CacheNodeUpdateStatus) GoString() string {
7553	return s.String()
7554}
7555
7556// SetCacheNodeId sets the CacheNodeId field's value.
7557func (s *CacheNodeUpdateStatus) SetCacheNodeId(v string) *CacheNodeUpdateStatus {
7558	s.CacheNodeId = &v
7559	return s
7560}
7561
7562// SetNodeDeletionDate sets the NodeDeletionDate field's value.
7563func (s *CacheNodeUpdateStatus) SetNodeDeletionDate(v time.Time) *CacheNodeUpdateStatus {
7564	s.NodeDeletionDate = &v
7565	return s
7566}
7567
7568// SetNodeUpdateEndDate sets the NodeUpdateEndDate field's value.
7569func (s *CacheNodeUpdateStatus) SetNodeUpdateEndDate(v time.Time) *CacheNodeUpdateStatus {
7570	s.NodeUpdateEndDate = &v
7571	return s
7572}
7573
7574// SetNodeUpdateInitiatedBy sets the NodeUpdateInitiatedBy field's value.
7575func (s *CacheNodeUpdateStatus) SetNodeUpdateInitiatedBy(v string) *CacheNodeUpdateStatus {
7576	s.NodeUpdateInitiatedBy = &v
7577	return s
7578}
7579
7580// SetNodeUpdateInitiatedDate sets the NodeUpdateInitiatedDate field's value.
7581func (s *CacheNodeUpdateStatus) SetNodeUpdateInitiatedDate(v time.Time) *CacheNodeUpdateStatus {
7582	s.NodeUpdateInitiatedDate = &v
7583	return s
7584}
7585
7586// SetNodeUpdateStartDate sets the NodeUpdateStartDate field's value.
7587func (s *CacheNodeUpdateStatus) SetNodeUpdateStartDate(v time.Time) *CacheNodeUpdateStatus {
7588	s.NodeUpdateStartDate = &v
7589	return s
7590}
7591
7592// SetNodeUpdateStatus sets the NodeUpdateStatus field's value.
7593func (s *CacheNodeUpdateStatus) SetNodeUpdateStatus(v string) *CacheNodeUpdateStatus {
7594	s.NodeUpdateStatus = &v
7595	return s
7596}
7597
7598// SetNodeUpdateStatusModifiedDate sets the NodeUpdateStatusModifiedDate field's value.
7599func (s *CacheNodeUpdateStatus) SetNodeUpdateStatusModifiedDate(v time.Time) *CacheNodeUpdateStatus {
7600	s.NodeUpdateStatusModifiedDate = &v
7601	return s
7602}
7603
7604// Represents the output of a CreateCacheParameterGroup operation.
7605type CacheParameterGroup struct {
7606	_ struct{} `type:"structure"`
7607
7608	// The ARN (Amazon Resource Name) of the cache parameter group.
7609	ARN *string `type:"string"`
7610
7611	// The name of the cache parameter group family that this cache parameter group
7612	// is compatible with.
7613	//
7614	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
7615	// | redis4.0 | redis5.0 |
7616	CacheParameterGroupFamily *string `type:"string"`
7617
7618	// The name of the cache parameter group.
7619	CacheParameterGroupName *string `type:"string"`
7620
7621	// The description for this cache parameter group.
7622	Description *string `type:"string"`
7623
7624	// Indicates whether the parameter group is associated with a Global Datastore
7625	IsGlobal *bool `type:"boolean"`
7626}
7627
7628// String returns the string representation
7629func (s CacheParameterGroup) String() string {
7630	return awsutil.Prettify(s)
7631}
7632
7633// GoString returns the string representation
7634func (s CacheParameterGroup) GoString() string {
7635	return s.String()
7636}
7637
7638// SetARN sets the ARN field's value.
7639func (s *CacheParameterGroup) SetARN(v string) *CacheParameterGroup {
7640	s.ARN = &v
7641	return s
7642}
7643
7644// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
7645func (s *CacheParameterGroup) SetCacheParameterGroupFamily(v string) *CacheParameterGroup {
7646	s.CacheParameterGroupFamily = &v
7647	return s
7648}
7649
7650// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
7651func (s *CacheParameterGroup) SetCacheParameterGroupName(v string) *CacheParameterGroup {
7652	s.CacheParameterGroupName = &v
7653	return s
7654}
7655
7656// SetDescription sets the Description field's value.
7657func (s *CacheParameterGroup) SetDescription(v string) *CacheParameterGroup {
7658	s.Description = &v
7659	return s
7660}
7661
7662// SetIsGlobal sets the IsGlobal field's value.
7663func (s *CacheParameterGroup) SetIsGlobal(v bool) *CacheParameterGroup {
7664	s.IsGlobal = &v
7665	return s
7666}
7667
7668// Represents the output of one of the following operations:
7669//
7670//    * ModifyCacheParameterGroup
7671//
7672//    * ResetCacheParameterGroup
7673type CacheParameterGroupNameMessage struct {
7674	_ struct{} `type:"structure"`
7675
7676	// The name of the cache parameter group.
7677	CacheParameterGroupName *string `type:"string"`
7678}
7679
7680// String returns the string representation
7681func (s CacheParameterGroupNameMessage) String() string {
7682	return awsutil.Prettify(s)
7683}
7684
7685// GoString returns the string representation
7686func (s CacheParameterGroupNameMessage) GoString() string {
7687	return s.String()
7688}
7689
7690// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
7691func (s *CacheParameterGroupNameMessage) SetCacheParameterGroupName(v string) *CacheParameterGroupNameMessage {
7692	s.CacheParameterGroupName = &v
7693	return s
7694}
7695
7696// Status of the cache parameter group.
7697type CacheParameterGroupStatus struct {
7698	_ struct{} `type:"structure"`
7699
7700	// A list of the cache node IDs which need to be rebooted for parameter changes
7701	// to be applied. A node ID is a numeric identifier (0001, 0002, etc.).
7702	CacheNodeIdsToReboot []*string `locationNameList:"CacheNodeId" type:"list"`
7703
7704	// The name of the cache parameter group.
7705	CacheParameterGroupName *string `type:"string"`
7706
7707	// The status of parameter updates.
7708	ParameterApplyStatus *string `type:"string"`
7709}
7710
7711// String returns the string representation
7712func (s CacheParameterGroupStatus) String() string {
7713	return awsutil.Prettify(s)
7714}
7715
7716// GoString returns the string representation
7717func (s CacheParameterGroupStatus) GoString() string {
7718	return s.String()
7719}
7720
7721// SetCacheNodeIdsToReboot sets the CacheNodeIdsToReboot field's value.
7722func (s *CacheParameterGroupStatus) SetCacheNodeIdsToReboot(v []*string) *CacheParameterGroupStatus {
7723	s.CacheNodeIdsToReboot = v
7724	return s
7725}
7726
7727// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
7728func (s *CacheParameterGroupStatus) SetCacheParameterGroupName(v string) *CacheParameterGroupStatus {
7729	s.CacheParameterGroupName = &v
7730	return s
7731}
7732
7733// SetParameterApplyStatus sets the ParameterApplyStatus field's value.
7734func (s *CacheParameterGroupStatus) SetParameterApplyStatus(v string) *CacheParameterGroupStatus {
7735	s.ParameterApplyStatus = &v
7736	return s
7737}
7738
7739// Represents the output of one of the following operations:
7740//
7741//    * AuthorizeCacheSecurityGroupIngress
7742//
7743//    * CreateCacheSecurityGroup
7744//
7745//    * RevokeCacheSecurityGroupIngress
7746type CacheSecurityGroup struct {
7747	_ struct{} `type:"structure"`
7748
7749	// The ARN (Amazon Resource Name) of the cache security group.
7750	ARN *string `type:"string"`
7751
7752	// The name of the cache security group.
7753	CacheSecurityGroupName *string `type:"string"`
7754
7755	// The description of the cache security group.
7756	Description *string `type:"string"`
7757
7758	// A list of Amazon EC2 security groups that are associated with this cache
7759	// security group.
7760	EC2SecurityGroups []*EC2SecurityGroup `locationNameList:"EC2SecurityGroup" type:"list"`
7761
7762	// The AWS account ID of the cache security group owner.
7763	OwnerId *string `type:"string"`
7764}
7765
7766// String returns the string representation
7767func (s CacheSecurityGroup) String() string {
7768	return awsutil.Prettify(s)
7769}
7770
7771// GoString returns the string representation
7772func (s CacheSecurityGroup) GoString() string {
7773	return s.String()
7774}
7775
7776// SetARN sets the ARN field's value.
7777func (s *CacheSecurityGroup) SetARN(v string) *CacheSecurityGroup {
7778	s.ARN = &v
7779	return s
7780}
7781
7782// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
7783func (s *CacheSecurityGroup) SetCacheSecurityGroupName(v string) *CacheSecurityGroup {
7784	s.CacheSecurityGroupName = &v
7785	return s
7786}
7787
7788// SetDescription sets the Description field's value.
7789func (s *CacheSecurityGroup) SetDescription(v string) *CacheSecurityGroup {
7790	s.Description = &v
7791	return s
7792}
7793
7794// SetEC2SecurityGroups sets the EC2SecurityGroups field's value.
7795func (s *CacheSecurityGroup) SetEC2SecurityGroups(v []*EC2SecurityGroup) *CacheSecurityGroup {
7796	s.EC2SecurityGroups = v
7797	return s
7798}
7799
7800// SetOwnerId sets the OwnerId field's value.
7801func (s *CacheSecurityGroup) SetOwnerId(v string) *CacheSecurityGroup {
7802	s.OwnerId = &v
7803	return s
7804}
7805
7806// Represents a cluster's status within a particular cache security group.
7807type CacheSecurityGroupMembership struct {
7808	_ struct{} `type:"structure"`
7809
7810	// The name of the cache security group.
7811	CacheSecurityGroupName *string `type:"string"`
7812
7813	// The membership status in the cache security group. The status changes when
7814	// a cache security group is modified, or when the cache security groups assigned
7815	// to a cluster are modified.
7816	Status *string `type:"string"`
7817}
7818
7819// String returns the string representation
7820func (s CacheSecurityGroupMembership) String() string {
7821	return awsutil.Prettify(s)
7822}
7823
7824// GoString returns the string representation
7825func (s CacheSecurityGroupMembership) GoString() string {
7826	return s.String()
7827}
7828
7829// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
7830func (s *CacheSecurityGroupMembership) SetCacheSecurityGroupName(v string) *CacheSecurityGroupMembership {
7831	s.CacheSecurityGroupName = &v
7832	return s
7833}
7834
7835// SetStatus sets the Status field's value.
7836func (s *CacheSecurityGroupMembership) SetStatus(v string) *CacheSecurityGroupMembership {
7837	s.Status = &v
7838	return s
7839}
7840
7841// Represents the output of one of the following operations:
7842//
7843//    * CreateCacheSubnetGroup
7844//
7845//    * ModifyCacheSubnetGroup
7846type CacheSubnetGroup struct {
7847	_ struct{} `type:"structure"`
7848
7849	// The ARN (Amazon Resource Name) of the cache subnet group.
7850	ARN *string `type:"string"`
7851
7852	// The description of the cache subnet group.
7853	CacheSubnetGroupDescription *string `type:"string"`
7854
7855	// The name of the cache subnet group.
7856	CacheSubnetGroupName *string `type:"string"`
7857
7858	// A list of subnets associated with the cache subnet group.
7859	Subnets []*Subnet `locationNameList:"Subnet" type:"list"`
7860
7861	// The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet
7862	// group.
7863	VpcId *string `type:"string"`
7864}
7865
7866// String returns the string representation
7867func (s CacheSubnetGroup) String() string {
7868	return awsutil.Prettify(s)
7869}
7870
7871// GoString returns the string representation
7872func (s CacheSubnetGroup) GoString() string {
7873	return s.String()
7874}
7875
7876// SetARN sets the ARN field's value.
7877func (s *CacheSubnetGroup) SetARN(v string) *CacheSubnetGroup {
7878	s.ARN = &v
7879	return s
7880}
7881
7882// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
7883func (s *CacheSubnetGroup) SetCacheSubnetGroupDescription(v string) *CacheSubnetGroup {
7884	s.CacheSubnetGroupDescription = &v
7885	return s
7886}
7887
7888// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
7889func (s *CacheSubnetGroup) SetCacheSubnetGroupName(v string) *CacheSubnetGroup {
7890	s.CacheSubnetGroupName = &v
7891	return s
7892}
7893
7894// SetSubnets sets the Subnets field's value.
7895func (s *CacheSubnetGroup) SetSubnets(v []*Subnet) *CacheSubnetGroup {
7896	s.Subnets = v
7897	return s
7898}
7899
7900// SetVpcId sets the VpcId field's value.
7901func (s *CacheSubnetGroup) SetVpcId(v string) *CacheSubnetGroup {
7902	s.VpcId = &v
7903	return s
7904}
7905
7906type CompleteMigrationInput struct {
7907	_ struct{} `type:"structure"`
7908
7909	// Forces the migration to stop without ensuring that data is in sync. It is
7910	// recommended to use this option only to abort the migration and not recommended
7911	// when application wants to continue migration to ElastiCache.
7912	Force *bool `type:"boolean"`
7913
7914	// The ID of the replication group to which data is being migrated.
7915	//
7916	// ReplicationGroupId is a required field
7917	ReplicationGroupId *string `type:"string" required:"true"`
7918}
7919
7920// String returns the string representation
7921func (s CompleteMigrationInput) String() string {
7922	return awsutil.Prettify(s)
7923}
7924
7925// GoString returns the string representation
7926func (s CompleteMigrationInput) GoString() string {
7927	return s.String()
7928}
7929
7930// Validate inspects the fields of the type to determine if they are valid.
7931func (s *CompleteMigrationInput) Validate() error {
7932	invalidParams := request.ErrInvalidParams{Context: "CompleteMigrationInput"}
7933	if s.ReplicationGroupId == nil {
7934		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
7935	}
7936
7937	if invalidParams.Len() > 0 {
7938		return invalidParams
7939	}
7940	return nil
7941}
7942
7943// SetForce sets the Force field's value.
7944func (s *CompleteMigrationInput) SetForce(v bool) *CompleteMigrationInput {
7945	s.Force = &v
7946	return s
7947}
7948
7949// SetReplicationGroupId sets the ReplicationGroupId field's value.
7950func (s *CompleteMigrationInput) SetReplicationGroupId(v string) *CompleteMigrationInput {
7951	s.ReplicationGroupId = &v
7952	return s
7953}
7954
7955type CompleteMigrationOutput struct {
7956	_ struct{} `type:"structure"`
7957
7958	// Contains all of the attributes of a specific Redis replication group.
7959	ReplicationGroup *ReplicationGroup `type:"structure"`
7960}
7961
7962// String returns the string representation
7963func (s CompleteMigrationOutput) String() string {
7964	return awsutil.Prettify(s)
7965}
7966
7967// GoString returns the string representation
7968func (s CompleteMigrationOutput) GoString() string {
7969	return s.String()
7970}
7971
7972// SetReplicationGroup sets the ReplicationGroup field's value.
7973func (s *CompleteMigrationOutput) SetReplicationGroup(v *ReplicationGroup) *CompleteMigrationOutput {
7974	s.ReplicationGroup = v
7975	return s
7976}
7977
7978// Node group (shard) configuration options when adding or removing replicas.
7979// Each node group (shard) configuration has the following members: NodeGroupId,
7980// NewReplicaCount, and PreferredAvailabilityZones.
7981type ConfigureShard struct {
7982	_ struct{} `type:"structure"`
7983
7984	// The number of replicas you want in this node group at the end of this operation.
7985	// The maximum value for NewReplicaCount is 5. The minimum value depends upon
7986	// the type of Redis replication group you are working with.
7987	//
7988	// The minimum number of replicas in a shard or replication group is:
7989	//
7990	//    * Redis (cluster mode disabled) If Multi-AZ with Automatic Failover is
7991	//    enabled: 1 If Multi-AZ with Automatic Failover is not enable: 0
7992	//
7993	//    * Redis (cluster mode enabled): 0 (though you will not be able to failover
7994	//    to a replica if your primary node fails)
7995	//
7996	// NewReplicaCount is a required field
7997	NewReplicaCount *int64 `type:"integer" required:"true"`
7998
7999	// The 4-digit id for the node group you are configuring. For Redis (cluster
8000	// mode disabled) replication groups, the node group id is always 0001. To find
8001	// a Redis (cluster mode enabled)'s node group's (shard's) id, see Finding a
8002	// Shard's Id (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/shard-find-id.html).
8003	//
8004	// NodeGroupId is a required field
8005	NodeGroupId *string `min:"1" type:"string" required:"true"`
8006
8007	// A list of PreferredAvailabilityZone strings that specify which availability
8008	// zones the replication group's nodes are to be in. The nummber of PreferredAvailabilityZone
8009	// values must equal the value of NewReplicaCount plus 1 to account for the
8010	// primary node. If this member of ReplicaConfiguration is omitted, ElastiCache
8011	// for Redis selects the availability zone for each of the replicas.
8012	PreferredAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
8013}
8014
8015// String returns the string representation
8016func (s ConfigureShard) String() string {
8017	return awsutil.Prettify(s)
8018}
8019
8020// GoString returns the string representation
8021func (s ConfigureShard) GoString() string {
8022	return s.String()
8023}
8024
8025// Validate inspects the fields of the type to determine if they are valid.
8026func (s *ConfigureShard) Validate() error {
8027	invalidParams := request.ErrInvalidParams{Context: "ConfigureShard"}
8028	if s.NewReplicaCount == nil {
8029		invalidParams.Add(request.NewErrParamRequired("NewReplicaCount"))
8030	}
8031	if s.NodeGroupId == nil {
8032		invalidParams.Add(request.NewErrParamRequired("NodeGroupId"))
8033	}
8034	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
8035		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
8036	}
8037
8038	if invalidParams.Len() > 0 {
8039		return invalidParams
8040	}
8041	return nil
8042}
8043
8044// SetNewReplicaCount sets the NewReplicaCount field's value.
8045func (s *ConfigureShard) SetNewReplicaCount(v int64) *ConfigureShard {
8046	s.NewReplicaCount = &v
8047	return s
8048}
8049
8050// SetNodeGroupId sets the NodeGroupId field's value.
8051func (s *ConfigureShard) SetNodeGroupId(v string) *ConfigureShard {
8052	s.NodeGroupId = &v
8053	return s
8054}
8055
8056// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
8057func (s *ConfigureShard) SetPreferredAvailabilityZones(v []*string) *ConfigureShard {
8058	s.PreferredAvailabilityZones = v
8059	return s
8060}
8061
8062// Represents the input of a CopySnapshotMessage operation.
8063type CopySnapshotInput struct {
8064	_ struct{} `type:"structure"`
8065
8066	// The ID of the KMS key used to encrypt the target snapshot.
8067	KmsKeyId *string `type:"string"`
8068
8069	// The name of an existing snapshot from which to make a copy.
8070	//
8071	// SourceSnapshotName is a required field
8072	SourceSnapshotName *string `type:"string" required:"true"`
8073
8074	// The Amazon S3 bucket to which the snapshot is exported. This parameter is
8075	// used only when exporting a snapshot for external access.
8076	//
8077	// When using this parameter to export a snapshot, be sure Amazon ElastiCache
8078	// has the needed permissions to this S3 bucket. For more information, see Step
8079	// 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)
8080	// in the Amazon ElastiCache User Guide.
8081	//
8082	// For more information, see Exporting a Snapshot (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Snapshots.Exporting.html)
8083	// in the Amazon ElastiCache User Guide.
8084	TargetBucket *string `type:"string"`
8085
8086	// A name for the snapshot copy. ElastiCache does not permit overwriting a snapshot,
8087	// therefore this name must be unique within its context - ElastiCache or an
8088	// Amazon S3 bucket if exporting.
8089	//
8090	// TargetSnapshotName is a required field
8091	TargetSnapshotName *string `type:"string" required:"true"`
8092}
8093
8094// String returns the string representation
8095func (s CopySnapshotInput) String() string {
8096	return awsutil.Prettify(s)
8097}
8098
8099// GoString returns the string representation
8100func (s CopySnapshotInput) GoString() string {
8101	return s.String()
8102}
8103
8104// Validate inspects the fields of the type to determine if they are valid.
8105func (s *CopySnapshotInput) Validate() error {
8106	invalidParams := request.ErrInvalidParams{Context: "CopySnapshotInput"}
8107	if s.SourceSnapshotName == nil {
8108		invalidParams.Add(request.NewErrParamRequired("SourceSnapshotName"))
8109	}
8110	if s.TargetSnapshotName == nil {
8111		invalidParams.Add(request.NewErrParamRequired("TargetSnapshotName"))
8112	}
8113
8114	if invalidParams.Len() > 0 {
8115		return invalidParams
8116	}
8117	return nil
8118}
8119
8120// SetKmsKeyId sets the KmsKeyId field's value.
8121func (s *CopySnapshotInput) SetKmsKeyId(v string) *CopySnapshotInput {
8122	s.KmsKeyId = &v
8123	return s
8124}
8125
8126// SetSourceSnapshotName sets the SourceSnapshotName field's value.
8127func (s *CopySnapshotInput) SetSourceSnapshotName(v string) *CopySnapshotInput {
8128	s.SourceSnapshotName = &v
8129	return s
8130}
8131
8132// SetTargetBucket sets the TargetBucket field's value.
8133func (s *CopySnapshotInput) SetTargetBucket(v string) *CopySnapshotInput {
8134	s.TargetBucket = &v
8135	return s
8136}
8137
8138// SetTargetSnapshotName sets the TargetSnapshotName field's value.
8139func (s *CopySnapshotInput) SetTargetSnapshotName(v string) *CopySnapshotInput {
8140	s.TargetSnapshotName = &v
8141	return s
8142}
8143
8144type CopySnapshotOutput struct {
8145	_ struct{} `type:"structure"`
8146
8147	// Represents a copy of an entire Redis cluster as of the time when the snapshot
8148	// was taken.
8149	Snapshot *Snapshot `type:"structure"`
8150}
8151
8152// String returns the string representation
8153func (s CopySnapshotOutput) String() string {
8154	return awsutil.Prettify(s)
8155}
8156
8157// GoString returns the string representation
8158func (s CopySnapshotOutput) GoString() string {
8159	return s.String()
8160}
8161
8162// SetSnapshot sets the Snapshot field's value.
8163func (s *CopySnapshotOutput) SetSnapshot(v *Snapshot) *CopySnapshotOutput {
8164	s.Snapshot = v
8165	return s
8166}
8167
8168// Represents the input of a CreateCacheCluster operation.
8169type CreateCacheClusterInput struct {
8170	_ struct{} `type:"structure"`
8171
8172	// Specifies whether the nodes in this Memcached cluster are created in a single
8173	// Availability Zone or created across multiple Availability Zones in the cluster's
8174	// region.
8175	//
8176	// This parameter is only supported for Memcached clusters.
8177	//
8178	// If the AZMode and PreferredAvailabilityZones are not specified, ElastiCache
8179	// assumes single-az mode.
8180	AZMode *string `type:"string" enum:"AZMode"`
8181
8182	// Reserved parameter. The password used to access a password protected server.
8183	//
8184	// Password constraints:
8185	//
8186	//    * Must be only printable ASCII characters.
8187	//
8188	//    * Must be at least 16 characters and no more than 128 characters in length.
8189	//
8190	//    * The only permitted printable special characters are !, &, #, $, ^, <,
8191	//    >, and -. Other printable special characters cannot be used in the AUTH
8192	//    token.
8193	//
8194	// For more information, see AUTH password (http://redis.io/commands/AUTH) at
8195	// http://redis.io/commands/AUTH.
8196	AuthToken *string `type:"string"`
8197
8198	// This parameter is currently disabled.
8199	AutoMinorVersionUpgrade *bool `type:"boolean"`
8200
8201	// The node group (shard) identifier. This parameter is stored as a lowercase
8202	// string.
8203	//
8204	// Constraints:
8205	//
8206	//    * A name must contain from 1 to 50 alphanumeric characters or hyphens.
8207	//
8208	//    * The first character must be a letter.
8209	//
8210	//    * A name cannot end with a hyphen or contain two consecutive hyphens.
8211	//
8212	// CacheClusterId is a required field
8213	CacheClusterId *string `type:"string" required:"true"`
8214
8215	// The compute and memory capacity of the nodes in the node group (shard).
8216	//
8217	// The following node types are supported by ElastiCache. Generally speaking,
8218	// the current generation types provide more memory and computational power
8219	// at lower cost when compared to their equivalent previous generation counterparts.
8220	//
8221	//    * General purpose: Current generation: M5 node types: cache.m5.large,
8222	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
8223	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
8224	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
8225	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
8226	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
8227	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
8228	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
8229	//
8230	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
8231	//    cache.c1.xlarge
8232	//
8233	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
8234	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
8235	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
8236	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
8237	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
8238	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
8239	//    cache.r3.8xlarge
8240	//
8241	// Additional node type info
8242	//
8243	//    * All current generation instance types are created in Amazon VPC by default.
8244	//
8245	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
8246	//
8247	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
8248	//
8249	//    * Redis configuration variables appendonly and appendfsync are not supported
8250	//    on Redis version 2.8.22 and later.
8251	CacheNodeType *string `type:"string"`
8252
8253	// The name of the parameter group to associate with this cluster. If this argument
8254	// is omitted, the default parameter group for the specified engine is used.
8255	// You cannot use any parameter group which has cluster-enabled='yes' when creating
8256	// a cluster.
8257	CacheParameterGroupName *string `type:"string"`
8258
8259	// A list of security group names to associate with this cluster.
8260	//
8261	// Use this parameter only when you are creating a cluster outside of an Amazon
8262	// Virtual Private Cloud (Amazon VPC).
8263	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
8264
8265	// The name of the subnet group to be used for the cluster.
8266	//
8267	// Use this parameter only when you are creating a cluster in an Amazon Virtual
8268	// Private Cloud (Amazon VPC).
8269	//
8270	// If you're going to launch your cluster in an Amazon VPC, you need to create
8271	// a subnet group before you start creating a cluster. For more information,
8272	// see Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.html).
8273	CacheSubnetGroupName *string `type:"string"`
8274
8275	// The name of the cache engine to be used for this cluster.
8276	//
8277	// Valid values for this parameter are: memcached | redis
8278	Engine *string `type:"string"`
8279
8280	// The version number of the cache engine to be used for this cluster. To view
8281	// the supported cache engine versions, use the DescribeCacheEngineVersions
8282	// operation.
8283	//
8284	// Important: You can upgrade to a newer engine version (see Selecting a Cache
8285	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
8286	// but you cannot downgrade to an earlier engine version. If you want to use
8287	// an earlier engine version, you must delete the existing cluster or replication
8288	// group and create it anew with the earlier engine version.
8289	EngineVersion *string `type:"string"`
8290
8291	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
8292	// (SNS) topic to which notifications are sent.
8293	//
8294	// The Amazon SNS topic owner must be the same as the cluster owner.
8295	NotificationTopicArn *string `type:"string"`
8296
8297	// The initial number of cache nodes that the cluster has.
8298	//
8299	// For clusters running Redis, this value must be 1. For clusters running Memcached,
8300	// this value must be between 1 and 20.
8301	//
8302	// If you need more than 20 nodes for your Memcached cluster, please fill out
8303	// the ElastiCache Limit Increase Request form at http://aws.amazon.com/contact-us/elasticache-node-limit-request/
8304	// (http://aws.amazon.com/contact-us/elasticache-node-limit-request/).
8305	NumCacheNodes *int64 `type:"integer"`
8306
8307	// The port number on which each of the cache nodes accepts connections.
8308	Port *int64 `type:"integer"`
8309
8310	// The EC2 Availability Zone in which the cluster is created.
8311	//
8312	// All nodes belonging to this Memcached cluster are placed in the preferred
8313	// Availability Zone. If you want to create your nodes across multiple Availability
8314	// Zones, use PreferredAvailabilityZones.
8315	//
8316	// Default: System chosen Availability Zone.
8317	PreferredAvailabilityZone *string `type:"string"`
8318
8319	// A list of the Availability Zones in which cache nodes are created. The order
8320	// of the zones in the list is not important.
8321	//
8322	// This option is only supported on Memcached.
8323	//
8324	// If you are creating your cluster in an Amazon VPC (recommended) you can only
8325	// locate nodes in Availability Zones that are associated with the subnets in
8326	// the selected subnet group.
8327	//
8328	// The number of Availability Zones listed must equal the value of NumCacheNodes.
8329	//
8330	// If you want all the nodes in the same Availability Zone, use PreferredAvailabilityZone
8331	// instead, or repeat the Availability Zone multiple times in the list.
8332	//
8333	// Default: System chosen Availability Zones.
8334	PreferredAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
8335
8336	// Specifies the weekly time range during which maintenance on the cluster is
8337	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
8338	// (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid
8339	// values for ddd are:
8340	//
8341	// Specifies the weekly time range during which maintenance on the cluster is
8342	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
8343	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
8344	//
8345	// Valid values for ddd are:
8346	//
8347	//    * sun
8348	//
8349	//    * mon
8350	//
8351	//    * tue
8352	//
8353	//    * wed
8354	//
8355	//    * thu
8356	//
8357	//    * fri
8358	//
8359	//    * sat
8360	//
8361	// Example: sun:23:00-mon:01:30
8362	PreferredMaintenanceWindow *string `type:"string"`
8363
8364	// The ID of the replication group to which this cluster should belong. If this
8365	// parameter is specified, the cluster is added to the specified replication
8366	// group as a read replica; otherwise, the cluster is a standalone primary that
8367	// is not part of any replication group.
8368	//
8369	// If the specified replication group is Multi-AZ enabled and the Availability
8370	// Zone is not specified, the cluster is created in Availability Zones that
8371	// provide the best spread of read replicas across Availability Zones.
8372	//
8373	// This parameter is only valid if the Engine parameter is redis.
8374	ReplicationGroupId *string `type:"string"`
8375
8376	// One or more VPC security groups associated with the cluster.
8377	//
8378	// Use this parameter only when you are creating a cluster in an Amazon Virtual
8379	// Private Cloud (Amazon VPC).
8380	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
8381
8382	// A single-element string list containing an Amazon Resource Name (ARN) that
8383	// uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot
8384	// file is used to populate the node group (shard). The Amazon S3 object name
8385	// in the ARN cannot contain any commas.
8386	//
8387	// This parameter is only valid if the Engine parameter is redis.
8388	//
8389	// Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
8390	SnapshotArns []*string `locationNameList:"SnapshotArn" type:"list"`
8391
8392	// The name of a Redis snapshot from which to restore data into the new node
8393	// group (shard). The snapshot status changes to restoring while the new node
8394	// group (shard) is being created.
8395	//
8396	// This parameter is only valid if the Engine parameter is redis.
8397	SnapshotName *string `type:"string"`
8398
8399	// The number of days for which ElastiCache retains automatic snapshots before
8400	// deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot
8401	// taken today is retained for 5 days before being deleted.
8402	//
8403	// This parameter is only valid if the Engine parameter is redis.
8404	//
8405	// Default: 0 (i.e., automatic backups are disabled for this cache cluster).
8406	SnapshotRetentionLimit *int64 `type:"integer"`
8407
8408	// The daily time range (in UTC) during which ElastiCache begins taking a daily
8409	// snapshot of your node group (shard).
8410	//
8411	// Example: 05:00-09:00
8412	//
8413	// If you do not specify this parameter, ElastiCache automatically chooses an
8414	// appropriate time range.
8415	//
8416	// This parameter is only valid if the Engine parameter is redis.
8417	SnapshotWindow *string `type:"string"`
8418
8419	// A list of cost allocation tags to be added to this resource.
8420	Tags []*Tag `locationNameList:"Tag" type:"list"`
8421}
8422
8423// String returns the string representation
8424func (s CreateCacheClusterInput) String() string {
8425	return awsutil.Prettify(s)
8426}
8427
8428// GoString returns the string representation
8429func (s CreateCacheClusterInput) GoString() string {
8430	return s.String()
8431}
8432
8433// Validate inspects the fields of the type to determine if they are valid.
8434func (s *CreateCacheClusterInput) Validate() error {
8435	invalidParams := request.ErrInvalidParams{Context: "CreateCacheClusterInput"}
8436	if s.CacheClusterId == nil {
8437		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
8438	}
8439
8440	if invalidParams.Len() > 0 {
8441		return invalidParams
8442	}
8443	return nil
8444}
8445
8446// SetAZMode sets the AZMode field's value.
8447func (s *CreateCacheClusterInput) SetAZMode(v string) *CreateCacheClusterInput {
8448	s.AZMode = &v
8449	return s
8450}
8451
8452// SetAuthToken sets the AuthToken field's value.
8453func (s *CreateCacheClusterInput) SetAuthToken(v string) *CreateCacheClusterInput {
8454	s.AuthToken = &v
8455	return s
8456}
8457
8458// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
8459func (s *CreateCacheClusterInput) SetAutoMinorVersionUpgrade(v bool) *CreateCacheClusterInput {
8460	s.AutoMinorVersionUpgrade = &v
8461	return s
8462}
8463
8464// SetCacheClusterId sets the CacheClusterId field's value.
8465func (s *CreateCacheClusterInput) SetCacheClusterId(v string) *CreateCacheClusterInput {
8466	s.CacheClusterId = &v
8467	return s
8468}
8469
8470// SetCacheNodeType sets the CacheNodeType field's value.
8471func (s *CreateCacheClusterInput) SetCacheNodeType(v string) *CreateCacheClusterInput {
8472	s.CacheNodeType = &v
8473	return s
8474}
8475
8476// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
8477func (s *CreateCacheClusterInput) SetCacheParameterGroupName(v string) *CreateCacheClusterInput {
8478	s.CacheParameterGroupName = &v
8479	return s
8480}
8481
8482// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
8483func (s *CreateCacheClusterInput) SetCacheSecurityGroupNames(v []*string) *CreateCacheClusterInput {
8484	s.CacheSecurityGroupNames = v
8485	return s
8486}
8487
8488// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
8489func (s *CreateCacheClusterInput) SetCacheSubnetGroupName(v string) *CreateCacheClusterInput {
8490	s.CacheSubnetGroupName = &v
8491	return s
8492}
8493
8494// SetEngine sets the Engine field's value.
8495func (s *CreateCacheClusterInput) SetEngine(v string) *CreateCacheClusterInput {
8496	s.Engine = &v
8497	return s
8498}
8499
8500// SetEngineVersion sets the EngineVersion field's value.
8501func (s *CreateCacheClusterInput) SetEngineVersion(v string) *CreateCacheClusterInput {
8502	s.EngineVersion = &v
8503	return s
8504}
8505
8506// SetNotificationTopicArn sets the NotificationTopicArn field's value.
8507func (s *CreateCacheClusterInput) SetNotificationTopicArn(v string) *CreateCacheClusterInput {
8508	s.NotificationTopicArn = &v
8509	return s
8510}
8511
8512// SetNumCacheNodes sets the NumCacheNodes field's value.
8513func (s *CreateCacheClusterInput) SetNumCacheNodes(v int64) *CreateCacheClusterInput {
8514	s.NumCacheNodes = &v
8515	return s
8516}
8517
8518// SetPort sets the Port field's value.
8519func (s *CreateCacheClusterInput) SetPort(v int64) *CreateCacheClusterInput {
8520	s.Port = &v
8521	return s
8522}
8523
8524// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
8525func (s *CreateCacheClusterInput) SetPreferredAvailabilityZone(v string) *CreateCacheClusterInput {
8526	s.PreferredAvailabilityZone = &v
8527	return s
8528}
8529
8530// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
8531func (s *CreateCacheClusterInput) SetPreferredAvailabilityZones(v []*string) *CreateCacheClusterInput {
8532	s.PreferredAvailabilityZones = v
8533	return s
8534}
8535
8536// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
8537func (s *CreateCacheClusterInput) SetPreferredMaintenanceWindow(v string) *CreateCacheClusterInput {
8538	s.PreferredMaintenanceWindow = &v
8539	return s
8540}
8541
8542// SetReplicationGroupId sets the ReplicationGroupId field's value.
8543func (s *CreateCacheClusterInput) SetReplicationGroupId(v string) *CreateCacheClusterInput {
8544	s.ReplicationGroupId = &v
8545	return s
8546}
8547
8548// SetSecurityGroupIds sets the SecurityGroupIds field's value.
8549func (s *CreateCacheClusterInput) SetSecurityGroupIds(v []*string) *CreateCacheClusterInput {
8550	s.SecurityGroupIds = v
8551	return s
8552}
8553
8554// SetSnapshotArns sets the SnapshotArns field's value.
8555func (s *CreateCacheClusterInput) SetSnapshotArns(v []*string) *CreateCacheClusterInput {
8556	s.SnapshotArns = v
8557	return s
8558}
8559
8560// SetSnapshotName sets the SnapshotName field's value.
8561func (s *CreateCacheClusterInput) SetSnapshotName(v string) *CreateCacheClusterInput {
8562	s.SnapshotName = &v
8563	return s
8564}
8565
8566// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
8567func (s *CreateCacheClusterInput) SetSnapshotRetentionLimit(v int64) *CreateCacheClusterInput {
8568	s.SnapshotRetentionLimit = &v
8569	return s
8570}
8571
8572// SetSnapshotWindow sets the SnapshotWindow field's value.
8573func (s *CreateCacheClusterInput) SetSnapshotWindow(v string) *CreateCacheClusterInput {
8574	s.SnapshotWindow = &v
8575	return s
8576}
8577
8578// SetTags sets the Tags field's value.
8579func (s *CreateCacheClusterInput) SetTags(v []*Tag) *CreateCacheClusterInput {
8580	s.Tags = v
8581	return s
8582}
8583
8584type CreateCacheClusterOutput struct {
8585	_ struct{} `type:"structure"`
8586
8587	// Contains all of the attributes of a specific cluster.
8588	CacheCluster *CacheCluster `type:"structure"`
8589}
8590
8591// String returns the string representation
8592func (s CreateCacheClusterOutput) String() string {
8593	return awsutil.Prettify(s)
8594}
8595
8596// GoString returns the string representation
8597func (s CreateCacheClusterOutput) GoString() string {
8598	return s.String()
8599}
8600
8601// SetCacheCluster sets the CacheCluster field's value.
8602func (s *CreateCacheClusterOutput) SetCacheCluster(v *CacheCluster) *CreateCacheClusterOutput {
8603	s.CacheCluster = v
8604	return s
8605}
8606
8607// Represents the input of a CreateCacheParameterGroup operation.
8608type CreateCacheParameterGroupInput struct {
8609	_ struct{} `type:"structure"`
8610
8611	// The name of the cache parameter group family that the cache parameter group
8612	// can be used with.
8613	//
8614	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
8615	// | redis4.0 | redis5.0 |
8616	//
8617	// CacheParameterGroupFamily is a required field
8618	CacheParameterGroupFamily *string `type:"string" required:"true"`
8619
8620	// A user-specified name for the cache parameter group.
8621	//
8622	// CacheParameterGroupName is a required field
8623	CacheParameterGroupName *string `type:"string" required:"true"`
8624
8625	// A user-specified description for the cache parameter group.
8626	//
8627	// Description is a required field
8628	Description *string `type:"string" required:"true"`
8629}
8630
8631// String returns the string representation
8632func (s CreateCacheParameterGroupInput) String() string {
8633	return awsutil.Prettify(s)
8634}
8635
8636// GoString returns the string representation
8637func (s CreateCacheParameterGroupInput) GoString() string {
8638	return s.String()
8639}
8640
8641// Validate inspects the fields of the type to determine if they are valid.
8642func (s *CreateCacheParameterGroupInput) Validate() error {
8643	invalidParams := request.ErrInvalidParams{Context: "CreateCacheParameterGroupInput"}
8644	if s.CacheParameterGroupFamily == nil {
8645		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupFamily"))
8646	}
8647	if s.CacheParameterGroupName == nil {
8648		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
8649	}
8650	if s.Description == nil {
8651		invalidParams.Add(request.NewErrParamRequired("Description"))
8652	}
8653
8654	if invalidParams.Len() > 0 {
8655		return invalidParams
8656	}
8657	return nil
8658}
8659
8660// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
8661func (s *CreateCacheParameterGroupInput) SetCacheParameterGroupFamily(v string) *CreateCacheParameterGroupInput {
8662	s.CacheParameterGroupFamily = &v
8663	return s
8664}
8665
8666// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
8667func (s *CreateCacheParameterGroupInput) SetCacheParameterGroupName(v string) *CreateCacheParameterGroupInput {
8668	s.CacheParameterGroupName = &v
8669	return s
8670}
8671
8672// SetDescription sets the Description field's value.
8673func (s *CreateCacheParameterGroupInput) SetDescription(v string) *CreateCacheParameterGroupInput {
8674	s.Description = &v
8675	return s
8676}
8677
8678type CreateCacheParameterGroupOutput struct {
8679	_ struct{} `type:"structure"`
8680
8681	// Represents the output of a CreateCacheParameterGroup operation.
8682	CacheParameterGroup *CacheParameterGroup `type:"structure"`
8683}
8684
8685// String returns the string representation
8686func (s CreateCacheParameterGroupOutput) String() string {
8687	return awsutil.Prettify(s)
8688}
8689
8690// GoString returns the string representation
8691func (s CreateCacheParameterGroupOutput) GoString() string {
8692	return s.String()
8693}
8694
8695// SetCacheParameterGroup sets the CacheParameterGroup field's value.
8696func (s *CreateCacheParameterGroupOutput) SetCacheParameterGroup(v *CacheParameterGroup) *CreateCacheParameterGroupOutput {
8697	s.CacheParameterGroup = v
8698	return s
8699}
8700
8701// Represents the input of a CreateCacheSecurityGroup operation.
8702type CreateCacheSecurityGroupInput struct {
8703	_ struct{} `type:"structure"`
8704
8705	// A name for the cache security group. This value is stored as a lowercase
8706	// string.
8707	//
8708	// Constraints: Must contain no more than 255 alphanumeric characters. Cannot
8709	// be the word "Default".
8710	//
8711	// Example: mysecuritygroup
8712	//
8713	// CacheSecurityGroupName is a required field
8714	CacheSecurityGroupName *string `type:"string" required:"true"`
8715
8716	// A description for the cache security group.
8717	//
8718	// Description is a required field
8719	Description *string `type:"string" required:"true"`
8720}
8721
8722// String returns the string representation
8723func (s CreateCacheSecurityGroupInput) String() string {
8724	return awsutil.Prettify(s)
8725}
8726
8727// GoString returns the string representation
8728func (s CreateCacheSecurityGroupInput) GoString() string {
8729	return s.String()
8730}
8731
8732// Validate inspects the fields of the type to determine if they are valid.
8733func (s *CreateCacheSecurityGroupInput) Validate() error {
8734	invalidParams := request.ErrInvalidParams{Context: "CreateCacheSecurityGroupInput"}
8735	if s.CacheSecurityGroupName == nil {
8736		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
8737	}
8738	if s.Description == nil {
8739		invalidParams.Add(request.NewErrParamRequired("Description"))
8740	}
8741
8742	if invalidParams.Len() > 0 {
8743		return invalidParams
8744	}
8745	return nil
8746}
8747
8748// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
8749func (s *CreateCacheSecurityGroupInput) SetCacheSecurityGroupName(v string) *CreateCacheSecurityGroupInput {
8750	s.CacheSecurityGroupName = &v
8751	return s
8752}
8753
8754// SetDescription sets the Description field's value.
8755func (s *CreateCacheSecurityGroupInput) SetDescription(v string) *CreateCacheSecurityGroupInput {
8756	s.Description = &v
8757	return s
8758}
8759
8760type CreateCacheSecurityGroupOutput struct {
8761	_ struct{} `type:"structure"`
8762
8763	// Represents the output of one of the following operations:
8764	//
8765	//    * AuthorizeCacheSecurityGroupIngress
8766	//
8767	//    * CreateCacheSecurityGroup
8768	//
8769	//    * RevokeCacheSecurityGroupIngress
8770	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
8771}
8772
8773// String returns the string representation
8774func (s CreateCacheSecurityGroupOutput) String() string {
8775	return awsutil.Prettify(s)
8776}
8777
8778// GoString returns the string representation
8779func (s CreateCacheSecurityGroupOutput) GoString() string {
8780	return s.String()
8781}
8782
8783// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
8784func (s *CreateCacheSecurityGroupOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *CreateCacheSecurityGroupOutput {
8785	s.CacheSecurityGroup = v
8786	return s
8787}
8788
8789// Represents the input of a CreateCacheSubnetGroup operation.
8790type CreateCacheSubnetGroupInput struct {
8791	_ struct{} `type:"structure"`
8792
8793	// A description for the cache subnet group.
8794	//
8795	// CacheSubnetGroupDescription is a required field
8796	CacheSubnetGroupDescription *string `type:"string" required:"true"`
8797
8798	// A name for the cache subnet group. This value is stored as a lowercase string.
8799	//
8800	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
8801	//
8802	// Example: mysubnetgroup
8803	//
8804	// CacheSubnetGroupName is a required field
8805	CacheSubnetGroupName *string `type:"string" required:"true"`
8806
8807	// A list of VPC subnet IDs for the cache subnet group.
8808	//
8809	// SubnetIds is a required field
8810	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list" required:"true"`
8811}
8812
8813// String returns the string representation
8814func (s CreateCacheSubnetGroupInput) String() string {
8815	return awsutil.Prettify(s)
8816}
8817
8818// GoString returns the string representation
8819func (s CreateCacheSubnetGroupInput) GoString() string {
8820	return s.String()
8821}
8822
8823// Validate inspects the fields of the type to determine if they are valid.
8824func (s *CreateCacheSubnetGroupInput) Validate() error {
8825	invalidParams := request.ErrInvalidParams{Context: "CreateCacheSubnetGroupInput"}
8826	if s.CacheSubnetGroupDescription == nil {
8827		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupDescription"))
8828	}
8829	if s.CacheSubnetGroupName == nil {
8830		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
8831	}
8832	if s.SubnetIds == nil {
8833		invalidParams.Add(request.NewErrParamRequired("SubnetIds"))
8834	}
8835
8836	if invalidParams.Len() > 0 {
8837		return invalidParams
8838	}
8839	return nil
8840}
8841
8842// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
8843func (s *CreateCacheSubnetGroupInput) SetCacheSubnetGroupDescription(v string) *CreateCacheSubnetGroupInput {
8844	s.CacheSubnetGroupDescription = &v
8845	return s
8846}
8847
8848// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
8849func (s *CreateCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *CreateCacheSubnetGroupInput {
8850	s.CacheSubnetGroupName = &v
8851	return s
8852}
8853
8854// SetSubnetIds sets the SubnetIds field's value.
8855func (s *CreateCacheSubnetGroupInput) SetSubnetIds(v []*string) *CreateCacheSubnetGroupInput {
8856	s.SubnetIds = v
8857	return s
8858}
8859
8860type CreateCacheSubnetGroupOutput struct {
8861	_ struct{} `type:"structure"`
8862
8863	// Represents the output of one of the following operations:
8864	//
8865	//    * CreateCacheSubnetGroup
8866	//
8867	//    * ModifyCacheSubnetGroup
8868	CacheSubnetGroup *CacheSubnetGroup `type:"structure"`
8869}
8870
8871// String returns the string representation
8872func (s CreateCacheSubnetGroupOutput) String() string {
8873	return awsutil.Prettify(s)
8874}
8875
8876// GoString returns the string representation
8877func (s CreateCacheSubnetGroupOutput) GoString() string {
8878	return s.String()
8879}
8880
8881// SetCacheSubnetGroup sets the CacheSubnetGroup field's value.
8882func (s *CreateCacheSubnetGroupOutput) SetCacheSubnetGroup(v *CacheSubnetGroup) *CreateCacheSubnetGroupOutput {
8883	s.CacheSubnetGroup = v
8884	return s
8885}
8886
8887type CreateGlobalReplicationGroupInput struct {
8888	_ struct{} `type:"structure"`
8889
8890	// Provides details of the Global Datastore
8891	GlobalReplicationGroupDescription *string `type:"string"`
8892
8893	// The suffix name of a Global Datastore. The suffix guarantees uniqueness of
8894	// the Global Datastore name across multiple regions.
8895	//
8896	// GlobalReplicationGroupIdSuffix is a required field
8897	GlobalReplicationGroupIdSuffix *string `type:"string" required:"true"`
8898
8899	// The name of the primary cluster that accepts writes and will replicate updates
8900	// to the secondary cluster.
8901	//
8902	// PrimaryReplicationGroupId is a required field
8903	PrimaryReplicationGroupId *string `type:"string" required:"true"`
8904}
8905
8906// String returns the string representation
8907func (s CreateGlobalReplicationGroupInput) String() string {
8908	return awsutil.Prettify(s)
8909}
8910
8911// GoString returns the string representation
8912func (s CreateGlobalReplicationGroupInput) GoString() string {
8913	return s.String()
8914}
8915
8916// Validate inspects the fields of the type to determine if they are valid.
8917func (s *CreateGlobalReplicationGroupInput) Validate() error {
8918	invalidParams := request.ErrInvalidParams{Context: "CreateGlobalReplicationGroupInput"}
8919	if s.GlobalReplicationGroupIdSuffix == nil {
8920		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupIdSuffix"))
8921	}
8922	if s.PrimaryReplicationGroupId == nil {
8923		invalidParams.Add(request.NewErrParamRequired("PrimaryReplicationGroupId"))
8924	}
8925
8926	if invalidParams.Len() > 0 {
8927		return invalidParams
8928	}
8929	return nil
8930}
8931
8932// SetGlobalReplicationGroupDescription sets the GlobalReplicationGroupDescription field's value.
8933func (s *CreateGlobalReplicationGroupInput) SetGlobalReplicationGroupDescription(v string) *CreateGlobalReplicationGroupInput {
8934	s.GlobalReplicationGroupDescription = &v
8935	return s
8936}
8937
8938// SetGlobalReplicationGroupIdSuffix sets the GlobalReplicationGroupIdSuffix field's value.
8939func (s *CreateGlobalReplicationGroupInput) SetGlobalReplicationGroupIdSuffix(v string) *CreateGlobalReplicationGroupInput {
8940	s.GlobalReplicationGroupIdSuffix = &v
8941	return s
8942}
8943
8944// SetPrimaryReplicationGroupId sets the PrimaryReplicationGroupId field's value.
8945func (s *CreateGlobalReplicationGroupInput) SetPrimaryReplicationGroupId(v string) *CreateGlobalReplicationGroupInput {
8946	s.PrimaryReplicationGroupId = &v
8947	return s
8948}
8949
8950type CreateGlobalReplicationGroupOutput struct {
8951	_ struct{} `type:"structure"`
8952
8953	// Consists of a primary cluster that accepts writes and an associated secondary
8954	// cluster that resides in a different AWS region. The secondary cluster accepts
8955	// only reads. The primary cluster automatically replicates updates to the secondary
8956	// cluster.
8957	//
8958	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
8959	//    Datastore, which is what you use to associate a secondary cluster.
8960	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
8961}
8962
8963// String returns the string representation
8964func (s CreateGlobalReplicationGroupOutput) String() string {
8965	return awsutil.Prettify(s)
8966}
8967
8968// GoString returns the string representation
8969func (s CreateGlobalReplicationGroupOutput) GoString() string {
8970	return s.String()
8971}
8972
8973// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
8974func (s *CreateGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *CreateGlobalReplicationGroupOutput {
8975	s.GlobalReplicationGroup = v
8976	return s
8977}
8978
8979// Represents the input of a CreateReplicationGroup operation.
8980type CreateReplicationGroupInput struct {
8981	_ struct{} `type:"structure"`
8982
8983	// A flag that enables encryption at rest when set to true.
8984	//
8985	// You cannot modify the value of AtRestEncryptionEnabled after the replication
8986	// group is created. To enable encryption at rest on a replication group you
8987	// must set AtRestEncryptionEnabled to true when you create the replication
8988	// group.
8989	//
8990	// Required: Only available when creating a replication group in an Amazon VPC
8991	// using redis version 3.2.6, 4.x or later.
8992	//
8993	// Default: false
8994	AtRestEncryptionEnabled *bool `type:"boolean"`
8995
8996	// Reserved parameter. The password used to access a password protected server.
8997	//
8998	// AuthToken can be specified only on replication groups where TransitEncryptionEnabled
8999	// is true.
9000	//
9001	// For HIPAA compliance, you must specify TransitEncryptionEnabled as true,
9002	// an AuthToken, and a CacheSubnetGroup.
9003	//
9004	// Password constraints:
9005	//
9006	//    * Must be only printable ASCII characters.
9007	//
9008	//    * Must be at least 16 characters and no more than 128 characters in length.
9009	//
9010	//    * The only permitted printable special characters are !, &, #, $, ^, <,
9011	//    >, and -. Other printable special characters cannot be used in the AUTH
9012	//    token.
9013	//
9014	// For more information, see AUTH password (http://redis.io/commands/AUTH) at
9015	// http://redis.io/commands/AUTH.
9016	AuthToken *string `type:"string"`
9017
9018	// This parameter is currently disabled.
9019	AutoMinorVersionUpgrade *bool `type:"boolean"`
9020
9021	// Specifies whether a read-only replica is automatically promoted to read/write
9022	// primary if the existing primary fails.
9023	//
9024	// If true, Multi-AZ is enabled for this replication group. If false, Multi-AZ
9025	// is disabled for this replication group.
9026	//
9027	// AutomaticFailoverEnabled must be enabled for Redis (cluster mode enabled)
9028	// replication groups.
9029	//
9030	// Default: false
9031	//
9032	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
9033	// on:
9034	//
9035	//    * Redis versions earlier than 2.8.6.
9036	//
9037	//    * Redis (cluster mode disabled): T1 node types.
9038	//
9039	//    * Redis (cluster mode enabled): T1 node types.
9040	AutomaticFailoverEnabled *bool `type:"boolean"`
9041
9042	// The compute and memory capacity of the nodes in the node group (shard).
9043	//
9044	// The following node types are supported by ElastiCache. Generally speaking,
9045	// the current generation types provide more memory and computational power
9046	// at lower cost when compared to their equivalent previous generation counterparts.
9047	//
9048	//    * General purpose: Current generation: M5 node types: cache.m5.large,
9049	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
9050	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
9051	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
9052	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
9053	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
9054	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
9055	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
9056	//
9057	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
9058	//    cache.c1.xlarge
9059	//
9060	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
9061	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
9062	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
9063	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
9064	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
9065	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
9066	//    cache.r3.8xlarge
9067	//
9068	// Additional node type info
9069	//
9070	//    * All current generation instance types are created in Amazon VPC by default.
9071	//
9072	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
9073	//
9074	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
9075	//
9076	//    * Redis configuration variables appendonly and appendfsync are not supported
9077	//    on Redis version 2.8.22 and later.
9078	CacheNodeType *string `type:"string"`
9079
9080	// The name of the parameter group to associate with this replication group.
9081	// If this argument is omitted, the default cache parameter group for the specified
9082	// engine is used.
9083	//
9084	// If you are restoring to an engine version that is different than the original,
9085	// you must specify the default version of that version. For example, CacheParameterGroupName=default.redis4.0.
9086	//
9087	// If you are running Redis version 3.2.4 or later, only one node group (shard),
9088	// and want to use a default parameter group, we recommend that you specify
9089	// the parameter group by name.
9090	//
9091	//    * To create a Redis (cluster mode disabled) replication group, use CacheParameterGroupName=default.redis3.2.
9092	//
9093	//    * To create a Redis (cluster mode enabled) replication group, use CacheParameterGroupName=default.redis3.2.cluster.on.
9094	CacheParameterGroupName *string `type:"string"`
9095
9096	// A list of cache security group names to associate with this replication group.
9097	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
9098
9099	// The name of the cache subnet group to be used for the replication group.
9100	//
9101	// If you're going to launch your cluster in an Amazon VPC, you need to create
9102	// a subnet group before you start creating a cluster. For more information,
9103	// see Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.html).
9104	CacheSubnetGroupName *string `type:"string"`
9105
9106	// The name of the cache engine to be used for the clusters in this replication
9107	// group.
9108	Engine *string `type:"string"`
9109
9110	// The version number of the cache engine to be used for the clusters in this
9111	// replication group. To view the supported cache engine versions, use the DescribeCacheEngineVersions
9112	// operation.
9113	//
9114	// Important: You can upgrade to a newer engine version (see Selecting a Cache
9115	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement))
9116	// in the ElastiCache User Guide, but you cannot downgrade to an earlier engine
9117	// version. If you want to use an earlier engine version, you must delete the
9118	// existing cluster or replication group and create it anew with the earlier
9119	// engine version.
9120	EngineVersion *string `type:"string"`
9121
9122	// The name of the Global Datastore
9123	GlobalReplicationGroupId *string `type:"string"`
9124
9125	// The ID of the KMS key used to encrypt the disk in the cluster.
9126	KmsKeyId *string `type:"string"`
9127
9128	MultiAZEnabled *bool `type:"boolean"`
9129
9130	// A list of node group (shard) configuration options. Each node group (shard)
9131	// configuration has the following members: PrimaryAvailabilityZone, ReplicaAvailabilityZones,
9132	// ReplicaCount, and Slots.
9133	//
9134	// If you're creating a Redis (cluster mode disabled) or a Redis (cluster mode
9135	// enabled) replication group, you can use this parameter to individually configure
9136	// each node group (shard), or you can omit this parameter. However, it is required
9137	// when seeding a Redis (cluster mode enabled) cluster from a S3 rdb file. You
9138	// must configure each node group (shard) using this parameter because you must
9139	// specify the slots for each node group.
9140	NodeGroupConfiguration []*NodeGroupConfiguration `locationNameList:"NodeGroupConfiguration" type:"list"`
9141
9142	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
9143	// (SNS) topic to which notifications are sent.
9144	//
9145	// The Amazon SNS topic owner must be the same as the cluster owner.
9146	NotificationTopicArn *string `type:"string"`
9147
9148	// The number of nodes in the cluster.
9149	//
9150	// This parameter is not used if there is more than one node group (shard).
9151	// You should use ReplicasPerNodeGroup instead.
9152	//
9153	// If AutomaticFailoverEnabled is true, the value of this parameter must be
9154	// at least 2. If AutomaticFailoverEnabled is false you can omit this parameter
9155	// (it will default to 1), or you can explicitly set it to a value between 2
9156	// and 6.
9157	//
9158	// The maximum permitted value for NumCacheClusters is 6 (1 primary plus 5 replicas).
9159	NumCacheClusters *int64 `type:"integer"`
9160
9161	// An optional parameter that specifies the number of node groups (shards) for
9162	// this Redis (cluster mode enabled) replication group. For Redis (cluster mode
9163	// disabled) either omit this parameter or set it to 1.
9164	//
9165	// Default: 1
9166	NumNodeGroups *int64 `type:"integer"`
9167
9168	// The port number on which each member of the replication group accepts connections.
9169	Port *int64 `type:"integer"`
9170
9171	// A list of EC2 Availability Zones in which the replication group's clusters
9172	// are created. The order of the Availability Zones in the list is the order
9173	// in which clusters are allocated. The primary cluster is created in the first
9174	// AZ in the list.
9175	//
9176	// This parameter is not used if there is more than one node group (shard).
9177	// You should use NodeGroupConfiguration instead.
9178	//
9179	// If you are creating your replication group in an Amazon VPC (recommended),
9180	// you can only locate clusters in Availability Zones associated with the subnets
9181	// in the selected subnet group.
9182	//
9183	// The number of Availability Zones listed must equal the value of NumCacheClusters.
9184	//
9185	// Default: system chosen Availability Zones.
9186	PreferredCacheClusterAZs []*string `locationNameList:"AvailabilityZone" type:"list"`
9187
9188	// Specifies the weekly time range during which maintenance on the cluster is
9189	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
9190	// (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid
9191	// values for ddd are:
9192	//
9193	// Specifies the weekly time range during which maintenance on the cluster is
9194	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
9195	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
9196	//
9197	// Valid values for ddd are:
9198	//
9199	//    * sun
9200	//
9201	//    * mon
9202	//
9203	//    * tue
9204	//
9205	//    * wed
9206	//
9207	//    * thu
9208	//
9209	//    * fri
9210	//
9211	//    * sat
9212	//
9213	// Example: sun:23:00-mon:01:30
9214	PreferredMaintenanceWindow *string `type:"string"`
9215
9216	// The identifier of the cluster that serves as the primary for this replication
9217	// group. This cluster must already exist and have a status of available.
9218	//
9219	// This parameter is not required if NumCacheClusters, NumNodeGroups, or ReplicasPerNodeGroup
9220	// is specified.
9221	PrimaryClusterId *string `type:"string"`
9222
9223	// An optional parameter that specifies the number of replica nodes in each
9224	// node group (shard). Valid values are 0 to 5.
9225	ReplicasPerNodeGroup *int64 `type:"integer"`
9226
9227	// A user-created description for the replication group.
9228	//
9229	// ReplicationGroupDescription is a required field
9230	ReplicationGroupDescription *string `type:"string" required:"true"`
9231
9232	// The replication group identifier. This parameter is stored as a lowercase
9233	// string.
9234	//
9235	// Constraints:
9236	//
9237	//    * A name must contain from 1 to 40 alphanumeric characters or hyphens.
9238	//
9239	//    * The first character must be a letter.
9240	//
9241	//    * A name cannot end with a hyphen or contain two consecutive hyphens.
9242	//
9243	// ReplicationGroupId is a required field
9244	ReplicationGroupId *string `type:"string" required:"true"`
9245
9246	// One or more Amazon VPC security groups associated with this replication group.
9247	//
9248	// Use this parameter only when you are creating a replication group in an Amazon
9249	// Virtual Private Cloud (Amazon VPC).
9250	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
9251
9252	// A list of Amazon Resource Names (ARN) that uniquely identify the Redis RDB
9253	// snapshot files stored in Amazon S3. The snapshot files are used to populate
9254	// the new replication group. The Amazon S3 object name in the ARN cannot contain
9255	// any commas. The new replication group will have the number of node groups
9256	// (console: shards) specified by the parameter NumNodeGroups or the number
9257	// of node groups configured by NodeGroupConfiguration regardless of the number
9258	// of ARNs specified here.
9259	//
9260	// Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
9261	SnapshotArns []*string `locationNameList:"SnapshotArn" type:"list"`
9262
9263	// The name of a snapshot from which to restore data into the new replication
9264	// group. The snapshot status changes to restoring while the new replication
9265	// group is being created.
9266	SnapshotName *string `type:"string"`
9267
9268	// The number of days for which ElastiCache retains automatic snapshots before
9269	// deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot
9270	// that was taken today is retained for 5 days before being deleted.
9271	//
9272	// Default: 0 (i.e., automatic backups are disabled for this cluster).
9273	SnapshotRetentionLimit *int64 `type:"integer"`
9274
9275	// The daily time range (in UTC) during which ElastiCache begins taking a daily
9276	// snapshot of your node group (shard).
9277	//
9278	// Example: 05:00-09:00
9279	//
9280	// If you do not specify this parameter, ElastiCache automatically chooses an
9281	// appropriate time range.
9282	SnapshotWindow *string `type:"string"`
9283
9284	// A list of cost allocation tags to be added to this resource. Tags are comma-separated
9285	// key,value pairs (e.g. Key=myKey, Value=myKeyValue. You can include multiple
9286	// tags as shown following: Key=myKey, Value=myKeyValue Key=mySecondKey, Value=mySecondKeyValue.
9287	Tags []*Tag `locationNameList:"Tag" type:"list"`
9288
9289	// A flag that enables in-transit encryption when set to true.
9290	//
9291	// You cannot modify the value of TransitEncryptionEnabled after the cluster
9292	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
9293	// to true when you create a cluster.
9294	//
9295	// This parameter is valid only if the Engine parameter is redis, the EngineVersion
9296	// parameter is 3.2.6, 4.x or later, and the cluster is being created in an
9297	// Amazon VPC.
9298	//
9299	// If you enable in-transit encryption, you must also specify a value for CacheSubnetGroup.
9300	//
9301	// Required: Only available when creating a replication group in an Amazon VPC
9302	// using redis version 3.2.6, 4.x or later.
9303	//
9304	// Default: false
9305	//
9306	// For HIPAA compliance, you must specify TransitEncryptionEnabled as true,
9307	// an AuthToken, and a CacheSubnetGroup.
9308	TransitEncryptionEnabled *bool `type:"boolean"`
9309}
9310
9311// String returns the string representation
9312func (s CreateReplicationGroupInput) String() string {
9313	return awsutil.Prettify(s)
9314}
9315
9316// GoString returns the string representation
9317func (s CreateReplicationGroupInput) GoString() string {
9318	return s.String()
9319}
9320
9321// Validate inspects the fields of the type to determine if they are valid.
9322func (s *CreateReplicationGroupInput) Validate() error {
9323	invalidParams := request.ErrInvalidParams{Context: "CreateReplicationGroupInput"}
9324	if s.ReplicationGroupDescription == nil {
9325		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupDescription"))
9326	}
9327	if s.ReplicationGroupId == nil {
9328		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
9329	}
9330	if s.NodeGroupConfiguration != nil {
9331		for i, v := range s.NodeGroupConfiguration {
9332			if v == nil {
9333				continue
9334			}
9335			if err := v.Validate(); err != nil {
9336				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "NodeGroupConfiguration", i), err.(request.ErrInvalidParams))
9337			}
9338		}
9339	}
9340
9341	if invalidParams.Len() > 0 {
9342		return invalidParams
9343	}
9344	return nil
9345}
9346
9347// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
9348func (s *CreateReplicationGroupInput) SetAtRestEncryptionEnabled(v bool) *CreateReplicationGroupInput {
9349	s.AtRestEncryptionEnabled = &v
9350	return s
9351}
9352
9353// SetAuthToken sets the AuthToken field's value.
9354func (s *CreateReplicationGroupInput) SetAuthToken(v string) *CreateReplicationGroupInput {
9355	s.AuthToken = &v
9356	return s
9357}
9358
9359// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
9360func (s *CreateReplicationGroupInput) SetAutoMinorVersionUpgrade(v bool) *CreateReplicationGroupInput {
9361	s.AutoMinorVersionUpgrade = &v
9362	return s
9363}
9364
9365// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
9366func (s *CreateReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *CreateReplicationGroupInput {
9367	s.AutomaticFailoverEnabled = &v
9368	return s
9369}
9370
9371// SetCacheNodeType sets the CacheNodeType field's value.
9372func (s *CreateReplicationGroupInput) SetCacheNodeType(v string) *CreateReplicationGroupInput {
9373	s.CacheNodeType = &v
9374	return s
9375}
9376
9377// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
9378func (s *CreateReplicationGroupInput) SetCacheParameterGroupName(v string) *CreateReplicationGroupInput {
9379	s.CacheParameterGroupName = &v
9380	return s
9381}
9382
9383// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
9384func (s *CreateReplicationGroupInput) SetCacheSecurityGroupNames(v []*string) *CreateReplicationGroupInput {
9385	s.CacheSecurityGroupNames = v
9386	return s
9387}
9388
9389// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
9390func (s *CreateReplicationGroupInput) SetCacheSubnetGroupName(v string) *CreateReplicationGroupInput {
9391	s.CacheSubnetGroupName = &v
9392	return s
9393}
9394
9395// SetEngine sets the Engine field's value.
9396func (s *CreateReplicationGroupInput) SetEngine(v string) *CreateReplicationGroupInput {
9397	s.Engine = &v
9398	return s
9399}
9400
9401// SetEngineVersion sets the EngineVersion field's value.
9402func (s *CreateReplicationGroupInput) SetEngineVersion(v string) *CreateReplicationGroupInput {
9403	s.EngineVersion = &v
9404	return s
9405}
9406
9407// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
9408func (s *CreateReplicationGroupInput) SetGlobalReplicationGroupId(v string) *CreateReplicationGroupInput {
9409	s.GlobalReplicationGroupId = &v
9410	return s
9411}
9412
9413// SetKmsKeyId sets the KmsKeyId field's value.
9414func (s *CreateReplicationGroupInput) SetKmsKeyId(v string) *CreateReplicationGroupInput {
9415	s.KmsKeyId = &v
9416	return s
9417}
9418
9419// SetMultiAZEnabled sets the MultiAZEnabled field's value.
9420func (s *CreateReplicationGroupInput) SetMultiAZEnabled(v bool) *CreateReplicationGroupInput {
9421	s.MultiAZEnabled = &v
9422	return s
9423}
9424
9425// SetNodeGroupConfiguration sets the NodeGroupConfiguration field's value.
9426func (s *CreateReplicationGroupInput) SetNodeGroupConfiguration(v []*NodeGroupConfiguration) *CreateReplicationGroupInput {
9427	s.NodeGroupConfiguration = v
9428	return s
9429}
9430
9431// SetNotificationTopicArn sets the NotificationTopicArn field's value.
9432func (s *CreateReplicationGroupInput) SetNotificationTopicArn(v string) *CreateReplicationGroupInput {
9433	s.NotificationTopicArn = &v
9434	return s
9435}
9436
9437// SetNumCacheClusters sets the NumCacheClusters field's value.
9438func (s *CreateReplicationGroupInput) SetNumCacheClusters(v int64) *CreateReplicationGroupInput {
9439	s.NumCacheClusters = &v
9440	return s
9441}
9442
9443// SetNumNodeGroups sets the NumNodeGroups field's value.
9444func (s *CreateReplicationGroupInput) SetNumNodeGroups(v int64) *CreateReplicationGroupInput {
9445	s.NumNodeGroups = &v
9446	return s
9447}
9448
9449// SetPort sets the Port field's value.
9450func (s *CreateReplicationGroupInput) SetPort(v int64) *CreateReplicationGroupInput {
9451	s.Port = &v
9452	return s
9453}
9454
9455// SetPreferredCacheClusterAZs sets the PreferredCacheClusterAZs field's value.
9456func (s *CreateReplicationGroupInput) SetPreferredCacheClusterAZs(v []*string) *CreateReplicationGroupInput {
9457	s.PreferredCacheClusterAZs = v
9458	return s
9459}
9460
9461// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
9462func (s *CreateReplicationGroupInput) SetPreferredMaintenanceWindow(v string) *CreateReplicationGroupInput {
9463	s.PreferredMaintenanceWindow = &v
9464	return s
9465}
9466
9467// SetPrimaryClusterId sets the PrimaryClusterId field's value.
9468func (s *CreateReplicationGroupInput) SetPrimaryClusterId(v string) *CreateReplicationGroupInput {
9469	s.PrimaryClusterId = &v
9470	return s
9471}
9472
9473// SetReplicasPerNodeGroup sets the ReplicasPerNodeGroup field's value.
9474func (s *CreateReplicationGroupInput) SetReplicasPerNodeGroup(v int64) *CreateReplicationGroupInput {
9475	s.ReplicasPerNodeGroup = &v
9476	return s
9477}
9478
9479// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
9480func (s *CreateReplicationGroupInput) SetReplicationGroupDescription(v string) *CreateReplicationGroupInput {
9481	s.ReplicationGroupDescription = &v
9482	return s
9483}
9484
9485// SetReplicationGroupId sets the ReplicationGroupId field's value.
9486func (s *CreateReplicationGroupInput) SetReplicationGroupId(v string) *CreateReplicationGroupInput {
9487	s.ReplicationGroupId = &v
9488	return s
9489}
9490
9491// SetSecurityGroupIds sets the SecurityGroupIds field's value.
9492func (s *CreateReplicationGroupInput) SetSecurityGroupIds(v []*string) *CreateReplicationGroupInput {
9493	s.SecurityGroupIds = v
9494	return s
9495}
9496
9497// SetSnapshotArns sets the SnapshotArns field's value.
9498func (s *CreateReplicationGroupInput) SetSnapshotArns(v []*string) *CreateReplicationGroupInput {
9499	s.SnapshotArns = v
9500	return s
9501}
9502
9503// SetSnapshotName sets the SnapshotName field's value.
9504func (s *CreateReplicationGroupInput) SetSnapshotName(v string) *CreateReplicationGroupInput {
9505	s.SnapshotName = &v
9506	return s
9507}
9508
9509// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
9510func (s *CreateReplicationGroupInput) SetSnapshotRetentionLimit(v int64) *CreateReplicationGroupInput {
9511	s.SnapshotRetentionLimit = &v
9512	return s
9513}
9514
9515// SetSnapshotWindow sets the SnapshotWindow field's value.
9516func (s *CreateReplicationGroupInput) SetSnapshotWindow(v string) *CreateReplicationGroupInput {
9517	s.SnapshotWindow = &v
9518	return s
9519}
9520
9521// SetTags sets the Tags field's value.
9522func (s *CreateReplicationGroupInput) SetTags(v []*Tag) *CreateReplicationGroupInput {
9523	s.Tags = v
9524	return s
9525}
9526
9527// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
9528func (s *CreateReplicationGroupInput) SetTransitEncryptionEnabled(v bool) *CreateReplicationGroupInput {
9529	s.TransitEncryptionEnabled = &v
9530	return s
9531}
9532
9533type CreateReplicationGroupOutput struct {
9534	_ struct{} `type:"structure"`
9535
9536	// Contains all of the attributes of a specific Redis replication group.
9537	ReplicationGroup *ReplicationGroup `type:"structure"`
9538}
9539
9540// String returns the string representation
9541func (s CreateReplicationGroupOutput) String() string {
9542	return awsutil.Prettify(s)
9543}
9544
9545// GoString returns the string representation
9546func (s CreateReplicationGroupOutput) GoString() string {
9547	return s.String()
9548}
9549
9550// SetReplicationGroup sets the ReplicationGroup field's value.
9551func (s *CreateReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *CreateReplicationGroupOutput {
9552	s.ReplicationGroup = v
9553	return s
9554}
9555
9556// Represents the input of a CreateSnapshot operation.
9557type CreateSnapshotInput struct {
9558	_ struct{} `type:"structure"`
9559
9560	// The identifier of an existing cluster. The snapshot is created from this
9561	// cluster.
9562	CacheClusterId *string `type:"string"`
9563
9564	// The ID of the KMS key used to encrypt the snapshot.
9565	KmsKeyId *string `type:"string"`
9566
9567	// The identifier of an existing replication group. The snapshot is created
9568	// from this replication group.
9569	ReplicationGroupId *string `type:"string"`
9570
9571	// A name for the snapshot being created.
9572	//
9573	// SnapshotName is a required field
9574	SnapshotName *string `type:"string" required:"true"`
9575}
9576
9577// String returns the string representation
9578func (s CreateSnapshotInput) String() string {
9579	return awsutil.Prettify(s)
9580}
9581
9582// GoString returns the string representation
9583func (s CreateSnapshotInput) GoString() string {
9584	return s.String()
9585}
9586
9587// Validate inspects the fields of the type to determine if they are valid.
9588func (s *CreateSnapshotInput) Validate() error {
9589	invalidParams := request.ErrInvalidParams{Context: "CreateSnapshotInput"}
9590	if s.SnapshotName == nil {
9591		invalidParams.Add(request.NewErrParamRequired("SnapshotName"))
9592	}
9593
9594	if invalidParams.Len() > 0 {
9595		return invalidParams
9596	}
9597	return nil
9598}
9599
9600// SetCacheClusterId sets the CacheClusterId field's value.
9601func (s *CreateSnapshotInput) SetCacheClusterId(v string) *CreateSnapshotInput {
9602	s.CacheClusterId = &v
9603	return s
9604}
9605
9606// SetKmsKeyId sets the KmsKeyId field's value.
9607func (s *CreateSnapshotInput) SetKmsKeyId(v string) *CreateSnapshotInput {
9608	s.KmsKeyId = &v
9609	return s
9610}
9611
9612// SetReplicationGroupId sets the ReplicationGroupId field's value.
9613func (s *CreateSnapshotInput) SetReplicationGroupId(v string) *CreateSnapshotInput {
9614	s.ReplicationGroupId = &v
9615	return s
9616}
9617
9618// SetSnapshotName sets the SnapshotName field's value.
9619func (s *CreateSnapshotInput) SetSnapshotName(v string) *CreateSnapshotInput {
9620	s.SnapshotName = &v
9621	return s
9622}
9623
9624type CreateSnapshotOutput struct {
9625	_ struct{} `type:"structure"`
9626
9627	// Represents a copy of an entire Redis cluster as of the time when the snapshot
9628	// was taken.
9629	Snapshot *Snapshot `type:"structure"`
9630}
9631
9632// String returns the string representation
9633func (s CreateSnapshotOutput) String() string {
9634	return awsutil.Prettify(s)
9635}
9636
9637// GoString returns the string representation
9638func (s CreateSnapshotOutput) GoString() string {
9639	return s.String()
9640}
9641
9642// SetSnapshot sets the Snapshot field's value.
9643func (s *CreateSnapshotOutput) SetSnapshot(v *Snapshot) *CreateSnapshotOutput {
9644	s.Snapshot = v
9645	return s
9646}
9647
9648// The endpoint from which data should be migrated.
9649type CustomerNodeEndpoint struct {
9650	_ struct{} `type:"structure"`
9651
9652	// The address of the node endpoint
9653	Address *string `type:"string"`
9654
9655	// The port of the node endpoint
9656	Port *int64 `type:"integer"`
9657}
9658
9659// String returns the string representation
9660func (s CustomerNodeEndpoint) String() string {
9661	return awsutil.Prettify(s)
9662}
9663
9664// GoString returns the string representation
9665func (s CustomerNodeEndpoint) GoString() string {
9666	return s.String()
9667}
9668
9669// SetAddress sets the Address field's value.
9670func (s *CustomerNodeEndpoint) SetAddress(v string) *CustomerNodeEndpoint {
9671	s.Address = &v
9672	return s
9673}
9674
9675// SetPort sets the Port field's value.
9676func (s *CustomerNodeEndpoint) SetPort(v int64) *CustomerNodeEndpoint {
9677	s.Port = &v
9678	return s
9679}
9680
9681type DecreaseNodeGroupsInGlobalReplicationGroupInput struct {
9682	_ struct{} `type:"structure"`
9683
9684	// Indicates that the shard reconfiguration process begins immediately. At present,
9685	// the only permitted value for this parameter is true.
9686	//
9687	// ApplyImmediately is a required field
9688	ApplyImmediately *bool `type:"boolean" required:"true"`
9689
9690	// If the value of NodeGroupCount is less than the current number of node groups
9691	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
9692	// NodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster.
9693	// ElastiCache for Redis will attempt to remove all node groups listed by NodeGroupsToRemove
9694	// from the cluster.
9695	GlobalNodeGroupsToRemove []*string `locationNameList:"GlobalNodeGroupId" type:"list"`
9696
9697	// If the value of NodeGroupCount is less than the current number of node groups
9698	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
9699	// NodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster.
9700	// ElastiCache for Redis will attempt to remove all node groups listed by NodeGroupsToRemove
9701	// from the cluster.
9702	GlobalNodeGroupsToRetain []*string `locationNameList:"GlobalNodeGroupId" type:"list"`
9703
9704	// The name of the Global Datastore
9705	//
9706	// GlobalReplicationGroupId is a required field
9707	GlobalReplicationGroupId *string `type:"string" required:"true"`
9708
9709	// The number of node groups (shards) that results from the modification of
9710	// the shard configuration
9711	//
9712	// NodeGroupCount is a required field
9713	NodeGroupCount *int64 `type:"integer" required:"true"`
9714}
9715
9716// String returns the string representation
9717func (s DecreaseNodeGroupsInGlobalReplicationGroupInput) String() string {
9718	return awsutil.Prettify(s)
9719}
9720
9721// GoString returns the string representation
9722func (s DecreaseNodeGroupsInGlobalReplicationGroupInput) GoString() string {
9723	return s.String()
9724}
9725
9726// Validate inspects the fields of the type to determine if they are valid.
9727func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) Validate() error {
9728	invalidParams := request.ErrInvalidParams{Context: "DecreaseNodeGroupsInGlobalReplicationGroupInput"}
9729	if s.ApplyImmediately == nil {
9730		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
9731	}
9732	if s.GlobalReplicationGroupId == nil {
9733		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
9734	}
9735	if s.NodeGroupCount == nil {
9736		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
9737	}
9738
9739	if invalidParams.Len() > 0 {
9740		return invalidParams
9741	}
9742	return nil
9743}
9744
9745// SetApplyImmediately sets the ApplyImmediately field's value.
9746func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetApplyImmediately(v bool) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
9747	s.ApplyImmediately = &v
9748	return s
9749}
9750
9751// SetGlobalNodeGroupsToRemove sets the GlobalNodeGroupsToRemove field's value.
9752func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalNodeGroupsToRemove(v []*string) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
9753	s.GlobalNodeGroupsToRemove = v
9754	return s
9755}
9756
9757// SetGlobalNodeGroupsToRetain sets the GlobalNodeGroupsToRetain field's value.
9758func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalNodeGroupsToRetain(v []*string) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
9759	s.GlobalNodeGroupsToRetain = v
9760	return s
9761}
9762
9763// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
9764func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
9765	s.GlobalReplicationGroupId = &v
9766	return s
9767}
9768
9769// SetNodeGroupCount sets the NodeGroupCount field's value.
9770func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetNodeGroupCount(v int64) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
9771	s.NodeGroupCount = &v
9772	return s
9773}
9774
9775type DecreaseNodeGroupsInGlobalReplicationGroupOutput struct {
9776	_ struct{} `type:"structure"`
9777
9778	// Consists of a primary cluster that accepts writes and an associated secondary
9779	// cluster that resides in a different AWS region. The secondary cluster accepts
9780	// only reads. The primary cluster automatically replicates updates to the secondary
9781	// cluster.
9782	//
9783	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
9784	//    Datastore, which is what you use to associate a secondary cluster.
9785	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
9786}
9787
9788// String returns the string representation
9789func (s DecreaseNodeGroupsInGlobalReplicationGroupOutput) String() string {
9790	return awsutil.Prettify(s)
9791}
9792
9793// GoString returns the string representation
9794func (s DecreaseNodeGroupsInGlobalReplicationGroupOutput) GoString() string {
9795	return s.String()
9796}
9797
9798// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
9799func (s *DecreaseNodeGroupsInGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *DecreaseNodeGroupsInGlobalReplicationGroupOutput {
9800	s.GlobalReplicationGroup = v
9801	return s
9802}
9803
9804type DecreaseReplicaCountInput struct {
9805	_ struct{} `type:"structure"`
9806
9807	// If True, the number of replica nodes is decreased immediately. ApplyImmediately=False
9808	// is not currently supported.
9809	//
9810	// ApplyImmediately is a required field
9811	ApplyImmediately *bool `type:"boolean" required:"true"`
9812
9813	// The number of read replica nodes you want at the completion of this operation.
9814	// For Redis (cluster mode disabled) replication groups, this is the number
9815	// of replica nodes in the replication group. For Redis (cluster mode enabled)
9816	// replication groups, this is the number of replica nodes in each of the replication
9817	// group's node groups.
9818	//
9819	// The minimum number of replicas in a shard or replication group is:
9820	//
9821	//    * Redis (cluster mode disabled) If Multi-AZ with Automatic Failover is
9822	//    enabled: 1 If Multi-AZ with Automatic Failover is not enabled: 0
9823	//
9824	//    * Redis (cluster mode enabled): 0 (though you will not be able to failover
9825	//    to a replica if your primary node fails)
9826	NewReplicaCount *int64 `type:"integer"`
9827
9828	// A list of ConfigureShard objects that can be used to configure each shard
9829	// in a Redis (cluster mode enabled) replication group. The ConfigureShard has
9830	// three members: NewReplicaCount, NodeGroupId, and PreferredAvailabilityZones.
9831	ReplicaConfiguration []*ConfigureShard `locationNameList:"ConfigureShard" type:"list"`
9832
9833	// A list of the node ids to remove from the replication group or node group
9834	// (shard).
9835	ReplicasToRemove []*string `type:"list"`
9836
9837	// The id of the replication group from which you want to remove replica nodes.
9838	//
9839	// ReplicationGroupId is a required field
9840	ReplicationGroupId *string `type:"string" required:"true"`
9841}
9842
9843// String returns the string representation
9844func (s DecreaseReplicaCountInput) String() string {
9845	return awsutil.Prettify(s)
9846}
9847
9848// GoString returns the string representation
9849func (s DecreaseReplicaCountInput) GoString() string {
9850	return s.String()
9851}
9852
9853// Validate inspects the fields of the type to determine if they are valid.
9854func (s *DecreaseReplicaCountInput) Validate() error {
9855	invalidParams := request.ErrInvalidParams{Context: "DecreaseReplicaCountInput"}
9856	if s.ApplyImmediately == nil {
9857		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
9858	}
9859	if s.ReplicationGroupId == nil {
9860		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
9861	}
9862	if s.ReplicaConfiguration != nil {
9863		for i, v := range s.ReplicaConfiguration {
9864			if v == nil {
9865				continue
9866			}
9867			if err := v.Validate(); err != nil {
9868				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaConfiguration", i), err.(request.ErrInvalidParams))
9869			}
9870		}
9871	}
9872
9873	if invalidParams.Len() > 0 {
9874		return invalidParams
9875	}
9876	return nil
9877}
9878
9879// SetApplyImmediately sets the ApplyImmediately field's value.
9880func (s *DecreaseReplicaCountInput) SetApplyImmediately(v bool) *DecreaseReplicaCountInput {
9881	s.ApplyImmediately = &v
9882	return s
9883}
9884
9885// SetNewReplicaCount sets the NewReplicaCount field's value.
9886func (s *DecreaseReplicaCountInput) SetNewReplicaCount(v int64) *DecreaseReplicaCountInput {
9887	s.NewReplicaCount = &v
9888	return s
9889}
9890
9891// SetReplicaConfiguration sets the ReplicaConfiguration field's value.
9892func (s *DecreaseReplicaCountInput) SetReplicaConfiguration(v []*ConfigureShard) *DecreaseReplicaCountInput {
9893	s.ReplicaConfiguration = v
9894	return s
9895}
9896
9897// SetReplicasToRemove sets the ReplicasToRemove field's value.
9898func (s *DecreaseReplicaCountInput) SetReplicasToRemove(v []*string) *DecreaseReplicaCountInput {
9899	s.ReplicasToRemove = v
9900	return s
9901}
9902
9903// SetReplicationGroupId sets the ReplicationGroupId field's value.
9904func (s *DecreaseReplicaCountInput) SetReplicationGroupId(v string) *DecreaseReplicaCountInput {
9905	s.ReplicationGroupId = &v
9906	return s
9907}
9908
9909type DecreaseReplicaCountOutput struct {
9910	_ struct{} `type:"structure"`
9911
9912	// Contains all of the attributes of a specific Redis replication group.
9913	ReplicationGroup *ReplicationGroup `type:"structure"`
9914}
9915
9916// String returns the string representation
9917func (s DecreaseReplicaCountOutput) String() string {
9918	return awsutil.Prettify(s)
9919}
9920
9921// GoString returns the string representation
9922func (s DecreaseReplicaCountOutput) GoString() string {
9923	return s.String()
9924}
9925
9926// SetReplicationGroup sets the ReplicationGroup field's value.
9927func (s *DecreaseReplicaCountOutput) SetReplicationGroup(v *ReplicationGroup) *DecreaseReplicaCountOutput {
9928	s.ReplicationGroup = v
9929	return s
9930}
9931
9932// Represents the input of a DeleteCacheCluster operation.
9933type DeleteCacheClusterInput struct {
9934	_ struct{} `type:"structure"`
9935
9936	// The cluster identifier for the cluster to be deleted. This parameter is not
9937	// case sensitive.
9938	//
9939	// CacheClusterId is a required field
9940	CacheClusterId *string `type:"string" required:"true"`
9941
9942	// The user-supplied name of a final cluster snapshot. This is the unique name
9943	// that identifies the snapshot. ElastiCache creates the snapshot, and then
9944	// deletes the cluster immediately afterward.
9945	FinalSnapshotIdentifier *string `type:"string"`
9946}
9947
9948// String returns the string representation
9949func (s DeleteCacheClusterInput) String() string {
9950	return awsutil.Prettify(s)
9951}
9952
9953// GoString returns the string representation
9954func (s DeleteCacheClusterInput) GoString() string {
9955	return s.String()
9956}
9957
9958// Validate inspects the fields of the type to determine if they are valid.
9959func (s *DeleteCacheClusterInput) Validate() error {
9960	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheClusterInput"}
9961	if s.CacheClusterId == nil {
9962		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
9963	}
9964
9965	if invalidParams.Len() > 0 {
9966		return invalidParams
9967	}
9968	return nil
9969}
9970
9971// SetCacheClusterId sets the CacheClusterId field's value.
9972func (s *DeleteCacheClusterInput) SetCacheClusterId(v string) *DeleteCacheClusterInput {
9973	s.CacheClusterId = &v
9974	return s
9975}
9976
9977// SetFinalSnapshotIdentifier sets the FinalSnapshotIdentifier field's value.
9978func (s *DeleteCacheClusterInput) SetFinalSnapshotIdentifier(v string) *DeleteCacheClusterInput {
9979	s.FinalSnapshotIdentifier = &v
9980	return s
9981}
9982
9983type DeleteCacheClusterOutput struct {
9984	_ struct{} `type:"structure"`
9985
9986	// Contains all of the attributes of a specific cluster.
9987	CacheCluster *CacheCluster `type:"structure"`
9988}
9989
9990// String returns the string representation
9991func (s DeleteCacheClusterOutput) String() string {
9992	return awsutil.Prettify(s)
9993}
9994
9995// GoString returns the string representation
9996func (s DeleteCacheClusterOutput) GoString() string {
9997	return s.String()
9998}
9999
10000// SetCacheCluster sets the CacheCluster field's value.
10001func (s *DeleteCacheClusterOutput) SetCacheCluster(v *CacheCluster) *DeleteCacheClusterOutput {
10002	s.CacheCluster = v
10003	return s
10004}
10005
10006// Represents the input of a DeleteCacheParameterGroup operation.
10007type DeleteCacheParameterGroupInput struct {
10008	_ struct{} `type:"structure"`
10009
10010	// The name of the cache parameter group to delete.
10011	//
10012	// The specified cache security group must not be associated with any clusters.
10013	//
10014	// CacheParameterGroupName is a required field
10015	CacheParameterGroupName *string `type:"string" required:"true"`
10016}
10017
10018// String returns the string representation
10019func (s DeleteCacheParameterGroupInput) String() string {
10020	return awsutil.Prettify(s)
10021}
10022
10023// GoString returns the string representation
10024func (s DeleteCacheParameterGroupInput) GoString() string {
10025	return s.String()
10026}
10027
10028// Validate inspects the fields of the type to determine if they are valid.
10029func (s *DeleteCacheParameterGroupInput) Validate() error {
10030	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheParameterGroupInput"}
10031	if s.CacheParameterGroupName == nil {
10032		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
10033	}
10034
10035	if invalidParams.Len() > 0 {
10036		return invalidParams
10037	}
10038	return nil
10039}
10040
10041// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
10042func (s *DeleteCacheParameterGroupInput) SetCacheParameterGroupName(v string) *DeleteCacheParameterGroupInput {
10043	s.CacheParameterGroupName = &v
10044	return s
10045}
10046
10047type DeleteCacheParameterGroupOutput struct {
10048	_ struct{} `type:"structure"`
10049}
10050
10051// String returns the string representation
10052func (s DeleteCacheParameterGroupOutput) String() string {
10053	return awsutil.Prettify(s)
10054}
10055
10056// GoString returns the string representation
10057func (s DeleteCacheParameterGroupOutput) GoString() string {
10058	return s.String()
10059}
10060
10061// Represents the input of a DeleteCacheSecurityGroup operation.
10062type DeleteCacheSecurityGroupInput struct {
10063	_ struct{} `type:"structure"`
10064
10065	// The name of the cache security group to delete.
10066	//
10067	// You cannot delete the default security group.
10068	//
10069	// CacheSecurityGroupName is a required field
10070	CacheSecurityGroupName *string `type:"string" required:"true"`
10071}
10072
10073// String returns the string representation
10074func (s DeleteCacheSecurityGroupInput) String() string {
10075	return awsutil.Prettify(s)
10076}
10077
10078// GoString returns the string representation
10079func (s DeleteCacheSecurityGroupInput) GoString() string {
10080	return s.String()
10081}
10082
10083// Validate inspects the fields of the type to determine if they are valid.
10084func (s *DeleteCacheSecurityGroupInput) Validate() error {
10085	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheSecurityGroupInput"}
10086	if s.CacheSecurityGroupName == nil {
10087		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
10088	}
10089
10090	if invalidParams.Len() > 0 {
10091		return invalidParams
10092	}
10093	return nil
10094}
10095
10096// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
10097func (s *DeleteCacheSecurityGroupInput) SetCacheSecurityGroupName(v string) *DeleteCacheSecurityGroupInput {
10098	s.CacheSecurityGroupName = &v
10099	return s
10100}
10101
10102type DeleteCacheSecurityGroupOutput struct {
10103	_ struct{} `type:"structure"`
10104}
10105
10106// String returns the string representation
10107func (s DeleteCacheSecurityGroupOutput) String() string {
10108	return awsutil.Prettify(s)
10109}
10110
10111// GoString returns the string representation
10112func (s DeleteCacheSecurityGroupOutput) GoString() string {
10113	return s.String()
10114}
10115
10116// Represents the input of a DeleteCacheSubnetGroup operation.
10117type DeleteCacheSubnetGroupInput struct {
10118	_ struct{} `type:"structure"`
10119
10120	// The name of the cache subnet group to delete.
10121	//
10122	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
10123	//
10124	// CacheSubnetGroupName is a required field
10125	CacheSubnetGroupName *string `type:"string" required:"true"`
10126}
10127
10128// String returns the string representation
10129func (s DeleteCacheSubnetGroupInput) String() string {
10130	return awsutil.Prettify(s)
10131}
10132
10133// GoString returns the string representation
10134func (s DeleteCacheSubnetGroupInput) GoString() string {
10135	return s.String()
10136}
10137
10138// Validate inspects the fields of the type to determine if they are valid.
10139func (s *DeleteCacheSubnetGroupInput) Validate() error {
10140	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheSubnetGroupInput"}
10141	if s.CacheSubnetGroupName == nil {
10142		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
10143	}
10144
10145	if invalidParams.Len() > 0 {
10146		return invalidParams
10147	}
10148	return nil
10149}
10150
10151// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
10152func (s *DeleteCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *DeleteCacheSubnetGroupInput {
10153	s.CacheSubnetGroupName = &v
10154	return s
10155}
10156
10157type DeleteCacheSubnetGroupOutput struct {
10158	_ struct{} `type:"structure"`
10159}
10160
10161// String returns the string representation
10162func (s DeleteCacheSubnetGroupOutput) String() string {
10163	return awsutil.Prettify(s)
10164}
10165
10166// GoString returns the string representation
10167func (s DeleteCacheSubnetGroupOutput) GoString() string {
10168	return s.String()
10169}
10170
10171type DeleteGlobalReplicationGroupInput struct {
10172	_ struct{} `type:"structure"`
10173
10174	// The name of the Global Datastore
10175	//
10176	// GlobalReplicationGroupId is a required field
10177	GlobalReplicationGroupId *string `type:"string" required:"true"`
10178
10179	// The primary replication group is retained as a standalone replication group.
10180	//
10181	// RetainPrimaryReplicationGroup is a required field
10182	RetainPrimaryReplicationGroup *bool `type:"boolean" required:"true"`
10183}
10184
10185// String returns the string representation
10186func (s DeleteGlobalReplicationGroupInput) String() string {
10187	return awsutil.Prettify(s)
10188}
10189
10190// GoString returns the string representation
10191func (s DeleteGlobalReplicationGroupInput) GoString() string {
10192	return s.String()
10193}
10194
10195// Validate inspects the fields of the type to determine if they are valid.
10196func (s *DeleteGlobalReplicationGroupInput) Validate() error {
10197	invalidParams := request.ErrInvalidParams{Context: "DeleteGlobalReplicationGroupInput"}
10198	if s.GlobalReplicationGroupId == nil {
10199		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
10200	}
10201	if s.RetainPrimaryReplicationGroup == nil {
10202		invalidParams.Add(request.NewErrParamRequired("RetainPrimaryReplicationGroup"))
10203	}
10204
10205	if invalidParams.Len() > 0 {
10206		return invalidParams
10207	}
10208	return nil
10209}
10210
10211// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
10212func (s *DeleteGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *DeleteGlobalReplicationGroupInput {
10213	s.GlobalReplicationGroupId = &v
10214	return s
10215}
10216
10217// SetRetainPrimaryReplicationGroup sets the RetainPrimaryReplicationGroup field's value.
10218func (s *DeleteGlobalReplicationGroupInput) SetRetainPrimaryReplicationGroup(v bool) *DeleteGlobalReplicationGroupInput {
10219	s.RetainPrimaryReplicationGroup = &v
10220	return s
10221}
10222
10223type DeleteGlobalReplicationGroupOutput struct {
10224	_ struct{} `type:"structure"`
10225
10226	// Consists of a primary cluster that accepts writes and an associated secondary
10227	// cluster that resides in a different AWS region. The secondary cluster accepts
10228	// only reads. The primary cluster automatically replicates updates to the secondary
10229	// cluster.
10230	//
10231	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
10232	//    Datastore, which is what you use to associate a secondary cluster.
10233	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
10234}
10235
10236// String returns the string representation
10237func (s DeleteGlobalReplicationGroupOutput) String() string {
10238	return awsutil.Prettify(s)
10239}
10240
10241// GoString returns the string representation
10242func (s DeleteGlobalReplicationGroupOutput) GoString() string {
10243	return s.String()
10244}
10245
10246// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
10247func (s *DeleteGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *DeleteGlobalReplicationGroupOutput {
10248	s.GlobalReplicationGroup = v
10249	return s
10250}
10251
10252// Represents the input of a DeleteReplicationGroup operation.
10253type DeleteReplicationGroupInput struct {
10254	_ struct{} `type:"structure"`
10255
10256	// The name of a final node group (shard) snapshot. ElastiCache creates the
10257	// snapshot from the primary node in the cluster, rather than one of the replicas;
10258	// this is to ensure that it captures the freshest data. After the final snapshot
10259	// is taken, the replication group is immediately deleted.
10260	FinalSnapshotIdentifier *string `type:"string"`
10261
10262	// The identifier for the cluster to be deleted. This parameter is not case
10263	// sensitive.
10264	//
10265	// ReplicationGroupId is a required field
10266	ReplicationGroupId *string `type:"string" required:"true"`
10267
10268	// If set to true, all of the read replicas are deleted, but the primary node
10269	// is retained.
10270	RetainPrimaryCluster *bool `type:"boolean"`
10271}
10272
10273// String returns the string representation
10274func (s DeleteReplicationGroupInput) String() string {
10275	return awsutil.Prettify(s)
10276}
10277
10278// GoString returns the string representation
10279func (s DeleteReplicationGroupInput) GoString() string {
10280	return s.String()
10281}
10282
10283// Validate inspects the fields of the type to determine if they are valid.
10284func (s *DeleteReplicationGroupInput) Validate() error {
10285	invalidParams := request.ErrInvalidParams{Context: "DeleteReplicationGroupInput"}
10286	if s.ReplicationGroupId == nil {
10287		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
10288	}
10289
10290	if invalidParams.Len() > 0 {
10291		return invalidParams
10292	}
10293	return nil
10294}
10295
10296// SetFinalSnapshotIdentifier sets the FinalSnapshotIdentifier field's value.
10297func (s *DeleteReplicationGroupInput) SetFinalSnapshotIdentifier(v string) *DeleteReplicationGroupInput {
10298	s.FinalSnapshotIdentifier = &v
10299	return s
10300}
10301
10302// SetReplicationGroupId sets the ReplicationGroupId field's value.
10303func (s *DeleteReplicationGroupInput) SetReplicationGroupId(v string) *DeleteReplicationGroupInput {
10304	s.ReplicationGroupId = &v
10305	return s
10306}
10307
10308// SetRetainPrimaryCluster sets the RetainPrimaryCluster field's value.
10309func (s *DeleteReplicationGroupInput) SetRetainPrimaryCluster(v bool) *DeleteReplicationGroupInput {
10310	s.RetainPrimaryCluster = &v
10311	return s
10312}
10313
10314type DeleteReplicationGroupOutput struct {
10315	_ struct{} `type:"structure"`
10316
10317	// Contains all of the attributes of a specific Redis replication group.
10318	ReplicationGroup *ReplicationGroup `type:"structure"`
10319}
10320
10321// String returns the string representation
10322func (s DeleteReplicationGroupOutput) String() string {
10323	return awsutil.Prettify(s)
10324}
10325
10326// GoString returns the string representation
10327func (s DeleteReplicationGroupOutput) GoString() string {
10328	return s.String()
10329}
10330
10331// SetReplicationGroup sets the ReplicationGroup field's value.
10332func (s *DeleteReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *DeleteReplicationGroupOutput {
10333	s.ReplicationGroup = v
10334	return s
10335}
10336
10337// Represents the input of a DeleteSnapshot operation.
10338type DeleteSnapshotInput struct {
10339	_ struct{} `type:"structure"`
10340
10341	// The name of the snapshot to be deleted.
10342	//
10343	// SnapshotName is a required field
10344	SnapshotName *string `type:"string" required:"true"`
10345}
10346
10347// String returns the string representation
10348func (s DeleteSnapshotInput) String() string {
10349	return awsutil.Prettify(s)
10350}
10351
10352// GoString returns the string representation
10353func (s DeleteSnapshotInput) GoString() string {
10354	return s.String()
10355}
10356
10357// Validate inspects the fields of the type to determine if they are valid.
10358func (s *DeleteSnapshotInput) Validate() error {
10359	invalidParams := request.ErrInvalidParams{Context: "DeleteSnapshotInput"}
10360	if s.SnapshotName == nil {
10361		invalidParams.Add(request.NewErrParamRequired("SnapshotName"))
10362	}
10363
10364	if invalidParams.Len() > 0 {
10365		return invalidParams
10366	}
10367	return nil
10368}
10369
10370// SetSnapshotName sets the SnapshotName field's value.
10371func (s *DeleteSnapshotInput) SetSnapshotName(v string) *DeleteSnapshotInput {
10372	s.SnapshotName = &v
10373	return s
10374}
10375
10376type DeleteSnapshotOutput struct {
10377	_ struct{} `type:"structure"`
10378
10379	// Represents a copy of an entire Redis cluster as of the time when the snapshot
10380	// was taken.
10381	Snapshot *Snapshot `type:"structure"`
10382}
10383
10384// String returns the string representation
10385func (s DeleteSnapshotOutput) String() string {
10386	return awsutil.Prettify(s)
10387}
10388
10389// GoString returns the string representation
10390func (s DeleteSnapshotOutput) GoString() string {
10391	return s.String()
10392}
10393
10394// SetSnapshot sets the Snapshot field's value.
10395func (s *DeleteSnapshotOutput) SetSnapshot(v *Snapshot) *DeleteSnapshotOutput {
10396	s.Snapshot = v
10397	return s
10398}
10399
10400// Represents the input of a DescribeCacheClusters operation.
10401type DescribeCacheClustersInput struct {
10402	_ struct{} `type:"structure"`
10403
10404	// The user-supplied cluster identifier. If this parameter is specified, only
10405	// information about that specific cluster is returned. This parameter isn't
10406	// case sensitive.
10407	CacheClusterId *string `type:"string"`
10408
10409	// An optional marker returned from a prior request. Use this marker for pagination
10410	// of results from this operation. If this parameter is specified, the response
10411	// includes only records beyond the marker, up to the value specified by MaxRecords.
10412	Marker *string `type:"string"`
10413
10414	// The maximum number of records to include in the response. If more records
10415	// exist than the specified MaxRecords value, a marker is included in the response
10416	// so that the remaining results can be retrieved.
10417	//
10418	// Default: 100
10419	//
10420	// Constraints: minimum 20; maximum 100.
10421	MaxRecords *int64 `type:"integer"`
10422
10423	// An optional flag that can be included in the DescribeCacheCluster request
10424	// to show only nodes (API/CLI: clusters) that are not members of a replication
10425	// group. In practice, this mean Memcached and single node Redis clusters.
10426	ShowCacheClustersNotInReplicationGroups *bool `type:"boolean"`
10427
10428	// An optional flag that can be included in the DescribeCacheCluster request
10429	// to retrieve information about the individual cache nodes.
10430	ShowCacheNodeInfo *bool `type:"boolean"`
10431}
10432
10433// String returns the string representation
10434func (s DescribeCacheClustersInput) String() string {
10435	return awsutil.Prettify(s)
10436}
10437
10438// GoString returns the string representation
10439func (s DescribeCacheClustersInput) GoString() string {
10440	return s.String()
10441}
10442
10443// SetCacheClusterId sets the CacheClusterId field's value.
10444func (s *DescribeCacheClustersInput) SetCacheClusterId(v string) *DescribeCacheClustersInput {
10445	s.CacheClusterId = &v
10446	return s
10447}
10448
10449// SetMarker sets the Marker field's value.
10450func (s *DescribeCacheClustersInput) SetMarker(v string) *DescribeCacheClustersInput {
10451	s.Marker = &v
10452	return s
10453}
10454
10455// SetMaxRecords sets the MaxRecords field's value.
10456func (s *DescribeCacheClustersInput) SetMaxRecords(v int64) *DescribeCacheClustersInput {
10457	s.MaxRecords = &v
10458	return s
10459}
10460
10461// SetShowCacheClustersNotInReplicationGroups sets the ShowCacheClustersNotInReplicationGroups field's value.
10462func (s *DescribeCacheClustersInput) SetShowCacheClustersNotInReplicationGroups(v bool) *DescribeCacheClustersInput {
10463	s.ShowCacheClustersNotInReplicationGroups = &v
10464	return s
10465}
10466
10467// SetShowCacheNodeInfo sets the ShowCacheNodeInfo field's value.
10468func (s *DescribeCacheClustersInput) SetShowCacheNodeInfo(v bool) *DescribeCacheClustersInput {
10469	s.ShowCacheNodeInfo = &v
10470	return s
10471}
10472
10473// Represents the output of a DescribeCacheClusters operation.
10474type DescribeCacheClustersOutput struct {
10475	_ struct{} `type:"structure"`
10476
10477	// A list of clusters. Each item in the list contains detailed information about
10478	// one cluster.
10479	CacheClusters []*CacheCluster `locationNameList:"CacheCluster" type:"list"`
10480
10481	// Provides an identifier to allow retrieval of paginated results.
10482	Marker *string `type:"string"`
10483}
10484
10485// String returns the string representation
10486func (s DescribeCacheClustersOutput) String() string {
10487	return awsutil.Prettify(s)
10488}
10489
10490// GoString returns the string representation
10491func (s DescribeCacheClustersOutput) GoString() string {
10492	return s.String()
10493}
10494
10495// SetCacheClusters sets the CacheClusters field's value.
10496func (s *DescribeCacheClustersOutput) SetCacheClusters(v []*CacheCluster) *DescribeCacheClustersOutput {
10497	s.CacheClusters = v
10498	return s
10499}
10500
10501// SetMarker sets the Marker field's value.
10502func (s *DescribeCacheClustersOutput) SetMarker(v string) *DescribeCacheClustersOutput {
10503	s.Marker = &v
10504	return s
10505}
10506
10507// Represents the input of a DescribeCacheEngineVersions operation.
10508type DescribeCacheEngineVersionsInput struct {
10509	_ struct{} `type:"structure"`
10510
10511	// The name of a specific cache parameter group family to return details for.
10512	//
10513	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
10514	// | redis4.0 | redis5.0 |
10515	//
10516	// Constraints:
10517	//
10518	//    * Must be 1 to 255 alphanumeric characters
10519	//
10520	//    * First character must be a letter
10521	//
10522	//    * Cannot end with a hyphen or contain two consecutive hyphens
10523	CacheParameterGroupFamily *string `type:"string"`
10524
10525	// If true, specifies that only the default version of the specified engine
10526	// or engine and major version combination is to be returned.
10527	DefaultOnly *bool `type:"boolean"`
10528
10529	// The cache engine to return. Valid values: memcached | redis
10530	Engine *string `type:"string"`
10531
10532	// The cache engine version to return.
10533	//
10534	// Example: 1.4.14
10535	EngineVersion *string `type:"string"`
10536
10537	// An optional marker returned from a prior request. Use this marker for pagination
10538	// of results from this operation. If this parameter is specified, the response
10539	// includes only records beyond the marker, up to the value specified by MaxRecords.
10540	Marker *string `type:"string"`
10541
10542	// The maximum number of records to include in the response. If more records
10543	// exist than the specified MaxRecords value, a marker is included in the response
10544	// so that the remaining results can be retrieved.
10545	//
10546	// Default: 100
10547	//
10548	// Constraints: minimum 20; maximum 100.
10549	MaxRecords *int64 `type:"integer"`
10550}
10551
10552// String returns the string representation
10553func (s DescribeCacheEngineVersionsInput) String() string {
10554	return awsutil.Prettify(s)
10555}
10556
10557// GoString returns the string representation
10558func (s DescribeCacheEngineVersionsInput) GoString() string {
10559	return s.String()
10560}
10561
10562// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
10563func (s *DescribeCacheEngineVersionsInput) SetCacheParameterGroupFamily(v string) *DescribeCacheEngineVersionsInput {
10564	s.CacheParameterGroupFamily = &v
10565	return s
10566}
10567
10568// SetDefaultOnly sets the DefaultOnly field's value.
10569func (s *DescribeCacheEngineVersionsInput) SetDefaultOnly(v bool) *DescribeCacheEngineVersionsInput {
10570	s.DefaultOnly = &v
10571	return s
10572}
10573
10574// SetEngine sets the Engine field's value.
10575func (s *DescribeCacheEngineVersionsInput) SetEngine(v string) *DescribeCacheEngineVersionsInput {
10576	s.Engine = &v
10577	return s
10578}
10579
10580// SetEngineVersion sets the EngineVersion field's value.
10581func (s *DescribeCacheEngineVersionsInput) SetEngineVersion(v string) *DescribeCacheEngineVersionsInput {
10582	s.EngineVersion = &v
10583	return s
10584}
10585
10586// SetMarker sets the Marker field's value.
10587func (s *DescribeCacheEngineVersionsInput) SetMarker(v string) *DescribeCacheEngineVersionsInput {
10588	s.Marker = &v
10589	return s
10590}
10591
10592// SetMaxRecords sets the MaxRecords field's value.
10593func (s *DescribeCacheEngineVersionsInput) SetMaxRecords(v int64) *DescribeCacheEngineVersionsInput {
10594	s.MaxRecords = &v
10595	return s
10596}
10597
10598// Represents the output of a DescribeCacheEngineVersions operation.
10599type DescribeCacheEngineVersionsOutput struct {
10600	_ struct{} `type:"structure"`
10601
10602	// A list of cache engine version details. Each element in the list contains
10603	// detailed information about one cache engine version.
10604	CacheEngineVersions []*CacheEngineVersion `locationNameList:"CacheEngineVersion" type:"list"`
10605
10606	// Provides an identifier to allow retrieval of paginated results.
10607	Marker *string `type:"string"`
10608}
10609
10610// String returns the string representation
10611func (s DescribeCacheEngineVersionsOutput) String() string {
10612	return awsutil.Prettify(s)
10613}
10614
10615// GoString returns the string representation
10616func (s DescribeCacheEngineVersionsOutput) GoString() string {
10617	return s.String()
10618}
10619
10620// SetCacheEngineVersions sets the CacheEngineVersions field's value.
10621func (s *DescribeCacheEngineVersionsOutput) SetCacheEngineVersions(v []*CacheEngineVersion) *DescribeCacheEngineVersionsOutput {
10622	s.CacheEngineVersions = v
10623	return s
10624}
10625
10626// SetMarker sets the Marker field's value.
10627func (s *DescribeCacheEngineVersionsOutput) SetMarker(v string) *DescribeCacheEngineVersionsOutput {
10628	s.Marker = &v
10629	return s
10630}
10631
10632// Represents the input of a DescribeCacheParameterGroups operation.
10633type DescribeCacheParameterGroupsInput struct {
10634	_ struct{} `type:"structure"`
10635
10636	// The name of a specific cache parameter group to return details for.
10637	CacheParameterGroupName *string `type:"string"`
10638
10639	// An optional marker returned from a prior request. Use this marker for pagination
10640	// of results from this operation. If this parameter is specified, the response
10641	// includes only records beyond the marker, up to the value specified by MaxRecords.
10642	Marker *string `type:"string"`
10643
10644	// The maximum number of records to include in the response. If more records
10645	// exist than the specified MaxRecords value, a marker is included in the response
10646	// so that the remaining results can be retrieved.
10647	//
10648	// Default: 100
10649	//
10650	// Constraints: minimum 20; maximum 100.
10651	MaxRecords *int64 `type:"integer"`
10652}
10653
10654// String returns the string representation
10655func (s DescribeCacheParameterGroupsInput) String() string {
10656	return awsutil.Prettify(s)
10657}
10658
10659// GoString returns the string representation
10660func (s DescribeCacheParameterGroupsInput) GoString() string {
10661	return s.String()
10662}
10663
10664// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
10665func (s *DescribeCacheParameterGroupsInput) SetCacheParameterGroupName(v string) *DescribeCacheParameterGroupsInput {
10666	s.CacheParameterGroupName = &v
10667	return s
10668}
10669
10670// SetMarker sets the Marker field's value.
10671func (s *DescribeCacheParameterGroupsInput) SetMarker(v string) *DescribeCacheParameterGroupsInput {
10672	s.Marker = &v
10673	return s
10674}
10675
10676// SetMaxRecords sets the MaxRecords field's value.
10677func (s *DescribeCacheParameterGroupsInput) SetMaxRecords(v int64) *DescribeCacheParameterGroupsInput {
10678	s.MaxRecords = &v
10679	return s
10680}
10681
10682// Represents the output of a DescribeCacheParameterGroups operation.
10683type DescribeCacheParameterGroupsOutput struct {
10684	_ struct{} `type:"structure"`
10685
10686	// A list of cache parameter groups. Each element in the list contains detailed
10687	// information about one cache parameter group.
10688	CacheParameterGroups []*CacheParameterGroup `locationNameList:"CacheParameterGroup" type:"list"`
10689
10690	// Provides an identifier to allow retrieval of paginated results.
10691	Marker *string `type:"string"`
10692}
10693
10694// String returns the string representation
10695func (s DescribeCacheParameterGroupsOutput) String() string {
10696	return awsutil.Prettify(s)
10697}
10698
10699// GoString returns the string representation
10700func (s DescribeCacheParameterGroupsOutput) GoString() string {
10701	return s.String()
10702}
10703
10704// SetCacheParameterGroups sets the CacheParameterGroups field's value.
10705func (s *DescribeCacheParameterGroupsOutput) SetCacheParameterGroups(v []*CacheParameterGroup) *DescribeCacheParameterGroupsOutput {
10706	s.CacheParameterGroups = v
10707	return s
10708}
10709
10710// SetMarker sets the Marker field's value.
10711func (s *DescribeCacheParameterGroupsOutput) SetMarker(v string) *DescribeCacheParameterGroupsOutput {
10712	s.Marker = &v
10713	return s
10714}
10715
10716// Represents the input of a DescribeCacheParameters operation.
10717type DescribeCacheParametersInput struct {
10718	_ struct{} `type:"structure"`
10719
10720	// The name of a specific cache parameter group to return details for.
10721	//
10722	// CacheParameterGroupName is a required field
10723	CacheParameterGroupName *string `type:"string" required:"true"`
10724
10725	// An optional marker returned from a prior request. Use this marker for pagination
10726	// of results from this operation. If this parameter is specified, the response
10727	// includes only records beyond the marker, up to the value specified by MaxRecords.
10728	Marker *string `type:"string"`
10729
10730	// The maximum number of records to include in the response. If more records
10731	// exist than the specified MaxRecords value, a marker is included in the response
10732	// so that the remaining results can be retrieved.
10733	//
10734	// Default: 100
10735	//
10736	// Constraints: minimum 20; maximum 100.
10737	MaxRecords *int64 `type:"integer"`
10738
10739	// The parameter types to return.
10740	//
10741	// Valid values: user | system | engine-default
10742	Source *string `type:"string"`
10743}
10744
10745// String returns the string representation
10746func (s DescribeCacheParametersInput) String() string {
10747	return awsutil.Prettify(s)
10748}
10749
10750// GoString returns the string representation
10751func (s DescribeCacheParametersInput) GoString() string {
10752	return s.String()
10753}
10754
10755// Validate inspects the fields of the type to determine if they are valid.
10756func (s *DescribeCacheParametersInput) Validate() error {
10757	invalidParams := request.ErrInvalidParams{Context: "DescribeCacheParametersInput"}
10758	if s.CacheParameterGroupName == nil {
10759		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
10760	}
10761
10762	if invalidParams.Len() > 0 {
10763		return invalidParams
10764	}
10765	return nil
10766}
10767
10768// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
10769func (s *DescribeCacheParametersInput) SetCacheParameterGroupName(v string) *DescribeCacheParametersInput {
10770	s.CacheParameterGroupName = &v
10771	return s
10772}
10773
10774// SetMarker sets the Marker field's value.
10775func (s *DescribeCacheParametersInput) SetMarker(v string) *DescribeCacheParametersInput {
10776	s.Marker = &v
10777	return s
10778}
10779
10780// SetMaxRecords sets the MaxRecords field's value.
10781func (s *DescribeCacheParametersInput) SetMaxRecords(v int64) *DescribeCacheParametersInput {
10782	s.MaxRecords = &v
10783	return s
10784}
10785
10786// SetSource sets the Source field's value.
10787func (s *DescribeCacheParametersInput) SetSource(v string) *DescribeCacheParametersInput {
10788	s.Source = &v
10789	return s
10790}
10791
10792// Represents the output of a DescribeCacheParameters operation.
10793type DescribeCacheParametersOutput struct {
10794	_ struct{} `type:"structure"`
10795
10796	// A list of parameters specific to a particular cache node type. Each element
10797	// in the list contains detailed information about one parameter.
10798	CacheNodeTypeSpecificParameters []*CacheNodeTypeSpecificParameter `locationNameList:"CacheNodeTypeSpecificParameter" type:"list"`
10799
10800	// Provides an identifier to allow retrieval of paginated results.
10801	Marker *string `type:"string"`
10802
10803	// A list of Parameter instances.
10804	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`
10805}
10806
10807// String returns the string representation
10808func (s DescribeCacheParametersOutput) String() string {
10809	return awsutil.Prettify(s)
10810}
10811
10812// GoString returns the string representation
10813func (s DescribeCacheParametersOutput) GoString() string {
10814	return s.String()
10815}
10816
10817// SetCacheNodeTypeSpecificParameters sets the CacheNodeTypeSpecificParameters field's value.
10818func (s *DescribeCacheParametersOutput) SetCacheNodeTypeSpecificParameters(v []*CacheNodeTypeSpecificParameter) *DescribeCacheParametersOutput {
10819	s.CacheNodeTypeSpecificParameters = v
10820	return s
10821}
10822
10823// SetMarker sets the Marker field's value.
10824func (s *DescribeCacheParametersOutput) SetMarker(v string) *DescribeCacheParametersOutput {
10825	s.Marker = &v
10826	return s
10827}
10828
10829// SetParameters sets the Parameters field's value.
10830func (s *DescribeCacheParametersOutput) SetParameters(v []*Parameter) *DescribeCacheParametersOutput {
10831	s.Parameters = v
10832	return s
10833}
10834
10835// Represents the input of a DescribeCacheSecurityGroups operation.
10836type DescribeCacheSecurityGroupsInput struct {
10837	_ struct{} `type:"structure"`
10838
10839	// The name of the cache security group to return details for.
10840	CacheSecurityGroupName *string `type:"string"`
10841
10842	// An optional marker returned from a prior request. Use this marker for pagination
10843	// of results from this operation. If this parameter is specified, the response
10844	// includes only records beyond the marker, up to the value specified by MaxRecords.
10845	Marker *string `type:"string"`
10846
10847	// The maximum number of records to include in the response. If more records
10848	// exist than the specified MaxRecords value, a marker is included in the response
10849	// so that the remaining results can be retrieved.
10850	//
10851	// Default: 100
10852	//
10853	// Constraints: minimum 20; maximum 100.
10854	MaxRecords *int64 `type:"integer"`
10855}
10856
10857// String returns the string representation
10858func (s DescribeCacheSecurityGroupsInput) String() string {
10859	return awsutil.Prettify(s)
10860}
10861
10862// GoString returns the string representation
10863func (s DescribeCacheSecurityGroupsInput) GoString() string {
10864	return s.String()
10865}
10866
10867// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
10868func (s *DescribeCacheSecurityGroupsInput) SetCacheSecurityGroupName(v string) *DescribeCacheSecurityGroupsInput {
10869	s.CacheSecurityGroupName = &v
10870	return s
10871}
10872
10873// SetMarker sets the Marker field's value.
10874func (s *DescribeCacheSecurityGroupsInput) SetMarker(v string) *DescribeCacheSecurityGroupsInput {
10875	s.Marker = &v
10876	return s
10877}
10878
10879// SetMaxRecords sets the MaxRecords field's value.
10880func (s *DescribeCacheSecurityGroupsInput) SetMaxRecords(v int64) *DescribeCacheSecurityGroupsInput {
10881	s.MaxRecords = &v
10882	return s
10883}
10884
10885// Represents the output of a DescribeCacheSecurityGroups operation.
10886type DescribeCacheSecurityGroupsOutput struct {
10887	_ struct{} `type:"structure"`
10888
10889	// A list of cache security groups. Each element in the list contains detailed
10890	// information about one group.
10891	CacheSecurityGroups []*CacheSecurityGroup `locationNameList:"CacheSecurityGroup" type:"list"`
10892
10893	// Provides an identifier to allow retrieval of paginated results.
10894	Marker *string `type:"string"`
10895}
10896
10897// String returns the string representation
10898func (s DescribeCacheSecurityGroupsOutput) String() string {
10899	return awsutil.Prettify(s)
10900}
10901
10902// GoString returns the string representation
10903func (s DescribeCacheSecurityGroupsOutput) GoString() string {
10904	return s.String()
10905}
10906
10907// SetCacheSecurityGroups sets the CacheSecurityGroups field's value.
10908func (s *DescribeCacheSecurityGroupsOutput) SetCacheSecurityGroups(v []*CacheSecurityGroup) *DescribeCacheSecurityGroupsOutput {
10909	s.CacheSecurityGroups = v
10910	return s
10911}
10912
10913// SetMarker sets the Marker field's value.
10914func (s *DescribeCacheSecurityGroupsOutput) SetMarker(v string) *DescribeCacheSecurityGroupsOutput {
10915	s.Marker = &v
10916	return s
10917}
10918
10919// Represents the input of a DescribeCacheSubnetGroups operation.
10920type DescribeCacheSubnetGroupsInput struct {
10921	_ struct{} `type:"structure"`
10922
10923	// The name of the cache subnet group to return details for.
10924	CacheSubnetGroupName *string `type:"string"`
10925
10926	// An optional marker returned from a prior request. Use this marker for pagination
10927	// of results from this operation. If this parameter is specified, the response
10928	// includes only records beyond the marker, up to the value specified by MaxRecords.
10929	Marker *string `type:"string"`
10930
10931	// The maximum number of records to include in the response. If more records
10932	// exist than the specified MaxRecords value, a marker is included in the response
10933	// so that the remaining results can be retrieved.
10934	//
10935	// Default: 100
10936	//
10937	// Constraints: minimum 20; maximum 100.
10938	MaxRecords *int64 `type:"integer"`
10939}
10940
10941// String returns the string representation
10942func (s DescribeCacheSubnetGroupsInput) String() string {
10943	return awsutil.Prettify(s)
10944}
10945
10946// GoString returns the string representation
10947func (s DescribeCacheSubnetGroupsInput) GoString() string {
10948	return s.String()
10949}
10950
10951// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
10952func (s *DescribeCacheSubnetGroupsInput) SetCacheSubnetGroupName(v string) *DescribeCacheSubnetGroupsInput {
10953	s.CacheSubnetGroupName = &v
10954	return s
10955}
10956
10957// SetMarker sets the Marker field's value.
10958func (s *DescribeCacheSubnetGroupsInput) SetMarker(v string) *DescribeCacheSubnetGroupsInput {
10959	s.Marker = &v
10960	return s
10961}
10962
10963// SetMaxRecords sets the MaxRecords field's value.
10964func (s *DescribeCacheSubnetGroupsInput) SetMaxRecords(v int64) *DescribeCacheSubnetGroupsInput {
10965	s.MaxRecords = &v
10966	return s
10967}
10968
10969// Represents the output of a DescribeCacheSubnetGroups operation.
10970type DescribeCacheSubnetGroupsOutput struct {
10971	_ struct{} `type:"structure"`
10972
10973	// A list of cache subnet groups. Each element in the list contains detailed
10974	// information about one group.
10975	CacheSubnetGroups []*CacheSubnetGroup `locationNameList:"CacheSubnetGroup" type:"list"`
10976
10977	// Provides an identifier to allow retrieval of paginated results.
10978	Marker *string `type:"string"`
10979}
10980
10981// String returns the string representation
10982func (s DescribeCacheSubnetGroupsOutput) String() string {
10983	return awsutil.Prettify(s)
10984}
10985
10986// GoString returns the string representation
10987func (s DescribeCacheSubnetGroupsOutput) GoString() string {
10988	return s.String()
10989}
10990
10991// SetCacheSubnetGroups sets the CacheSubnetGroups field's value.
10992func (s *DescribeCacheSubnetGroupsOutput) SetCacheSubnetGroups(v []*CacheSubnetGroup) *DescribeCacheSubnetGroupsOutput {
10993	s.CacheSubnetGroups = v
10994	return s
10995}
10996
10997// SetMarker sets the Marker field's value.
10998func (s *DescribeCacheSubnetGroupsOutput) SetMarker(v string) *DescribeCacheSubnetGroupsOutput {
10999	s.Marker = &v
11000	return s
11001}
11002
11003// Represents the input of a DescribeEngineDefaultParameters operation.
11004type DescribeEngineDefaultParametersInput struct {
11005	_ struct{} `type:"structure"`
11006
11007	// The name of the cache parameter group family.
11008	//
11009	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
11010	// | redis4.0 | redis5.0 |
11011	//
11012	// CacheParameterGroupFamily is a required field
11013	CacheParameterGroupFamily *string `type:"string" required:"true"`
11014
11015	// An optional marker returned from a prior request. Use this marker for pagination
11016	// of results from this operation. If this parameter is specified, the response
11017	// includes only records beyond the marker, up to the value specified by MaxRecords.
11018	Marker *string `type:"string"`
11019
11020	// The maximum number of records to include in the response. If more records
11021	// exist than the specified MaxRecords value, a marker is included in the response
11022	// so that the remaining results can be retrieved.
11023	//
11024	// Default: 100
11025	//
11026	// Constraints: minimum 20; maximum 100.
11027	MaxRecords *int64 `type:"integer"`
11028}
11029
11030// String returns the string representation
11031func (s DescribeEngineDefaultParametersInput) String() string {
11032	return awsutil.Prettify(s)
11033}
11034
11035// GoString returns the string representation
11036func (s DescribeEngineDefaultParametersInput) GoString() string {
11037	return s.String()
11038}
11039
11040// Validate inspects the fields of the type to determine if they are valid.
11041func (s *DescribeEngineDefaultParametersInput) Validate() error {
11042	invalidParams := request.ErrInvalidParams{Context: "DescribeEngineDefaultParametersInput"}
11043	if s.CacheParameterGroupFamily == nil {
11044		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupFamily"))
11045	}
11046
11047	if invalidParams.Len() > 0 {
11048		return invalidParams
11049	}
11050	return nil
11051}
11052
11053// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
11054func (s *DescribeEngineDefaultParametersInput) SetCacheParameterGroupFamily(v string) *DescribeEngineDefaultParametersInput {
11055	s.CacheParameterGroupFamily = &v
11056	return s
11057}
11058
11059// SetMarker sets the Marker field's value.
11060func (s *DescribeEngineDefaultParametersInput) SetMarker(v string) *DescribeEngineDefaultParametersInput {
11061	s.Marker = &v
11062	return s
11063}
11064
11065// SetMaxRecords sets the MaxRecords field's value.
11066func (s *DescribeEngineDefaultParametersInput) SetMaxRecords(v int64) *DescribeEngineDefaultParametersInput {
11067	s.MaxRecords = &v
11068	return s
11069}
11070
11071type DescribeEngineDefaultParametersOutput struct {
11072	_ struct{} `type:"structure"`
11073
11074	// Represents the output of a DescribeEngineDefaultParameters operation.
11075	EngineDefaults *EngineDefaults `type:"structure"`
11076}
11077
11078// String returns the string representation
11079func (s DescribeEngineDefaultParametersOutput) String() string {
11080	return awsutil.Prettify(s)
11081}
11082
11083// GoString returns the string representation
11084func (s DescribeEngineDefaultParametersOutput) GoString() string {
11085	return s.String()
11086}
11087
11088// SetEngineDefaults sets the EngineDefaults field's value.
11089func (s *DescribeEngineDefaultParametersOutput) SetEngineDefaults(v *EngineDefaults) *DescribeEngineDefaultParametersOutput {
11090	s.EngineDefaults = v
11091	return s
11092}
11093
11094// Represents the input of a DescribeEvents operation.
11095type DescribeEventsInput struct {
11096	_ struct{} `type:"structure"`
11097
11098	// The number of minutes worth of events to retrieve.
11099	Duration *int64 `type:"integer"`
11100
11101	// The end of the time interval for which to retrieve events, specified in ISO
11102	// 8601 format.
11103	//
11104	// Example: 2017-03-30T07:03:49.555Z
11105	EndTime *time.Time `type:"timestamp"`
11106
11107	// An optional marker returned from a prior request. Use this marker for pagination
11108	// of results from this operation. If this parameter is specified, the response
11109	// includes only records beyond the marker, up to the value specified by MaxRecords.
11110	Marker *string `type:"string"`
11111
11112	// The maximum number of records to include in the response. If more records
11113	// exist than the specified MaxRecords value, a marker is included in the response
11114	// so that the remaining results can be retrieved.
11115	//
11116	// Default: 100
11117	//
11118	// Constraints: minimum 20; maximum 100.
11119	MaxRecords *int64 `type:"integer"`
11120
11121	// The identifier of the event source for which events are returned. If not
11122	// specified, all sources are included in the response.
11123	SourceIdentifier *string `type:"string"`
11124
11125	// The event source to retrieve events for. If no value is specified, all events
11126	// are returned.
11127	SourceType *string `type:"string" enum:"SourceType"`
11128
11129	// The beginning of the time interval to retrieve events for, specified in ISO
11130	// 8601 format.
11131	//
11132	// Example: 2017-03-30T07:03:49.555Z
11133	StartTime *time.Time `type:"timestamp"`
11134}
11135
11136// String returns the string representation
11137func (s DescribeEventsInput) String() string {
11138	return awsutil.Prettify(s)
11139}
11140
11141// GoString returns the string representation
11142func (s DescribeEventsInput) GoString() string {
11143	return s.String()
11144}
11145
11146// SetDuration sets the Duration field's value.
11147func (s *DescribeEventsInput) SetDuration(v int64) *DescribeEventsInput {
11148	s.Duration = &v
11149	return s
11150}
11151
11152// SetEndTime sets the EndTime field's value.
11153func (s *DescribeEventsInput) SetEndTime(v time.Time) *DescribeEventsInput {
11154	s.EndTime = &v
11155	return s
11156}
11157
11158// SetMarker sets the Marker field's value.
11159func (s *DescribeEventsInput) SetMarker(v string) *DescribeEventsInput {
11160	s.Marker = &v
11161	return s
11162}
11163
11164// SetMaxRecords sets the MaxRecords field's value.
11165func (s *DescribeEventsInput) SetMaxRecords(v int64) *DescribeEventsInput {
11166	s.MaxRecords = &v
11167	return s
11168}
11169
11170// SetSourceIdentifier sets the SourceIdentifier field's value.
11171func (s *DescribeEventsInput) SetSourceIdentifier(v string) *DescribeEventsInput {
11172	s.SourceIdentifier = &v
11173	return s
11174}
11175
11176// SetSourceType sets the SourceType field's value.
11177func (s *DescribeEventsInput) SetSourceType(v string) *DescribeEventsInput {
11178	s.SourceType = &v
11179	return s
11180}
11181
11182// SetStartTime sets the StartTime field's value.
11183func (s *DescribeEventsInput) SetStartTime(v time.Time) *DescribeEventsInput {
11184	s.StartTime = &v
11185	return s
11186}
11187
11188// Represents the output of a DescribeEvents operation.
11189type DescribeEventsOutput struct {
11190	_ struct{} `type:"structure"`
11191
11192	// A list of events. Each element in the list contains detailed information
11193	// about one event.
11194	Events []*Event `locationNameList:"Event" type:"list"`
11195
11196	// Provides an identifier to allow retrieval of paginated results.
11197	Marker *string `type:"string"`
11198}
11199
11200// String returns the string representation
11201func (s DescribeEventsOutput) String() string {
11202	return awsutil.Prettify(s)
11203}
11204
11205// GoString returns the string representation
11206func (s DescribeEventsOutput) GoString() string {
11207	return s.String()
11208}
11209
11210// SetEvents sets the Events field's value.
11211func (s *DescribeEventsOutput) SetEvents(v []*Event) *DescribeEventsOutput {
11212	s.Events = v
11213	return s
11214}
11215
11216// SetMarker sets the Marker field's value.
11217func (s *DescribeEventsOutput) SetMarker(v string) *DescribeEventsOutput {
11218	s.Marker = &v
11219	return s
11220}
11221
11222type DescribeGlobalReplicationGroupsInput struct {
11223	_ struct{} `type:"structure"`
11224
11225	// The name of the Global Datastore
11226	GlobalReplicationGroupId *string `type:"string"`
11227
11228	// An optional marker returned from a prior request. Use this marker for pagination
11229	// of results from this operation. If this parameter is specified, the response
11230	// includes only records beyond the marker, up to the value specified by MaxRecords.
11231	Marker *string `type:"string"`
11232
11233	// The maximum number of records to include in the response. If more records
11234	// exist than the specified MaxRecords value, a marker is included in the response
11235	// so that the remaining results can be retrieved.
11236	MaxRecords *int64 `type:"integer"`
11237
11238	// Returns the list of members that comprise the Global Datastore.
11239	ShowMemberInfo *bool `type:"boolean"`
11240}
11241
11242// String returns the string representation
11243func (s DescribeGlobalReplicationGroupsInput) String() string {
11244	return awsutil.Prettify(s)
11245}
11246
11247// GoString returns the string representation
11248func (s DescribeGlobalReplicationGroupsInput) GoString() string {
11249	return s.String()
11250}
11251
11252// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
11253func (s *DescribeGlobalReplicationGroupsInput) SetGlobalReplicationGroupId(v string) *DescribeGlobalReplicationGroupsInput {
11254	s.GlobalReplicationGroupId = &v
11255	return s
11256}
11257
11258// SetMarker sets the Marker field's value.
11259func (s *DescribeGlobalReplicationGroupsInput) SetMarker(v string) *DescribeGlobalReplicationGroupsInput {
11260	s.Marker = &v
11261	return s
11262}
11263
11264// SetMaxRecords sets the MaxRecords field's value.
11265func (s *DescribeGlobalReplicationGroupsInput) SetMaxRecords(v int64) *DescribeGlobalReplicationGroupsInput {
11266	s.MaxRecords = &v
11267	return s
11268}
11269
11270// SetShowMemberInfo sets the ShowMemberInfo field's value.
11271func (s *DescribeGlobalReplicationGroupsInput) SetShowMemberInfo(v bool) *DescribeGlobalReplicationGroupsInput {
11272	s.ShowMemberInfo = &v
11273	return s
11274}
11275
11276type DescribeGlobalReplicationGroupsOutput struct {
11277	_ struct{} `type:"structure"`
11278
11279	// Indicates the slot configuration and global identifier for each slice group.
11280	GlobalReplicationGroups []*GlobalReplicationGroup `locationNameList:"GlobalReplicationGroup" type:"list"`
11281
11282	// An optional marker returned from a prior request. Use this marker for pagination
11283	// of results from this operation. If this parameter is specified, the response
11284	// includes only records beyond the marker, up to the value specified by MaxRecords.
11285	// >
11286	Marker *string `type:"string"`
11287}
11288
11289// String returns the string representation
11290func (s DescribeGlobalReplicationGroupsOutput) String() string {
11291	return awsutil.Prettify(s)
11292}
11293
11294// GoString returns the string representation
11295func (s DescribeGlobalReplicationGroupsOutput) GoString() string {
11296	return s.String()
11297}
11298
11299// SetGlobalReplicationGroups sets the GlobalReplicationGroups field's value.
11300func (s *DescribeGlobalReplicationGroupsOutput) SetGlobalReplicationGroups(v []*GlobalReplicationGroup) *DescribeGlobalReplicationGroupsOutput {
11301	s.GlobalReplicationGroups = v
11302	return s
11303}
11304
11305// SetMarker sets the Marker field's value.
11306func (s *DescribeGlobalReplicationGroupsOutput) SetMarker(v string) *DescribeGlobalReplicationGroupsOutput {
11307	s.Marker = &v
11308	return s
11309}
11310
11311// Represents the input of a DescribeReplicationGroups operation.
11312type DescribeReplicationGroupsInput struct {
11313	_ struct{} `type:"structure"`
11314
11315	// An optional marker returned from a prior request. Use this marker for pagination
11316	// of results from this operation. If this parameter is specified, the response
11317	// includes only records beyond the marker, up to the value specified by MaxRecords.
11318	Marker *string `type:"string"`
11319
11320	// The maximum number of records to include in the response. If more records
11321	// exist than the specified MaxRecords value, a marker is included in the response
11322	// so that the remaining results can be retrieved.
11323	//
11324	// Default: 100
11325	//
11326	// Constraints: minimum 20; maximum 100.
11327	MaxRecords *int64 `type:"integer"`
11328
11329	// The identifier for the replication group to be described. This parameter
11330	// is not case sensitive.
11331	//
11332	// If you do not specify this parameter, information about all replication groups
11333	// is returned.
11334	ReplicationGroupId *string `type:"string"`
11335}
11336
11337// String returns the string representation
11338func (s DescribeReplicationGroupsInput) String() string {
11339	return awsutil.Prettify(s)
11340}
11341
11342// GoString returns the string representation
11343func (s DescribeReplicationGroupsInput) GoString() string {
11344	return s.String()
11345}
11346
11347// SetMarker sets the Marker field's value.
11348func (s *DescribeReplicationGroupsInput) SetMarker(v string) *DescribeReplicationGroupsInput {
11349	s.Marker = &v
11350	return s
11351}
11352
11353// SetMaxRecords sets the MaxRecords field's value.
11354func (s *DescribeReplicationGroupsInput) SetMaxRecords(v int64) *DescribeReplicationGroupsInput {
11355	s.MaxRecords = &v
11356	return s
11357}
11358
11359// SetReplicationGroupId sets the ReplicationGroupId field's value.
11360func (s *DescribeReplicationGroupsInput) SetReplicationGroupId(v string) *DescribeReplicationGroupsInput {
11361	s.ReplicationGroupId = &v
11362	return s
11363}
11364
11365// Represents the output of a DescribeReplicationGroups operation.
11366type DescribeReplicationGroupsOutput struct {
11367	_ struct{} `type:"structure"`
11368
11369	// Provides an identifier to allow retrieval of paginated results.
11370	Marker *string `type:"string"`
11371
11372	// A list of replication groups. Each item in the list contains detailed information
11373	// about one replication group.
11374	ReplicationGroups []*ReplicationGroup `locationNameList:"ReplicationGroup" type:"list"`
11375}
11376
11377// String returns the string representation
11378func (s DescribeReplicationGroupsOutput) String() string {
11379	return awsutil.Prettify(s)
11380}
11381
11382// GoString returns the string representation
11383func (s DescribeReplicationGroupsOutput) GoString() string {
11384	return s.String()
11385}
11386
11387// SetMarker sets the Marker field's value.
11388func (s *DescribeReplicationGroupsOutput) SetMarker(v string) *DescribeReplicationGroupsOutput {
11389	s.Marker = &v
11390	return s
11391}
11392
11393// SetReplicationGroups sets the ReplicationGroups field's value.
11394func (s *DescribeReplicationGroupsOutput) SetReplicationGroups(v []*ReplicationGroup) *DescribeReplicationGroupsOutput {
11395	s.ReplicationGroups = v
11396	return s
11397}
11398
11399// Represents the input of a DescribeReservedCacheNodes operation.
11400type DescribeReservedCacheNodesInput struct {
11401	_ struct{} `type:"structure"`
11402
11403	// The cache node type filter value. Use this parameter to show only those reservations
11404	// matching the specified cache node type.
11405	//
11406	// The following node types are supported by ElastiCache. Generally speaking,
11407	// the current generation types provide more memory and computational power
11408	// at lower cost when compared to their equivalent previous generation counterparts.
11409	//
11410	//    * General purpose: Current generation: M5 node types: cache.m5.large,
11411	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
11412	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
11413	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
11414	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
11415	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
11416	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
11417	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
11418	//
11419	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
11420	//    cache.c1.xlarge
11421	//
11422	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
11423	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
11424	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
11425	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
11426	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
11427	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
11428	//    cache.r3.8xlarge
11429	//
11430	// Additional node type info
11431	//
11432	//    * All current generation instance types are created in Amazon VPC by default.
11433	//
11434	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
11435	//
11436	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
11437	//
11438	//    * Redis configuration variables appendonly and appendfsync are not supported
11439	//    on Redis version 2.8.22 and later.
11440	CacheNodeType *string `type:"string"`
11441
11442	// The duration filter value, specified in years or seconds. Use this parameter
11443	// to show only reservations for this duration.
11444	//
11445	// Valid Values: 1 | 3 | 31536000 | 94608000
11446	Duration *string `type:"string"`
11447
11448	// An optional marker returned from a prior request. Use this marker for pagination
11449	// of results from this operation. If this parameter is specified, the response
11450	// includes only records beyond the marker, up to the value specified by MaxRecords.
11451	Marker *string `type:"string"`
11452
11453	// The maximum number of records to include in the response. If more records
11454	// exist than the specified MaxRecords value, a marker is included in the response
11455	// so that the remaining results can be retrieved.
11456	//
11457	// Default: 100
11458	//
11459	// Constraints: minimum 20; maximum 100.
11460	MaxRecords *int64 `type:"integer"`
11461
11462	// The offering type filter value. Use this parameter to show only the available
11463	// offerings matching the specified offering type.
11464	//
11465	// Valid values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization"
11466	OfferingType *string `type:"string"`
11467
11468	// The product description filter value. Use this parameter to show only those
11469	// reservations matching the specified product description.
11470	ProductDescription *string `type:"string"`
11471
11472	// The reserved cache node identifier filter value. Use this parameter to show
11473	// only the reservation that matches the specified reservation ID.
11474	ReservedCacheNodeId *string `type:"string"`
11475
11476	// The offering identifier filter value. Use this parameter to show only purchased
11477	// reservations matching the specified offering identifier.
11478	ReservedCacheNodesOfferingId *string `type:"string"`
11479}
11480
11481// String returns the string representation
11482func (s DescribeReservedCacheNodesInput) String() string {
11483	return awsutil.Prettify(s)
11484}
11485
11486// GoString returns the string representation
11487func (s DescribeReservedCacheNodesInput) GoString() string {
11488	return s.String()
11489}
11490
11491// SetCacheNodeType sets the CacheNodeType field's value.
11492func (s *DescribeReservedCacheNodesInput) SetCacheNodeType(v string) *DescribeReservedCacheNodesInput {
11493	s.CacheNodeType = &v
11494	return s
11495}
11496
11497// SetDuration sets the Duration field's value.
11498func (s *DescribeReservedCacheNodesInput) SetDuration(v string) *DescribeReservedCacheNodesInput {
11499	s.Duration = &v
11500	return s
11501}
11502
11503// SetMarker sets the Marker field's value.
11504func (s *DescribeReservedCacheNodesInput) SetMarker(v string) *DescribeReservedCacheNodesInput {
11505	s.Marker = &v
11506	return s
11507}
11508
11509// SetMaxRecords sets the MaxRecords field's value.
11510func (s *DescribeReservedCacheNodesInput) SetMaxRecords(v int64) *DescribeReservedCacheNodesInput {
11511	s.MaxRecords = &v
11512	return s
11513}
11514
11515// SetOfferingType sets the OfferingType field's value.
11516func (s *DescribeReservedCacheNodesInput) SetOfferingType(v string) *DescribeReservedCacheNodesInput {
11517	s.OfferingType = &v
11518	return s
11519}
11520
11521// SetProductDescription sets the ProductDescription field's value.
11522func (s *DescribeReservedCacheNodesInput) SetProductDescription(v string) *DescribeReservedCacheNodesInput {
11523	s.ProductDescription = &v
11524	return s
11525}
11526
11527// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
11528func (s *DescribeReservedCacheNodesInput) SetReservedCacheNodeId(v string) *DescribeReservedCacheNodesInput {
11529	s.ReservedCacheNodeId = &v
11530	return s
11531}
11532
11533// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
11534func (s *DescribeReservedCacheNodesInput) SetReservedCacheNodesOfferingId(v string) *DescribeReservedCacheNodesInput {
11535	s.ReservedCacheNodesOfferingId = &v
11536	return s
11537}
11538
11539// Represents the input of a DescribeReservedCacheNodesOfferings operation.
11540type DescribeReservedCacheNodesOfferingsInput struct {
11541	_ struct{} `type:"structure"`
11542
11543	// The cache node type filter value. Use this parameter to show only the available
11544	// offerings matching the specified cache node type.
11545	//
11546	// The following node types are supported by ElastiCache. Generally speaking,
11547	// the current generation types provide more memory and computational power
11548	// at lower cost when compared to their equivalent previous generation counterparts.
11549	//
11550	//    * General purpose: Current generation: M5 node types: cache.m5.large,
11551	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
11552	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
11553	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
11554	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
11555	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
11556	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
11557	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
11558	//
11559	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
11560	//    cache.c1.xlarge
11561	//
11562	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
11563	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
11564	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
11565	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
11566	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
11567	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
11568	//    cache.r3.8xlarge
11569	//
11570	// Additional node type info
11571	//
11572	//    * All current generation instance types are created in Amazon VPC by default.
11573	//
11574	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
11575	//
11576	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
11577	//
11578	//    * Redis configuration variables appendonly and appendfsync are not supported
11579	//    on Redis version 2.8.22 and later.
11580	CacheNodeType *string `type:"string"`
11581
11582	// Duration filter value, specified in years or seconds. Use this parameter
11583	// to show only reservations for a given duration.
11584	//
11585	// Valid Values: 1 | 3 | 31536000 | 94608000
11586	Duration *string `type:"string"`
11587
11588	// An optional marker returned from a prior request. Use this marker for pagination
11589	// of results from this operation. If this parameter is specified, the response
11590	// includes only records beyond the marker, up to the value specified by MaxRecords.
11591	Marker *string `type:"string"`
11592
11593	// The maximum number of records to include in the response. If more records
11594	// exist than the specified MaxRecords value, a marker is included in the response
11595	// so that the remaining results can be retrieved.
11596	//
11597	// Default: 100
11598	//
11599	// Constraints: minimum 20; maximum 100.
11600	MaxRecords *int64 `type:"integer"`
11601
11602	// The offering type filter value. Use this parameter to show only the available
11603	// offerings matching the specified offering type.
11604	//
11605	// Valid Values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization"
11606	OfferingType *string `type:"string"`
11607
11608	// The product description filter value. Use this parameter to show only the
11609	// available offerings matching the specified product description.
11610	ProductDescription *string `type:"string"`
11611
11612	// The offering identifier filter value. Use this parameter to show only the
11613	// available offering that matches the specified reservation identifier.
11614	//
11615	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
11616	ReservedCacheNodesOfferingId *string `type:"string"`
11617}
11618
11619// String returns the string representation
11620func (s DescribeReservedCacheNodesOfferingsInput) String() string {
11621	return awsutil.Prettify(s)
11622}
11623
11624// GoString returns the string representation
11625func (s DescribeReservedCacheNodesOfferingsInput) GoString() string {
11626	return s.String()
11627}
11628
11629// SetCacheNodeType sets the CacheNodeType field's value.
11630func (s *DescribeReservedCacheNodesOfferingsInput) SetCacheNodeType(v string) *DescribeReservedCacheNodesOfferingsInput {
11631	s.CacheNodeType = &v
11632	return s
11633}
11634
11635// SetDuration sets the Duration field's value.
11636func (s *DescribeReservedCacheNodesOfferingsInput) SetDuration(v string) *DescribeReservedCacheNodesOfferingsInput {
11637	s.Duration = &v
11638	return s
11639}
11640
11641// SetMarker sets the Marker field's value.
11642func (s *DescribeReservedCacheNodesOfferingsInput) SetMarker(v string) *DescribeReservedCacheNodesOfferingsInput {
11643	s.Marker = &v
11644	return s
11645}
11646
11647// SetMaxRecords sets the MaxRecords field's value.
11648func (s *DescribeReservedCacheNodesOfferingsInput) SetMaxRecords(v int64) *DescribeReservedCacheNodesOfferingsInput {
11649	s.MaxRecords = &v
11650	return s
11651}
11652
11653// SetOfferingType sets the OfferingType field's value.
11654func (s *DescribeReservedCacheNodesOfferingsInput) SetOfferingType(v string) *DescribeReservedCacheNodesOfferingsInput {
11655	s.OfferingType = &v
11656	return s
11657}
11658
11659// SetProductDescription sets the ProductDescription field's value.
11660func (s *DescribeReservedCacheNodesOfferingsInput) SetProductDescription(v string) *DescribeReservedCacheNodesOfferingsInput {
11661	s.ProductDescription = &v
11662	return s
11663}
11664
11665// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
11666func (s *DescribeReservedCacheNodesOfferingsInput) SetReservedCacheNodesOfferingId(v string) *DescribeReservedCacheNodesOfferingsInput {
11667	s.ReservedCacheNodesOfferingId = &v
11668	return s
11669}
11670
11671// Represents the output of a DescribeReservedCacheNodesOfferings operation.
11672type DescribeReservedCacheNodesOfferingsOutput struct {
11673	_ struct{} `type:"structure"`
11674
11675	// Provides an identifier to allow retrieval of paginated results.
11676	Marker *string `type:"string"`
11677
11678	// A list of reserved cache node offerings. Each element in the list contains
11679	// detailed information about one offering.
11680	ReservedCacheNodesOfferings []*ReservedCacheNodesOffering `locationNameList:"ReservedCacheNodesOffering" type:"list"`
11681}
11682
11683// String returns the string representation
11684func (s DescribeReservedCacheNodesOfferingsOutput) String() string {
11685	return awsutil.Prettify(s)
11686}
11687
11688// GoString returns the string representation
11689func (s DescribeReservedCacheNodesOfferingsOutput) GoString() string {
11690	return s.String()
11691}
11692
11693// SetMarker sets the Marker field's value.
11694func (s *DescribeReservedCacheNodesOfferingsOutput) SetMarker(v string) *DescribeReservedCacheNodesOfferingsOutput {
11695	s.Marker = &v
11696	return s
11697}
11698
11699// SetReservedCacheNodesOfferings sets the ReservedCacheNodesOfferings field's value.
11700func (s *DescribeReservedCacheNodesOfferingsOutput) SetReservedCacheNodesOfferings(v []*ReservedCacheNodesOffering) *DescribeReservedCacheNodesOfferingsOutput {
11701	s.ReservedCacheNodesOfferings = v
11702	return s
11703}
11704
11705// Represents the output of a DescribeReservedCacheNodes operation.
11706type DescribeReservedCacheNodesOutput struct {
11707	_ struct{} `type:"structure"`
11708
11709	// Provides an identifier to allow retrieval of paginated results.
11710	Marker *string `type:"string"`
11711
11712	// A list of reserved cache nodes. Each element in the list contains detailed
11713	// information about one node.
11714	ReservedCacheNodes []*ReservedCacheNode `locationNameList:"ReservedCacheNode" type:"list"`
11715}
11716
11717// String returns the string representation
11718func (s DescribeReservedCacheNodesOutput) String() string {
11719	return awsutil.Prettify(s)
11720}
11721
11722// GoString returns the string representation
11723func (s DescribeReservedCacheNodesOutput) GoString() string {
11724	return s.String()
11725}
11726
11727// SetMarker sets the Marker field's value.
11728func (s *DescribeReservedCacheNodesOutput) SetMarker(v string) *DescribeReservedCacheNodesOutput {
11729	s.Marker = &v
11730	return s
11731}
11732
11733// SetReservedCacheNodes sets the ReservedCacheNodes field's value.
11734func (s *DescribeReservedCacheNodesOutput) SetReservedCacheNodes(v []*ReservedCacheNode) *DescribeReservedCacheNodesOutput {
11735	s.ReservedCacheNodes = v
11736	return s
11737}
11738
11739type DescribeServiceUpdatesInput struct {
11740	_ struct{} `type:"structure"`
11741
11742	// An optional marker returned from a prior request. Use this marker for pagination
11743	// of results from this operation. If this parameter is specified, the response
11744	// includes only records beyond the marker, up to the value specified by MaxRecords.
11745	Marker *string `type:"string"`
11746
11747	// The maximum number of records to include in the response
11748	MaxRecords *int64 `type:"integer"`
11749
11750	// The unique ID of the service update
11751	ServiceUpdateName *string `type:"string"`
11752
11753	// The status of the service update
11754	ServiceUpdateStatus []*string `type:"list"`
11755}
11756
11757// String returns the string representation
11758func (s DescribeServiceUpdatesInput) String() string {
11759	return awsutil.Prettify(s)
11760}
11761
11762// GoString returns the string representation
11763func (s DescribeServiceUpdatesInput) GoString() string {
11764	return s.String()
11765}
11766
11767// SetMarker sets the Marker field's value.
11768func (s *DescribeServiceUpdatesInput) SetMarker(v string) *DescribeServiceUpdatesInput {
11769	s.Marker = &v
11770	return s
11771}
11772
11773// SetMaxRecords sets the MaxRecords field's value.
11774func (s *DescribeServiceUpdatesInput) SetMaxRecords(v int64) *DescribeServiceUpdatesInput {
11775	s.MaxRecords = &v
11776	return s
11777}
11778
11779// SetServiceUpdateName sets the ServiceUpdateName field's value.
11780func (s *DescribeServiceUpdatesInput) SetServiceUpdateName(v string) *DescribeServiceUpdatesInput {
11781	s.ServiceUpdateName = &v
11782	return s
11783}
11784
11785// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
11786func (s *DescribeServiceUpdatesInput) SetServiceUpdateStatus(v []*string) *DescribeServiceUpdatesInput {
11787	s.ServiceUpdateStatus = v
11788	return s
11789}
11790
11791type DescribeServiceUpdatesOutput struct {
11792	_ struct{} `type:"structure"`
11793
11794	// An optional marker returned from a prior request. Use this marker for pagination
11795	// of results from this operation. If this parameter is specified, the response
11796	// includes only records beyond the marker, up to the value specified by MaxRecords.
11797	Marker *string `type:"string"`
11798
11799	// A list of service updates
11800	ServiceUpdates []*ServiceUpdate `locationNameList:"ServiceUpdate" type:"list"`
11801}
11802
11803// String returns the string representation
11804func (s DescribeServiceUpdatesOutput) String() string {
11805	return awsutil.Prettify(s)
11806}
11807
11808// GoString returns the string representation
11809func (s DescribeServiceUpdatesOutput) GoString() string {
11810	return s.String()
11811}
11812
11813// SetMarker sets the Marker field's value.
11814func (s *DescribeServiceUpdatesOutput) SetMarker(v string) *DescribeServiceUpdatesOutput {
11815	s.Marker = &v
11816	return s
11817}
11818
11819// SetServiceUpdates sets the ServiceUpdates field's value.
11820func (s *DescribeServiceUpdatesOutput) SetServiceUpdates(v []*ServiceUpdate) *DescribeServiceUpdatesOutput {
11821	s.ServiceUpdates = v
11822	return s
11823}
11824
11825// Represents the input of a DescribeSnapshotsMessage operation.
11826type DescribeSnapshotsInput struct {
11827	_ struct{} `type:"structure"`
11828
11829	// A user-supplied cluster identifier. If this parameter is specified, only
11830	// snapshots associated with that specific cluster are described.
11831	CacheClusterId *string `type:"string"`
11832
11833	// An optional marker returned from a prior request. Use this marker for pagination
11834	// of results from this operation. If this parameter is specified, the response
11835	// includes only records beyond the marker, up to the value specified by MaxRecords.
11836	Marker *string `type:"string"`
11837
11838	// The maximum number of records to include in the response. If more records
11839	// exist than the specified MaxRecords value, a marker is included in the response
11840	// so that the remaining results can be retrieved.
11841	//
11842	// Default: 50
11843	//
11844	// Constraints: minimum 20; maximum 50.
11845	MaxRecords *int64 `type:"integer"`
11846
11847	// A user-supplied replication group identifier. If this parameter is specified,
11848	// only snapshots associated with that specific replication group are described.
11849	ReplicationGroupId *string `type:"string"`
11850
11851	// A Boolean value which if true, the node group (shard) configuration is included
11852	// in the snapshot description.
11853	ShowNodeGroupConfig *bool `type:"boolean"`
11854
11855	// A user-supplied name of the snapshot. If this parameter is specified, only
11856	// this snapshot are described.
11857	SnapshotName *string `type:"string"`
11858
11859	// If set to system, the output shows snapshots that were automatically created
11860	// by ElastiCache. If set to user the output shows snapshots that were manually
11861	// created. If omitted, the output shows both automatically and manually created
11862	// snapshots.
11863	SnapshotSource *string `type:"string"`
11864}
11865
11866// String returns the string representation
11867func (s DescribeSnapshotsInput) String() string {
11868	return awsutil.Prettify(s)
11869}
11870
11871// GoString returns the string representation
11872func (s DescribeSnapshotsInput) GoString() string {
11873	return s.String()
11874}
11875
11876// SetCacheClusterId sets the CacheClusterId field's value.
11877func (s *DescribeSnapshotsInput) SetCacheClusterId(v string) *DescribeSnapshotsInput {
11878	s.CacheClusterId = &v
11879	return s
11880}
11881
11882// SetMarker sets the Marker field's value.
11883func (s *DescribeSnapshotsInput) SetMarker(v string) *DescribeSnapshotsInput {
11884	s.Marker = &v
11885	return s
11886}
11887
11888// SetMaxRecords sets the MaxRecords field's value.
11889func (s *DescribeSnapshotsInput) SetMaxRecords(v int64) *DescribeSnapshotsInput {
11890	s.MaxRecords = &v
11891	return s
11892}
11893
11894// SetReplicationGroupId sets the ReplicationGroupId field's value.
11895func (s *DescribeSnapshotsInput) SetReplicationGroupId(v string) *DescribeSnapshotsInput {
11896	s.ReplicationGroupId = &v
11897	return s
11898}
11899
11900// SetShowNodeGroupConfig sets the ShowNodeGroupConfig field's value.
11901func (s *DescribeSnapshotsInput) SetShowNodeGroupConfig(v bool) *DescribeSnapshotsInput {
11902	s.ShowNodeGroupConfig = &v
11903	return s
11904}
11905
11906// SetSnapshotName sets the SnapshotName field's value.
11907func (s *DescribeSnapshotsInput) SetSnapshotName(v string) *DescribeSnapshotsInput {
11908	s.SnapshotName = &v
11909	return s
11910}
11911
11912// SetSnapshotSource sets the SnapshotSource field's value.
11913func (s *DescribeSnapshotsInput) SetSnapshotSource(v string) *DescribeSnapshotsInput {
11914	s.SnapshotSource = &v
11915	return s
11916}
11917
11918// Represents the output of a DescribeSnapshots operation.
11919type DescribeSnapshotsOutput struct {
11920	_ struct{} `type:"structure"`
11921
11922	// An optional marker returned from a prior request. Use this marker for pagination
11923	// of results from this operation. If this parameter is specified, the response
11924	// includes only records beyond the marker, up to the value specified by MaxRecords.
11925	Marker *string `type:"string"`
11926
11927	// A list of snapshots. Each item in the list contains detailed information
11928	// about one snapshot.
11929	Snapshots []*Snapshot `locationNameList:"Snapshot" type:"list"`
11930}
11931
11932// String returns the string representation
11933func (s DescribeSnapshotsOutput) String() string {
11934	return awsutil.Prettify(s)
11935}
11936
11937// GoString returns the string representation
11938func (s DescribeSnapshotsOutput) GoString() string {
11939	return s.String()
11940}
11941
11942// SetMarker sets the Marker field's value.
11943func (s *DescribeSnapshotsOutput) SetMarker(v string) *DescribeSnapshotsOutput {
11944	s.Marker = &v
11945	return s
11946}
11947
11948// SetSnapshots sets the Snapshots field's value.
11949func (s *DescribeSnapshotsOutput) SetSnapshots(v []*Snapshot) *DescribeSnapshotsOutput {
11950	s.Snapshots = v
11951	return s
11952}
11953
11954type DescribeUpdateActionsInput struct {
11955	_ struct{} `type:"structure"`
11956
11957	// The cache cluster IDs
11958	CacheClusterIds []*string `type:"list"`
11959
11960	// The Elasticache engine to which the update applies. Either Redis or Memcached
11961	Engine *string `type:"string"`
11962
11963	// An optional marker returned from a prior request. Use this marker for pagination
11964	// of results from this operation. If this parameter is specified, the response
11965	// includes only records beyond the marker, up to the value specified by MaxRecords.
11966	Marker *string `type:"string"`
11967
11968	// The maximum number of records to include in the response
11969	MaxRecords *int64 `type:"integer"`
11970
11971	// The replication group IDs
11972	ReplicationGroupIds []*string `type:"list"`
11973
11974	// The unique ID of the service update
11975	ServiceUpdateName *string `type:"string"`
11976
11977	// The status of the service update
11978	ServiceUpdateStatus []*string `type:"list"`
11979
11980	// The range of time specified to search for service updates that are in available
11981	// status
11982	ServiceUpdateTimeRange *TimeRangeFilter `type:"structure"`
11983
11984	// Dictates whether to include node level update status in the response
11985	ShowNodeLevelUpdateStatus *bool `type:"boolean"`
11986
11987	// The status of the update action.
11988	UpdateActionStatus []*string `type:"list"`
11989}
11990
11991// String returns the string representation
11992func (s DescribeUpdateActionsInput) String() string {
11993	return awsutil.Prettify(s)
11994}
11995
11996// GoString returns the string representation
11997func (s DescribeUpdateActionsInput) GoString() string {
11998	return s.String()
11999}
12000
12001// SetCacheClusterIds sets the CacheClusterIds field's value.
12002func (s *DescribeUpdateActionsInput) SetCacheClusterIds(v []*string) *DescribeUpdateActionsInput {
12003	s.CacheClusterIds = v
12004	return s
12005}
12006
12007// SetEngine sets the Engine field's value.
12008func (s *DescribeUpdateActionsInput) SetEngine(v string) *DescribeUpdateActionsInput {
12009	s.Engine = &v
12010	return s
12011}
12012
12013// SetMarker sets the Marker field's value.
12014func (s *DescribeUpdateActionsInput) SetMarker(v string) *DescribeUpdateActionsInput {
12015	s.Marker = &v
12016	return s
12017}
12018
12019// SetMaxRecords sets the MaxRecords field's value.
12020func (s *DescribeUpdateActionsInput) SetMaxRecords(v int64) *DescribeUpdateActionsInput {
12021	s.MaxRecords = &v
12022	return s
12023}
12024
12025// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
12026func (s *DescribeUpdateActionsInput) SetReplicationGroupIds(v []*string) *DescribeUpdateActionsInput {
12027	s.ReplicationGroupIds = v
12028	return s
12029}
12030
12031// SetServiceUpdateName sets the ServiceUpdateName field's value.
12032func (s *DescribeUpdateActionsInput) SetServiceUpdateName(v string) *DescribeUpdateActionsInput {
12033	s.ServiceUpdateName = &v
12034	return s
12035}
12036
12037// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
12038func (s *DescribeUpdateActionsInput) SetServiceUpdateStatus(v []*string) *DescribeUpdateActionsInput {
12039	s.ServiceUpdateStatus = v
12040	return s
12041}
12042
12043// SetServiceUpdateTimeRange sets the ServiceUpdateTimeRange field's value.
12044func (s *DescribeUpdateActionsInput) SetServiceUpdateTimeRange(v *TimeRangeFilter) *DescribeUpdateActionsInput {
12045	s.ServiceUpdateTimeRange = v
12046	return s
12047}
12048
12049// SetShowNodeLevelUpdateStatus sets the ShowNodeLevelUpdateStatus field's value.
12050func (s *DescribeUpdateActionsInput) SetShowNodeLevelUpdateStatus(v bool) *DescribeUpdateActionsInput {
12051	s.ShowNodeLevelUpdateStatus = &v
12052	return s
12053}
12054
12055// SetUpdateActionStatus sets the UpdateActionStatus field's value.
12056func (s *DescribeUpdateActionsInput) SetUpdateActionStatus(v []*string) *DescribeUpdateActionsInput {
12057	s.UpdateActionStatus = v
12058	return s
12059}
12060
12061type DescribeUpdateActionsOutput struct {
12062	_ struct{} `type:"structure"`
12063
12064	// An optional marker returned from a prior request. Use this marker for pagination
12065	// of results from this operation. If this parameter is specified, the response
12066	// includes only records beyond the marker, up to the value specified by MaxRecords.
12067	Marker *string `type:"string"`
12068
12069	// Returns a list of update actions
12070	UpdateActions []*UpdateAction `locationNameList:"UpdateAction" type:"list"`
12071}
12072
12073// String returns the string representation
12074func (s DescribeUpdateActionsOutput) String() string {
12075	return awsutil.Prettify(s)
12076}
12077
12078// GoString returns the string representation
12079func (s DescribeUpdateActionsOutput) GoString() string {
12080	return s.String()
12081}
12082
12083// SetMarker sets the Marker field's value.
12084func (s *DescribeUpdateActionsOutput) SetMarker(v string) *DescribeUpdateActionsOutput {
12085	s.Marker = &v
12086	return s
12087}
12088
12089// SetUpdateActions sets the UpdateActions field's value.
12090func (s *DescribeUpdateActionsOutput) SetUpdateActions(v []*UpdateAction) *DescribeUpdateActionsOutput {
12091	s.UpdateActions = v
12092	return s
12093}
12094
12095type DisassociateGlobalReplicationGroupInput struct {
12096	_ struct{} `type:"structure"`
12097
12098	// The name of the Global Datastore
12099	//
12100	// GlobalReplicationGroupId is a required field
12101	GlobalReplicationGroupId *string `type:"string" required:"true"`
12102
12103	// The name of the secondary cluster you wish to remove from the Global Datastore
12104	//
12105	// ReplicationGroupId is a required field
12106	ReplicationGroupId *string `type:"string" required:"true"`
12107
12108	// The AWS region of secondary cluster you wish to remove from the Global Datastore
12109	//
12110	// ReplicationGroupRegion is a required field
12111	ReplicationGroupRegion *string `type:"string" required:"true"`
12112}
12113
12114// String returns the string representation
12115func (s DisassociateGlobalReplicationGroupInput) String() string {
12116	return awsutil.Prettify(s)
12117}
12118
12119// GoString returns the string representation
12120func (s DisassociateGlobalReplicationGroupInput) GoString() string {
12121	return s.String()
12122}
12123
12124// Validate inspects the fields of the type to determine if they are valid.
12125func (s *DisassociateGlobalReplicationGroupInput) Validate() error {
12126	invalidParams := request.ErrInvalidParams{Context: "DisassociateGlobalReplicationGroupInput"}
12127	if s.GlobalReplicationGroupId == nil {
12128		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
12129	}
12130	if s.ReplicationGroupId == nil {
12131		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
12132	}
12133	if s.ReplicationGroupRegion == nil {
12134		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupRegion"))
12135	}
12136
12137	if invalidParams.Len() > 0 {
12138		return invalidParams
12139	}
12140	return nil
12141}
12142
12143// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
12144func (s *DisassociateGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *DisassociateGlobalReplicationGroupInput {
12145	s.GlobalReplicationGroupId = &v
12146	return s
12147}
12148
12149// SetReplicationGroupId sets the ReplicationGroupId field's value.
12150func (s *DisassociateGlobalReplicationGroupInput) SetReplicationGroupId(v string) *DisassociateGlobalReplicationGroupInput {
12151	s.ReplicationGroupId = &v
12152	return s
12153}
12154
12155// SetReplicationGroupRegion sets the ReplicationGroupRegion field's value.
12156func (s *DisassociateGlobalReplicationGroupInput) SetReplicationGroupRegion(v string) *DisassociateGlobalReplicationGroupInput {
12157	s.ReplicationGroupRegion = &v
12158	return s
12159}
12160
12161type DisassociateGlobalReplicationGroupOutput struct {
12162	_ struct{} `type:"structure"`
12163
12164	// Consists of a primary cluster that accepts writes and an associated secondary
12165	// cluster that resides in a different AWS region. The secondary cluster accepts
12166	// only reads. The primary cluster automatically replicates updates to the secondary
12167	// cluster.
12168	//
12169	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
12170	//    Datastore, which is what you use to associate a secondary cluster.
12171	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
12172}
12173
12174// String returns the string representation
12175func (s DisassociateGlobalReplicationGroupOutput) String() string {
12176	return awsutil.Prettify(s)
12177}
12178
12179// GoString returns the string representation
12180func (s DisassociateGlobalReplicationGroupOutput) GoString() string {
12181	return s.String()
12182}
12183
12184// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
12185func (s *DisassociateGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *DisassociateGlobalReplicationGroupOutput {
12186	s.GlobalReplicationGroup = v
12187	return s
12188}
12189
12190// Provides ownership and status information for an Amazon EC2 security group.
12191type EC2SecurityGroup struct {
12192	_ struct{} `type:"structure"`
12193
12194	// The name of the Amazon EC2 security group.
12195	EC2SecurityGroupName *string `type:"string"`
12196
12197	// The AWS account ID of the Amazon EC2 security group owner.
12198	EC2SecurityGroupOwnerId *string `type:"string"`
12199
12200	// The status of the Amazon EC2 security group.
12201	Status *string `type:"string"`
12202}
12203
12204// String returns the string representation
12205func (s EC2SecurityGroup) String() string {
12206	return awsutil.Prettify(s)
12207}
12208
12209// GoString returns the string representation
12210func (s EC2SecurityGroup) GoString() string {
12211	return s.String()
12212}
12213
12214// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
12215func (s *EC2SecurityGroup) SetEC2SecurityGroupName(v string) *EC2SecurityGroup {
12216	s.EC2SecurityGroupName = &v
12217	return s
12218}
12219
12220// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
12221func (s *EC2SecurityGroup) SetEC2SecurityGroupOwnerId(v string) *EC2SecurityGroup {
12222	s.EC2SecurityGroupOwnerId = &v
12223	return s
12224}
12225
12226// SetStatus sets the Status field's value.
12227func (s *EC2SecurityGroup) SetStatus(v string) *EC2SecurityGroup {
12228	s.Status = &v
12229	return s
12230}
12231
12232// Represents the information required for client programs to connect to a cache
12233// node.
12234type Endpoint struct {
12235	_ struct{} `type:"structure"`
12236
12237	// The DNS hostname of the cache node.
12238	Address *string `type:"string"`
12239
12240	// The port number that the cache engine is listening on.
12241	Port *int64 `type:"integer"`
12242}
12243
12244// String returns the string representation
12245func (s Endpoint) String() string {
12246	return awsutil.Prettify(s)
12247}
12248
12249// GoString returns the string representation
12250func (s Endpoint) GoString() string {
12251	return s.String()
12252}
12253
12254// SetAddress sets the Address field's value.
12255func (s *Endpoint) SetAddress(v string) *Endpoint {
12256	s.Address = &v
12257	return s
12258}
12259
12260// SetPort sets the Port field's value.
12261func (s *Endpoint) SetPort(v int64) *Endpoint {
12262	s.Port = &v
12263	return s
12264}
12265
12266// Represents the output of a DescribeEngineDefaultParameters operation.
12267type EngineDefaults struct {
12268	_ struct{} `type:"structure"`
12269
12270	// A list of parameters specific to a particular cache node type. Each element
12271	// in the list contains detailed information about one parameter.
12272	CacheNodeTypeSpecificParameters []*CacheNodeTypeSpecificParameter `locationNameList:"CacheNodeTypeSpecificParameter" type:"list"`
12273
12274	// Specifies the name of the cache parameter group family to which the engine
12275	// default parameters apply.
12276	//
12277	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
12278	// | redis4.0 | redis5.0 |
12279	CacheParameterGroupFamily *string `type:"string"`
12280
12281	// Provides an identifier to allow retrieval of paginated results.
12282	Marker *string `type:"string"`
12283
12284	// Contains a list of engine default parameters.
12285	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`
12286}
12287
12288// String returns the string representation
12289func (s EngineDefaults) String() string {
12290	return awsutil.Prettify(s)
12291}
12292
12293// GoString returns the string representation
12294func (s EngineDefaults) GoString() string {
12295	return s.String()
12296}
12297
12298// SetCacheNodeTypeSpecificParameters sets the CacheNodeTypeSpecificParameters field's value.
12299func (s *EngineDefaults) SetCacheNodeTypeSpecificParameters(v []*CacheNodeTypeSpecificParameter) *EngineDefaults {
12300	s.CacheNodeTypeSpecificParameters = v
12301	return s
12302}
12303
12304// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
12305func (s *EngineDefaults) SetCacheParameterGroupFamily(v string) *EngineDefaults {
12306	s.CacheParameterGroupFamily = &v
12307	return s
12308}
12309
12310// SetMarker sets the Marker field's value.
12311func (s *EngineDefaults) SetMarker(v string) *EngineDefaults {
12312	s.Marker = &v
12313	return s
12314}
12315
12316// SetParameters sets the Parameters field's value.
12317func (s *EngineDefaults) SetParameters(v []*Parameter) *EngineDefaults {
12318	s.Parameters = v
12319	return s
12320}
12321
12322// Represents a single occurrence of something interesting within the system.
12323// Some examples of events are creating a cluster, adding or removing a cache
12324// node, or rebooting a node.
12325type Event struct {
12326	_ struct{} `type:"structure"`
12327
12328	// The date and time when the event occurred.
12329	Date *time.Time `type:"timestamp"`
12330
12331	// The text of the event.
12332	Message *string `type:"string"`
12333
12334	// The identifier for the source of the event. For example, if the event occurred
12335	// at the cluster level, the identifier would be the name of the cluster.
12336	SourceIdentifier *string `type:"string"`
12337
12338	// Specifies the origin of this event - a cluster, a parameter group, a security
12339	// group, etc.
12340	SourceType *string `type:"string" enum:"SourceType"`
12341}
12342
12343// String returns the string representation
12344func (s Event) String() string {
12345	return awsutil.Prettify(s)
12346}
12347
12348// GoString returns the string representation
12349func (s Event) GoString() string {
12350	return s.String()
12351}
12352
12353// SetDate sets the Date field's value.
12354func (s *Event) SetDate(v time.Time) *Event {
12355	s.Date = &v
12356	return s
12357}
12358
12359// SetMessage sets the Message field's value.
12360func (s *Event) SetMessage(v string) *Event {
12361	s.Message = &v
12362	return s
12363}
12364
12365// SetSourceIdentifier sets the SourceIdentifier field's value.
12366func (s *Event) SetSourceIdentifier(v string) *Event {
12367	s.SourceIdentifier = &v
12368	return s
12369}
12370
12371// SetSourceType sets the SourceType field's value.
12372func (s *Event) SetSourceType(v string) *Event {
12373	s.SourceType = &v
12374	return s
12375}
12376
12377type FailoverGlobalReplicationGroupInput struct {
12378	_ struct{} `type:"structure"`
12379
12380	// The name of the Global Datastore
12381	//
12382	// GlobalReplicationGroupId is a required field
12383	GlobalReplicationGroupId *string `type:"string" required:"true"`
12384
12385	// The AWS region of the primary cluster of the Global Datastore
12386	//
12387	// PrimaryRegion is a required field
12388	PrimaryRegion *string `type:"string" required:"true"`
12389
12390	// The name of the primary replication group
12391	//
12392	// PrimaryReplicationGroupId is a required field
12393	PrimaryReplicationGroupId *string `type:"string" required:"true"`
12394}
12395
12396// String returns the string representation
12397func (s FailoverGlobalReplicationGroupInput) String() string {
12398	return awsutil.Prettify(s)
12399}
12400
12401// GoString returns the string representation
12402func (s FailoverGlobalReplicationGroupInput) GoString() string {
12403	return s.String()
12404}
12405
12406// Validate inspects the fields of the type to determine if they are valid.
12407func (s *FailoverGlobalReplicationGroupInput) Validate() error {
12408	invalidParams := request.ErrInvalidParams{Context: "FailoverGlobalReplicationGroupInput"}
12409	if s.GlobalReplicationGroupId == nil {
12410		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
12411	}
12412	if s.PrimaryRegion == nil {
12413		invalidParams.Add(request.NewErrParamRequired("PrimaryRegion"))
12414	}
12415	if s.PrimaryReplicationGroupId == nil {
12416		invalidParams.Add(request.NewErrParamRequired("PrimaryReplicationGroupId"))
12417	}
12418
12419	if invalidParams.Len() > 0 {
12420		return invalidParams
12421	}
12422	return nil
12423}
12424
12425// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
12426func (s *FailoverGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *FailoverGlobalReplicationGroupInput {
12427	s.GlobalReplicationGroupId = &v
12428	return s
12429}
12430
12431// SetPrimaryRegion sets the PrimaryRegion field's value.
12432func (s *FailoverGlobalReplicationGroupInput) SetPrimaryRegion(v string) *FailoverGlobalReplicationGroupInput {
12433	s.PrimaryRegion = &v
12434	return s
12435}
12436
12437// SetPrimaryReplicationGroupId sets the PrimaryReplicationGroupId field's value.
12438func (s *FailoverGlobalReplicationGroupInput) SetPrimaryReplicationGroupId(v string) *FailoverGlobalReplicationGroupInput {
12439	s.PrimaryReplicationGroupId = &v
12440	return s
12441}
12442
12443type FailoverGlobalReplicationGroupOutput struct {
12444	_ struct{} `type:"structure"`
12445
12446	// Consists of a primary cluster that accepts writes and an associated secondary
12447	// cluster that resides in a different AWS region. The secondary cluster accepts
12448	// only reads. The primary cluster automatically replicates updates to the secondary
12449	// cluster.
12450	//
12451	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
12452	//    Datastore, which is what you use to associate a secondary cluster.
12453	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
12454}
12455
12456// String returns the string representation
12457func (s FailoverGlobalReplicationGroupOutput) String() string {
12458	return awsutil.Prettify(s)
12459}
12460
12461// GoString returns the string representation
12462func (s FailoverGlobalReplicationGroupOutput) GoString() string {
12463	return s.String()
12464}
12465
12466// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
12467func (s *FailoverGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *FailoverGlobalReplicationGroupOutput {
12468	s.GlobalReplicationGroup = v
12469	return s
12470}
12471
12472// Indicates the slot configuration and global identifier for a slice group.
12473type GlobalNodeGroup struct {
12474	_ struct{} `type:"structure"`
12475
12476	// The name of the global node group
12477	GlobalNodeGroupId *string `type:"string"`
12478
12479	// The keyspace for this node group
12480	Slots *string `type:"string"`
12481}
12482
12483// String returns the string representation
12484func (s GlobalNodeGroup) String() string {
12485	return awsutil.Prettify(s)
12486}
12487
12488// GoString returns the string representation
12489func (s GlobalNodeGroup) GoString() string {
12490	return s.String()
12491}
12492
12493// SetGlobalNodeGroupId sets the GlobalNodeGroupId field's value.
12494func (s *GlobalNodeGroup) SetGlobalNodeGroupId(v string) *GlobalNodeGroup {
12495	s.GlobalNodeGroupId = &v
12496	return s
12497}
12498
12499// SetSlots sets the Slots field's value.
12500func (s *GlobalNodeGroup) SetSlots(v string) *GlobalNodeGroup {
12501	s.Slots = &v
12502	return s
12503}
12504
12505// Consists of a primary cluster that accepts writes and an associated secondary
12506// cluster that resides in a different AWS region. The secondary cluster accepts
12507// only reads. The primary cluster automatically replicates updates to the secondary
12508// cluster.
12509//
12510//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
12511//    Datastore, which is what you use to associate a secondary cluster.
12512type GlobalReplicationGroup struct {
12513	_ struct{} `type:"structure"`
12514
12515	// The ARN (Amazon Resource Name) of the global replication group.
12516	ARN *string `type:"string"`
12517
12518	// A flag that enables encryption at rest when set to true.
12519	//
12520	// You cannot modify the value of AtRestEncryptionEnabled after the replication
12521	// group is created. To enable encryption at rest on a replication group you
12522	// must set AtRestEncryptionEnabled to true when you create the replication
12523	// group.
12524	//
12525	// Required: Only available when creating a replication group in an Amazon VPC
12526	// using redis version 3.2.6, 4.x or later.
12527	AtRestEncryptionEnabled *bool `type:"boolean"`
12528
12529	// A flag that enables using an AuthToken (password) when issuing Redis commands.
12530	//
12531	// Default: false
12532	AuthTokenEnabled *bool `type:"boolean"`
12533
12534	// The cache node type of the Global Datastore
12535	CacheNodeType *string `type:"string"`
12536
12537	// A flag that indicates whether the Global Datastore is cluster enabled.
12538	ClusterEnabled *bool `type:"boolean"`
12539
12540	// The Elasticache engine. For Redis only.
12541	Engine *string `type:"string"`
12542
12543	// The Elasticache Redis engine version. For preview, it is Redis version 5.0.5
12544	// only.
12545	EngineVersion *string `type:"string"`
12546
12547	// Indicates the slot configuration and global identifier for each slice group.
12548	GlobalNodeGroups []*GlobalNodeGroup `locationNameList:"GlobalNodeGroup" type:"list"`
12549
12550	// The optional description of the Global Datastore
12551	GlobalReplicationGroupDescription *string `type:"string"`
12552
12553	// The name of the Global Datastore
12554	GlobalReplicationGroupId *string `type:"string"`
12555
12556	// The replication groups that comprise the Global Datastore.
12557	Members []*GlobalReplicationGroupMember `locationNameList:"GlobalReplicationGroupMember" type:"list"`
12558
12559	// The status of the Global Datastore
12560	Status *string `type:"string"`
12561
12562	// A flag that enables in-transit encryption when set to true. You cannot modify
12563	// the value of TransitEncryptionEnabled after the cluster is created. To enable
12564	// in-transit encryption on a cluster you must set TransitEncryptionEnabled
12565	// to true when you create a cluster.
12566	TransitEncryptionEnabled *bool `type:"boolean"`
12567}
12568
12569// String returns the string representation
12570func (s GlobalReplicationGroup) String() string {
12571	return awsutil.Prettify(s)
12572}
12573
12574// GoString returns the string representation
12575func (s GlobalReplicationGroup) GoString() string {
12576	return s.String()
12577}
12578
12579// SetARN sets the ARN field's value.
12580func (s *GlobalReplicationGroup) SetARN(v string) *GlobalReplicationGroup {
12581	s.ARN = &v
12582	return s
12583}
12584
12585// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
12586func (s *GlobalReplicationGroup) SetAtRestEncryptionEnabled(v bool) *GlobalReplicationGroup {
12587	s.AtRestEncryptionEnabled = &v
12588	return s
12589}
12590
12591// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
12592func (s *GlobalReplicationGroup) SetAuthTokenEnabled(v bool) *GlobalReplicationGroup {
12593	s.AuthTokenEnabled = &v
12594	return s
12595}
12596
12597// SetCacheNodeType sets the CacheNodeType field's value.
12598func (s *GlobalReplicationGroup) SetCacheNodeType(v string) *GlobalReplicationGroup {
12599	s.CacheNodeType = &v
12600	return s
12601}
12602
12603// SetClusterEnabled sets the ClusterEnabled field's value.
12604func (s *GlobalReplicationGroup) SetClusterEnabled(v bool) *GlobalReplicationGroup {
12605	s.ClusterEnabled = &v
12606	return s
12607}
12608
12609// SetEngine sets the Engine field's value.
12610func (s *GlobalReplicationGroup) SetEngine(v string) *GlobalReplicationGroup {
12611	s.Engine = &v
12612	return s
12613}
12614
12615// SetEngineVersion sets the EngineVersion field's value.
12616func (s *GlobalReplicationGroup) SetEngineVersion(v string) *GlobalReplicationGroup {
12617	s.EngineVersion = &v
12618	return s
12619}
12620
12621// SetGlobalNodeGroups sets the GlobalNodeGroups field's value.
12622func (s *GlobalReplicationGroup) SetGlobalNodeGroups(v []*GlobalNodeGroup) *GlobalReplicationGroup {
12623	s.GlobalNodeGroups = v
12624	return s
12625}
12626
12627// SetGlobalReplicationGroupDescription sets the GlobalReplicationGroupDescription field's value.
12628func (s *GlobalReplicationGroup) SetGlobalReplicationGroupDescription(v string) *GlobalReplicationGroup {
12629	s.GlobalReplicationGroupDescription = &v
12630	return s
12631}
12632
12633// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
12634func (s *GlobalReplicationGroup) SetGlobalReplicationGroupId(v string) *GlobalReplicationGroup {
12635	s.GlobalReplicationGroupId = &v
12636	return s
12637}
12638
12639// SetMembers sets the Members field's value.
12640func (s *GlobalReplicationGroup) SetMembers(v []*GlobalReplicationGroupMember) *GlobalReplicationGroup {
12641	s.Members = v
12642	return s
12643}
12644
12645// SetStatus sets the Status field's value.
12646func (s *GlobalReplicationGroup) SetStatus(v string) *GlobalReplicationGroup {
12647	s.Status = &v
12648	return s
12649}
12650
12651// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
12652func (s *GlobalReplicationGroup) SetTransitEncryptionEnabled(v bool) *GlobalReplicationGroup {
12653	s.TransitEncryptionEnabled = &v
12654	return s
12655}
12656
12657// The name of the Global Datastore and role of this replication group in the
12658// Global Datastore.
12659type GlobalReplicationGroupInfo struct {
12660	_ struct{} `type:"structure"`
12661
12662	// The name of the Global Datastore
12663	GlobalReplicationGroupId *string `type:"string"`
12664
12665	// The role of the replication group in a Global Datastore. Can be primary or
12666	// secondary.
12667	GlobalReplicationGroupMemberRole *string `type:"string"`
12668}
12669
12670// String returns the string representation
12671func (s GlobalReplicationGroupInfo) String() string {
12672	return awsutil.Prettify(s)
12673}
12674
12675// GoString returns the string representation
12676func (s GlobalReplicationGroupInfo) GoString() string {
12677	return s.String()
12678}
12679
12680// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
12681func (s *GlobalReplicationGroupInfo) SetGlobalReplicationGroupId(v string) *GlobalReplicationGroupInfo {
12682	s.GlobalReplicationGroupId = &v
12683	return s
12684}
12685
12686// SetGlobalReplicationGroupMemberRole sets the GlobalReplicationGroupMemberRole field's value.
12687func (s *GlobalReplicationGroupInfo) SetGlobalReplicationGroupMemberRole(v string) *GlobalReplicationGroupInfo {
12688	s.GlobalReplicationGroupMemberRole = &v
12689	return s
12690}
12691
12692// A member of a Global Datastore. It contains the Replication Group Id, the
12693// AWS region and the role of the replication group.
12694type GlobalReplicationGroupMember struct {
12695	_ struct{} `type:"structure"`
12696
12697	// Indicates whether automatic failover is enabled for the replication group.
12698	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
12699
12700	// The replication group id of the Global Datastore member.
12701	ReplicationGroupId *string `type:"string"`
12702
12703	// The AWS region of the Global Datastore member.
12704	ReplicationGroupRegion *string `type:"string"`
12705
12706	// Indicates the role of the replication group, primary or secondary.
12707	Role *string `type:"string"`
12708
12709	// The status of the membership of the replication group.
12710	Status *string `type:"string"`
12711}
12712
12713// String returns the string representation
12714func (s GlobalReplicationGroupMember) String() string {
12715	return awsutil.Prettify(s)
12716}
12717
12718// GoString returns the string representation
12719func (s GlobalReplicationGroupMember) GoString() string {
12720	return s.String()
12721}
12722
12723// SetAutomaticFailover sets the AutomaticFailover field's value.
12724func (s *GlobalReplicationGroupMember) SetAutomaticFailover(v string) *GlobalReplicationGroupMember {
12725	s.AutomaticFailover = &v
12726	return s
12727}
12728
12729// SetReplicationGroupId sets the ReplicationGroupId field's value.
12730func (s *GlobalReplicationGroupMember) SetReplicationGroupId(v string) *GlobalReplicationGroupMember {
12731	s.ReplicationGroupId = &v
12732	return s
12733}
12734
12735// SetReplicationGroupRegion sets the ReplicationGroupRegion field's value.
12736func (s *GlobalReplicationGroupMember) SetReplicationGroupRegion(v string) *GlobalReplicationGroupMember {
12737	s.ReplicationGroupRegion = &v
12738	return s
12739}
12740
12741// SetRole sets the Role field's value.
12742func (s *GlobalReplicationGroupMember) SetRole(v string) *GlobalReplicationGroupMember {
12743	s.Role = &v
12744	return s
12745}
12746
12747// SetStatus sets the Status field's value.
12748func (s *GlobalReplicationGroupMember) SetStatus(v string) *GlobalReplicationGroupMember {
12749	s.Status = &v
12750	return s
12751}
12752
12753type IncreaseNodeGroupsInGlobalReplicationGroupInput struct {
12754	_ struct{} `type:"structure"`
12755
12756	// Indicates that the process begins immediately. At present, the only permitted
12757	// value for this parameter is true.
12758	//
12759	// ApplyImmediately is a required field
12760	ApplyImmediately *bool `type:"boolean" required:"true"`
12761
12762	// The name of the Global Datastore
12763	//
12764	// GlobalReplicationGroupId is a required field
12765	GlobalReplicationGroupId *string `type:"string" required:"true"`
12766
12767	// The number of node groups you wish to add
12768	//
12769	// NodeGroupCount is a required field
12770	NodeGroupCount *int64 `type:"integer" required:"true"`
12771
12772	// Describes the replication group IDs, the AWS regions where they are stored
12773	// and the shard configuration for each that comprise the Global Datastore
12774	RegionalConfigurations []*RegionalConfiguration `locationNameList:"RegionalConfiguration" type:"list"`
12775}
12776
12777// String returns the string representation
12778func (s IncreaseNodeGroupsInGlobalReplicationGroupInput) String() string {
12779	return awsutil.Prettify(s)
12780}
12781
12782// GoString returns the string representation
12783func (s IncreaseNodeGroupsInGlobalReplicationGroupInput) GoString() string {
12784	return s.String()
12785}
12786
12787// Validate inspects the fields of the type to determine if they are valid.
12788func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) Validate() error {
12789	invalidParams := request.ErrInvalidParams{Context: "IncreaseNodeGroupsInGlobalReplicationGroupInput"}
12790	if s.ApplyImmediately == nil {
12791		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
12792	}
12793	if s.GlobalReplicationGroupId == nil {
12794		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
12795	}
12796	if s.NodeGroupCount == nil {
12797		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
12798	}
12799	if s.RegionalConfigurations != nil {
12800		for i, v := range s.RegionalConfigurations {
12801			if v == nil {
12802				continue
12803			}
12804			if err := v.Validate(); err != nil {
12805				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RegionalConfigurations", i), err.(request.ErrInvalidParams))
12806			}
12807		}
12808	}
12809
12810	if invalidParams.Len() > 0 {
12811		return invalidParams
12812	}
12813	return nil
12814}
12815
12816// SetApplyImmediately sets the ApplyImmediately field's value.
12817func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetApplyImmediately(v bool) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
12818	s.ApplyImmediately = &v
12819	return s
12820}
12821
12822// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
12823func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
12824	s.GlobalReplicationGroupId = &v
12825	return s
12826}
12827
12828// SetNodeGroupCount sets the NodeGroupCount field's value.
12829func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetNodeGroupCount(v int64) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
12830	s.NodeGroupCount = &v
12831	return s
12832}
12833
12834// SetRegionalConfigurations sets the RegionalConfigurations field's value.
12835func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetRegionalConfigurations(v []*RegionalConfiguration) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
12836	s.RegionalConfigurations = v
12837	return s
12838}
12839
12840type IncreaseNodeGroupsInGlobalReplicationGroupOutput struct {
12841	_ struct{} `type:"structure"`
12842
12843	// Consists of a primary cluster that accepts writes and an associated secondary
12844	// cluster that resides in a different AWS region. The secondary cluster accepts
12845	// only reads. The primary cluster automatically replicates updates to the secondary
12846	// cluster.
12847	//
12848	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
12849	//    Datastore, which is what you use to associate a secondary cluster.
12850	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
12851}
12852
12853// String returns the string representation
12854func (s IncreaseNodeGroupsInGlobalReplicationGroupOutput) String() string {
12855	return awsutil.Prettify(s)
12856}
12857
12858// GoString returns the string representation
12859func (s IncreaseNodeGroupsInGlobalReplicationGroupOutput) GoString() string {
12860	return s.String()
12861}
12862
12863// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
12864func (s *IncreaseNodeGroupsInGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *IncreaseNodeGroupsInGlobalReplicationGroupOutput {
12865	s.GlobalReplicationGroup = v
12866	return s
12867}
12868
12869type IncreaseReplicaCountInput struct {
12870	_ struct{} `type:"structure"`
12871
12872	// If True, the number of replica nodes is increased immediately. ApplyImmediately=False
12873	// is not currently supported.
12874	//
12875	// ApplyImmediately is a required field
12876	ApplyImmediately *bool `type:"boolean" required:"true"`
12877
12878	// The number of read replica nodes you want at the completion of this operation.
12879	// For Redis (cluster mode disabled) replication groups, this is the number
12880	// of replica nodes in the replication group. For Redis (cluster mode enabled)
12881	// replication groups, this is the number of replica nodes in each of the replication
12882	// group's node groups.
12883	NewReplicaCount *int64 `type:"integer"`
12884
12885	// A list of ConfigureShard objects that can be used to configure each shard
12886	// in a Redis (cluster mode enabled) replication group. The ConfigureShard has
12887	// three members: NewReplicaCount, NodeGroupId, and PreferredAvailabilityZones.
12888	ReplicaConfiguration []*ConfigureShard `locationNameList:"ConfigureShard" type:"list"`
12889
12890	// The id of the replication group to which you want to add replica nodes.
12891	//
12892	// ReplicationGroupId is a required field
12893	ReplicationGroupId *string `type:"string" required:"true"`
12894}
12895
12896// String returns the string representation
12897func (s IncreaseReplicaCountInput) String() string {
12898	return awsutil.Prettify(s)
12899}
12900
12901// GoString returns the string representation
12902func (s IncreaseReplicaCountInput) GoString() string {
12903	return s.String()
12904}
12905
12906// Validate inspects the fields of the type to determine if they are valid.
12907func (s *IncreaseReplicaCountInput) Validate() error {
12908	invalidParams := request.ErrInvalidParams{Context: "IncreaseReplicaCountInput"}
12909	if s.ApplyImmediately == nil {
12910		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
12911	}
12912	if s.ReplicationGroupId == nil {
12913		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
12914	}
12915	if s.ReplicaConfiguration != nil {
12916		for i, v := range s.ReplicaConfiguration {
12917			if v == nil {
12918				continue
12919			}
12920			if err := v.Validate(); err != nil {
12921				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaConfiguration", i), err.(request.ErrInvalidParams))
12922			}
12923		}
12924	}
12925
12926	if invalidParams.Len() > 0 {
12927		return invalidParams
12928	}
12929	return nil
12930}
12931
12932// SetApplyImmediately sets the ApplyImmediately field's value.
12933func (s *IncreaseReplicaCountInput) SetApplyImmediately(v bool) *IncreaseReplicaCountInput {
12934	s.ApplyImmediately = &v
12935	return s
12936}
12937
12938// SetNewReplicaCount sets the NewReplicaCount field's value.
12939func (s *IncreaseReplicaCountInput) SetNewReplicaCount(v int64) *IncreaseReplicaCountInput {
12940	s.NewReplicaCount = &v
12941	return s
12942}
12943
12944// SetReplicaConfiguration sets the ReplicaConfiguration field's value.
12945func (s *IncreaseReplicaCountInput) SetReplicaConfiguration(v []*ConfigureShard) *IncreaseReplicaCountInput {
12946	s.ReplicaConfiguration = v
12947	return s
12948}
12949
12950// SetReplicationGroupId sets the ReplicationGroupId field's value.
12951func (s *IncreaseReplicaCountInput) SetReplicationGroupId(v string) *IncreaseReplicaCountInput {
12952	s.ReplicationGroupId = &v
12953	return s
12954}
12955
12956type IncreaseReplicaCountOutput struct {
12957	_ struct{} `type:"structure"`
12958
12959	// Contains all of the attributes of a specific Redis replication group.
12960	ReplicationGroup *ReplicationGroup `type:"structure"`
12961}
12962
12963// String returns the string representation
12964func (s IncreaseReplicaCountOutput) String() string {
12965	return awsutil.Prettify(s)
12966}
12967
12968// GoString returns the string representation
12969func (s IncreaseReplicaCountOutput) GoString() string {
12970	return s.String()
12971}
12972
12973// SetReplicationGroup sets the ReplicationGroup field's value.
12974func (s *IncreaseReplicaCountOutput) SetReplicationGroup(v *ReplicationGroup) *IncreaseReplicaCountOutput {
12975	s.ReplicationGroup = v
12976	return s
12977}
12978
12979// The input parameters for the ListAllowedNodeTypeModifications operation.
12980type ListAllowedNodeTypeModificationsInput struct {
12981	_ struct{} `type:"structure"`
12982
12983	// The name of the cluster you want to scale up to a larger node instanced type.
12984	// ElastiCache uses the cluster id to identify the current node type of this
12985	// cluster and from that to create a list of node types you can scale up to.
12986	//
12987	// You must provide a value for either the CacheClusterId or the ReplicationGroupId.
12988	CacheClusterId *string `type:"string"`
12989
12990	// The name of the replication group want to scale up to a larger node type.
12991	// ElastiCache uses the replication group id to identify the current node type
12992	// being used by this replication group, and from that to create a list of node
12993	// types you can scale up to.
12994	//
12995	// You must provide a value for either the CacheClusterId or the ReplicationGroupId.
12996	ReplicationGroupId *string `type:"string"`
12997}
12998
12999// String returns the string representation
13000func (s ListAllowedNodeTypeModificationsInput) String() string {
13001	return awsutil.Prettify(s)
13002}
13003
13004// GoString returns the string representation
13005func (s ListAllowedNodeTypeModificationsInput) GoString() string {
13006	return s.String()
13007}
13008
13009// SetCacheClusterId sets the CacheClusterId field's value.
13010func (s *ListAllowedNodeTypeModificationsInput) SetCacheClusterId(v string) *ListAllowedNodeTypeModificationsInput {
13011	s.CacheClusterId = &v
13012	return s
13013}
13014
13015// SetReplicationGroupId sets the ReplicationGroupId field's value.
13016func (s *ListAllowedNodeTypeModificationsInput) SetReplicationGroupId(v string) *ListAllowedNodeTypeModificationsInput {
13017	s.ReplicationGroupId = &v
13018	return s
13019}
13020
13021// Represents the allowed node types you can use to modify your cluster or replication
13022// group.
13023type ListAllowedNodeTypeModificationsOutput struct {
13024	_ struct{} `type:"structure"`
13025
13026	// A string list, each element of which specifies a cache node type which you
13027	// can use to scale your cluster or replication group. When scaling down a Redis
13028	// cluster or replication group using ModifyCacheCluster or ModifyReplicationGroup,
13029	// use a value from this list for the CacheNodeType parameter.
13030	ScaleDownModifications []*string `type:"list"`
13031
13032	// A string list, each element of which specifies a cache node type which you
13033	// can use to scale your cluster or replication group.
13034	//
13035	// When scaling up a Redis cluster or replication group using ModifyCacheCluster
13036	// or ModifyReplicationGroup, use a value from this list for the CacheNodeType
13037	// parameter.
13038	ScaleUpModifications []*string `type:"list"`
13039}
13040
13041// String returns the string representation
13042func (s ListAllowedNodeTypeModificationsOutput) String() string {
13043	return awsutil.Prettify(s)
13044}
13045
13046// GoString returns the string representation
13047func (s ListAllowedNodeTypeModificationsOutput) GoString() string {
13048	return s.String()
13049}
13050
13051// SetScaleDownModifications sets the ScaleDownModifications field's value.
13052func (s *ListAllowedNodeTypeModificationsOutput) SetScaleDownModifications(v []*string) *ListAllowedNodeTypeModificationsOutput {
13053	s.ScaleDownModifications = v
13054	return s
13055}
13056
13057// SetScaleUpModifications sets the ScaleUpModifications field's value.
13058func (s *ListAllowedNodeTypeModificationsOutput) SetScaleUpModifications(v []*string) *ListAllowedNodeTypeModificationsOutput {
13059	s.ScaleUpModifications = v
13060	return s
13061}
13062
13063// The input parameters for the ListTagsForResource operation.
13064type ListTagsForResourceInput struct {
13065	_ struct{} `type:"structure"`
13066
13067	// The Amazon Resource Name (ARN) of the resource for which you want the list
13068	// of tags, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
13069	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.
13070	//
13071	// For more information about ARNs, see Amazon Resource Names (ARNs) and AWS
13072	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
13073	//
13074	// ResourceName is a required field
13075	ResourceName *string `type:"string" required:"true"`
13076}
13077
13078// String returns the string representation
13079func (s ListTagsForResourceInput) String() string {
13080	return awsutil.Prettify(s)
13081}
13082
13083// GoString returns the string representation
13084func (s ListTagsForResourceInput) GoString() string {
13085	return s.String()
13086}
13087
13088// Validate inspects the fields of the type to determine if they are valid.
13089func (s *ListTagsForResourceInput) Validate() error {
13090	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
13091	if s.ResourceName == nil {
13092		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
13093	}
13094
13095	if invalidParams.Len() > 0 {
13096		return invalidParams
13097	}
13098	return nil
13099}
13100
13101// SetResourceName sets the ResourceName field's value.
13102func (s *ListTagsForResourceInput) SetResourceName(v string) *ListTagsForResourceInput {
13103	s.ResourceName = &v
13104	return s
13105}
13106
13107// Represents the input of a ModifyCacheCluster operation.
13108type ModifyCacheClusterInput struct {
13109	_ struct{} `type:"structure"`
13110
13111	// Specifies whether the new nodes in this Memcached cluster are all created
13112	// in a single Availability Zone or created across multiple Availability Zones.
13113	//
13114	// Valid values: single-az | cross-az.
13115	//
13116	// This option is only supported for Memcached clusters.
13117	//
13118	// You cannot specify single-az if the Memcached cluster already has cache nodes
13119	// in different Availability Zones. If cross-az is specified, existing Memcached
13120	// nodes remain in their current Availability Zone.
13121	//
13122	// Only newly created nodes are located in different Availability Zones.
13123	AZMode *string `type:"string" enum:"AZMode"`
13124
13125	// If true, this parameter causes the modifications in this request and any
13126	// pending modifications to be applied, asynchronously and as soon as possible,
13127	// regardless of the PreferredMaintenanceWindow setting for the cluster.
13128	//
13129	// If false, changes to the cluster are applied on the next maintenance reboot,
13130	// or the next failure reboot, whichever occurs first.
13131	//
13132	// If you perform a ModifyCacheCluster before a pending modification is applied,
13133	// the pending modification is replaced by the newer modification.
13134	//
13135	// Valid values: true | false
13136	//
13137	// Default: false
13138	ApplyImmediately *bool `type:"boolean"`
13139
13140	// Reserved parameter. The password used to access a password protected server.
13141	// This parameter must be specified with the auth-token-update parameter. Password
13142	// constraints:
13143	//
13144	//    * Must be only printable ASCII characters
13145	//
13146	//    * Must be at least 16 characters and no more than 128 characters in length
13147	//
13148	//    * Cannot contain any of the following characters: '/', '"', or '@', '%'
13149	//
13150	// For more information, see AUTH password at AUTH (http://redis.io/commands/AUTH).
13151	AuthToken *string `type:"string"`
13152
13153	// Specifies the strategy to use to update the AUTH token. This parameter must
13154	// be specified with the auth-token parameter. Possible values:
13155	//
13156	//    * Rotate
13157	//
13158	//    * Set
13159	//
13160	// For more information, see Authenticating Users with Redis AUTH (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html)
13161	AuthTokenUpdateStrategy *string `type:"string" enum:"AuthTokenUpdateStrategyType"`
13162
13163	// This parameter is currently disabled.
13164	AutoMinorVersionUpgrade *bool `type:"boolean"`
13165
13166	// The cluster identifier. This value is stored as a lowercase string.
13167	//
13168	// CacheClusterId is a required field
13169	CacheClusterId *string `type:"string" required:"true"`
13170
13171	// A list of cache node IDs to be removed. A node ID is a numeric identifier
13172	// (0001, 0002, etc.). This parameter is only valid when NumCacheNodes is less
13173	// than the existing number of cache nodes. The number of cache node IDs supplied
13174	// in this parameter must match the difference between the existing number of
13175	// cache nodes in the cluster or pending cache nodes, whichever is greater,
13176	// and the value of NumCacheNodes in the request.
13177	//
13178	// For example: If you have 3 active cache nodes, 7 pending cache nodes, and
13179	// the number of cache nodes in this ModifyCacheCluster call is 5, you must
13180	// list 2 (7 - 5) cache node IDs to remove.
13181	CacheNodeIdsToRemove []*string `locationNameList:"CacheNodeId" type:"list"`
13182
13183	// A valid cache node type that you want to scale this cluster up to.
13184	CacheNodeType *string `type:"string"`
13185
13186	// The name of the cache parameter group to apply to this cluster. This change
13187	// is asynchronously applied as soon as possible for parameters when the ApplyImmediately
13188	// parameter is specified as true for this request.
13189	CacheParameterGroupName *string `type:"string"`
13190
13191	// A list of cache security group names to authorize on this cluster. This change
13192	// is asynchronously applied as soon as possible.
13193	//
13194	// You can use this parameter only with clusters that are created outside of
13195	// an Amazon Virtual Private Cloud (Amazon VPC).
13196	//
13197	// Constraints: Must contain no more than 255 alphanumeric characters. Must
13198	// not be "Default".
13199	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
13200
13201	// The upgraded version of the cache engine to be run on the cache nodes.
13202	//
13203	// Important: You can upgrade to a newer engine version (see Selecting a Cache
13204	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
13205	// but you cannot downgrade to an earlier engine version. If you want to use
13206	// an earlier engine version, you must delete the existing cluster and create
13207	// it anew with the earlier engine version.
13208	EngineVersion *string `type:"string"`
13209
13210	// The list of Availability Zones where the new Memcached cache nodes are created.
13211	//
13212	// This parameter is only valid when NumCacheNodes in the request is greater
13213	// than the sum of the number of active cache nodes and the number of cache
13214	// nodes pending creation (which may be zero). The number of Availability Zones
13215	// supplied in this list must match the cache nodes being added in this request.
13216	//
13217	// This option is only supported on Memcached clusters.
13218	//
13219	// Scenarios:
13220	//
13221	//    * Scenario 1: You have 3 active nodes and wish to add 2 nodes. Specify
13222	//    NumCacheNodes=5 (3 + 2) and optionally specify two Availability Zones
13223	//    for the two new nodes.
13224	//
13225	//    * Scenario 2: You have 3 active nodes and 2 nodes pending creation (from
13226	//    the scenario 1 call) and want to add 1 more node. Specify NumCacheNodes=6
13227	//    ((3 + 2) + 1) and optionally specify an Availability Zone for the new
13228	//    node.
13229	//
13230	//    * Scenario 3: You want to cancel all pending operations. Specify NumCacheNodes=3
13231	//    to cancel all pending operations.
13232	//
13233	// The Availability Zone placement of nodes pending creation cannot be modified.
13234	// If you wish to cancel any nodes pending creation, add 0 nodes by setting
13235	// NumCacheNodes to the number of current nodes.
13236	//
13237	// If cross-az is specified, existing Memcached nodes remain in their current
13238	// Availability Zone. Only newly created nodes can be located in different Availability
13239	// Zones. For guidance on how to move existing Memcached nodes to different
13240	// Availability Zones, see the Availability Zone Considerations section of Cache
13241	// Node Considerations for Memcached (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html).
13242	//
13243	// Impact of new add/remove requests upon pending requests
13244	//
13245	//    * Scenario-1 Pending Action: Delete New Request: Delete Result: The new
13246	//    delete, pending or immediate, replaces the pending delete.
13247	//
13248	//    * Scenario-2 Pending Action: Delete New Request: Create Result: The new
13249	//    create, pending or immediate, replaces the pending delete.
13250	//
13251	//    * Scenario-3 Pending Action: Create New Request: Delete Result: The new
13252	//    delete, pending or immediate, replaces the pending create.
13253	//
13254	//    * Scenario-4 Pending Action: Create New Request: Create Result: The new
13255	//    create is added to the pending create. Important: If the new create request
13256	//    is Apply Immediately - Yes, all creates are performed immediately. If
13257	//    the new create request is Apply Immediately - No, all creates are pending.
13258	NewAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
13259
13260	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
13261	// are sent.
13262	//
13263	// The Amazon SNS topic owner must be same as the cluster owner.
13264	NotificationTopicArn *string `type:"string"`
13265
13266	// The status of the Amazon SNS notification topic. Notifications are sent only
13267	// if the status is active.
13268	//
13269	// Valid values: active | inactive
13270	NotificationTopicStatus *string `type:"string"`
13271
13272	// The number of cache nodes that the cluster should have. If the value for
13273	// NumCacheNodes is greater than the sum of the number of current cache nodes
13274	// and the number of cache nodes pending creation (which may be zero), more
13275	// nodes are added. If the value is less than the number of existing cache nodes,
13276	// nodes are removed. If the value is equal to the number of current cache nodes,
13277	// any pending add or remove requests are canceled.
13278	//
13279	// If you are removing cache nodes, you must use the CacheNodeIdsToRemove parameter
13280	// to provide the IDs of the specific cache nodes to remove.
13281	//
13282	// For clusters running Redis, this value must be 1. For clusters running Memcached,
13283	// this value must be between 1 and 20.
13284	//
13285	// Adding or removing Memcached cache nodes can be applied immediately or as
13286	// a pending operation (see ApplyImmediately).
13287	//
13288	// A pending operation to modify the number of cache nodes in a cluster during
13289	// its maintenance window, whether by adding or removing nodes in accordance
13290	// with the scale out architecture, is not queued. The customer's latest request
13291	// to add or remove nodes to the cluster overrides any previous pending operations
13292	// to modify the number of cache nodes in the cluster. For example, a request
13293	// to remove 2 nodes would override a previous pending operation to remove 3
13294	// nodes. Similarly, a request to add 2 nodes would override a previous pending
13295	// operation to remove 3 nodes and vice versa. As Memcached cache nodes may
13296	// now be provisioned in different Availability Zones with flexible cache node
13297	// placement, a request to add nodes does not automatically override a previous
13298	// pending operation to add nodes. The customer can modify the previous pending
13299	// operation to add more nodes or explicitly cancel the pending request and
13300	// retry the new request. To cancel pending operations to modify the number
13301	// of cache nodes in a cluster, use the ModifyCacheCluster request and set NumCacheNodes
13302	// equal to the number of cache nodes currently in the cluster.
13303	NumCacheNodes *int64 `type:"integer"`
13304
13305	// Specifies the weekly time range during which maintenance on the cluster is
13306	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
13307	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
13308	//
13309	// Valid values for ddd are:
13310	//
13311	//    * sun
13312	//
13313	//    * mon
13314	//
13315	//    * tue
13316	//
13317	//    * wed
13318	//
13319	//    * thu
13320	//
13321	//    * fri
13322	//
13323	//    * sat
13324	//
13325	// Example: sun:23:00-mon:01:30
13326	PreferredMaintenanceWindow *string `type:"string"`
13327
13328	// Specifies the VPC Security Groups associated with the cluster.
13329	//
13330	// This parameter can be used only with clusters that are created in an Amazon
13331	// Virtual Private Cloud (Amazon VPC).
13332	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
13333
13334	// The number of days for which ElastiCache retains automatic cluster snapshots
13335	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
13336	// a snapshot that was taken today is retained for 5 days before being deleted.
13337	//
13338	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
13339	// off.
13340	SnapshotRetentionLimit *int64 `type:"integer"`
13341
13342	// The daily time range (in UTC) during which ElastiCache begins taking a daily
13343	// snapshot of your cluster.
13344	SnapshotWindow *string `type:"string"`
13345}
13346
13347// String returns the string representation
13348func (s ModifyCacheClusterInput) String() string {
13349	return awsutil.Prettify(s)
13350}
13351
13352// GoString returns the string representation
13353func (s ModifyCacheClusterInput) GoString() string {
13354	return s.String()
13355}
13356
13357// Validate inspects the fields of the type to determine if they are valid.
13358func (s *ModifyCacheClusterInput) Validate() error {
13359	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheClusterInput"}
13360	if s.CacheClusterId == nil {
13361		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
13362	}
13363
13364	if invalidParams.Len() > 0 {
13365		return invalidParams
13366	}
13367	return nil
13368}
13369
13370// SetAZMode sets the AZMode field's value.
13371func (s *ModifyCacheClusterInput) SetAZMode(v string) *ModifyCacheClusterInput {
13372	s.AZMode = &v
13373	return s
13374}
13375
13376// SetApplyImmediately sets the ApplyImmediately field's value.
13377func (s *ModifyCacheClusterInput) SetApplyImmediately(v bool) *ModifyCacheClusterInput {
13378	s.ApplyImmediately = &v
13379	return s
13380}
13381
13382// SetAuthToken sets the AuthToken field's value.
13383func (s *ModifyCacheClusterInput) SetAuthToken(v string) *ModifyCacheClusterInput {
13384	s.AuthToken = &v
13385	return s
13386}
13387
13388// SetAuthTokenUpdateStrategy sets the AuthTokenUpdateStrategy field's value.
13389func (s *ModifyCacheClusterInput) SetAuthTokenUpdateStrategy(v string) *ModifyCacheClusterInput {
13390	s.AuthTokenUpdateStrategy = &v
13391	return s
13392}
13393
13394// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
13395func (s *ModifyCacheClusterInput) SetAutoMinorVersionUpgrade(v bool) *ModifyCacheClusterInput {
13396	s.AutoMinorVersionUpgrade = &v
13397	return s
13398}
13399
13400// SetCacheClusterId sets the CacheClusterId field's value.
13401func (s *ModifyCacheClusterInput) SetCacheClusterId(v string) *ModifyCacheClusterInput {
13402	s.CacheClusterId = &v
13403	return s
13404}
13405
13406// SetCacheNodeIdsToRemove sets the CacheNodeIdsToRemove field's value.
13407func (s *ModifyCacheClusterInput) SetCacheNodeIdsToRemove(v []*string) *ModifyCacheClusterInput {
13408	s.CacheNodeIdsToRemove = v
13409	return s
13410}
13411
13412// SetCacheNodeType sets the CacheNodeType field's value.
13413func (s *ModifyCacheClusterInput) SetCacheNodeType(v string) *ModifyCacheClusterInput {
13414	s.CacheNodeType = &v
13415	return s
13416}
13417
13418// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
13419func (s *ModifyCacheClusterInput) SetCacheParameterGroupName(v string) *ModifyCacheClusterInput {
13420	s.CacheParameterGroupName = &v
13421	return s
13422}
13423
13424// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
13425func (s *ModifyCacheClusterInput) SetCacheSecurityGroupNames(v []*string) *ModifyCacheClusterInput {
13426	s.CacheSecurityGroupNames = v
13427	return s
13428}
13429
13430// SetEngineVersion sets the EngineVersion field's value.
13431func (s *ModifyCacheClusterInput) SetEngineVersion(v string) *ModifyCacheClusterInput {
13432	s.EngineVersion = &v
13433	return s
13434}
13435
13436// SetNewAvailabilityZones sets the NewAvailabilityZones field's value.
13437func (s *ModifyCacheClusterInput) SetNewAvailabilityZones(v []*string) *ModifyCacheClusterInput {
13438	s.NewAvailabilityZones = v
13439	return s
13440}
13441
13442// SetNotificationTopicArn sets the NotificationTopicArn field's value.
13443func (s *ModifyCacheClusterInput) SetNotificationTopicArn(v string) *ModifyCacheClusterInput {
13444	s.NotificationTopicArn = &v
13445	return s
13446}
13447
13448// SetNotificationTopicStatus sets the NotificationTopicStatus field's value.
13449func (s *ModifyCacheClusterInput) SetNotificationTopicStatus(v string) *ModifyCacheClusterInput {
13450	s.NotificationTopicStatus = &v
13451	return s
13452}
13453
13454// SetNumCacheNodes sets the NumCacheNodes field's value.
13455func (s *ModifyCacheClusterInput) SetNumCacheNodes(v int64) *ModifyCacheClusterInput {
13456	s.NumCacheNodes = &v
13457	return s
13458}
13459
13460// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
13461func (s *ModifyCacheClusterInput) SetPreferredMaintenanceWindow(v string) *ModifyCacheClusterInput {
13462	s.PreferredMaintenanceWindow = &v
13463	return s
13464}
13465
13466// SetSecurityGroupIds sets the SecurityGroupIds field's value.
13467func (s *ModifyCacheClusterInput) SetSecurityGroupIds(v []*string) *ModifyCacheClusterInput {
13468	s.SecurityGroupIds = v
13469	return s
13470}
13471
13472// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
13473func (s *ModifyCacheClusterInput) SetSnapshotRetentionLimit(v int64) *ModifyCacheClusterInput {
13474	s.SnapshotRetentionLimit = &v
13475	return s
13476}
13477
13478// SetSnapshotWindow sets the SnapshotWindow field's value.
13479func (s *ModifyCacheClusterInput) SetSnapshotWindow(v string) *ModifyCacheClusterInput {
13480	s.SnapshotWindow = &v
13481	return s
13482}
13483
13484type ModifyCacheClusterOutput struct {
13485	_ struct{} `type:"structure"`
13486
13487	// Contains all of the attributes of a specific cluster.
13488	CacheCluster *CacheCluster `type:"structure"`
13489}
13490
13491// String returns the string representation
13492func (s ModifyCacheClusterOutput) String() string {
13493	return awsutil.Prettify(s)
13494}
13495
13496// GoString returns the string representation
13497func (s ModifyCacheClusterOutput) GoString() string {
13498	return s.String()
13499}
13500
13501// SetCacheCluster sets the CacheCluster field's value.
13502func (s *ModifyCacheClusterOutput) SetCacheCluster(v *CacheCluster) *ModifyCacheClusterOutput {
13503	s.CacheCluster = v
13504	return s
13505}
13506
13507// Represents the input of a ModifyCacheParameterGroup operation.
13508type ModifyCacheParameterGroupInput struct {
13509	_ struct{} `type:"structure"`
13510
13511	// The name of the cache parameter group to modify.
13512	//
13513	// CacheParameterGroupName is a required field
13514	CacheParameterGroupName *string `type:"string" required:"true"`
13515
13516	// An array of parameter names and values for the parameter update. You must
13517	// supply at least one parameter name and value; subsequent arguments are optional.
13518	// A maximum of 20 parameters may be modified per request.
13519	//
13520	// ParameterNameValues is a required field
13521	ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list" required:"true"`
13522}
13523
13524// String returns the string representation
13525func (s ModifyCacheParameterGroupInput) String() string {
13526	return awsutil.Prettify(s)
13527}
13528
13529// GoString returns the string representation
13530func (s ModifyCacheParameterGroupInput) GoString() string {
13531	return s.String()
13532}
13533
13534// Validate inspects the fields of the type to determine if they are valid.
13535func (s *ModifyCacheParameterGroupInput) Validate() error {
13536	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheParameterGroupInput"}
13537	if s.CacheParameterGroupName == nil {
13538		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
13539	}
13540	if s.ParameterNameValues == nil {
13541		invalidParams.Add(request.NewErrParamRequired("ParameterNameValues"))
13542	}
13543
13544	if invalidParams.Len() > 0 {
13545		return invalidParams
13546	}
13547	return nil
13548}
13549
13550// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
13551func (s *ModifyCacheParameterGroupInput) SetCacheParameterGroupName(v string) *ModifyCacheParameterGroupInput {
13552	s.CacheParameterGroupName = &v
13553	return s
13554}
13555
13556// SetParameterNameValues sets the ParameterNameValues field's value.
13557func (s *ModifyCacheParameterGroupInput) SetParameterNameValues(v []*ParameterNameValue) *ModifyCacheParameterGroupInput {
13558	s.ParameterNameValues = v
13559	return s
13560}
13561
13562// Represents the input of a ModifyCacheSubnetGroup operation.
13563type ModifyCacheSubnetGroupInput struct {
13564	_ struct{} `type:"structure"`
13565
13566	// A description of the cache subnet group.
13567	CacheSubnetGroupDescription *string `type:"string"`
13568
13569	// The name for the cache subnet group. This value is stored as a lowercase
13570	// string.
13571	//
13572	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
13573	//
13574	// Example: mysubnetgroup
13575	//
13576	// CacheSubnetGroupName is a required field
13577	CacheSubnetGroupName *string `type:"string" required:"true"`
13578
13579	// The EC2 subnet IDs for the cache subnet group.
13580	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list"`
13581}
13582
13583// String returns the string representation
13584func (s ModifyCacheSubnetGroupInput) String() string {
13585	return awsutil.Prettify(s)
13586}
13587
13588// GoString returns the string representation
13589func (s ModifyCacheSubnetGroupInput) GoString() string {
13590	return s.String()
13591}
13592
13593// Validate inspects the fields of the type to determine if they are valid.
13594func (s *ModifyCacheSubnetGroupInput) Validate() error {
13595	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheSubnetGroupInput"}
13596	if s.CacheSubnetGroupName == nil {
13597		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
13598	}
13599
13600	if invalidParams.Len() > 0 {
13601		return invalidParams
13602	}
13603	return nil
13604}
13605
13606// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
13607func (s *ModifyCacheSubnetGroupInput) SetCacheSubnetGroupDescription(v string) *ModifyCacheSubnetGroupInput {
13608	s.CacheSubnetGroupDescription = &v
13609	return s
13610}
13611
13612// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
13613func (s *ModifyCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *ModifyCacheSubnetGroupInput {
13614	s.CacheSubnetGroupName = &v
13615	return s
13616}
13617
13618// SetSubnetIds sets the SubnetIds field's value.
13619func (s *ModifyCacheSubnetGroupInput) SetSubnetIds(v []*string) *ModifyCacheSubnetGroupInput {
13620	s.SubnetIds = v
13621	return s
13622}
13623
13624type ModifyCacheSubnetGroupOutput struct {
13625	_ struct{} `type:"structure"`
13626
13627	// Represents the output of one of the following operations:
13628	//
13629	//    * CreateCacheSubnetGroup
13630	//
13631	//    * ModifyCacheSubnetGroup
13632	CacheSubnetGroup *CacheSubnetGroup `type:"structure"`
13633}
13634
13635// String returns the string representation
13636func (s ModifyCacheSubnetGroupOutput) String() string {
13637	return awsutil.Prettify(s)
13638}
13639
13640// GoString returns the string representation
13641func (s ModifyCacheSubnetGroupOutput) GoString() string {
13642	return s.String()
13643}
13644
13645// SetCacheSubnetGroup sets the CacheSubnetGroup field's value.
13646func (s *ModifyCacheSubnetGroupOutput) SetCacheSubnetGroup(v *CacheSubnetGroup) *ModifyCacheSubnetGroupOutput {
13647	s.CacheSubnetGroup = v
13648	return s
13649}
13650
13651type ModifyGlobalReplicationGroupInput struct {
13652	_ struct{} `type:"structure"`
13653
13654	// This parameter causes the modifications in this request and any pending modifications
13655	// to be applied, asynchronously and as soon as possible. Modifications to Global
13656	// Replication Groups cannot be requested to be applied in PreferredMaintenceWindow.
13657	//
13658	// ApplyImmediately is a required field
13659	ApplyImmediately *bool `type:"boolean" required:"true"`
13660
13661	// Determines whether a read replica is automatically promoted to read/write
13662	// primary if the existing primary encounters a failure.
13663	AutomaticFailoverEnabled *bool `type:"boolean"`
13664
13665	// A valid cache node type that you want to scale this Global Datastore to.
13666	CacheNodeType *string `type:"string"`
13667
13668	// The upgraded version of the cache engine to be run on the clusters in the
13669	// Global Datastore.
13670	EngineVersion *string `type:"string"`
13671
13672	// A description of the Global Datastore
13673	GlobalReplicationGroupDescription *string `type:"string"`
13674
13675	// The name of the Global Datastore
13676	//
13677	// GlobalReplicationGroupId is a required field
13678	GlobalReplicationGroupId *string `type:"string" required:"true"`
13679}
13680
13681// String returns the string representation
13682func (s ModifyGlobalReplicationGroupInput) String() string {
13683	return awsutil.Prettify(s)
13684}
13685
13686// GoString returns the string representation
13687func (s ModifyGlobalReplicationGroupInput) GoString() string {
13688	return s.String()
13689}
13690
13691// Validate inspects the fields of the type to determine if they are valid.
13692func (s *ModifyGlobalReplicationGroupInput) Validate() error {
13693	invalidParams := request.ErrInvalidParams{Context: "ModifyGlobalReplicationGroupInput"}
13694	if s.ApplyImmediately == nil {
13695		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
13696	}
13697	if s.GlobalReplicationGroupId == nil {
13698		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
13699	}
13700
13701	if invalidParams.Len() > 0 {
13702		return invalidParams
13703	}
13704	return nil
13705}
13706
13707// SetApplyImmediately sets the ApplyImmediately field's value.
13708func (s *ModifyGlobalReplicationGroupInput) SetApplyImmediately(v bool) *ModifyGlobalReplicationGroupInput {
13709	s.ApplyImmediately = &v
13710	return s
13711}
13712
13713// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
13714func (s *ModifyGlobalReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *ModifyGlobalReplicationGroupInput {
13715	s.AutomaticFailoverEnabled = &v
13716	return s
13717}
13718
13719// SetCacheNodeType sets the CacheNodeType field's value.
13720func (s *ModifyGlobalReplicationGroupInput) SetCacheNodeType(v string) *ModifyGlobalReplicationGroupInput {
13721	s.CacheNodeType = &v
13722	return s
13723}
13724
13725// SetEngineVersion sets the EngineVersion field's value.
13726func (s *ModifyGlobalReplicationGroupInput) SetEngineVersion(v string) *ModifyGlobalReplicationGroupInput {
13727	s.EngineVersion = &v
13728	return s
13729}
13730
13731// SetGlobalReplicationGroupDescription sets the GlobalReplicationGroupDescription field's value.
13732func (s *ModifyGlobalReplicationGroupInput) SetGlobalReplicationGroupDescription(v string) *ModifyGlobalReplicationGroupInput {
13733	s.GlobalReplicationGroupDescription = &v
13734	return s
13735}
13736
13737// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
13738func (s *ModifyGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *ModifyGlobalReplicationGroupInput {
13739	s.GlobalReplicationGroupId = &v
13740	return s
13741}
13742
13743type ModifyGlobalReplicationGroupOutput struct {
13744	_ struct{} `type:"structure"`
13745
13746	// Consists of a primary cluster that accepts writes and an associated secondary
13747	// cluster that resides in a different AWS region. The secondary cluster accepts
13748	// only reads. The primary cluster automatically replicates updates to the secondary
13749	// cluster.
13750	//
13751	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
13752	//    Datastore, which is what you use to associate a secondary cluster.
13753	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
13754}
13755
13756// String returns the string representation
13757func (s ModifyGlobalReplicationGroupOutput) String() string {
13758	return awsutil.Prettify(s)
13759}
13760
13761// GoString returns the string representation
13762func (s ModifyGlobalReplicationGroupOutput) GoString() string {
13763	return s.String()
13764}
13765
13766// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
13767func (s *ModifyGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *ModifyGlobalReplicationGroupOutput {
13768	s.GlobalReplicationGroup = v
13769	return s
13770}
13771
13772// Represents the input of a ModifyReplicationGroups operation.
13773type ModifyReplicationGroupInput struct {
13774	_ struct{} `type:"structure"`
13775
13776	// If true, this parameter causes the modifications in this request and any
13777	// pending modifications to be applied, asynchronously and as soon as possible,
13778	// regardless of the PreferredMaintenanceWindow setting for the replication
13779	// group.
13780	//
13781	// If false, changes to the nodes in the replication group are applied on the
13782	// next maintenance reboot, or the next failure reboot, whichever occurs first.
13783	//
13784	// Valid values: true | false
13785	//
13786	// Default: false
13787	ApplyImmediately *bool `type:"boolean"`
13788
13789	// Reserved parameter. The password used to access a password protected server.
13790	// This parameter must be specified with the auth-token-update-strategy parameter.
13791	// Password constraints:
13792	//
13793	//    * Must be only printable ASCII characters
13794	//
13795	//    * Must be at least 16 characters and no more than 128 characters in length
13796	//
13797	//    * Cannot contain any of the following characters: '/', '"', or '@', '%'
13798	//
13799	// For more information, see AUTH password at AUTH (http://redis.io/commands/AUTH).
13800	AuthToken *string `type:"string"`
13801
13802	// Specifies the strategy to use to update the AUTH token. This parameter must
13803	// be specified with the auth-token parameter. Possible values:
13804	//
13805	//    * Rotate
13806	//
13807	//    * Set
13808	//
13809	// For more information, see Authenticating Users with Redis AUTH (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html)
13810	AuthTokenUpdateStrategy *string `type:"string" enum:"AuthTokenUpdateStrategyType"`
13811
13812	// This parameter is currently disabled.
13813	AutoMinorVersionUpgrade *bool `type:"boolean"`
13814
13815	// Determines whether a read replica is automatically promoted to read/write
13816	// primary if the existing primary encounters a failure.
13817	//
13818	// Valid values: true | false
13819	//
13820	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
13821	// on:
13822	//
13823	//    * Redis versions earlier than 2.8.6.
13824	//
13825	//    * Redis (cluster mode disabled): T1 node types.
13826	//
13827	//    * Redis (cluster mode enabled): T1 node types.
13828	AutomaticFailoverEnabled *bool `type:"boolean"`
13829
13830	// A valid cache node type that you want to scale this replication group to.
13831	CacheNodeType *string `type:"string"`
13832
13833	// The name of the cache parameter group to apply to all of the clusters in
13834	// this replication group. This change is asynchronously applied as soon as
13835	// possible for parameters when the ApplyImmediately parameter is specified
13836	// as true for this request.
13837	CacheParameterGroupName *string `type:"string"`
13838
13839	// A list of cache security group names to authorize for the clusters in this
13840	// replication group. This change is asynchronously applied as soon as possible.
13841	//
13842	// This parameter can be used only with replication group containing clusters
13843	// running outside of an Amazon Virtual Private Cloud (Amazon VPC).
13844	//
13845	// Constraints: Must contain no more than 255 alphanumeric characters. Must
13846	// not be Default.
13847	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
13848
13849	// The upgraded version of the cache engine to be run on the clusters in the
13850	// replication group.
13851	//
13852	// Important: You can upgrade to a newer engine version (see Selecting a Cache
13853	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
13854	// but you cannot downgrade to an earlier engine version. If you want to use
13855	// an earlier engine version, you must delete the existing replication group
13856	// and create it anew with the earlier engine version.
13857	EngineVersion *string `type:"string"`
13858
13859	MultiAZEnabled *bool `type:"boolean"`
13860
13861	// Deprecated. This parameter is not used.
13862	//
13863	// Deprecated: NodeGroupId has been deprecated
13864	NodeGroupId *string `deprecated:"true" type:"string"`
13865
13866	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
13867	// are sent.
13868	//
13869	// The Amazon SNS topic owner must be same as the replication group owner.
13870	NotificationTopicArn *string `type:"string"`
13871
13872	// The status of the Amazon SNS notification topic for the replication group.
13873	// Notifications are sent only if the status is active.
13874	//
13875	// Valid values: active | inactive
13876	NotificationTopicStatus *string `type:"string"`
13877
13878	// Specifies the weekly time range during which maintenance on the cluster is
13879	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
13880	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
13881	//
13882	// Valid values for ddd are:
13883	//
13884	//    * sun
13885	//
13886	//    * mon
13887	//
13888	//    * tue
13889	//
13890	//    * wed
13891	//
13892	//    * thu
13893	//
13894	//    * fri
13895	//
13896	//    * sat
13897	//
13898	// Example: sun:23:00-mon:01:30
13899	PreferredMaintenanceWindow *string `type:"string"`
13900
13901	// For replication groups with a single primary, if this parameter is specified,
13902	// ElastiCache promotes the specified cluster in the specified replication group
13903	// to the primary role. The nodes of all other clusters in the replication group
13904	// are read replicas.
13905	PrimaryClusterId *string `type:"string"`
13906
13907	// A description for the replication group. Maximum length is 255 characters.
13908	ReplicationGroupDescription *string `type:"string"`
13909
13910	// The identifier of the replication group to modify.
13911	//
13912	// ReplicationGroupId is a required field
13913	ReplicationGroupId *string `type:"string" required:"true"`
13914
13915	// Specifies the VPC Security Groups associated with the clusters in the replication
13916	// group.
13917	//
13918	// This parameter can be used only with replication group containing clusters
13919	// running in an Amazon Virtual Private Cloud (Amazon VPC).
13920	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
13921
13922	// The number of days for which ElastiCache retains automatic node group (shard)
13923	// snapshots before deleting them. For example, if you set SnapshotRetentionLimit
13924	// to 5, a snapshot that was taken today is retained for 5 days before being
13925	// deleted.
13926	//
13927	// Important If the value of SnapshotRetentionLimit is set to zero (0), backups
13928	// are turned off.
13929	SnapshotRetentionLimit *int64 `type:"integer"`
13930
13931	// The daily time range (in UTC) during which ElastiCache begins taking a daily
13932	// snapshot of the node group (shard) specified by SnapshottingClusterId.
13933	//
13934	// Example: 05:00-09:00
13935	//
13936	// If you do not specify this parameter, ElastiCache automatically chooses an
13937	// appropriate time range.
13938	SnapshotWindow *string `type:"string"`
13939
13940	// The cluster ID that is used as the daily snapshot source for the replication
13941	// group. This parameter cannot be set for Redis (cluster mode enabled) replication
13942	// groups.
13943	SnapshottingClusterId *string `type:"string"`
13944}
13945
13946// String returns the string representation
13947func (s ModifyReplicationGroupInput) String() string {
13948	return awsutil.Prettify(s)
13949}
13950
13951// GoString returns the string representation
13952func (s ModifyReplicationGroupInput) GoString() string {
13953	return s.String()
13954}
13955
13956// Validate inspects the fields of the type to determine if they are valid.
13957func (s *ModifyReplicationGroupInput) Validate() error {
13958	invalidParams := request.ErrInvalidParams{Context: "ModifyReplicationGroupInput"}
13959	if s.ReplicationGroupId == nil {
13960		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
13961	}
13962
13963	if invalidParams.Len() > 0 {
13964		return invalidParams
13965	}
13966	return nil
13967}
13968
13969// SetApplyImmediately sets the ApplyImmediately field's value.
13970func (s *ModifyReplicationGroupInput) SetApplyImmediately(v bool) *ModifyReplicationGroupInput {
13971	s.ApplyImmediately = &v
13972	return s
13973}
13974
13975// SetAuthToken sets the AuthToken field's value.
13976func (s *ModifyReplicationGroupInput) SetAuthToken(v string) *ModifyReplicationGroupInput {
13977	s.AuthToken = &v
13978	return s
13979}
13980
13981// SetAuthTokenUpdateStrategy sets the AuthTokenUpdateStrategy field's value.
13982func (s *ModifyReplicationGroupInput) SetAuthTokenUpdateStrategy(v string) *ModifyReplicationGroupInput {
13983	s.AuthTokenUpdateStrategy = &v
13984	return s
13985}
13986
13987// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
13988func (s *ModifyReplicationGroupInput) SetAutoMinorVersionUpgrade(v bool) *ModifyReplicationGroupInput {
13989	s.AutoMinorVersionUpgrade = &v
13990	return s
13991}
13992
13993// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
13994func (s *ModifyReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *ModifyReplicationGroupInput {
13995	s.AutomaticFailoverEnabled = &v
13996	return s
13997}
13998
13999// SetCacheNodeType sets the CacheNodeType field's value.
14000func (s *ModifyReplicationGroupInput) SetCacheNodeType(v string) *ModifyReplicationGroupInput {
14001	s.CacheNodeType = &v
14002	return s
14003}
14004
14005// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
14006func (s *ModifyReplicationGroupInput) SetCacheParameterGroupName(v string) *ModifyReplicationGroupInput {
14007	s.CacheParameterGroupName = &v
14008	return s
14009}
14010
14011// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
14012func (s *ModifyReplicationGroupInput) SetCacheSecurityGroupNames(v []*string) *ModifyReplicationGroupInput {
14013	s.CacheSecurityGroupNames = v
14014	return s
14015}
14016
14017// SetEngineVersion sets the EngineVersion field's value.
14018func (s *ModifyReplicationGroupInput) SetEngineVersion(v string) *ModifyReplicationGroupInput {
14019	s.EngineVersion = &v
14020	return s
14021}
14022
14023// SetMultiAZEnabled sets the MultiAZEnabled field's value.
14024func (s *ModifyReplicationGroupInput) SetMultiAZEnabled(v bool) *ModifyReplicationGroupInput {
14025	s.MultiAZEnabled = &v
14026	return s
14027}
14028
14029// SetNodeGroupId sets the NodeGroupId field's value.
14030func (s *ModifyReplicationGroupInput) SetNodeGroupId(v string) *ModifyReplicationGroupInput {
14031	s.NodeGroupId = &v
14032	return s
14033}
14034
14035// SetNotificationTopicArn sets the NotificationTopicArn field's value.
14036func (s *ModifyReplicationGroupInput) SetNotificationTopicArn(v string) *ModifyReplicationGroupInput {
14037	s.NotificationTopicArn = &v
14038	return s
14039}
14040
14041// SetNotificationTopicStatus sets the NotificationTopicStatus field's value.
14042func (s *ModifyReplicationGroupInput) SetNotificationTopicStatus(v string) *ModifyReplicationGroupInput {
14043	s.NotificationTopicStatus = &v
14044	return s
14045}
14046
14047// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
14048func (s *ModifyReplicationGroupInput) SetPreferredMaintenanceWindow(v string) *ModifyReplicationGroupInput {
14049	s.PreferredMaintenanceWindow = &v
14050	return s
14051}
14052
14053// SetPrimaryClusterId sets the PrimaryClusterId field's value.
14054func (s *ModifyReplicationGroupInput) SetPrimaryClusterId(v string) *ModifyReplicationGroupInput {
14055	s.PrimaryClusterId = &v
14056	return s
14057}
14058
14059// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
14060func (s *ModifyReplicationGroupInput) SetReplicationGroupDescription(v string) *ModifyReplicationGroupInput {
14061	s.ReplicationGroupDescription = &v
14062	return s
14063}
14064
14065// SetReplicationGroupId sets the ReplicationGroupId field's value.
14066func (s *ModifyReplicationGroupInput) SetReplicationGroupId(v string) *ModifyReplicationGroupInput {
14067	s.ReplicationGroupId = &v
14068	return s
14069}
14070
14071// SetSecurityGroupIds sets the SecurityGroupIds field's value.
14072func (s *ModifyReplicationGroupInput) SetSecurityGroupIds(v []*string) *ModifyReplicationGroupInput {
14073	s.SecurityGroupIds = v
14074	return s
14075}
14076
14077// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
14078func (s *ModifyReplicationGroupInput) SetSnapshotRetentionLimit(v int64) *ModifyReplicationGroupInput {
14079	s.SnapshotRetentionLimit = &v
14080	return s
14081}
14082
14083// SetSnapshotWindow sets the SnapshotWindow field's value.
14084func (s *ModifyReplicationGroupInput) SetSnapshotWindow(v string) *ModifyReplicationGroupInput {
14085	s.SnapshotWindow = &v
14086	return s
14087}
14088
14089// SetSnapshottingClusterId sets the SnapshottingClusterId field's value.
14090func (s *ModifyReplicationGroupInput) SetSnapshottingClusterId(v string) *ModifyReplicationGroupInput {
14091	s.SnapshottingClusterId = &v
14092	return s
14093}
14094
14095type ModifyReplicationGroupOutput struct {
14096	_ struct{} `type:"structure"`
14097
14098	// Contains all of the attributes of a specific Redis replication group.
14099	ReplicationGroup *ReplicationGroup `type:"structure"`
14100}
14101
14102// String returns the string representation
14103func (s ModifyReplicationGroupOutput) String() string {
14104	return awsutil.Prettify(s)
14105}
14106
14107// GoString returns the string representation
14108func (s ModifyReplicationGroupOutput) GoString() string {
14109	return s.String()
14110}
14111
14112// SetReplicationGroup sets the ReplicationGroup field's value.
14113func (s *ModifyReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *ModifyReplicationGroupOutput {
14114	s.ReplicationGroup = v
14115	return s
14116}
14117
14118// Represents the input for a ModifyReplicationGroupShardConfiguration operation.
14119type ModifyReplicationGroupShardConfigurationInput struct {
14120	_ struct{} `type:"structure"`
14121
14122	// Indicates that the shard reconfiguration process begins immediately. At present,
14123	// the only permitted value for this parameter is true.
14124	//
14125	// Value: true
14126	//
14127	// ApplyImmediately is a required field
14128	ApplyImmediately *bool `type:"boolean" required:"true"`
14129
14130	// The number of node groups (shards) that results from the modification of
14131	// the shard configuration.
14132	//
14133	// NodeGroupCount is a required field
14134	NodeGroupCount *int64 `type:"integer" required:"true"`
14135
14136	// If the value of NodeGroupCount is less than the current number of node groups
14137	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
14138	// NodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster.
14139	//
14140	// ElastiCache for Redis will attempt to remove all node groups listed by NodeGroupsToRemove
14141	// from the cluster.
14142	NodeGroupsToRemove []*string `locationNameList:"NodeGroupToRemove" type:"list"`
14143
14144	// If the value of NodeGroupCount is less than the current number of node groups
14145	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
14146	// NodeGroupsToRetain is a list of NodeGroupIds to retain in the cluster.
14147	//
14148	// ElastiCache for Redis will attempt to remove all node groups except those
14149	// listed by NodeGroupsToRetain from the cluster.
14150	NodeGroupsToRetain []*string `locationNameList:"NodeGroupToRetain" type:"list"`
14151
14152	// The name of the Redis (cluster mode enabled) cluster (replication group)
14153	// on which the shards are to be configured.
14154	//
14155	// ReplicationGroupId is a required field
14156	ReplicationGroupId *string `type:"string" required:"true"`
14157
14158	// Specifies the preferred availability zones for each node group in the cluster.
14159	// If the value of NodeGroupCount is greater than the current number of node
14160	// groups (shards), you can use this parameter to specify the preferred availability
14161	// zones of the cluster's shards. If you omit this parameter ElastiCache selects
14162	// availability zones for you.
14163	//
14164	// You can specify this parameter only if the value of NodeGroupCount is greater
14165	// than the current number of node groups (shards).
14166	ReshardingConfiguration []*ReshardingConfiguration `locationNameList:"ReshardingConfiguration" type:"list"`
14167}
14168
14169// String returns the string representation
14170func (s ModifyReplicationGroupShardConfigurationInput) String() string {
14171	return awsutil.Prettify(s)
14172}
14173
14174// GoString returns the string representation
14175func (s ModifyReplicationGroupShardConfigurationInput) GoString() string {
14176	return s.String()
14177}
14178
14179// Validate inspects the fields of the type to determine if they are valid.
14180func (s *ModifyReplicationGroupShardConfigurationInput) Validate() error {
14181	invalidParams := request.ErrInvalidParams{Context: "ModifyReplicationGroupShardConfigurationInput"}
14182	if s.ApplyImmediately == nil {
14183		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
14184	}
14185	if s.NodeGroupCount == nil {
14186		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
14187	}
14188	if s.ReplicationGroupId == nil {
14189		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
14190	}
14191	if s.ReshardingConfiguration != nil {
14192		for i, v := range s.ReshardingConfiguration {
14193			if v == nil {
14194				continue
14195			}
14196			if err := v.Validate(); err != nil {
14197				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReshardingConfiguration", i), err.(request.ErrInvalidParams))
14198			}
14199		}
14200	}
14201
14202	if invalidParams.Len() > 0 {
14203		return invalidParams
14204	}
14205	return nil
14206}
14207
14208// SetApplyImmediately sets the ApplyImmediately field's value.
14209func (s *ModifyReplicationGroupShardConfigurationInput) SetApplyImmediately(v bool) *ModifyReplicationGroupShardConfigurationInput {
14210	s.ApplyImmediately = &v
14211	return s
14212}
14213
14214// SetNodeGroupCount sets the NodeGroupCount field's value.
14215func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupCount(v int64) *ModifyReplicationGroupShardConfigurationInput {
14216	s.NodeGroupCount = &v
14217	return s
14218}
14219
14220// SetNodeGroupsToRemove sets the NodeGroupsToRemove field's value.
14221func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupsToRemove(v []*string) *ModifyReplicationGroupShardConfigurationInput {
14222	s.NodeGroupsToRemove = v
14223	return s
14224}
14225
14226// SetNodeGroupsToRetain sets the NodeGroupsToRetain field's value.
14227func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupsToRetain(v []*string) *ModifyReplicationGroupShardConfigurationInput {
14228	s.NodeGroupsToRetain = v
14229	return s
14230}
14231
14232// SetReplicationGroupId sets the ReplicationGroupId field's value.
14233func (s *ModifyReplicationGroupShardConfigurationInput) SetReplicationGroupId(v string) *ModifyReplicationGroupShardConfigurationInput {
14234	s.ReplicationGroupId = &v
14235	return s
14236}
14237
14238// SetReshardingConfiguration sets the ReshardingConfiguration field's value.
14239func (s *ModifyReplicationGroupShardConfigurationInput) SetReshardingConfiguration(v []*ReshardingConfiguration) *ModifyReplicationGroupShardConfigurationInput {
14240	s.ReshardingConfiguration = v
14241	return s
14242}
14243
14244type ModifyReplicationGroupShardConfigurationOutput struct {
14245	_ struct{} `type:"structure"`
14246
14247	// Contains all of the attributes of a specific Redis replication group.
14248	ReplicationGroup *ReplicationGroup `type:"structure"`
14249}
14250
14251// String returns the string representation
14252func (s ModifyReplicationGroupShardConfigurationOutput) String() string {
14253	return awsutil.Prettify(s)
14254}
14255
14256// GoString returns the string representation
14257func (s ModifyReplicationGroupShardConfigurationOutput) GoString() string {
14258	return s.String()
14259}
14260
14261// SetReplicationGroup sets the ReplicationGroup field's value.
14262func (s *ModifyReplicationGroupShardConfigurationOutput) SetReplicationGroup(v *ReplicationGroup) *ModifyReplicationGroupShardConfigurationOutput {
14263	s.ReplicationGroup = v
14264	return s
14265}
14266
14267// Represents a collection of cache nodes in a replication group. One node in
14268// the node group is the read/write primary node. All the other nodes are read-only
14269// Replica nodes.
14270type NodeGroup struct {
14271	_ struct{} `type:"structure"`
14272
14273	// The identifier for the node group (shard). A Redis (cluster mode disabled)
14274	// replication group contains only 1 node group; therefore, the node group ID
14275	// is 0001. A Redis (cluster mode enabled) replication group contains 1 to 90
14276	// node groups numbered 0001 to 0090. Optionally, the user can provide the id
14277	// for a node group.
14278	NodeGroupId *string `type:"string"`
14279
14280	// A list containing information about individual nodes within the node group
14281	// (shard).
14282	NodeGroupMembers []*NodeGroupMember `locationNameList:"NodeGroupMember" type:"list"`
14283
14284	// The endpoint of the primary node in this node group (shard).
14285	PrimaryEndpoint *Endpoint `type:"structure"`
14286
14287	// The endpoint of the replica nodes in this node group (shard).
14288	ReaderEndpoint *Endpoint `type:"structure"`
14289
14290	// The keyspace for this node group (shard).
14291	Slots *string `type:"string"`
14292
14293	// The current state of this replication group - creating, available, etc.
14294	Status *string `type:"string"`
14295}
14296
14297// String returns the string representation
14298func (s NodeGroup) String() string {
14299	return awsutil.Prettify(s)
14300}
14301
14302// GoString returns the string representation
14303func (s NodeGroup) GoString() string {
14304	return s.String()
14305}
14306
14307// SetNodeGroupId sets the NodeGroupId field's value.
14308func (s *NodeGroup) SetNodeGroupId(v string) *NodeGroup {
14309	s.NodeGroupId = &v
14310	return s
14311}
14312
14313// SetNodeGroupMembers sets the NodeGroupMembers field's value.
14314func (s *NodeGroup) SetNodeGroupMembers(v []*NodeGroupMember) *NodeGroup {
14315	s.NodeGroupMembers = v
14316	return s
14317}
14318
14319// SetPrimaryEndpoint sets the PrimaryEndpoint field's value.
14320func (s *NodeGroup) SetPrimaryEndpoint(v *Endpoint) *NodeGroup {
14321	s.PrimaryEndpoint = v
14322	return s
14323}
14324
14325// SetReaderEndpoint sets the ReaderEndpoint field's value.
14326func (s *NodeGroup) SetReaderEndpoint(v *Endpoint) *NodeGroup {
14327	s.ReaderEndpoint = v
14328	return s
14329}
14330
14331// SetSlots sets the Slots field's value.
14332func (s *NodeGroup) SetSlots(v string) *NodeGroup {
14333	s.Slots = &v
14334	return s
14335}
14336
14337// SetStatus sets the Status field's value.
14338func (s *NodeGroup) SetStatus(v string) *NodeGroup {
14339	s.Status = &v
14340	return s
14341}
14342
14343// Node group (shard) configuration options. Each node group (shard) configuration
14344// has the following: Slots, PrimaryAvailabilityZone, ReplicaAvailabilityZones,
14345// ReplicaCount.
14346type NodeGroupConfiguration struct {
14347	_ struct{} `type:"structure"`
14348
14349	// Either the ElastiCache for Redis supplied 4-digit id or a user supplied id
14350	// for the node group these configuration values apply to.
14351	NodeGroupId *string `min:"1" type:"string"`
14352
14353	// The Availability Zone where the primary node of this node group (shard) is
14354	// launched.
14355	PrimaryAvailabilityZone *string `type:"string"`
14356
14357	// A list of Availability Zones to be used for the read replicas. The number
14358	// of Availability Zones in this list must match the value of ReplicaCount or
14359	// ReplicasPerNodeGroup if not specified.
14360	ReplicaAvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`
14361
14362	// The number of read replica nodes in this node group (shard).
14363	ReplicaCount *int64 `type:"integer"`
14364
14365	// A string that specifies the keyspace for a particular node group. Keyspaces
14366	// range from 0 to 16,383. The string is in the format startkey-endkey.
14367	//
14368	// Example: "0-3999"
14369	Slots *string `type:"string"`
14370}
14371
14372// String returns the string representation
14373func (s NodeGroupConfiguration) String() string {
14374	return awsutil.Prettify(s)
14375}
14376
14377// GoString returns the string representation
14378func (s NodeGroupConfiguration) GoString() string {
14379	return s.String()
14380}
14381
14382// Validate inspects the fields of the type to determine if they are valid.
14383func (s *NodeGroupConfiguration) Validate() error {
14384	invalidParams := request.ErrInvalidParams{Context: "NodeGroupConfiguration"}
14385	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
14386		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
14387	}
14388
14389	if invalidParams.Len() > 0 {
14390		return invalidParams
14391	}
14392	return nil
14393}
14394
14395// SetNodeGroupId sets the NodeGroupId field's value.
14396func (s *NodeGroupConfiguration) SetNodeGroupId(v string) *NodeGroupConfiguration {
14397	s.NodeGroupId = &v
14398	return s
14399}
14400
14401// SetPrimaryAvailabilityZone sets the PrimaryAvailabilityZone field's value.
14402func (s *NodeGroupConfiguration) SetPrimaryAvailabilityZone(v string) *NodeGroupConfiguration {
14403	s.PrimaryAvailabilityZone = &v
14404	return s
14405}
14406
14407// SetReplicaAvailabilityZones sets the ReplicaAvailabilityZones field's value.
14408func (s *NodeGroupConfiguration) SetReplicaAvailabilityZones(v []*string) *NodeGroupConfiguration {
14409	s.ReplicaAvailabilityZones = v
14410	return s
14411}
14412
14413// SetReplicaCount sets the ReplicaCount field's value.
14414func (s *NodeGroupConfiguration) SetReplicaCount(v int64) *NodeGroupConfiguration {
14415	s.ReplicaCount = &v
14416	return s
14417}
14418
14419// SetSlots sets the Slots field's value.
14420func (s *NodeGroupConfiguration) SetSlots(v string) *NodeGroupConfiguration {
14421	s.Slots = &v
14422	return s
14423}
14424
14425// Represents a single node within a node group (shard).
14426type NodeGroupMember struct {
14427	_ struct{} `type:"structure"`
14428
14429	// The ID of the cluster to which the node belongs.
14430	CacheClusterId *string `type:"string"`
14431
14432	// The ID of the node within its cluster. A node ID is a numeric identifier
14433	// (0001, 0002, etc.).
14434	CacheNodeId *string `type:"string"`
14435
14436	// The role that is currently assigned to the node - primary or replica. This
14437	// member is only applicable for Redis (cluster mode disabled) replication groups.
14438	CurrentRole *string `type:"string"`
14439
14440	// The name of the Availability Zone in which the node is located.
14441	PreferredAvailabilityZone *string `type:"string"`
14442
14443	// The information required for client programs to connect to a node for read
14444	// operations. The read endpoint is only applicable on Redis (cluster mode disabled)
14445	// clusters.
14446	ReadEndpoint *Endpoint `type:"structure"`
14447}
14448
14449// String returns the string representation
14450func (s NodeGroupMember) String() string {
14451	return awsutil.Prettify(s)
14452}
14453
14454// GoString returns the string representation
14455func (s NodeGroupMember) GoString() string {
14456	return s.String()
14457}
14458
14459// SetCacheClusterId sets the CacheClusterId field's value.
14460func (s *NodeGroupMember) SetCacheClusterId(v string) *NodeGroupMember {
14461	s.CacheClusterId = &v
14462	return s
14463}
14464
14465// SetCacheNodeId sets the CacheNodeId field's value.
14466func (s *NodeGroupMember) SetCacheNodeId(v string) *NodeGroupMember {
14467	s.CacheNodeId = &v
14468	return s
14469}
14470
14471// SetCurrentRole sets the CurrentRole field's value.
14472func (s *NodeGroupMember) SetCurrentRole(v string) *NodeGroupMember {
14473	s.CurrentRole = &v
14474	return s
14475}
14476
14477// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
14478func (s *NodeGroupMember) SetPreferredAvailabilityZone(v string) *NodeGroupMember {
14479	s.PreferredAvailabilityZone = &v
14480	return s
14481}
14482
14483// SetReadEndpoint sets the ReadEndpoint field's value.
14484func (s *NodeGroupMember) SetReadEndpoint(v *Endpoint) *NodeGroupMember {
14485	s.ReadEndpoint = v
14486	return s
14487}
14488
14489// The status of the service update on the node group member
14490type NodeGroupMemberUpdateStatus struct {
14491	_ struct{} `type:"structure"`
14492
14493	// The cache cluster ID
14494	CacheClusterId *string `type:"string"`
14495
14496	// The node ID of the cache cluster
14497	CacheNodeId *string `type:"string"`
14498
14499	// The deletion date of the node
14500	NodeDeletionDate *time.Time `type:"timestamp"`
14501
14502	// The end date of the update for a node
14503	NodeUpdateEndDate *time.Time `type:"timestamp"`
14504
14505	// Reflects whether the update was initiated by the customer or automatically
14506	// applied
14507	NodeUpdateInitiatedBy *string `type:"string" enum:"NodeUpdateInitiatedBy"`
14508
14509	// The date when the update is triggered
14510	NodeUpdateInitiatedDate *time.Time `type:"timestamp"`
14511
14512	// The start date of the update for a node
14513	NodeUpdateStartDate *time.Time `type:"timestamp"`
14514
14515	// The update status of the node
14516	NodeUpdateStatus *string `type:"string" enum:"NodeUpdateStatus"`
14517
14518	// The date when the NodeUpdateStatus was last modified
14519	NodeUpdateStatusModifiedDate *time.Time `type:"timestamp"`
14520}
14521
14522// String returns the string representation
14523func (s NodeGroupMemberUpdateStatus) String() string {
14524	return awsutil.Prettify(s)
14525}
14526
14527// GoString returns the string representation
14528func (s NodeGroupMemberUpdateStatus) GoString() string {
14529	return s.String()
14530}
14531
14532// SetCacheClusterId sets the CacheClusterId field's value.
14533func (s *NodeGroupMemberUpdateStatus) SetCacheClusterId(v string) *NodeGroupMemberUpdateStatus {
14534	s.CacheClusterId = &v
14535	return s
14536}
14537
14538// SetCacheNodeId sets the CacheNodeId field's value.
14539func (s *NodeGroupMemberUpdateStatus) SetCacheNodeId(v string) *NodeGroupMemberUpdateStatus {
14540	s.CacheNodeId = &v
14541	return s
14542}
14543
14544// SetNodeDeletionDate sets the NodeDeletionDate field's value.
14545func (s *NodeGroupMemberUpdateStatus) SetNodeDeletionDate(v time.Time) *NodeGroupMemberUpdateStatus {
14546	s.NodeDeletionDate = &v
14547	return s
14548}
14549
14550// SetNodeUpdateEndDate sets the NodeUpdateEndDate field's value.
14551func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateEndDate(v time.Time) *NodeGroupMemberUpdateStatus {
14552	s.NodeUpdateEndDate = &v
14553	return s
14554}
14555
14556// SetNodeUpdateInitiatedBy sets the NodeUpdateInitiatedBy field's value.
14557func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateInitiatedBy(v string) *NodeGroupMemberUpdateStatus {
14558	s.NodeUpdateInitiatedBy = &v
14559	return s
14560}
14561
14562// SetNodeUpdateInitiatedDate sets the NodeUpdateInitiatedDate field's value.
14563func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateInitiatedDate(v time.Time) *NodeGroupMemberUpdateStatus {
14564	s.NodeUpdateInitiatedDate = &v
14565	return s
14566}
14567
14568// SetNodeUpdateStartDate sets the NodeUpdateStartDate field's value.
14569func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStartDate(v time.Time) *NodeGroupMemberUpdateStatus {
14570	s.NodeUpdateStartDate = &v
14571	return s
14572}
14573
14574// SetNodeUpdateStatus sets the NodeUpdateStatus field's value.
14575func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStatus(v string) *NodeGroupMemberUpdateStatus {
14576	s.NodeUpdateStatus = &v
14577	return s
14578}
14579
14580// SetNodeUpdateStatusModifiedDate sets the NodeUpdateStatusModifiedDate field's value.
14581func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStatusModifiedDate(v time.Time) *NodeGroupMemberUpdateStatus {
14582	s.NodeUpdateStatusModifiedDate = &v
14583	return s
14584}
14585
14586// The status of the service update on the node group
14587type NodeGroupUpdateStatus struct {
14588	_ struct{} `type:"structure"`
14589
14590	// The ID of the node group
14591	NodeGroupId *string `type:"string"`
14592
14593	// The status of the service update on the node group member
14594	NodeGroupMemberUpdateStatus []*NodeGroupMemberUpdateStatus `locationNameList:"NodeGroupMemberUpdateStatus" type:"list"`
14595}
14596
14597// String returns the string representation
14598func (s NodeGroupUpdateStatus) String() string {
14599	return awsutil.Prettify(s)
14600}
14601
14602// GoString returns the string representation
14603func (s NodeGroupUpdateStatus) GoString() string {
14604	return s.String()
14605}
14606
14607// SetNodeGroupId sets the NodeGroupId field's value.
14608func (s *NodeGroupUpdateStatus) SetNodeGroupId(v string) *NodeGroupUpdateStatus {
14609	s.NodeGroupId = &v
14610	return s
14611}
14612
14613// SetNodeGroupMemberUpdateStatus sets the NodeGroupMemberUpdateStatus field's value.
14614func (s *NodeGroupUpdateStatus) SetNodeGroupMemberUpdateStatus(v []*NodeGroupMemberUpdateStatus) *NodeGroupUpdateStatus {
14615	s.NodeGroupMemberUpdateStatus = v
14616	return s
14617}
14618
14619// Represents an individual cache node in a snapshot of a cluster.
14620type NodeSnapshot struct {
14621	_ struct{} `type:"structure"`
14622
14623	// A unique identifier for the source cluster.
14624	CacheClusterId *string `type:"string"`
14625
14626	// The date and time when the cache node was created in the source cluster.
14627	CacheNodeCreateTime *time.Time `type:"timestamp"`
14628
14629	// The cache node identifier for the node in the source cluster.
14630	CacheNodeId *string `type:"string"`
14631
14632	// The size of the cache on the source cache node.
14633	CacheSize *string `type:"string"`
14634
14635	// The configuration for the source node group (shard).
14636	NodeGroupConfiguration *NodeGroupConfiguration `type:"structure"`
14637
14638	// A unique identifier for the source node group (shard).
14639	NodeGroupId *string `type:"string"`
14640
14641	// The date and time when the source node's metadata and cache data set was
14642	// obtained for the snapshot.
14643	SnapshotCreateTime *time.Time `type:"timestamp"`
14644}
14645
14646// String returns the string representation
14647func (s NodeSnapshot) String() string {
14648	return awsutil.Prettify(s)
14649}
14650
14651// GoString returns the string representation
14652func (s NodeSnapshot) GoString() string {
14653	return s.String()
14654}
14655
14656// SetCacheClusterId sets the CacheClusterId field's value.
14657func (s *NodeSnapshot) SetCacheClusterId(v string) *NodeSnapshot {
14658	s.CacheClusterId = &v
14659	return s
14660}
14661
14662// SetCacheNodeCreateTime sets the CacheNodeCreateTime field's value.
14663func (s *NodeSnapshot) SetCacheNodeCreateTime(v time.Time) *NodeSnapshot {
14664	s.CacheNodeCreateTime = &v
14665	return s
14666}
14667
14668// SetCacheNodeId sets the CacheNodeId field's value.
14669func (s *NodeSnapshot) SetCacheNodeId(v string) *NodeSnapshot {
14670	s.CacheNodeId = &v
14671	return s
14672}
14673
14674// SetCacheSize sets the CacheSize field's value.
14675func (s *NodeSnapshot) SetCacheSize(v string) *NodeSnapshot {
14676	s.CacheSize = &v
14677	return s
14678}
14679
14680// SetNodeGroupConfiguration sets the NodeGroupConfiguration field's value.
14681func (s *NodeSnapshot) SetNodeGroupConfiguration(v *NodeGroupConfiguration) *NodeSnapshot {
14682	s.NodeGroupConfiguration = v
14683	return s
14684}
14685
14686// SetNodeGroupId sets the NodeGroupId field's value.
14687func (s *NodeSnapshot) SetNodeGroupId(v string) *NodeSnapshot {
14688	s.NodeGroupId = &v
14689	return s
14690}
14691
14692// SetSnapshotCreateTime sets the SnapshotCreateTime field's value.
14693func (s *NodeSnapshot) SetSnapshotCreateTime(v time.Time) *NodeSnapshot {
14694	s.SnapshotCreateTime = &v
14695	return s
14696}
14697
14698// Describes a notification topic and its status. Notification topics are used
14699// for publishing ElastiCache events to subscribers using Amazon Simple Notification
14700// Service (SNS).
14701type NotificationConfiguration struct {
14702	_ struct{} `type:"structure"`
14703
14704	// The Amazon Resource Name (ARN) that identifies the topic.
14705	TopicArn *string `type:"string"`
14706
14707	// The current state of the topic.
14708	TopicStatus *string `type:"string"`
14709}
14710
14711// String returns the string representation
14712func (s NotificationConfiguration) String() string {
14713	return awsutil.Prettify(s)
14714}
14715
14716// GoString returns the string representation
14717func (s NotificationConfiguration) GoString() string {
14718	return s.String()
14719}
14720
14721// SetTopicArn sets the TopicArn field's value.
14722func (s *NotificationConfiguration) SetTopicArn(v string) *NotificationConfiguration {
14723	s.TopicArn = &v
14724	return s
14725}
14726
14727// SetTopicStatus sets the TopicStatus field's value.
14728func (s *NotificationConfiguration) SetTopicStatus(v string) *NotificationConfiguration {
14729	s.TopicStatus = &v
14730	return s
14731}
14732
14733// Describes an individual setting that controls some aspect of ElastiCache
14734// behavior.
14735type Parameter struct {
14736	_ struct{} `type:"structure"`
14737
14738	// The valid range of values for the parameter.
14739	AllowedValues *string `type:"string"`
14740
14741	// Indicates whether a change to the parameter is applied immediately or requires
14742	// a reboot for the change to be applied. You can force a reboot or wait until
14743	// the next maintenance window's reboot. For more information, see Rebooting
14744	// a Cluster (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html).
14745	ChangeType *string `type:"string" enum:"ChangeType"`
14746
14747	// The valid data type for the parameter.
14748	DataType *string `type:"string"`
14749
14750	// A description of the parameter.
14751	Description *string `type:"string"`
14752
14753	// Indicates whether (true) or not (false) the parameter can be modified. Some
14754	// parameters have security or operational implications that prevent them from
14755	// being changed.
14756	IsModifiable *bool `type:"boolean"`
14757
14758	// The earliest cache engine version to which the parameter can apply.
14759	MinimumEngineVersion *string `type:"string"`
14760
14761	// The name of the parameter.
14762	ParameterName *string `type:"string"`
14763
14764	// The value of the parameter.
14765	ParameterValue *string `type:"string"`
14766
14767	// The source of the parameter.
14768	Source *string `type:"string"`
14769}
14770
14771// String returns the string representation
14772func (s Parameter) String() string {
14773	return awsutil.Prettify(s)
14774}
14775
14776// GoString returns the string representation
14777func (s Parameter) GoString() string {
14778	return s.String()
14779}
14780
14781// SetAllowedValues sets the AllowedValues field's value.
14782func (s *Parameter) SetAllowedValues(v string) *Parameter {
14783	s.AllowedValues = &v
14784	return s
14785}
14786
14787// SetChangeType sets the ChangeType field's value.
14788func (s *Parameter) SetChangeType(v string) *Parameter {
14789	s.ChangeType = &v
14790	return s
14791}
14792
14793// SetDataType sets the DataType field's value.
14794func (s *Parameter) SetDataType(v string) *Parameter {
14795	s.DataType = &v
14796	return s
14797}
14798
14799// SetDescription sets the Description field's value.
14800func (s *Parameter) SetDescription(v string) *Parameter {
14801	s.Description = &v
14802	return s
14803}
14804
14805// SetIsModifiable sets the IsModifiable field's value.
14806func (s *Parameter) SetIsModifiable(v bool) *Parameter {
14807	s.IsModifiable = &v
14808	return s
14809}
14810
14811// SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
14812func (s *Parameter) SetMinimumEngineVersion(v string) *Parameter {
14813	s.MinimumEngineVersion = &v
14814	return s
14815}
14816
14817// SetParameterName sets the ParameterName field's value.
14818func (s *Parameter) SetParameterName(v string) *Parameter {
14819	s.ParameterName = &v
14820	return s
14821}
14822
14823// SetParameterValue sets the ParameterValue field's value.
14824func (s *Parameter) SetParameterValue(v string) *Parameter {
14825	s.ParameterValue = &v
14826	return s
14827}
14828
14829// SetSource sets the Source field's value.
14830func (s *Parameter) SetSource(v string) *Parameter {
14831	s.Source = &v
14832	return s
14833}
14834
14835// Describes a name-value pair that is used to update the value of a parameter.
14836type ParameterNameValue struct {
14837	_ struct{} `type:"structure"`
14838
14839	// The name of the parameter.
14840	ParameterName *string `type:"string"`
14841
14842	// The value of the parameter.
14843	ParameterValue *string `type:"string"`
14844}
14845
14846// String returns the string representation
14847func (s ParameterNameValue) String() string {
14848	return awsutil.Prettify(s)
14849}
14850
14851// GoString returns the string representation
14852func (s ParameterNameValue) GoString() string {
14853	return s.String()
14854}
14855
14856// SetParameterName sets the ParameterName field's value.
14857func (s *ParameterNameValue) SetParameterName(v string) *ParameterNameValue {
14858	s.ParameterName = &v
14859	return s
14860}
14861
14862// SetParameterValue sets the ParameterValue field's value.
14863func (s *ParameterNameValue) SetParameterValue(v string) *ParameterNameValue {
14864	s.ParameterValue = &v
14865	return s
14866}
14867
14868// A group of settings that are applied to the cluster in the future, or that
14869// are currently being applied.
14870type PendingModifiedValues struct {
14871	_ struct{} `type:"structure"`
14872
14873	// The auth token status
14874	AuthTokenStatus *string `type:"string" enum:"AuthTokenUpdateStatus"`
14875
14876	// A list of cache node IDs that are being removed (or will be removed) from
14877	// the cluster. A node ID is a 4-digit numeric identifier (0001, 0002, etc.).
14878	CacheNodeIdsToRemove []*string `locationNameList:"CacheNodeId" type:"list"`
14879
14880	// The cache node type that this cluster or replication group is scaled to.
14881	CacheNodeType *string `type:"string"`
14882
14883	// The new cache engine version that the cluster runs.
14884	EngineVersion *string `type:"string"`
14885
14886	// The new number of cache nodes for the cluster.
14887	//
14888	// For clusters running Redis, this value must be 1. For clusters running Memcached,
14889	// this value must be between 1 and 20.
14890	NumCacheNodes *int64 `type:"integer"`
14891}
14892
14893// String returns the string representation
14894func (s PendingModifiedValues) String() string {
14895	return awsutil.Prettify(s)
14896}
14897
14898// GoString returns the string representation
14899func (s PendingModifiedValues) GoString() string {
14900	return s.String()
14901}
14902
14903// SetAuthTokenStatus sets the AuthTokenStatus field's value.
14904func (s *PendingModifiedValues) SetAuthTokenStatus(v string) *PendingModifiedValues {
14905	s.AuthTokenStatus = &v
14906	return s
14907}
14908
14909// SetCacheNodeIdsToRemove sets the CacheNodeIdsToRemove field's value.
14910func (s *PendingModifiedValues) SetCacheNodeIdsToRemove(v []*string) *PendingModifiedValues {
14911	s.CacheNodeIdsToRemove = v
14912	return s
14913}
14914
14915// SetCacheNodeType sets the CacheNodeType field's value.
14916func (s *PendingModifiedValues) SetCacheNodeType(v string) *PendingModifiedValues {
14917	s.CacheNodeType = &v
14918	return s
14919}
14920
14921// SetEngineVersion sets the EngineVersion field's value.
14922func (s *PendingModifiedValues) SetEngineVersion(v string) *PendingModifiedValues {
14923	s.EngineVersion = &v
14924	return s
14925}
14926
14927// SetNumCacheNodes sets the NumCacheNodes field's value.
14928func (s *PendingModifiedValues) SetNumCacheNodes(v int64) *PendingModifiedValues {
14929	s.NumCacheNodes = &v
14930	return s
14931}
14932
14933// Update action that has been processed for the corresponding apply/stop request
14934type ProcessedUpdateAction struct {
14935	_ struct{} `type:"structure"`
14936
14937	// The ID of the cache cluster
14938	CacheClusterId *string `type:"string"`
14939
14940	// The ID of the replication group
14941	ReplicationGroupId *string `type:"string"`
14942
14943	// The unique ID of the service update
14944	ServiceUpdateName *string `type:"string"`
14945
14946	// The status of the update action on the Redis cluster
14947	UpdateActionStatus *string `type:"string" enum:"UpdateActionStatus"`
14948}
14949
14950// String returns the string representation
14951func (s ProcessedUpdateAction) String() string {
14952	return awsutil.Prettify(s)
14953}
14954
14955// GoString returns the string representation
14956func (s ProcessedUpdateAction) GoString() string {
14957	return s.String()
14958}
14959
14960// SetCacheClusterId sets the CacheClusterId field's value.
14961func (s *ProcessedUpdateAction) SetCacheClusterId(v string) *ProcessedUpdateAction {
14962	s.CacheClusterId = &v
14963	return s
14964}
14965
14966// SetReplicationGroupId sets the ReplicationGroupId field's value.
14967func (s *ProcessedUpdateAction) SetReplicationGroupId(v string) *ProcessedUpdateAction {
14968	s.ReplicationGroupId = &v
14969	return s
14970}
14971
14972// SetServiceUpdateName sets the ServiceUpdateName field's value.
14973func (s *ProcessedUpdateAction) SetServiceUpdateName(v string) *ProcessedUpdateAction {
14974	s.ServiceUpdateName = &v
14975	return s
14976}
14977
14978// SetUpdateActionStatus sets the UpdateActionStatus field's value.
14979func (s *ProcessedUpdateAction) SetUpdateActionStatus(v string) *ProcessedUpdateAction {
14980	s.UpdateActionStatus = &v
14981	return s
14982}
14983
14984// Represents the input of a PurchaseReservedCacheNodesOffering operation.
14985type PurchaseReservedCacheNodesOfferingInput struct {
14986	_ struct{} `type:"structure"`
14987
14988	// The number of cache node instances to reserve.
14989	//
14990	// Default: 1
14991	CacheNodeCount *int64 `type:"integer"`
14992
14993	// A customer-specified identifier to track this reservation.
14994	//
14995	// The Reserved Cache Node ID is an unique customer-specified identifier to
14996	// track this reservation. If this parameter is not specified, ElastiCache automatically
14997	// generates an identifier for the reservation.
14998	//
14999	// Example: myreservationID
15000	ReservedCacheNodeId *string `type:"string"`
15001
15002	// The ID of the reserved cache node offering to purchase.
15003	//
15004	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
15005	//
15006	// ReservedCacheNodesOfferingId is a required field
15007	ReservedCacheNodesOfferingId *string `type:"string" required:"true"`
15008}
15009
15010// String returns the string representation
15011func (s PurchaseReservedCacheNodesOfferingInput) String() string {
15012	return awsutil.Prettify(s)
15013}
15014
15015// GoString returns the string representation
15016func (s PurchaseReservedCacheNodesOfferingInput) GoString() string {
15017	return s.String()
15018}
15019
15020// Validate inspects the fields of the type to determine if they are valid.
15021func (s *PurchaseReservedCacheNodesOfferingInput) Validate() error {
15022	invalidParams := request.ErrInvalidParams{Context: "PurchaseReservedCacheNodesOfferingInput"}
15023	if s.ReservedCacheNodesOfferingId == nil {
15024		invalidParams.Add(request.NewErrParamRequired("ReservedCacheNodesOfferingId"))
15025	}
15026
15027	if invalidParams.Len() > 0 {
15028		return invalidParams
15029	}
15030	return nil
15031}
15032
15033// SetCacheNodeCount sets the CacheNodeCount field's value.
15034func (s *PurchaseReservedCacheNodesOfferingInput) SetCacheNodeCount(v int64) *PurchaseReservedCacheNodesOfferingInput {
15035	s.CacheNodeCount = &v
15036	return s
15037}
15038
15039// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
15040func (s *PurchaseReservedCacheNodesOfferingInput) SetReservedCacheNodeId(v string) *PurchaseReservedCacheNodesOfferingInput {
15041	s.ReservedCacheNodeId = &v
15042	return s
15043}
15044
15045// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
15046func (s *PurchaseReservedCacheNodesOfferingInput) SetReservedCacheNodesOfferingId(v string) *PurchaseReservedCacheNodesOfferingInput {
15047	s.ReservedCacheNodesOfferingId = &v
15048	return s
15049}
15050
15051type PurchaseReservedCacheNodesOfferingOutput struct {
15052	_ struct{} `type:"structure"`
15053
15054	// Represents the output of a PurchaseReservedCacheNodesOffering operation.
15055	ReservedCacheNode *ReservedCacheNode `type:"structure"`
15056}
15057
15058// String returns the string representation
15059func (s PurchaseReservedCacheNodesOfferingOutput) String() string {
15060	return awsutil.Prettify(s)
15061}
15062
15063// GoString returns the string representation
15064func (s PurchaseReservedCacheNodesOfferingOutput) GoString() string {
15065	return s.String()
15066}
15067
15068// SetReservedCacheNode sets the ReservedCacheNode field's value.
15069func (s *PurchaseReservedCacheNodesOfferingOutput) SetReservedCacheNode(v *ReservedCacheNode) *PurchaseReservedCacheNodesOfferingOutput {
15070	s.ReservedCacheNode = v
15071	return s
15072}
15073
15074type RebalanceSlotsInGlobalReplicationGroupInput struct {
15075	_ struct{} `type:"structure"`
15076
15077	// If True, redistribution is applied immediately.
15078	//
15079	// ApplyImmediately is a required field
15080	ApplyImmediately *bool `type:"boolean" required:"true"`
15081
15082	// The name of the Global Datastore
15083	//
15084	// GlobalReplicationGroupId is a required field
15085	GlobalReplicationGroupId *string `type:"string" required:"true"`
15086}
15087
15088// String returns the string representation
15089func (s RebalanceSlotsInGlobalReplicationGroupInput) String() string {
15090	return awsutil.Prettify(s)
15091}
15092
15093// GoString returns the string representation
15094func (s RebalanceSlotsInGlobalReplicationGroupInput) GoString() string {
15095	return s.String()
15096}
15097
15098// Validate inspects the fields of the type to determine if they are valid.
15099func (s *RebalanceSlotsInGlobalReplicationGroupInput) Validate() error {
15100	invalidParams := request.ErrInvalidParams{Context: "RebalanceSlotsInGlobalReplicationGroupInput"}
15101	if s.ApplyImmediately == nil {
15102		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
15103	}
15104	if s.GlobalReplicationGroupId == nil {
15105		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
15106	}
15107
15108	if invalidParams.Len() > 0 {
15109		return invalidParams
15110	}
15111	return nil
15112}
15113
15114// SetApplyImmediately sets the ApplyImmediately field's value.
15115func (s *RebalanceSlotsInGlobalReplicationGroupInput) SetApplyImmediately(v bool) *RebalanceSlotsInGlobalReplicationGroupInput {
15116	s.ApplyImmediately = &v
15117	return s
15118}
15119
15120// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
15121func (s *RebalanceSlotsInGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *RebalanceSlotsInGlobalReplicationGroupInput {
15122	s.GlobalReplicationGroupId = &v
15123	return s
15124}
15125
15126type RebalanceSlotsInGlobalReplicationGroupOutput struct {
15127	_ struct{} `type:"structure"`
15128
15129	// Consists of a primary cluster that accepts writes and an associated secondary
15130	// cluster that resides in a different AWS region. The secondary cluster accepts
15131	// only reads. The primary cluster automatically replicates updates to the secondary
15132	// cluster.
15133	//
15134	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
15135	//    Datastore, which is what you use to associate a secondary cluster.
15136	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
15137}
15138
15139// String returns the string representation
15140func (s RebalanceSlotsInGlobalReplicationGroupOutput) String() string {
15141	return awsutil.Prettify(s)
15142}
15143
15144// GoString returns the string representation
15145func (s RebalanceSlotsInGlobalReplicationGroupOutput) GoString() string {
15146	return s.String()
15147}
15148
15149// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
15150func (s *RebalanceSlotsInGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *RebalanceSlotsInGlobalReplicationGroupOutput {
15151	s.GlobalReplicationGroup = v
15152	return s
15153}
15154
15155// Represents the input of a RebootCacheCluster operation.
15156type RebootCacheClusterInput struct {
15157	_ struct{} `type:"structure"`
15158
15159	// The cluster identifier. This parameter is stored as a lowercase string.
15160	//
15161	// CacheClusterId is a required field
15162	CacheClusterId *string `type:"string" required:"true"`
15163
15164	// A list of cache node IDs to reboot. A node ID is a numeric identifier (0001,
15165	// 0002, etc.). To reboot an entire cluster, specify all of the cache node IDs.
15166	//
15167	// CacheNodeIdsToReboot is a required field
15168	CacheNodeIdsToReboot []*string `locationNameList:"CacheNodeId" type:"list" required:"true"`
15169}
15170
15171// String returns the string representation
15172func (s RebootCacheClusterInput) String() string {
15173	return awsutil.Prettify(s)
15174}
15175
15176// GoString returns the string representation
15177func (s RebootCacheClusterInput) GoString() string {
15178	return s.String()
15179}
15180
15181// Validate inspects the fields of the type to determine if they are valid.
15182func (s *RebootCacheClusterInput) Validate() error {
15183	invalidParams := request.ErrInvalidParams{Context: "RebootCacheClusterInput"}
15184	if s.CacheClusterId == nil {
15185		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
15186	}
15187	if s.CacheNodeIdsToReboot == nil {
15188		invalidParams.Add(request.NewErrParamRequired("CacheNodeIdsToReboot"))
15189	}
15190
15191	if invalidParams.Len() > 0 {
15192		return invalidParams
15193	}
15194	return nil
15195}
15196
15197// SetCacheClusterId sets the CacheClusterId field's value.
15198func (s *RebootCacheClusterInput) SetCacheClusterId(v string) *RebootCacheClusterInput {
15199	s.CacheClusterId = &v
15200	return s
15201}
15202
15203// SetCacheNodeIdsToReboot sets the CacheNodeIdsToReboot field's value.
15204func (s *RebootCacheClusterInput) SetCacheNodeIdsToReboot(v []*string) *RebootCacheClusterInput {
15205	s.CacheNodeIdsToReboot = v
15206	return s
15207}
15208
15209type RebootCacheClusterOutput struct {
15210	_ struct{} `type:"structure"`
15211
15212	// Contains all of the attributes of a specific cluster.
15213	CacheCluster *CacheCluster `type:"structure"`
15214}
15215
15216// String returns the string representation
15217func (s RebootCacheClusterOutput) String() string {
15218	return awsutil.Prettify(s)
15219}
15220
15221// GoString returns the string representation
15222func (s RebootCacheClusterOutput) GoString() string {
15223	return s.String()
15224}
15225
15226// SetCacheCluster sets the CacheCluster field's value.
15227func (s *RebootCacheClusterOutput) SetCacheCluster(v *CacheCluster) *RebootCacheClusterOutput {
15228	s.CacheCluster = v
15229	return s
15230}
15231
15232// Contains the specific price and frequency of a recurring charges for a reserved
15233// cache node, or for a reserved cache node offering.
15234type RecurringCharge struct {
15235	_ struct{} `type:"structure"`
15236
15237	// The monetary amount of the recurring charge.
15238	RecurringChargeAmount *float64 `type:"double"`
15239
15240	// The frequency of the recurring charge.
15241	RecurringChargeFrequency *string `type:"string"`
15242}
15243
15244// String returns the string representation
15245func (s RecurringCharge) String() string {
15246	return awsutil.Prettify(s)
15247}
15248
15249// GoString returns the string representation
15250func (s RecurringCharge) GoString() string {
15251	return s.String()
15252}
15253
15254// SetRecurringChargeAmount sets the RecurringChargeAmount field's value.
15255func (s *RecurringCharge) SetRecurringChargeAmount(v float64) *RecurringCharge {
15256	s.RecurringChargeAmount = &v
15257	return s
15258}
15259
15260// SetRecurringChargeFrequency sets the RecurringChargeFrequency field's value.
15261func (s *RecurringCharge) SetRecurringChargeFrequency(v string) *RecurringCharge {
15262	s.RecurringChargeFrequency = &v
15263	return s
15264}
15265
15266// A list of the replication groups
15267type RegionalConfiguration struct {
15268	_ struct{} `type:"structure"`
15269
15270	// The name of the secondary cluster
15271	//
15272	// ReplicationGroupId is a required field
15273	ReplicationGroupId *string `type:"string" required:"true"`
15274
15275	// The AWS region where the cluster is stored
15276	//
15277	// ReplicationGroupRegion is a required field
15278	ReplicationGroupRegion *string `type:"string" required:"true"`
15279
15280	// A list of PreferredAvailabilityZones objects that specifies the configuration
15281	// of a node group in the resharded cluster.
15282	//
15283	// ReshardingConfiguration is a required field
15284	ReshardingConfiguration []*ReshardingConfiguration `locationNameList:"ReshardingConfiguration" type:"list" required:"true"`
15285}
15286
15287// String returns the string representation
15288func (s RegionalConfiguration) String() string {
15289	return awsutil.Prettify(s)
15290}
15291
15292// GoString returns the string representation
15293func (s RegionalConfiguration) GoString() string {
15294	return s.String()
15295}
15296
15297// Validate inspects the fields of the type to determine if they are valid.
15298func (s *RegionalConfiguration) Validate() error {
15299	invalidParams := request.ErrInvalidParams{Context: "RegionalConfiguration"}
15300	if s.ReplicationGroupId == nil {
15301		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
15302	}
15303	if s.ReplicationGroupRegion == nil {
15304		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupRegion"))
15305	}
15306	if s.ReshardingConfiguration == nil {
15307		invalidParams.Add(request.NewErrParamRequired("ReshardingConfiguration"))
15308	}
15309	if s.ReshardingConfiguration != nil {
15310		for i, v := range s.ReshardingConfiguration {
15311			if v == nil {
15312				continue
15313			}
15314			if err := v.Validate(); err != nil {
15315				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReshardingConfiguration", i), err.(request.ErrInvalidParams))
15316			}
15317		}
15318	}
15319
15320	if invalidParams.Len() > 0 {
15321		return invalidParams
15322	}
15323	return nil
15324}
15325
15326// SetReplicationGroupId sets the ReplicationGroupId field's value.
15327func (s *RegionalConfiguration) SetReplicationGroupId(v string) *RegionalConfiguration {
15328	s.ReplicationGroupId = &v
15329	return s
15330}
15331
15332// SetReplicationGroupRegion sets the ReplicationGroupRegion field's value.
15333func (s *RegionalConfiguration) SetReplicationGroupRegion(v string) *RegionalConfiguration {
15334	s.ReplicationGroupRegion = &v
15335	return s
15336}
15337
15338// SetReshardingConfiguration sets the ReshardingConfiguration field's value.
15339func (s *RegionalConfiguration) SetReshardingConfiguration(v []*ReshardingConfiguration) *RegionalConfiguration {
15340	s.ReshardingConfiguration = v
15341	return s
15342}
15343
15344// Represents the input of a RemoveTagsFromResource operation.
15345type RemoveTagsFromResourceInput struct {
15346	_ struct{} `type:"structure"`
15347
15348	// The Amazon Resource Name (ARN) of the resource from which you want the tags
15349	// removed, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
15350	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.
15351	//
15352	// For more information about ARNs, see Amazon Resource Names (ARNs) and AWS
15353	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
15354	//
15355	// ResourceName is a required field
15356	ResourceName *string `type:"string" required:"true"`
15357
15358	// A list of TagKeys identifying the tags you want removed from the named resource.
15359	//
15360	// TagKeys is a required field
15361	TagKeys []*string `type:"list" required:"true"`
15362}
15363
15364// String returns the string representation
15365func (s RemoveTagsFromResourceInput) String() string {
15366	return awsutil.Prettify(s)
15367}
15368
15369// GoString returns the string representation
15370func (s RemoveTagsFromResourceInput) GoString() string {
15371	return s.String()
15372}
15373
15374// Validate inspects the fields of the type to determine if they are valid.
15375func (s *RemoveTagsFromResourceInput) Validate() error {
15376	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsFromResourceInput"}
15377	if s.ResourceName == nil {
15378		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
15379	}
15380	if s.TagKeys == nil {
15381		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
15382	}
15383
15384	if invalidParams.Len() > 0 {
15385		return invalidParams
15386	}
15387	return nil
15388}
15389
15390// SetResourceName sets the ResourceName field's value.
15391func (s *RemoveTagsFromResourceInput) SetResourceName(v string) *RemoveTagsFromResourceInput {
15392	s.ResourceName = &v
15393	return s
15394}
15395
15396// SetTagKeys sets the TagKeys field's value.
15397func (s *RemoveTagsFromResourceInput) SetTagKeys(v []*string) *RemoveTagsFromResourceInput {
15398	s.TagKeys = v
15399	return s
15400}
15401
15402// Contains all of the attributes of a specific Redis replication group.
15403type ReplicationGroup struct {
15404	_ struct{} `type:"structure"`
15405
15406	// The ARN (Amazon Resource Name) of the replication group.
15407	ARN *string `type:"string"`
15408
15409	// A flag that enables encryption at-rest when set to true.
15410	//
15411	// You cannot modify the value of AtRestEncryptionEnabled after the cluster
15412	// is created. To enable encryption at-rest on a cluster you must set AtRestEncryptionEnabled
15413	// to true when you create a cluster.
15414	//
15415	// Required: Only available when creating a replication group in an Amazon VPC
15416	// using redis version 3.2.6, 4.x or later.
15417	//
15418	// Default: false
15419	AtRestEncryptionEnabled *bool `type:"boolean"`
15420
15421	// A flag that enables using an AuthToken (password) when issuing Redis commands.
15422	//
15423	// Default: false
15424	AuthTokenEnabled *bool `type:"boolean"`
15425
15426	// The date the auth token was last modified
15427	AuthTokenLastModifiedDate *time.Time `type:"timestamp"`
15428
15429	// Indicates the status of Multi-AZ with automatic failover for this Redis replication
15430	// group.
15431	//
15432	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
15433	// on:
15434	//
15435	//    * Redis versions earlier than 2.8.6.
15436	//
15437	//    * Redis (cluster mode disabled): T1 node types.
15438	//
15439	//    * Redis (cluster mode enabled): T1 node types.
15440	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
15441
15442	// The name of the compute and memory capacity node type for each node in the
15443	// replication group.
15444	CacheNodeType *string `type:"string"`
15445
15446	// A flag indicating whether or not this replication group is cluster enabled;
15447	// i.e., whether its data can be partitioned across multiple shards (API/CLI:
15448	// node groups).
15449	//
15450	// Valid values: true | false
15451	ClusterEnabled *bool `type:"boolean"`
15452
15453	// The configuration endpoint for this replication group. Use the configuration
15454	// endpoint to connect to this replication group.
15455	ConfigurationEndpoint *Endpoint `type:"structure"`
15456
15457	// The user supplied description of the replication group.
15458	Description *string `type:"string"`
15459
15460	// The name of the Global Datastore and role of this replication group in the
15461	// Global Datastore.
15462	GlobalReplicationGroupInfo *GlobalReplicationGroupInfo `type:"structure"`
15463
15464	// The ID of the KMS key used to encrypt the disk in the cluster.
15465	KmsKeyId *string `type:"string"`
15466
15467	// The names of all the cache clusters that are part of this replication group.
15468	MemberClusters []*string `locationNameList:"ClusterId" type:"list"`
15469
15470	MultiAZ *string `type:"string" enum:"MultiAZStatus"`
15471
15472	// A list of node groups in this replication group. For Redis (cluster mode
15473	// disabled) replication groups, this is a single-element list. For Redis (cluster
15474	// mode enabled) replication groups, the list contains an entry for each node
15475	// group (shard).
15476	NodeGroups []*NodeGroup `locationNameList:"NodeGroup" type:"list"`
15477
15478	// A group of settings to be applied to the replication group, either immediately
15479	// or during the next maintenance window.
15480	PendingModifiedValues *ReplicationGroupPendingModifiedValues `type:"structure"`
15481
15482	// The identifier for the replication group.
15483	ReplicationGroupId *string `type:"string"`
15484
15485	// The number of days for which ElastiCache retains automatic cluster snapshots
15486	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
15487	// a snapshot that was taken today is retained for 5 days before being deleted.
15488	//
15489	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
15490	// off.
15491	SnapshotRetentionLimit *int64 `type:"integer"`
15492
15493	// The daily time range (in UTC) during which ElastiCache begins taking a daily
15494	// snapshot of your node group (shard).
15495	//
15496	// Example: 05:00-09:00
15497	//
15498	// If you do not specify this parameter, ElastiCache automatically chooses an
15499	// appropriate time range.
15500	//
15501	// This parameter is only valid if the Engine parameter is redis.
15502	SnapshotWindow *string `type:"string"`
15503
15504	// The cluster ID that is used as the daily snapshot source for the replication
15505	// group.
15506	SnapshottingClusterId *string `type:"string"`
15507
15508	// The current state of this replication group - creating, available, modifying,
15509	// deleting, create-failed, snapshotting.
15510	Status *string `type:"string"`
15511
15512	// A flag that enables in-transit encryption when set to true.
15513	//
15514	// You cannot modify the value of TransitEncryptionEnabled after the cluster
15515	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
15516	// to true when you create a cluster.
15517	//
15518	// Required: Only available when creating a replication group in an Amazon VPC
15519	// using redis version 3.2.6, 4.x or later.
15520	//
15521	// Default: false
15522	TransitEncryptionEnabled *bool `type:"boolean"`
15523}
15524
15525// String returns the string representation
15526func (s ReplicationGroup) String() string {
15527	return awsutil.Prettify(s)
15528}
15529
15530// GoString returns the string representation
15531func (s ReplicationGroup) GoString() string {
15532	return s.String()
15533}
15534
15535// SetARN sets the ARN field's value.
15536func (s *ReplicationGroup) SetARN(v string) *ReplicationGroup {
15537	s.ARN = &v
15538	return s
15539}
15540
15541// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
15542func (s *ReplicationGroup) SetAtRestEncryptionEnabled(v bool) *ReplicationGroup {
15543	s.AtRestEncryptionEnabled = &v
15544	return s
15545}
15546
15547// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
15548func (s *ReplicationGroup) SetAuthTokenEnabled(v bool) *ReplicationGroup {
15549	s.AuthTokenEnabled = &v
15550	return s
15551}
15552
15553// SetAuthTokenLastModifiedDate sets the AuthTokenLastModifiedDate field's value.
15554func (s *ReplicationGroup) SetAuthTokenLastModifiedDate(v time.Time) *ReplicationGroup {
15555	s.AuthTokenLastModifiedDate = &v
15556	return s
15557}
15558
15559// SetAutomaticFailover sets the AutomaticFailover field's value.
15560func (s *ReplicationGroup) SetAutomaticFailover(v string) *ReplicationGroup {
15561	s.AutomaticFailover = &v
15562	return s
15563}
15564
15565// SetCacheNodeType sets the CacheNodeType field's value.
15566func (s *ReplicationGroup) SetCacheNodeType(v string) *ReplicationGroup {
15567	s.CacheNodeType = &v
15568	return s
15569}
15570
15571// SetClusterEnabled sets the ClusterEnabled field's value.
15572func (s *ReplicationGroup) SetClusterEnabled(v bool) *ReplicationGroup {
15573	s.ClusterEnabled = &v
15574	return s
15575}
15576
15577// SetConfigurationEndpoint sets the ConfigurationEndpoint field's value.
15578func (s *ReplicationGroup) SetConfigurationEndpoint(v *Endpoint) *ReplicationGroup {
15579	s.ConfigurationEndpoint = v
15580	return s
15581}
15582
15583// SetDescription sets the Description field's value.
15584func (s *ReplicationGroup) SetDescription(v string) *ReplicationGroup {
15585	s.Description = &v
15586	return s
15587}
15588
15589// SetGlobalReplicationGroupInfo sets the GlobalReplicationGroupInfo field's value.
15590func (s *ReplicationGroup) SetGlobalReplicationGroupInfo(v *GlobalReplicationGroupInfo) *ReplicationGroup {
15591	s.GlobalReplicationGroupInfo = v
15592	return s
15593}
15594
15595// SetKmsKeyId sets the KmsKeyId field's value.
15596func (s *ReplicationGroup) SetKmsKeyId(v string) *ReplicationGroup {
15597	s.KmsKeyId = &v
15598	return s
15599}
15600
15601// SetMemberClusters sets the MemberClusters field's value.
15602func (s *ReplicationGroup) SetMemberClusters(v []*string) *ReplicationGroup {
15603	s.MemberClusters = v
15604	return s
15605}
15606
15607// SetMultiAZ sets the MultiAZ field's value.
15608func (s *ReplicationGroup) SetMultiAZ(v string) *ReplicationGroup {
15609	s.MultiAZ = &v
15610	return s
15611}
15612
15613// SetNodeGroups sets the NodeGroups field's value.
15614func (s *ReplicationGroup) SetNodeGroups(v []*NodeGroup) *ReplicationGroup {
15615	s.NodeGroups = v
15616	return s
15617}
15618
15619// SetPendingModifiedValues sets the PendingModifiedValues field's value.
15620func (s *ReplicationGroup) SetPendingModifiedValues(v *ReplicationGroupPendingModifiedValues) *ReplicationGroup {
15621	s.PendingModifiedValues = v
15622	return s
15623}
15624
15625// SetReplicationGroupId sets the ReplicationGroupId field's value.
15626func (s *ReplicationGroup) SetReplicationGroupId(v string) *ReplicationGroup {
15627	s.ReplicationGroupId = &v
15628	return s
15629}
15630
15631// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
15632func (s *ReplicationGroup) SetSnapshotRetentionLimit(v int64) *ReplicationGroup {
15633	s.SnapshotRetentionLimit = &v
15634	return s
15635}
15636
15637// SetSnapshotWindow sets the SnapshotWindow field's value.
15638func (s *ReplicationGroup) SetSnapshotWindow(v string) *ReplicationGroup {
15639	s.SnapshotWindow = &v
15640	return s
15641}
15642
15643// SetSnapshottingClusterId sets the SnapshottingClusterId field's value.
15644func (s *ReplicationGroup) SetSnapshottingClusterId(v string) *ReplicationGroup {
15645	s.SnapshottingClusterId = &v
15646	return s
15647}
15648
15649// SetStatus sets the Status field's value.
15650func (s *ReplicationGroup) SetStatus(v string) *ReplicationGroup {
15651	s.Status = &v
15652	return s
15653}
15654
15655// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
15656func (s *ReplicationGroup) SetTransitEncryptionEnabled(v bool) *ReplicationGroup {
15657	s.TransitEncryptionEnabled = &v
15658	return s
15659}
15660
15661// The settings to be applied to the Redis replication group, either immediately
15662// or during the next maintenance window.
15663type ReplicationGroupPendingModifiedValues struct {
15664	_ struct{} `type:"structure"`
15665
15666	// The auth token status
15667	AuthTokenStatus *string `type:"string" enum:"AuthTokenUpdateStatus"`
15668
15669	// Indicates the status of Multi-AZ with automatic failover for this Redis replication
15670	// group.
15671	//
15672	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
15673	// on:
15674	//
15675	//    * Redis versions earlier than 2.8.6.
15676	//
15677	//    * Redis (cluster mode disabled): T1 node types.
15678	//
15679	//    * Redis (cluster mode enabled): T1 node types.
15680	AutomaticFailoverStatus *string `type:"string" enum:"PendingAutomaticFailoverStatus"`
15681
15682	// The primary cluster ID that is applied immediately (if --apply-immediately
15683	// was specified), or during the next maintenance window.
15684	PrimaryClusterId *string `type:"string"`
15685
15686	// The status of an online resharding operation.
15687	Resharding *ReshardingStatus `type:"structure"`
15688}
15689
15690// String returns the string representation
15691func (s ReplicationGroupPendingModifiedValues) String() string {
15692	return awsutil.Prettify(s)
15693}
15694
15695// GoString returns the string representation
15696func (s ReplicationGroupPendingModifiedValues) GoString() string {
15697	return s.String()
15698}
15699
15700// SetAuthTokenStatus sets the AuthTokenStatus field's value.
15701func (s *ReplicationGroupPendingModifiedValues) SetAuthTokenStatus(v string) *ReplicationGroupPendingModifiedValues {
15702	s.AuthTokenStatus = &v
15703	return s
15704}
15705
15706// SetAutomaticFailoverStatus sets the AutomaticFailoverStatus field's value.
15707func (s *ReplicationGroupPendingModifiedValues) SetAutomaticFailoverStatus(v string) *ReplicationGroupPendingModifiedValues {
15708	s.AutomaticFailoverStatus = &v
15709	return s
15710}
15711
15712// SetPrimaryClusterId sets the PrimaryClusterId field's value.
15713func (s *ReplicationGroupPendingModifiedValues) SetPrimaryClusterId(v string) *ReplicationGroupPendingModifiedValues {
15714	s.PrimaryClusterId = &v
15715	return s
15716}
15717
15718// SetResharding sets the Resharding field's value.
15719func (s *ReplicationGroupPendingModifiedValues) SetResharding(v *ReshardingStatus) *ReplicationGroupPendingModifiedValues {
15720	s.Resharding = v
15721	return s
15722}
15723
15724// Represents the output of a PurchaseReservedCacheNodesOffering operation.
15725type ReservedCacheNode struct {
15726	_ struct{} `type:"structure"`
15727
15728	// The number of cache nodes that have been reserved.
15729	CacheNodeCount *int64 `type:"integer"`
15730
15731	// The cache node type for the reserved cache nodes.
15732	//
15733	// The following node types are supported by ElastiCache. Generally speaking,
15734	// the current generation types provide more memory and computational power
15735	// at lower cost when compared to their equivalent previous generation counterparts.
15736	//
15737	//    * General purpose: Current generation: M5 node types: cache.m5.large,
15738	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
15739	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
15740	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
15741	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
15742	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
15743	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
15744	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
15745	//
15746	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
15747	//    cache.c1.xlarge
15748	//
15749	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
15750	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
15751	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
15752	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
15753	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
15754	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
15755	//    cache.r3.8xlarge
15756	//
15757	// Additional node type info
15758	//
15759	//    * All current generation instance types are created in Amazon VPC by default.
15760	//
15761	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
15762	//
15763	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
15764	//
15765	//    * Redis configuration variables appendonly and appendfsync are not supported
15766	//    on Redis version 2.8.22 and later.
15767	CacheNodeType *string `type:"string"`
15768
15769	// The duration of the reservation in seconds.
15770	Duration *int64 `type:"integer"`
15771
15772	// The fixed price charged for this reserved cache node.
15773	FixedPrice *float64 `type:"double"`
15774
15775	// The offering type of this reserved cache node.
15776	OfferingType *string `type:"string"`
15777
15778	// The description of the reserved cache node.
15779	ProductDescription *string `type:"string"`
15780
15781	// The recurring price charged to run this reserved cache node.
15782	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`
15783
15784	// The Amazon Resource Name (ARN) of the reserved cache node.
15785	//
15786	// Example: arn:aws:elasticache:us-east-1:123456789012:reserved-instance:ri-2017-03-27-08-33-25-582
15787	ReservationARN *string `type:"string"`
15788
15789	// The unique identifier for the reservation.
15790	ReservedCacheNodeId *string `type:"string"`
15791
15792	// The offering identifier.
15793	ReservedCacheNodesOfferingId *string `type:"string"`
15794
15795	// The time the reservation started.
15796	StartTime *time.Time `type:"timestamp"`
15797
15798	// The state of the reserved cache node.
15799	State *string `type:"string"`
15800
15801	// The hourly price charged for this reserved cache node.
15802	UsagePrice *float64 `type:"double"`
15803}
15804
15805// String returns the string representation
15806func (s ReservedCacheNode) String() string {
15807	return awsutil.Prettify(s)
15808}
15809
15810// GoString returns the string representation
15811func (s ReservedCacheNode) GoString() string {
15812	return s.String()
15813}
15814
15815// SetCacheNodeCount sets the CacheNodeCount field's value.
15816func (s *ReservedCacheNode) SetCacheNodeCount(v int64) *ReservedCacheNode {
15817	s.CacheNodeCount = &v
15818	return s
15819}
15820
15821// SetCacheNodeType sets the CacheNodeType field's value.
15822func (s *ReservedCacheNode) SetCacheNodeType(v string) *ReservedCacheNode {
15823	s.CacheNodeType = &v
15824	return s
15825}
15826
15827// SetDuration sets the Duration field's value.
15828func (s *ReservedCacheNode) SetDuration(v int64) *ReservedCacheNode {
15829	s.Duration = &v
15830	return s
15831}
15832
15833// SetFixedPrice sets the FixedPrice field's value.
15834func (s *ReservedCacheNode) SetFixedPrice(v float64) *ReservedCacheNode {
15835	s.FixedPrice = &v
15836	return s
15837}
15838
15839// SetOfferingType sets the OfferingType field's value.
15840func (s *ReservedCacheNode) SetOfferingType(v string) *ReservedCacheNode {
15841	s.OfferingType = &v
15842	return s
15843}
15844
15845// SetProductDescription sets the ProductDescription field's value.
15846func (s *ReservedCacheNode) SetProductDescription(v string) *ReservedCacheNode {
15847	s.ProductDescription = &v
15848	return s
15849}
15850
15851// SetRecurringCharges sets the RecurringCharges field's value.
15852func (s *ReservedCacheNode) SetRecurringCharges(v []*RecurringCharge) *ReservedCacheNode {
15853	s.RecurringCharges = v
15854	return s
15855}
15856
15857// SetReservationARN sets the ReservationARN field's value.
15858func (s *ReservedCacheNode) SetReservationARN(v string) *ReservedCacheNode {
15859	s.ReservationARN = &v
15860	return s
15861}
15862
15863// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
15864func (s *ReservedCacheNode) SetReservedCacheNodeId(v string) *ReservedCacheNode {
15865	s.ReservedCacheNodeId = &v
15866	return s
15867}
15868
15869// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
15870func (s *ReservedCacheNode) SetReservedCacheNodesOfferingId(v string) *ReservedCacheNode {
15871	s.ReservedCacheNodesOfferingId = &v
15872	return s
15873}
15874
15875// SetStartTime sets the StartTime field's value.
15876func (s *ReservedCacheNode) SetStartTime(v time.Time) *ReservedCacheNode {
15877	s.StartTime = &v
15878	return s
15879}
15880
15881// SetState sets the State field's value.
15882func (s *ReservedCacheNode) SetState(v string) *ReservedCacheNode {
15883	s.State = &v
15884	return s
15885}
15886
15887// SetUsagePrice sets the UsagePrice field's value.
15888func (s *ReservedCacheNode) SetUsagePrice(v float64) *ReservedCacheNode {
15889	s.UsagePrice = &v
15890	return s
15891}
15892
15893// Describes all of the attributes of a reserved cache node offering.
15894type ReservedCacheNodesOffering struct {
15895	_ struct{} `type:"structure"`
15896
15897	// The cache node type for the reserved cache node.
15898	//
15899	// The following node types are supported by ElastiCache. Generally speaking,
15900	// the current generation types provide more memory and computational power
15901	// at lower cost when compared to their equivalent previous generation counterparts.
15902	//
15903	//    * General purpose: Current generation: M5 node types: cache.m5.large,
15904	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
15905	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
15906	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
15907	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
15908	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
15909	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
15910	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
15911	//
15912	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
15913	//    cache.c1.xlarge
15914	//
15915	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
15916	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
15917	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
15918	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
15919	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
15920	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
15921	//    cache.r3.8xlarge
15922	//
15923	// Additional node type info
15924	//
15925	//    * All current generation instance types are created in Amazon VPC by default.
15926	//
15927	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
15928	//
15929	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
15930	//
15931	//    * Redis configuration variables appendonly and appendfsync are not supported
15932	//    on Redis version 2.8.22 and later.
15933	CacheNodeType *string `type:"string"`
15934
15935	// The duration of the offering. in seconds.
15936	Duration *int64 `type:"integer"`
15937
15938	// The fixed price charged for this offering.
15939	FixedPrice *float64 `type:"double"`
15940
15941	// The offering type.
15942	OfferingType *string `type:"string"`
15943
15944	// The cache engine used by the offering.
15945	ProductDescription *string `type:"string"`
15946
15947	// The recurring price charged to run this reserved cache node.
15948	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`
15949
15950	// A unique identifier for the reserved cache node offering.
15951	ReservedCacheNodesOfferingId *string `type:"string"`
15952
15953	// The hourly price charged for this offering.
15954	UsagePrice *float64 `type:"double"`
15955}
15956
15957// String returns the string representation
15958func (s ReservedCacheNodesOffering) String() string {
15959	return awsutil.Prettify(s)
15960}
15961
15962// GoString returns the string representation
15963func (s ReservedCacheNodesOffering) GoString() string {
15964	return s.String()
15965}
15966
15967// SetCacheNodeType sets the CacheNodeType field's value.
15968func (s *ReservedCacheNodesOffering) SetCacheNodeType(v string) *ReservedCacheNodesOffering {
15969	s.CacheNodeType = &v
15970	return s
15971}
15972
15973// SetDuration sets the Duration field's value.
15974func (s *ReservedCacheNodesOffering) SetDuration(v int64) *ReservedCacheNodesOffering {
15975	s.Duration = &v
15976	return s
15977}
15978
15979// SetFixedPrice sets the FixedPrice field's value.
15980func (s *ReservedCacheNodesOffering) SetFixedPrice(v float64) *ReservedCacheNodesOffering {
15981	s.FixedPrice = &v
15982	return s
15983}
15984
15985// SetOfferingType sets the OfferingType field's value.
15986func (s *ReservedCacheNodesOffering) SetOfferingType(v string) *ReservedCacheNodesOffering {
15987	s.OfferingType = &v
15988	return s
15989}
15990
15991// SetProductDescription sets the ProductDescription field's value.
15992func (s *ReservedCacheNodesOffering) SetProductDescription(v string) *ReservedCacheNodesOffering {
15993	s.ProductDescription = &v
15994	return s
15995}
15996
15997// SetRecurringCharges sets the RecurringCharges field's value.
15998func (s *ReservedCacheNodesOffering) SetRecurringCharges(v []*RecurringCharge) *ReservedCacheNodesOffering {
15999	s.RecurringCharges = v
16000	return s
16001}
16002
16003// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
16004func (s *ReservedCacheNodesOffering) SetReservedCacheNodesOfferingId(v string) *ReservedCacheNodesOffering {
16005	s.ReservedCacheNodesOfferingId = &v
16006	return s
16007}
16008
16009// SetUsagePrice sets the UsagePrice field's value.
16010func (s *ReservedCacheNodesOffering) SetUsagePrice(v float64) *ReservedCacheNodesOffering {
16011	s.UsagePrice = &v
16012	return s
16013}
16014
16015// Represents the input of a ResetCacheParameterGroup operation.
16016type ResetCacheParameterGroupInput struct {
16017	_ struct{} `type:"structure"`
16018
16019	// The name of the cache parameter group to reset.
16020	//
16021	// CacheParameterGroupName is a required field
16022	CacheParameterGroupName *string `type:"string" required:"true"`
16023
16024	// An array of parameter names to reset to their default values. If ResetAllParameters
16025	// is true, do not use ParameterNameValues. If ResetAllParameters is false,
16026	// you must specify the name of at least one parameter to reset.
16027	ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list"`
16028
16029	// If true, all parameters in the cache parameter group are reset to their default
16030	// values. If false, only the parameters listed by ParameterNameValues are reset
16031	// to their default values.
16032	//
16033	// Valid values: true | false
16034	ResetAllParameters *bool `type:"boolean"`
16035}
16036
16037// String returns the string representation
16038func (s ResetCacheParameterGroupInput) String() string {
16039	return awsutil.Prettify(s)
16040}
16041
16042// GoString returns the string representation
16043func (s ResetCacheParameterGroupInput) GoString() string {
16044	return s.String()
16045}
16046
16047// Validate inspects the fields of the type to determine if they are valid.
16048func (s *ResetCacheParameterGroupInput) Validate() error {
16049	invalidParams := request.ErrInvalidParams{Context: "ResetCacheParameterGroupInput"}
16050	if s.CacheParameterGroupName == nil {
16051		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
16052	}
16053
16054	if invalidParams.Len() > 0 {
16055		return invalidParams
16056	}
16057	return nil
16058}
16059
16060// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
16061func (s *ResetCacheParameterGroupInput) SetCacheParameterGroupName(v string) *ResetCacheParameterGroupInput {
16062	s.CacheParameterGroupName = &v
16063	return s
16064}
16065
16066// SetParameterNameValues sets the ParameterNameValues field's value.
16067func (s *ResetCacheParameterGroupInput) SetParameterNameValues(v []*ParameterNameValue) *ResetCacheParameterGroupInput {
16068	s.ParameterNameValues = v
16069	return s
16070}
16071
16072// SetResetAllParameters sets the ResetAllParameters field's value.
16073func (s *ResetCacheParameterGroupInput) SetResetAllParameters(v bool) *ResetCacheParameterGroupInput {
16074	s.ResetAllParameters = &v
16075	return s
16076}
16077
16078// A list of PreferredAvailabilityZones objects that specifies the configuration
16079// of a node group in the resharded cluster.
16080type ReshardingConfiguration struct {
16081	_ struct{} `type:"structure"`
16082
16083	// Either the ElastiCache for Redis supplied 4-digit id or a user supplied id
16084	// for the node group these configuration values apply to.
16085	NodeGroupId *string `min:"1" type:"string"`
16086
16087	// A list of preferred availability zones for the nodes in this cluster.
16088	PreferredAvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`
16089}
16090
16091// String returns the string representation
16092func (s ReshardingConfiguration) String() string {
16093	return awsutil.Prettify(s)
16094}
16095
16096// GoString returns the string representation
16097func (s ReshardingConfiguration) GoString() string {
16098	return s.String()
16099}
16100
16101// Validate inspects the fields of the type to determine if they are valid.
16102func (s *ReshardingConfiguration) Validate() error {
16103	invalidParams := request.ErrInvalidParams{Context: "ReshardingConfiguration"}
16104	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
16105		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
16106	}
16107
16108	if invalidParams.Len() > 0 {
16109		return invalidParams
16110	}
16111	return nil
16112}
16113
16114// SetNodeGroupId sets the NodeGroupId field's value.
16115func (s *ReshardingConfiguration) SetNodeGroupId(v string) *ReshardingConfiguration {
16116	s.NodeGroupId = &v
16117	return s
16118}
16119
16120// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
16121func (s *ReshardingConfiguration) SetPreferredAvailabilityZones(v []*string) *ReshardingConfiguration {
16122	s.PreferredAvailabilityZones = v
16123	return s
16124}
16125
16126// The status of an online resharding operation.
16127type ReshardingStatus struct {
16128	_ struct{} `type:"structure"`
16129
16130	// Represents the progress of an online resharding operation.
16131	SlotMigration *SlotMigration `type:"structure"`
16132}
16133
16134// String returns the string representation
16135func (s ReshardingStatus) String() string {
16136	return awsutil.Prettify(s)
16137}
16138
16139// GoString returns the string representation
16140func (s ReshardingStatus) GoString() string {
16141	return s.String()
16142}
16143
16144// SetSlotMigration sets the SlotMigration field's value.
16145func (s *ReshardingStatus) SetSlotMigration(v *SlotMigration) *ReshardingStatus {
16146	s.SlotMigration = v
16147	return s
16148}
16149
16150// Represents the input of a RevokeCacheSecurityGroupIngress operation.
16151type RevokeCacheSecurityGroupIngressInput struct {
16152	_ struct{} `type:"structure"`
16153
16154	// The name of the cache security group to revoke ingress from.
16155	//
16156	// CacheSecurityGroupName is a required field
16157	CacheSecurityGroupName *string `type:"string" required:"true"`
16158
16159	// The name of the Amazon EC2 security group to revoke access from.
16160	//
16161	// EC2SecurityGroupName is a required field
16162	EC2SecurityGroupName *string `type:"string" required:"true"`
16163
16164	// The AWS account number of the Amazon EC2 security group owner. Note that
16165	// this is not the same thing as an AWS access key ID - you must provide a valid
16166	// AWS account number for this parameter.
16167	//
16168	// EC2SecurityGroupOwnerId is a required field
16169	EC2SecurityGroupOwnerId *string `type:"string" required:"true"`
16170}
16171
16172// String returns the string representation
16173func (s RevokeCacheSecurityGroupIngressInput) String() string {
16174	return awsutil.Prettify(s)
16175}
16176
16177// GoString returns the string representation
16178func (s RevokeCacheSecurityGroupIngressInput) GoString() string {
16179	return s.String()
16180}
16181
16182// Validate inspects the fields of the type to determine if they are valid.
16183func (s *RevokeCacheSecurityGroupIngressInput) Validate() error {
16184	invalidParams := request.ErrInvalidParams{Context: "RevokeCacheSecurityGroupIngressInput"}
16185	if s.CacheSecurityGroupName == nil {
16186		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
16187	}
16188	if s.EC2SecurityGroupName == nil {
16189		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupName"))
16190	}
16191	if s.EC2SecurityGroupOwnerId == nil {
16192		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupOwnerId"))
16193	}
16194
16195	if invalidParams.Len() > 0 {
16196		return invalidParams
16197	}
16198	return nil
16199}
16200
16201// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
16202func (s *RevokeCacheSecurityGroupIngressInput) SetCacheSecurityGroupName(v string) *RevokeCacheSecurityGroupIngressInput {
16203	s.CacheSecurityGroupName = &v
16204	return s
16205}
16206
16207// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
16208func (s *RevokeCacheSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *RevokeCacheSecurityGroupIngressInput {
16209	s.EC2SecurityGroupName = &v
16210	return s
16211}
16212
16213// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
16214func (s *RevokeCacheSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *RevokeCacheSecurityGroupIngressInput {
16215	s.EC2SecurityGroupOwnerId = &v
16216	return s
16217}
16218
16219type RevokeCacheSecurityGroupIngressOutput struct {
16220	_ struct{} `type:"structure"`
16221
16222	// Represents the output of one of the following operations:
16223	//
16224	//    * AuthorizeCacheSecurityGroupIngress
16225	//
16226	//    * CreateCacheSecurityGroup
16227	//
16228	//    * RevokeCacheSecurityGroupIngress
16229	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
16230}
16231
16232// String returns the string representation
16233func (s RevokeCacheSecurityGroupIngressOutput) String() string {
16234	return awsutil.Prettify(s)
16235}
16236
16237// GoString returns the string representation
16238func (s RevokeCacheSecurityGroupIngressOutput) GoString() string {
16239	return s.String()
16240}
16241
16242// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
16243func (s *RevokeCacheSecurityGroupIngressOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *RevokeCacheSecurityGroupIngressOutput {
16244	s.CacheSecurityGroup = v
16245	return s
16246}
16247
16248// Represents a single cache security group and its status.
16249type SecurityGroupMembership struct {
16250	_ struct{} `type:"structure"`
16251
16252	// The identifier of the cache security group.
16253	SecurityGroupId *string `type:"string"`
16254
16255	// The status of the cache security group membership. The status changes whenever
16256	// a cache security group is modified, or when the cache security groups assigned
16257	// to a cluster are modified.
16258	Status *string `type:"string"`
16259}
16260
16261// String returns the string representation
16262func (s SecurityGroupMembership) String() string {
16263	return awsutil.Prettify(s)
16264}
16265
16266// GoString returns the string representation
16267func (s SecurityGroupMembership) GoString() string {
16268	return s.String()
16269}
16270
16271// SetSecurityGroupId sets the SecurityGroupId field's value.
16272func (s *SecurityGroupMembership) SetSecurityGroupId(v string) *SecurityGroupMembership {
16273	s.SecurityGroupId = &v
16274	return s
16275}
16276
16277// SetStatus sets the Status field's value.
16278func (s *SecurityGroupMembership) SetStatus(v string) *SecurityGroupMembership {
16279	s.Status = &v
16280	return s
16281}
16282
16283// An update that you can apply to your Redis clusters.
16284type ServiceUpdate struct {
16285	_ struct{} `type:"structure"`
16286
16287	// Indicates whether the service update will be automatically applied once the
16288	// recommended apply-by date has expired.
16289	AutoUpdateAfterRecommendedApplyByDate *bool `type:"boolean"`
16290
16291	// The Elasticache engine to which the update applies. Either Redis or Memcached
16292	Engine *string `type:"string"`
16293
16294	// The Elasticache engine version to which the update applies. Either Redis
16295	// or Memcached engine version
16296	EngineVersion *string `type:"string"`
16297
16298	// The estimated length of time the service update will take
16299	EstimatedUpdateTime *string `type:"string"`
16300
16301	// Provides details of the service update
16302	ServiceUpdateDescription *string `type:"string"`
16303
16304	// The date after which the service update is no longer available
16305	ServiceUpdateEndDate *time.Time `type:"timestamp"`
16306
16307	// The unique ID of the service update
16308	ServiceUpdateName *string `type:"string"`
16309
16310	// The recommendend date to apply the service update in order to ensure compliance.
16311	// For information on compliance, see Self-Service Security Updates for Compliance
16312	// (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-compliance.html#elasticache-compliance-self-service).
16313	ServiceUpdateRecommendedApplyByDate *time.Time `type:"timestamp"`
16314
16315	// The date when the service update is initially available
16316	ServiceUpdateReleaseDate *time.Time `type:"timestamp"`
16317
16318	// The severity of the service update
16319	ServiceUpdateSeverity *string `type:"string" enum:"ServiceUpdateSeverity"`
16320
16321	// The status of the service update
16322	ServiceUpdateStatus *string `type:"string" enum:"ServiceUpdateStatus"`
16323
16324	// Reflects the nature of the service update
16325	ServiceUpdateType *string `type:"string" enum:"ServiceUpdateType"`
16326}
16327
16328// String returns the string representation
16329func (s ServiceUpdate) String() string {
16330	return awsutil.Prettify(s)
16331}
16332
16333// GoString returns the string representation
16334func (s ServiceUpdate) GoString() string {
16335	return s.String()
16336}
16337
16338// SetAutoUpdateAfterRecommendedApplyByDate sets the AutoUpdateAfterRecommendedApplyByDate field's value.
16339func (s *ServiceUpdate) SetAutoUpdateAfterRecommendedApplyByDate(v bool) *ServiceUpdate {
16340	s.AutoUpdateAfterRecommendedApplyByDate = &v
16341	return s
16342}
16343
16344// SetEngine sets the Engine field's value.
16345func (s *ServiceUpdate) SetEngine(v string) *ServiceUpdate {
16346	s.Engine = &v
16347	return s
16348}
16349
16350// SetEngineVersion sets the EngineVersion field's value.
16351func (s *ServiceUpdate) SetEngineVersion(v string) *ServiceUpdate {
16352	s.EngineVersion = &v
16353	return s
16354}
16355
16356// SetEstimatedUpdateTime sets the EstimatedUpdateTime field's value.
16357func (s *ServiceUpdate) SetEstimatedUpdateTime(v string) *ServiceUpdate {
16358	s.EstimatedUpdateTime = &v
16359	return s
16360}
16361
16362// SetServiceUpdateDescription sets the ServiceUpdateDescription field's value.
16363func (s *ServiceUpdate) SetServiceUpdateDescription(v string) *ServiceUpdate {
16364	s.ServiceUpdateDescription = &v
16365	return s
16366}
16367
16368// SetServiceUpdateEndDate sets the ServiceUpdateEndDate field's value.
16369func (s *ServiceUpdate) SetServiceUpdateEndDate(v time.Time) *ServiceUpdate {
16370	s.ServiceUpdateEndDate = &v
16371	return s
16372}
16373
16374// SetServiceUpdateName sets the ServiceUpdateName field's value.
16375func (s *ServiceUpdate) SetServiceUpdateName(v string) *ServiceUpdate {
16376	s.ServiceUpdateName = &v
16377	return s
16378}
16379
16380// SetServiceUpdateRecommendedApplyByDate sets the ServiceUpdateRecommendedApplyByDate field's value.
16381func (s *ServiceUpdate) SetServiceUpdateRecommendedApplyByDate(v time.Time) *ServiceUpdate {
16382	s.ServiceUpdateRecommendedApplyByDate = &v
16383	return s
16384}
16385
16386// SetServiceUpdateReleaseDate sets the ServiceUpdateReleaseDate field's value.
16387func (s *ServiceUpdate) SetServiceUpdateReleaseDate(v time.Time) *ServiceUpdate {
16388	s.ServiceUpdateReleaseDate = &v
16389	return s
16390}
16391
16392// SetServiceUpdateSeverity sets the ServiceUpdateSeverity field's value.
16393func (s *ServiceUpdate) SetServiceUpdateSeverity(v string) *ServiceUpdate {
16394	s.ServiceUpdateSeverity = &v
16395	return s
16396}
16397
16398// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
16399func (s *ServiceUpdate) SetServiceUpdateStatus(v string) *ServiceUpdate {
16400	s.ServiceUpdateStatus = &v
16401	return s
16402}
16403
16404// SetServiceUpdateType sets the ServiceUpdateType field's value.
16405func (s *ServiceUpdate) SetServiceUpdateType(v string) *ServiceUpdate {
16406	s.ServiceUpdateType = &v
16407	return s
16408}
16409
16410// Represents the progress of an online resharding operation.
16411type SlotMigration struct {
16412	_ struct{} `type:"structure"`
16413
16414	// The percentage of the slot migration that is complete.
16415	ProgressPercentage *float64 `type:"double"`
16416}
16417
16418// String returns the string representation
16419func (s SlotMigration) String() string {
16420	return awsutil.Prettify(s)
16421}
16422
16423// GoString returns the string representation
16424func (s SlotMigration) GoString() string {
16425	return s.String()
16426}
16427
16428// SetProgressPercentage sets the ProgressPercentage field's value.
16429func (s *SlotMigration) SetProgressPercentage(v float64) *SlotMigration {
16430	s.ProgressPercentage = &v
16431	return s
16432}
16433
16434// Represents a copy of an entire Redis cluster as of the time when the snapshot
16435// was taken.
16436type Snapshot struct {
16437	_ struct{} `type:"structure"`
16438
16439	// The ARN (Amazon Resource Name) of the snapshot.
16440	ARN *string `type:"string"`
16441
16442	// This parameter is currently disabled.
16443	AutoMinorVersionUpgrade *bool `type:"boolean"`
16444
16445	// Indicates the status of Multi-AZ with automatic failover for the source Redis
16446	// replication group.
16447	//
16448	// Amazon ElastiCache for Redis does not support Multi-AZ with automatic failover
16449	// on:
16450	//
16451	//    * Redis versions earlier than 2.8.6.
16452	//
16453	//    * Redis (cluster mode disabled): T1 node types.
16454	//
16455	//    * Redis (cluster mode enabled): T1 node types.
16456	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
16457
16458	// The date and time when the source cluster was created.
16459	CacheClusterCreateTime *time.Time `type:"timestamp"`
16460
16461	// The user-supplied identifier of the source cluster.
16462	CacheClusterId *string `type:"string"`
16463
16464	// The name of the compute and memory capacity node type for the source cluster.
16465	//
16466	// The following node types are supported by ElastiCache. Generally speaking,
16467	// the current generation types provide more memory and computational power
16468	// at lower cost when compared to their equivalent previous generation counterparts.
16469	//
16470	//    * General purpose: Current generation: M5 node types: cache.m5.large,
16471	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
16472	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
16473	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
16474	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
16475	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
16476	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
16477	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
16478	//
16479	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
16480	//    cache.c1.xlarge
16481	//
16482	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
16483	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
16484	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
16485	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
16486	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
16487	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
16488	//    cache.r3.8xlarge
16489	//
16490	// Additional node type info
16491	//
16492	//    * All current generation instance types are created in Amazon VPC by default.
16493	//
16494	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
16495	//
16496	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
16497	//
16498	//    * Redis configuration variables appendonly and appendfsync are not supported
16499	//    on Redis version 2.8.22 and later.
16500	CacheNodeType *string `type:"string"`
16501
16502	// The cache parameter group that is associated with the source cluster.
16503	CacheParameterGroupName *string `type:"string"`
16504
16505	// The name of the cache subnet group associated with the source cluster.
16506	CacheSubnetGroupName *string `type:"string"`
16507
16508	// The name of the cache engine (memcached or redis) used by the source cluster.
16509	Engine *string `type:"string"`
16510
16511	// The version of the cache engine version that is used by the source cluster.
16512	EngineVersion *string `type:"string"`
16513
16514	// The ID of the KMS key used to encrypt the snapshot.
16515	KmsKeyId *string `type:"string"`
16516
16517	// A list of the cache nodes in the source cluster.
16518	NodeSnapshots []*NodeSnapshot `locationNameList:"NodeSnapshot" type:"list"`
16519
16520	// The number of cache nodes in the source cluster.
16521	//
16522	// For clusters running Redis, this value must be 1. For clusters running Memcached,
16523	// this value must be between 1 and 20.
16524	NumCacheNodes *int64 `type:"integer"`
16525
16526	// The number of node groups (shards) in this snapshot. When restoring from
16527	// a snapshot, the number of node groups (shards) in the snapshot and in the
16528	// restored replication group must be the same.
16529	NumNodeGroups *int64 `type:"integer"`
16530
16531	// The port number used by each cache nodes in the source cluster.
16532	Port *int64 `type:"integer"`
16533
16534	// The name of the Availability Zone in which the source cluster is located.
16535	PreferredAvailabilityZone *string `type:"string"`
16536
16537	// Specifies the weekly time range during which maintenance on the cluster is
16538	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
16539	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
16540	//
16541	// Valid values for ddd are:
16542	//
16543	//    * sun
16544	//
16545	//    * mon
16546	//
16547	//    * tue
16548	//
16549	//    * wed
16550	//
16551	//    * thu
16552	//
16553	//    * fri
16554	//
16555	//    * sat
16556	//
16557	// Example: sun:23:00-mon:01:30
16558	PreferredMaintenanceWindow *string `type:"string"`
16559
16560	// A description of the source replication group.
16561	ReplicationGroupDescription *string `type:"string"`
16562
16563	// The unique identifier of the source replication group.
16564	ReplicationGroupId *string `type:"string"`
16565
16566	// The name of a snapshot. For an automatic snapshot, the name is system-generated.
16567	// For a manual snapshot, this is the user-provided name.
16568	SnapshotName *string `type:"string"`
16569
16570	// For an automatic snapshot, the number of days for which ElastiCache retains
16571	// the snapshot before deleting it.
16572	//
16573	// For manual snapshots, this field reflects the SnapshotRetentionLimit for
16574	// the source cluster when the snapshot was created. This field is otherwise
16575	// ignored: Manual snapshots do not expire, and can only be deleted using the
16576	// DeleteSnapshot operation.
16577	//
16578	// Important If the value of SnapshotRetentionLimit is set to zero (0), backups
16579	// are turned off.
16580	SnapshotRetentionLimit *int64 `type:"integer"`
16581
16582	// Indicates whether the snapshot is from an automatic backup (automated) or
16583	// was created manually (manual).
16584	SnapshotSource *string `type:"string"`
16585
16586	// The status of the snapshot. Valid values: creating | available | restoring
16587	// | copying | deleting.
16588	SnapshotStatus *string `type:"string"`
16589
16590	// The daily time range during which ElastiCache takes daily snapshots of the
16591	// source cluster.
16592	SnapshotWindow *string `type:"string"`
16593
16594	// The Amazon Resource Name (ARN) for the topic used by the source cluster for
16595	// publishing notifications.
16596	TopicArn *string `type:"string"`
16597
16598	// The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet
16599	// group for the source cluster.
16600	VpcId *string `type:"string"`
16601}
16602
16603// String returns the string representation
16604func (s Snapshot) String() string {
16605	return awsutil.Prettify(s)
16606}
16607
16608// GoString returns the string representation
16609func (s Snapshot) GoString() string {
16610	return s.String()
16611}
16612
16613// SetARN sets the ARN field's value.
16614func (s *Snapshot) SetARN(v string) *Snapshot {
16615	s.ARN = &v
16616	return s
16617}
16618
16619// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
16620func (s *Snapshot) SetAutoMinorVersionUpgrade(v bool) *Snapshot {
16621	s.AutoMinorVersionUpgrade = &v
16622	return s
16623}
16624
16625// SetAutomaticFailover sets the AutomaticFailover field's value.
16626func (s *Snapshot) SetAutomaticFailover(v string) *Snapshot {
16627	s.AutomaticFailover = &v
16628	return s
16629}
16630
16631// SetCacheClusterCreateTime sets the CacheClusterCreateTime field's value.
16632func (s *Snapshot) SetCacheClusterCreateTime(v time.Time) *Snapshot {
16633	s.CacheClusterCreateTime = &v
16634	return s
16635}
16636
16637// SetCacheClusterId sets the CacheClusterId field's value.
16638func (s *Snapshot) SetCacheClusterId(v string) *Snapshot {
16639	s.CacheClusterId = &v
16640	return s
16641}
16642
16643// SetCacheNodeType sets the CacheNodeType field's value.
16644func (s *Snapshot) SetCacheNodeType(v string) *Snapshot {
16645	s.CacheNodeType = &v
16646	return s
16647}
16648
16649// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
16650func (s *Snapshot) SetCacheParameterGroupName(v string) *Snapshot {
16651	s.CacheParameterGroupName = &v
16652	return s
16653}
16654
16655// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
16656func (s *Snapshot) SetCacheSubnetGroupName(v string) *Snapshot {
16657	s.CacheSubnetGroupName = &v
16658	return s
16659}
16660
16661// SetEngine sets the Engine field's value.
16662func (s *Snapshot) SetEngine(v string) *Snapshot {
16663	s.Engine = &v
16664	return s
16665}
16666
16667// SetEngineVersion sets the EngineVersion field's value.
16668func (s *Snapshot) SetEngineVersion(v string) *Snapshot {
16669	s.EngineVersion = &v
16670	return s
16671}
16672
16673// SetKmsKeyId sets the KmsKeyId field's value.
16674func (s *Snapshot) SetKmsKeyId(v string) *Snapshot {
16675	s.KmsKeyId = &v
16676	return s
16677}
16678
16679// SetNodeSnapshots sets the NodeSnapshots field's value.
16680func (s *Snapshot) SetNodeSnapshots(v []*NodeSnapshot) *Snapshot {
16681	s.NodeSnapshots = v
16682	return s
16683}
16684
16685// SetNumCacheNodes sets the NumCacheNodes field's value.
16686func (s *Snapshot) SetNumCacheNodes(v int64) *Snapshot {
16687	s.NumCacheNodes = &v
16688	return s
16689}
16690
16691// SetNumNodeGroups sets the NumNodeGroups field's value.
16692func (s *Snapshot) SetNumNodeGroups(v int64) *Snapshot {
16693	s.NumNodeGroups = &v
16694	return s
16695}
16696
16697// SetPort sets the Port field's value.
16698func (s *Snapshot) SetPort(v int64) *Snapshot {
16699	s.Port = &v
16700	return s
16701}
16702
16703// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
16704func (s *Snapshot) SetPreferredAvailabilityZone(v string) *Snapshot {
16705	s.PreferredAvailabilityZone = &v
16706	return s
16707}
16708
16709// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
16710func (s *Snapshot) SetPreferredMaintenanceWindow(v string) *Snapshot {
16711	s.PreferredMaintenanceWindow = &v
16712	return s
16713}
16714
16715// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
16716func (s *Snapshot) SetReplicationGroupDescription(v string) *Snapshot {
16717	s.ReplicationGroupDescription = &v
16718	return s
16719}
16720
16721// SetReplicationGroupId sets the ReplicationGroupId field's value.
16722func (s *Snapshot) SetReplicationGroupId(v string) *Snapshot {
16723	s.ReplicationGroupId = &v
16724	return s
16725}
16726
16727// SetSnapshotName sets the SnapshotName field's value.
16728func (s *Snapshot) SetSnapshotName(v string) *Snapshot {
16729	s.SnapshotName = &v
16730	return s
16731}
16732
16733// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
16734func (s *Snapshot) SetSnapshotRetentionLimit(v int64) *Snapshot {
16735	s.SnapshotRetentionLimit = &v
16736	return s
16737}
16738
16739// SetSnapshotSource sets the SnapshotSource field's value.
16740func (s *Snapshot) SetSnapshotSource(v string) *Snapshot {
16741	s.SnapshotSource = &v
16742	return s
16743}
16744
16745// SetSnapshotStatus sets the SnapshotStatus field's value.
16746func (s *Snapshot) SetSnapshotStatus(v string) *Snapshot {
16747	s.SnapshotStatus = &v
16748	return s
16749}
16750
16751// SetSnapshotWindow sets the SnapshotWindow field's value.
16752func (s *Snapshot) SetSnapshotWindow(v string) *Snapshot {
16753	s.SnapshotWindow = &v
16754	return s
16755}
16756
16757// SetTopicArn sets the TopicArn field's value.
16758func (s *Snapshot) SetTopicArn(v string) *Snapshot {
16759	s.TopicArn = &v
16760	return s
16761}
16762
16763// SetVpcId sets the VpcId field's value.
16764func (s *Snapshot) SetVpcId(v string) *Snapshot {
16765	s.VpcId = &v
16766	return s
16767}
16768
16769type StartMigrationInput struct {
16770	_ struct{} `type:"structure"`
16771
16772	// List of endpoints from which data should be migrated. For Redis (cluster
16773	// mode disabled), list should have only one element.
16774	//
16775	// CustomerNodeEndpointList is a required field
16776	CustomerNodeEndpointList []*CustomerNodeEndpoint `type:"list" required:"true"`
16777
16778	// The ID of the replication group to which data should be migrated.
16779	//
16780	// ReplicationGroupId is a required field
16781	ReplicationGroupId *string `type:"string" required:"true"`
16782}
16783
16784// String returns the string representation
16785func (s StartMigrationInput) String() string {
16786	return awsutil.Prettify(s)
16787}
16788
16789// GoString returns the string representation
16790func (s StartMigrationInput) GoString() string {
16791	return s.String()
16792}
16793
16794// Validate inspects the fields of the type to determine if they are valid.
16795func (s *StartMigrationInput) Validate() error {
16796	invalidParams := request.ErrInvalidParams{Context: "StartMigrationInput"}
16797	if s.CustomerNodeEndpointList == nil {
16798		invalidParams.Add(request.NewErrParamRequired("CustomerNodeEndpointList"))
16799	}
16800	if s.ReplicationGroupId == nil {
16801		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
16802	}
16803
16804	if invalidParams.Len() > 0 {
16805		return invalidParams
16806	}
16807	return nil
16808}
16809
16810// SetCustomerNodeEndpointList sets the CustomerNodeEndpointList field's value.
16811func (s *StartMigrationInput) SetCustomerNodeEndpointList(v []*CustomerNodeEndpoint) *StartMigrationInput {
16812	s.CustomerNodeEndpointList = v
16813	return s
16814}
16815
16816// SetReplicationGroupId sets the ReplicationGroupId field's value.
16817func (s *StartMigrationInput) SetReplicationGroupId(v string) *StartMigrationInput {
16818	s.ReplicationGroupId = &v
16819	return s
16820}
16821
16822type StartMigrationOutput struct {
16823	_ struct{} `type:"structure"`
16824
16825	// Contains all of the attributes of a specific Redis replication group.
16826	ReplicationGroup *ReplicationGroup `type:"structure"`
16827}
16828
16829// String returns the string representation
16830func (s StartMigrationOutput) String() string {
16831	return awsutil.Prettify(s)
16832}
16833
16834// GoString returns the string representation
16835func (s StartMigrationOutput) GoString() string {
16836	return s.String()
16837}
16838
16839// SetReplicationGroup sets the ReplicationGroup field's value.
16840func (s *StartMigrationOutput) SetReplicationGroup(v *ReplicationGroup) *StartMigrationOutput {
16841	s.ReplicationGroup = v
16842	return s
16843}
16844
16845// Represents the subnet associated with a cluster. This parameter refers to
16846// subnets defined in Amazon Virtual Private Cloud (Amazon VPC) and used with
16847// ElastiCache.
16848type Subnet struct {
16849	_ struct{} `type:"structure"`
16850
16851	// The Availability Zone associated with the subnet.
16852	SubnetAvailabilityZone *AvailabilityZone `type:"structure"`
16853
16854	// The unique identifier for the subnet.
16855	SubnetIdentifier *string `type:"string"`
16856}
16857
16858// String returns the string representation
16859func (s Subnet) String() string {
16860	return awsutil.Prettify(s)
16861}
16862
16863// GoString returns the string representation
16864func (s Subnet) GoString() string {
16865	return s.String()
16866}
16867
16868// SetSubnetAvailabilityZone sets the SubnetAvailabilityZone field's value.
16869func (s *Subnet) SetSubnetAvailabilityZone(v *AvailabilityZone) *Subnet {
16870	s.SubnetAvailabilityZone = v
16871	return s
16872}
16873
16874// SetSubnetIdentifier sets the SubnetIdentifier field's value.
16875func (s *Subnet) SetSubnetIdentifier(v string) *Subnet {
16876	s.SubnetIdentifier = &v
16877	return s
16878}
16879
16880// A cost allocation Tag that can be added to an ElastiCache cluster or replication
16881// group. Tags are composed of a Key/Value pair. A tag with a null Value is
16882// permitted.
16883type Tag struct {
16884	_ struct{} `type:"structure"`
16885
16886	// The key for the tag. May not be null.
16887	Key *string `type:"string"`
16888
16889	// The tag's value. May be null.
16890	Value *string `type:"string"`
16891}
16892
16893// String returns the string representation
16894func (s Tag) String() string {
16895	return awsutil.Prettify(s)
16896}
16897
16898// GoString returns the string representation
16899func (s Tag) GoString() string {
16900	return s.String()
16901}
16902
16903// SetKey sets the Key field's value.
16904func (s *Tag) SetKey(v string) *Tag {
16905	s.Key = &v
16906	return s
16907}
16908
16909// SetValue sets the Value field's value.
16910func (s *Tag) SetValue(v string) *Tag {
16911	s.Value = &v
16912	return s
16913}
16914
16915// Represents the output from the AddTagsToResource, ListTagsForResource, and
16916// RemoveTagsFromResource operations.
16917type TagListMessage struct {
16918	_ struct{} `type:"structure"`
16919
16920	// A list of cost allocation tags as key-value pairs.
16921	TagList []*Tag `locationNameList:"Tag" type:"list"`
16922}
16923
16924// String returns the string representation
16925func (s TagListMessage) String() string {
16926	return awsutil.Prettify(s)
16927}
16928
16929// GoString returns the string representation
16930func (s TagListMessage) GoString() string {
16931	return s.String()
16932}
16933
16934// SetTagList sets the TagList field's value.
16935func (s *TagListMessage) SetTagList(v []*Tag) *TagListMessage {
16936	s.TagList = v
16937	return s
16938}
16939
16940type TestFailoverInput struct {
16941	_ struct{} `type:"structure"`
16942
16943	// The name of the node group (called shard in the console) in this replication
16944	// group on which automatic failover is to be tested. You may test automatic
16945	// failover on up to 5 node groups in any rolling 24-hour period.
16946	//
16947	// NodeGroupId is a required field
16948	NodeGroupId *string `min:"1" type:"string" required:"true"`
16949
16950	// The name of the replication group (console: cluster) whose automatic failover
16951	// is being tested by this operation.
16952	//
16953	// ReplicationGroupId is a required field
16954	ReplicationGroupId *string `type:"string" required:"true"`
16955}
16956
16957// String returns the string representation
16958func (s TestFailoverInput) String() string {
16959	return awsutil.Prettify(s)
16960}
16961
16962// GoString returns the string representation
16963func (s TestFailoverInput) GoString() string {
16964	return s.String()
16965}
16966
16967// Validate inspects the fields of the type to determine if they are valid.
16968func (s *TestFailoverInput) Validate() error {
16969	invalidParams := request.ErrInvalidParams{Context: "TestFailoverInput"}
16970	if s.NodeGroupId == nil {
16971		invalidParams.Add(request.NewErrParamRequired("NodeGroupId"))
16972	}
16973	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
16974		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
16975	}
16976	if s.ReplicationGroupId == nil {
16977		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
16978	}
16979
16980	if invalidParams.Len() > 0 {
16981		return invalidParams
16982	}
16983	return nil
16984}
16985
16986// SetNodeGroupId sets the NodeGroupId field's value.
16987func (s *TestFailoverInput) SetNodeGroupId(v string) *TestFailoverInput {
16988	s.NodeGroupId = &v
16989	return s
16990}
16991
16992// SetReplicationGroupId sets the ReplicationGroupId field's value.
16993func (s *TestFailoverInput) SetReplicationGroupId(v string) *TestFailoverInput {
16994	s.ReplicationGroupId = &v
16995	return s
16996}
16997
16998type TestFailoverOutput struct {
16999	_ struct{} `type:"structure"`
17000
17001	// Contains all of the attributes of a specific Redis replication group.
17002	ReplicationGroup *ReplicationGroup `type:"structure"`
17003}
17004
17005// String returns the string representation
17006func (s TestFailoverOutput) String() string {
17007	return awsutil.Prettify(s)
17008}
17009
17010// GoString returns the string representation
17011func (s TestFailoverOutput) GoString() string {
17012	return s.String()
17013}
17014
17015// SetReplicationGroup sets the ReplicationGroup field's value.
17016func (s *TestFailoverOutput) SetReplicationGroup(v *ReplicationGroup) *TestFailoverOutput {
17017	s.ReplicationGroup = v
17018	return s
17019}
17020
17021// Filters update actions from the service updates that are in available status
17022// during the time range.
17023type TimeRangeFilter struct {
17024	_ struct{} `type:"structure"`
17025
17026	// The end time of the time range filter
17027	EndTime *time.Time `type:"timestamp"`
17028
17029	// The start time of the time range filter
17030	StartTime *time.Time `type:"timestamp"`
17031}
17032
17033// String returns the string representation
17034func (s TimeRangeFilter) String() string {
17035	return awsutil.Prettify(s)
17036}
17037
17038// GoString returns the string representation
17039func (s TimeRangeFilter) GoString() string {
17040	return s.String()
17041}
17042
17043// SetEndTime sets the EndTime field's value.
17044func (s *TimeRangeFilter) SetEndTime(v time.Time) *TimeRangeFilter {
17045	s.EndTime = &v
17046	return s
17047}
17048
17049// SetStartTime sets the StartTime field's value.
17050func (s *TimeRangeFilter) SetStartTime(v time.Time) *TimeRangeFilter {
17051	s.StartTime = &v
17052	return s
17053}
17054
17055// Update action that has failed to be processed for the corresponding apply/stop
17056// request
17057type UnprocessedUpdateAction struct {
17058	_ struct{} `type:"structure"`
17059
17060	// The ID of the cache cluster
17061	CacheClusterId *string `type:"string"`
17062
17063	// The error message that describes the reason the request was not processed
17064	ErrorMessage *string `type:"string"`
17065
17066	// The error type for requests that are not processed
17067	ErrorType *string `type:"string"`
17068
17069	// The replication group ID
17070	ReplicationGroupId *string `type:"string"`
17071
17072	// The unique ID of the service update
17073	ServiceUpdateName *string `type:"string"`
17074}
17075
17076// String returns the string representation
17077func (s UnprocessedUpdateAction) String() string {
17078	return awsutil.Prettify(s)
17079}
17080
17081// GoString returns the string representation
17082func (s UnprocessedUpdateAction) GoString() string {
17083	return s.String()
17084}
17085
17086// SetCacheClusterId sets the CacheClusterId field's value.
17087func (s *UnprocessedUpdateAction) SetCacheClusterId(v string) *UnprocessedUpdateAction {
17088	s.CacheClusterId = &v
17089	return s
17090}
17091
17092// SetErrorMessage sets the ErrorMessage field's value.
17093func (s *UnprocessedUpdateAction) SetErrorMessage(v string) *UnprocessedUpdateAction {
17094	s.ErrorMessage = &v
17095	return s
17096}
17097
17098// SetErrorType sets the ErrorType field's value.
17099func (s *UnprocessedUpdateAction) SetErrorType(v string) *UnprocessedUpdateAction {
17100	s.ErrorType = &v
17101	return s
17102}
17103
17104// SetReplicationGroupId sets the ReplicationGroupId field's value.
17105func (s *UnprocessedUpdateAction) SetReplicationGroupId(v string) *UnprocessedUpdateAction {
17106	s.ReplicationGroupId = &v
17107	return s
17108}
17109
17110// SetServiceUpdateName sets the ServiceUpdateName field's value.
17111func (s *UnprocessedUpdateAction) SetServiceUpdateName(v string) *UnprocessedUpdateAction {
17112	s.ServiceUpdateName = &v
17113	return s
17114}
17115
17116// The status of the service update for a specific replication group
17117type UpdateAction struct {
17118	_ struct{} `type:"structure"`
17119
17120	// The ID of the cache cluster
17121	CacheClusterId *string `type:"string"`
17122
17123	// The status of the service update on the cache node
17124	CacheNodeUpdateStatus []*CacheNodeUpdateStatus `locationNameList:"CacheNodeUpdateStatus" type:"list"`
17125
17126	// The Elasticache engine to which the update applies. Either Redis or Memcached
17127	Engine *string `type:"string"`
17128
17129	// The estimated length of time for the update to complete
17130	EstimatedUpdateTime *string `type:"string"`
17131
17132	// The status of the service update on the node group
17133	NodeGroupUpdateStatus []*NodeGroupUpdateStatus `locationNameList:"NodeGroupUpdateStatus" type:"list"`
17134
17135	// The progress of the service update on the replication group
17136	NodesUpdated *string `type:"string"`
17137
17138	// The ID of the replication group
17139	ReplicationGroupId *string `type:"string"`
17140
17141	// The unique ID of the service update
17142	ServiceUpdateName *string `type:"string"`
17143
17144	// The recommended date to apply the service update to ensure compliance. For
17145	// information on compliance, see Self-Service Security Updates for Compliance
17146	// (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-compliance.html#elasticache-compliance-self-service).
17147	ServiceUpdateRecommendedApplyByDate *time.Time `type:"timestamp"`
17148
17149	// The date the update is first available
17150	ServiceUpdateReleaseDate *time.Time `type:"timestamp"`
17151
17152	// The severity of the service update
17153	ServiceUpdateSeverity *string `type:"string" enum:"ServiceUpdateSeverity"`
17154
17155	// The status of the service update
17156	ServiceUpdateStatus *string `type:"string" enum:"ServiceUpdateStatus"`
17157
17158	// Reflects the nature of the service update
17159	ServiceUpdateType *string `type:"string" enum:"ServiceUpdateType"`
17160
17161	// If yes, all nodes in the replication group have been updated by the recommended
17162	// apply-by date. If no, at least one node in the replication group have not
17163	// been updated by the recommended apply-by date. If N/A, the replication group
17164	// was created after the recommended apply-by date.
17165	SlaMet *string `type:"string" enum:"SlaMet"`
17166
17167	// The date that the service update is available to a replication group
17168	UpdateActionAvailableDate *time.Time `type:"timestamp"`
17169
17170	// The status of the update action
17171	UpdateActionStatus *string `type:"string" enum:"UpdateActionStatus"`
17172
17173	// The date when the UpdateActionStatus was last modified
17174	UpdateActionStatusModifiedDate *time.Time `type:"timestamp"`
17175}
17176
17177// String returns the string representation
17178func (s UpdateAction) String() string {
17179	return awsutil.Prettify(s)
17180}
17181
17182// GoString returns the string representation
17183func (s UpdateAction) GoString() string {
17184	return s.String()
17185}
17186
17187// SetCacheClusterId sets the CacheClusterId field's value.
17188func (s *UpdateAction) SetCacheClusterId(v string) *UpdateAction {
17189	s.CacheClusterId = &v
17190	return s
17191}
17192
17193// SetCacheNodeUpdateStatus sets the CacheNodeUpdateStatus field's value.
17194func (s *UpdateAction) SetCacheNodeUpdateStatus(v []*CacheNodeUpdateStatus) *UpdateAction {
17195	s.CacheNodeUpdateStatus = v
17196	return s
17197}
17198
17199// SetEngine sets the Engine field's value.
17200func (s *UpdateAction) SetEngine(v string) *UpdateAction {
17201	s.Engine = &v
17202	return s
17203}
17204
17205// SetEstimatedUpdateTime sets the EstimatedUpdateTime field's value.
17206func (s *UpdateAction) SetEstimatedUpdateTime(v string) *UpdateAction {
17207	s.EstimatedUpdateTime = &v
17208	return s
17209}
17210
17211// SetNodeGroupUpdateStatus sets the NodeGroupUpdateStatus field's value.
17212func (s *UpdateAction) SetNodeGroupUpdateStatus(v []*NodeGroupUpdateStatus) *UpdateAction {
17213	s.NodeGroupUpdateStatus = v
17214	return s
17215}
17216
17217// SetNodesUpdated sets the NodesUpdated field's value.
17218func (s *UpdateAction) SetNodesUpdated(v string) *UpdateAction {
17219	s.NodesUpdated = &v
17220	return s
17221}
17222
17223// SetReplicationGroupId sets the ReplicationGroupId field's value.
17224func (s *UpdateAction) SetReplicationGroupId(v string) *UpdateAction {
17225	s.ReplicationGroupId = &v
17226	return s
17227}
17228
17229// SetServiceUpdateName sets the ServiceUpdateName field's value.
17230func (s *UpdateAction) SetServiceUpdateName(v string) *UpdateAction {
17231	s.ServiceUpdateName = &v
17232	return s
17233}
17234
17235// SetServiceUpdateRecommendedApplyByDate sets the ServiceUpdateRecommendedApplyByDate field's value.
17236func (s *UpdateAction) SetServiceUpdateRecommendedApplyByDate(v time.Time) *UpdateAction {
17237	s.ServiceUpdateRecommendedApplyByDate = &v
17238	return s
17239}
17240
17241// SetServiceUpdateReleaseDate sets the ServiceUpdateReleaseDate field's value.
17242func (s *UpdateAction) SetServiceUpdateReleaseDate(v time.Time) *UpdateAction {
17243	s.ServiceUpdateReleaseDate = &v
17244	return s
17245}
17246
17247// SetServiceUpdateSeverity sets the ServiceUpdateSeverity field's value.
17248func (s *UpdateAction) SetServiceUpdateSeverity(v string) *UpdateAction {
17249	s.ServiceUpdateSeverity = &v
17250	return s
17251}
17252
17253// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
17254func (s *UpdateAction) SetServiceUpdateStatus(v string) *UpdateAction {
17255	s.ServiceUpdateStatus = &v
17256	return s
17257}
17258
17259// SetServiceUpdateType sets the ServiceUpdateType field's value.
17260func (s *UpdateAction) SetServiceUpdateType(v string) *UpdateAction {
17261	s.ServiceUpdateType = &v
17262	return s
17263}
17264
17265// SetSlaMet sets the SlaMet field's value.
17266func (s *UpdateAction) SetSlaMet(v string) *UpdateAction {
17267	s.SlaMet = &v
17268	return s
17269}
17270
17271// SetUpdateActionAvailableDate sets the UpdateActionAvailableDate field's value.
17272func (s *UpdateAction) SetUpdateActionAvailableDate(v time.Time) *UpdateAction {
17273	s.UpdateActionAvailableDate = &v
17274	return s
17275}
17276
17277// SetUpdateActionStatus sets the UpdateActionStatus field's value.
17278func (s *UpdateAction) SetUpdateActionStatus(v string) *UpdateAction {
17279	s.UpdateActionStatus = &v
17280	return s
17281}
17282
17283// SetUpdateActionStatusModifiedDate sets the UpdateActionStatusModifiedDate field's value.
17284func (s *UpdateAction) SetUpdateActionStatusModifiedDate(v time.Time) *UpdateAction {
17285	s.UpdateActionStatusModifiedDate = &v
17286	return s
17287}
17288
17289const (
17290	// AZModeSingleAz is a AZMode enum value
17291	AZModeSingleAz = "single-az"
17292
17293	// AZModeCrossAz is a AZMode enum value
17294	AZModeCrossAz = "cross-az"
17295)
17296
17297const (
17298	// AuthTokenUpdateStatusSetting is a AuthTokenUpdateStatus enum value
17299	AuthTokenUpdateStatusSetting = "SETTING"
17300
17301	// AuthTokenUpdateStatusRotating is a AuthTokenUpdateStatus enum value
17302	AuthTokenUpdateStatusRotating = "ROTATING"
17303)
17304
17305const (
17306	// AuthTokenUpdateStrategyTypeSet is a AuthTokenUpdateStrategyType enum value
17307	AuthTokenUpdateStrategyTypeSet = "SET"
17308
17309	// AuthTokenUpdateStrategyTypeRotate is a AuthTokenUpdateStrategyType enum value
17310	AuthTokenUpdateStrategyTypeRotate = "ROTATE"
17311)
17312
17313const (
17314	// AutomaticFailoverStatusEnabled is a AutomaticFailoverStatus enum value
17315	AutomaticFailoverStatusEnabled = "enabled"
17316
17317	// AutomaticFailoverStatusDisabled is a AutomaticFailoverStatus enum value
17318	AutomaticFailoverStatusDisabled = "disabled"
17319
17320	// AutomaticFailoverStatusEnabling is a AutomaticFailoverStatus enum value
17321	AutomaticFailoverStatusEnabling = "enabling"
17322
17323	// AutomaticFailoverStatusDisabling is a AutomaticFailoverStatus enum value
17324	AutomaticFailoverStatusDisabling = "disabling"
17325)
17326
17327const (
17328	// ChangeTypeImmediate is a ChangeType enum value
17329	ChangeTypeImmediate = "immediate"
17330
17331	// ChangeTypeRequiresReboot is a ChangeType enum value
17332	ChangeTypeRequiresReboot = "requires-reboot"
17333)
17334
17335const (
17336	// MultiAZStatusEnabled is a MultiAZStatus enum value
17337	MultiAZStatusEnabled = "enabled"
17338
17339	// MultiAZStatusDisabled is a MultiAZStatus enum value
17340	MultiAZStatusDisabled = "disabled"
17341)
17342
17343const (
17344	// NodeUpdateInitiatedBySystem is a NodeUpdateInitiatedBy enum value
17345	NodeUpdateInitiatedBySystem = "system"
17346
17347	// NodeUpdateInitiatedByCustomer is a NodeUpdateInitiatedBy enum value
17348	NodeUpdateInitiatedByCustomer = "customer"
17349)
17350
17351const (
17352	// NodeUpdateStatusNotApplied is a NodeUpdateStatus enum value
17353	NodeUpdateStatusNotApplied = "not-applied"
17354
17355	// NodeUpdateStatusWaitingToStart is a NodeUpdateStatus enum value
17356	NodeUpdateStatusWaitingToStart = "waiting-to-start"
17357
17358	// NodeUpdateStatusInProgress is a NodeUpdateStatus enum value
17359	NodeUpdateStatusInProgress = "in-progress"
17360
17361	// NodeUpdateStatusStopping is a NodeUpdateStatus enum value
17362	NodeUpdateStatusStopping = "stopping"
17363
17364	// NodeUpdateStatusStopped is a NodeUpdateStatus enum value
17365	NodeUpdateStatusStopped = "stopped"
17366
17367	// NodeUpdateStatusComplete is a NodeUpdateStatus enum value
17368	NodeUpdateStatusComplete = "complete"
17369)
17370
17371const (
17372	// PendingAutomaticFailoverStatusEnabled is a PendingAutomaticFailoverStatus enum value
17373	PendingAutomaticFailoverStatusEnabled = "enabled"
17374
17375	// PendingAutomaticFailoverStatusDisabled is a PendingAutomaticFailoverStatus enum value
17376	PendingAutomaticFailoverStatusDisabled = "disabled"
17377)
17378
17379const (
17380	// ServiceUpdateSeverityCritical is a ServiceUpdateSeverity enum value
17381	ServiceUpdateSeverityCritical = "critical"
17382
17383	// ServiceUpdateSeverityImportant is a ServiceUpdateSeverity enum value
17384	ServiceUpdateSeverityImportant = "important"
17385
17386	// ServiceUpdateSeverityMedium is a ServiceUpdateSeverity enum value
17387	ServiceUpdateSeverityMedium = "medium"
17388
17389	// ServiceUpdateSeverityLow is a ServiceUpdateSeverity enum value
17390	ServiceUpdateSeverityLow = "low"
17391)
17392
17393const (
17394	// ServiceUpdateStatusAvailable is a ServiceUpdateStatus enum value
17395	ServiceUpdateStatusAvailable = "available"
17396
17397	// ServiceUpdateStatusCancelled is a ServiceUpdateStatus enum value
17398	ServiceUpdateStatusCancelled = "cancelled"
17399
17400	// ServiceUpdateStatusExpired is a ServiceUpdateStatus enum value
17401	ServiceUpdateStatusExpired = "expired"
17402)
17403
17404const (
17405	// ServiceUpdateTypeSecurityUpdate is a ServiceUpdateType enum value
17406	ServiceUpdateTypeSecurityUpdate = "security-update"
17407)
17408
17409const (
17410	// SlaMetYes is a SlaMet enum value
17411	SlaMetYes = "yes"
17412
17413	// SlaMetNo is a SlaMet enum value
17414	SlaMetNo = "no"
17415
17416	// SlaMetNA is a SlaMet enum value
17417	SlaMetNA = "n/a"
17418)
17419
17420const (
17421	// SourceTypeCacheCluster is a SourceType enum value
17422	SourceTypeCacheCluster = "cache-cluster"
17423
17424	// SourceTypeCacheParameterGroup is a SourceType enum value
17425	SourceTypeCacheParameterGroup = "cache-parameter-group"
17426
17427	// SourceTypeCacheSecurityGroup is a SourceType enum value
17428	SourceTypeCacheSecurityGroup = "cache-security-group"
17429
17430	// SourceTypeCacheSubnetGroup is a SourceType enum value
17431	SourceTypeCacheSubnetGroup = "cache-subnet-group"
17432
17433	// SourceTypeReplicationGroup is a SourceType enum value
17434	SourceTypeReplicationGroup = "replication-group"
17435)
17436
17437const (
17438	// UpdateActionStatusNotApplied is a UpdateActionStatus enum value
17439	UpdateActionStatusNotApplied = "not-applied"
17440
17441	// UpdateActionStatusWaitingToStart is a UpdateActionStatus enum value
17442	UpdateActionStatusWaitingToStart = "waiting-to-start"
17443
17444	// UpdateActionStatusInProgress is a UpdateActionStatus enum value
17445	UpdateActionStatusInProgress = "in-progress"
17446
17447	// UpdateActionStatusStopping is a UpdateActionStatus enum value
17448	UpdateActionStatusStopping = "stopping"
17449
17450	// UpdateActionStatusStopped is a UpdateActionStatus enum value
17451	UpdateActionStatusStopped = "stopped"
17452
17453	// UpdateActionStatusComplete is a UpdateActionStatus enum value
17454	UpdateActionStatusComplete = "complete"
17455
17456	// UpdateActionStatusScheduling is a UpdateActionStatus enum value
17457	UpdateActionStatusScheduling = "scheduling"
17458
17459	// UpdateActionStatusScheduled is a UpdateActionStatus enum value
17460	UpdateActionStatusScheduled = "scheduled"
17461
17462	// UpdateActionStatusNotApplicable is a UpdateActionStatus enum value
17463	UpdateActionStatusNotApplicable = "not-applicable"
17464)
17465