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. If you need to increase or decrease the number of node groups
1205// (console: shards), you can avail yourself of ElastiCache for Redis' scaling.
1206// For more information, see Scaling ElastiCache for Redis Clusters (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Scaling.html)
1207// in the ElastiCache User Guide.
1208//
1209// This operation is valid for Redis only.
1210//
1211// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1212// with awserr.Error's Code and Message methods to get detailed information about
1213// the error.
1214//
1215// See the AWS API reference guide for Amazon ElastiCache's
1216// API operation CreateReplicationGroup for usage and error information.
1217//
1218// Returned Error Codes:
1219//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
1220//   The requested cluster ID does not refer to an existing cluster.
1221//
1222//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1223//   The requested cluster is not in the available state.
1224//
1225//   * ErrCodeReplicationGroupAlreadyExistsFault "ReplicationGroupAlreadyExists"
1226//   The specified replication group already exists.
1227//
1228//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
1229//   The requested cache node type is not available in the specified Availability
1230//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
1231//   in the ElastiCache User Guide.
1232//
1233//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
1234//   The requested cache security group name does not refer to an existing cache
1235//   security group.
1236//
1237//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
1238//   The requested cache subnet group name does not refer to an existing cache
1239//   subnet group.
1240//
1241//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
1242//   The request cannot be processed because it would exceed the allowed number
1243//   of clusters per customer.
1244//
1245//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
1246//   The request cannot be processed because it would exceed the allowed number
1247//   of cache nodes in a single cluster.
1248//
1249//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
1250//   The request cannot be processed because it would exceed the allowed number
1251//   of cache nodes per customer.
1252//
1253//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
1254//   The requested cache parameter group name does not refer to an existing cache
1255//   parameter group.
1256//
1257//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
1258//   The VPC network is in an invalid state.
1259//
1260//   * ErrCodeTagQuotaPerResourceExceeded "TagQuotaPerResourceExceeded"
1261//   The request cannot be processed because it would cause the resource to have
1262//   more than the allowed number of tags. The maximum number of tags permitted
1263//   on a resource is 50.
1264//
1265//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
1266//   The request cannot be processed because it would exceed the maximum allowed
1267//   number of node groups (shards) in a single replication group. The default
1268//   maximum is 90
1269//
1270//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
1271//   The Global Datastore does not exist
1272//
1273//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
1274//   The Global Datastore is not available or in primary-only state.
1275//
1276//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1277//   The value for a parameter is invalid.
1278//
1279//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1280//   Two or more incompatible parameters were specified.
1281//
1282// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateReplicationGroup
1283func (c *ElastiCache) CreateReplicationGroup(input *CreateReplicationGroupInput) (*CreateReplicationGroupOutput, error) {
1284	req, out := c.CreateReplicationGroupRequest(input)
1285	return out, req.Send()
1286}
1287
1288// CreateReplicationGroupWithContext is the same as CreateReplicationGroup with the addition of
1289// the ability to pass a context and additional request options.
1290//
1291// See CreateReplicationGroup for details on how to use this API operation.
1292//
1293// The context must be non-nil and will be used for request cancellation. If
1294// the context is nil a panic will occur. In the future the SDK may create
1295// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1296// for more information on using Contexts.
1297func (c *ElastiCache) CreateReplicationGroupWithContext(ctx aws.Context, input *CreateReplicationGroupInput, opts ...request.Option) (*CreateReplicationGroupOutput, error) {
1298	req, out := c.CreateReplicationGroupRequest(input)
1299	req.SetContext(ctx)
1300	req.ApplyOptions(opts...)
1301	return out, req.Send()
1302}
1303
1304const opCreateSnapshot = "CreateSnapshot"
1305
1306// CreateSnapshotRequest generates a "aws/request.Request" representing the
1307// client's request for the CreateSnapshot operation. The "output" return
1308// value will be populated with the request's response once the request completes
1309// successfully.
1310//
1311// Use "Send" method on the returned Request to send the API call to the service.
1312// the "output" return value is not valid until after Send returns without error.
1313//
1314// See CreateSnapshot for more information on using the CreateSnapshot
1315// API call, and error handling.
1316//
1317// This method is useful when you want to inject custom logic or configuration
1318// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1319//
1320//
1321//    // Example sending a request using the CreateSnapshotRequest method.
1322//    req, resp := client.CreateSnapshotRequest(params)
1323//
1324//    err := req.Send()
1325//    if err == nil { // resp is now filled
1326//        fmt.Println(resp)
1327//    }
1328//
1329// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateSnapshot
1330func (c *ElastiCache) CreateSnapshotRequest(input *CreateSnapshotInput) (req *request.Request, output *CreateSnapshotOutput) {
1331	op := &request.Operation{
1332		Name:       opCreateSnapshot,
1333		HTTPMethod: "POST",
1334		HTTPPath:   "/",
1335	}
1336
1337	if input == nil {
1338		input = &CreateSnapshotInput{}
1339	}
1340
1341	output = &CreateSnapshotOutput{}
1342	req = c.newRequest(op, input, output)
1343	return
1344}
1345
1346// CreateSnapshot API operation for Amazon ElastiCache.
1347//
1348// Creates a copy of an entire cluster or replication group at a specific moment
1349// in time.
1350//
1351// This operation is valid for Redis only.
1352//
1353// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1354// with awserr.Error's Code and Message methods to get detailed information about
1355// the error.
1356//
1357// See the AWS API reference guide for Amazon ElastiCache's
1358// API operation CreateSnapshot for usage and error information.
1359//
1360// Returned Error Codes:
1361//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
1362//   You already have a snapshot with the given name.
1363//
1364//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
1365//   The requested cluster ID does not refer to an existing cluster.
1366//
1367//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
1368//   The specified replication group does not exist.
1369//
1370//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1371//   The requested cluster is not in the available state.
1372//
1373//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
1374//   The requested replication group is not in the available state.
1375//
1376//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
1377//   The request cannot be processed because it would exceed the maximum number
1378//   of snapshots.
1379//
1380//   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
1381//   You attempted one of the following operations:
1382//
1383//      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
1384//      node.
1385//
1386//      * Creating a snapshot of a cluster that is running Memcached rather than
1387//      Redis.
1388//
1389//   Neither of these are supported by ElastiCache.
1390//
1391//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1392//   Two or more incompatible parameters were specified.
1393//
1394//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1395//   The value for a parameter is invalid.
1396//
1397// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/CreateSnapshot
1398func (c *ElastiCache) CreateSnapshot(input *CreateSnapshotInput) (*CreateSnapshotOutput, error) {
1399	req, out := c.CreateSnapshotRequest(input)
1400	return out, req.Send()
1401}
1402
1403// CreateSnapshotWithContext is the same as CreateSnapshot with the addition of
1404// the ability to pass a context and additional request options.
1405//
1406// See CreateSnapshot for details on how to use this API operation.
1407//
1408// The context must be non-nil and will be used for request cancellation. If
1409// the context is nil a panic will occur. In the future the SDK may create
1410// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1411// for more information on using Contexts.
1412func (c *ElastiCache) CreateSnapshotWithContext(ctx aws.Context, input *CreateSnapshotInput, opts ...request.Option) (*CreateSnapshotOutput, error) {
1413	req, out := c.CreateSnapshotRequest(input)
1414	req.SetContext(ctx)
1415	req.ApplyOptions(opts...)
1416	return out, req.Send()
1417}
1418
1419const opDecreaseNodeGroupsInGlobalReplicationGroup = "DecreaseNodeGroupsInGlobalReplicationGroup"
1420
1421// DecreaseNodeGroupsInGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
1422// client's request for the DecreaseNodeGroupsInGlobalReplicationGroup operation. The "output" return
1423// value will be populated with the request's response once the request completes
1424// successfully.
1425//
1426// Use "Send" method on the returned Request to send the API call to the service.
1427// the "output" return value is not valid until after Send returns without error.
1428//
1429// See DecreaseNodeGroupsInGlobalReplicationGroup for more information on using the DecreaseNodeGroupsInGlobalReplicationGroup
1430// API call, and error handling.
1431//
1432// This method is useful when you want to inject custom logic or configuration
1433// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1434//
1435//
1436//    // Example sending a request using the DecreaseNodeGroupsInGlobalReplicationGroupRequest method.
1437//    req, resp := client.DecreaseNodeGroupsInGlobalReplicationGroupRequest(params)
1438//
1439//    err := req.Send()
1440//    if err == nil { // resp is now filled
1441//        fmt.Println(resp)
1442//    }
1443//
1444// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseNodeGroupsInGlobalReplicationGroup
1445func (c *ElastiCache) DecreaseNodeGroupsInGlobalReplicationGroupRequest(input *DecreaseNodeGroupsInGlobalReplicationGroupInput) (req *request.Request, output *DecreaseNodeGroupsInGlobalReplicationGroupOutput) {
1446	op := &request.Operation{
1447		Name:       opDecreaseNodeGroupsInGlobalReplicationGroup,
1448		HTTPMethod: "POST",
1449		HTTPPath:   "/",
1450	}
1451
1452	if input == nil {
1453		input = &DecreaseNodeGroupsInGlobalReplicationGroupInput{}
1454	}
1455
1456	output = &DecreaseNodeGroupsInGlobalReplicationGroupOutput{}
1457	req = c.newRequest(op, input, output)
1458	return
1459}
1460
1461// DecreaseNodeGroupsInGlobalReplicationGroup API operation for Amazon ElastiCache.
1462//
1463// Decreases the number of node groups in a Global Datastore
1464//
1465// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1466// with awserr.Error's Code and Message methods to get detailed information about
1467// the error.
1468//
1469// See the AWS API reference guide for Amazon ElastiCache's
1470// API operation DecreaseNodeGroupsInGlobalReplicationGroup for usage and error information.
1471//
1472// Returned Error Codes:
1473//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
1474//   The Global Datastore does not exist
1475//
1476//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
1477//   The Global Datastore is not available or in primary-only state.
1478//
1479//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1480//   The value for a parameter is invalid.
1481//
1482//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1483//   Two or more incompatible parameters were specified.
1484//
1485// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseNodeGroupsInGlobalReplicationGroup
1486func (c *ElastiCache) DecreaseNodeGroupsInGlobalReplicationGroup(input *DecreaseNodeGroupsInGlobalReplicationGroupInput) (*DecreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
1487	req, out := c.DecreaseNodeGroupsInGlobalReplicationGroupRequest(input)
1488	return out, req.Send()
1489}
1490
1491// DecreaseNodeGroupsInGlobalReplicationGroupWithContext is the same as DecreaseNodeGroupsInGlobalReplicationGroup with the addition of
1492// the ability to pass a context and additional request options.
1493//
1494// See DecreaseNodeGroupsInGlobalReplicationGroup for details on how to use this API operation.
1495//
1496// The context must be non-nil and will be used for request cancellation. If
1497// the context is nil a panic will occur. In the future the SDK may create
1498// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1499// for more information on using Contexts.
1500func (c *ElastiCache) DecreaseNodeGroupsInGlobalReplicationGroupWithContext(ctx aws.Context, input *DecreaseNodeGroupsInGlobalReplicationGroupInput, opts ...request.Option) (*DecreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
1501	req, out := c.DecreaseNodeGroupsInGlobalReplicationGroupRequest(input)
1502	req.SetContext(ctx)
1503	req.ApplyOptions(opts...)
1504	return out, req.Send()
1505}
1506
1507const opDecreaseReplicaCount = "DecreaseReplicaCount"
1508
1509// DecreaseReplicaCountRequest generates a "aws/request.Request" representing the
1510// client's request for the DecreaseReplicaCount operation. The "output" return
1511// value will be populated with the request's response once the request completes
1512// successfully.
1513//
1514// Use "Send" method on the returned Request to send the API call to the service.
1515// the "output" return value is not valid until after Send returns without error.
1516//
1517// See DecreaseReplicaCount for more information on using the DecreaseReplicaCount
1518// API call, and error handling.
1519//
1520// This method is useful when you want to inject custom logic or configuration
1521// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1522//
1523//
1524//    // Example sending a request using the DecreaseReplicaCountRequest method.
1525//    req, resp := client.DecreaseReplicaCountRequest(params)
1526//
1527//    err := req.Send()
1528//    if err == nil { // resp is now filled
1529//        fmt.Println(resp)
1530//    }
1531//
1532// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseReplicaCount
1533func (c *ElastiCache) DecreaseReplicaCountRequest(input *DecreaseReplicaCountInput) (req *request.Request, output *DecreaseReplicaCountOutput) {
1534	op := &request.Operation{
1535		Name:       opDecreaseReplicaCount,
1536		HTTPMethod: "POST",
1537		HTTPPath:   "/",
1538	}
1539
1540	if input == nil {
1541		input = &DecreaseReplicaCountInput{}
1542	}
1543
1544	output = &DecreaseReplicaCountOutput{}
1545	req = c.newRequest(op, input, output)
1546	return
1547}
1548
1549// DecreaseReplicaCount API operation for Amazon ElastiCache.
1550//
1551// Dynamically decreases the number of replicas in a Redis (cluster mode disabled)
1552// replication group or the number of replica nodes in one or more node groups
1553// (shards) of a Redis (cluster mode enabled) replication group. This operation
1554// is performed with no cluster down time.
1555//
1556// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1557// with awserr.Error's Code and Message methods to get detailed information about
1558// the error.
1559//
1560// See the AWS API reference guide for Amazon ElastiCache's
1561// API operation DecreaseReplicaCount for usage and error information.
1562//
1563// Returned Error Codes:
1564//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
1565//   The specified replication group does not exist.
1566//
1567//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
1568//   The requested replication group is not in the available state.
1569//
1570//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1571//   The requested cluster is not in the available state.
1572//
1573//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
1574//   The VPC network is in an invalid state.
1575//
1576//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
1577//   The requested cache node type is not available in the specified Availability
1578//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
1579//   in the ElastiCache User Guide.
1580//
1581//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
1582//   The request cannot be processed because it would exceed the allowed number
1583//   of clusters per customer.
1584//
1585//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
1586//   The request cannot be processed because it would exceed the maximum allowed
1587//   number of node groups (shards) in a single replication group. The default
1588//   maximum is 90
1589//
1590//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
1591//   The request cannot be processed because it would exceed the allowed number
1592//   of cache nodes per customer.
1593//
1594//   * ErrCodeServiceLinkedRoleNotFoundFault "ServiceLinkedRoleNotFoundFault"
1595//   The specified service linked role (SLR) was not found.
1596//
1597//   * ErrCodeNoOperationFault "NoOperationFault"
1598//   The operation was not performed because no changes were required.
1599//
1600//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1601//   The value for a parameter is invalid.
1602//
1603//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1604//   Two or more incompatible parameters were specified.
1605//
1606// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DecreaseReplicaCount
1607func (c *ElastiCache) DecreaseReplicaCount(input *DecreaseReplicaCountInput) (*DecreaseReplicaCountOutput, error) {
1608	req, out := c.DecreaseReplicaCountRequest(input)
1609	return out, req.Send()
1610}
1611
1612// DecreaseReplicaCountWithContext is the same as DecreaseReplicaCount with the addition of
1613// the ability to pass a context and additional request options.
1614//
1615// See DecreaseReplicaCount for details on how to use this API operation.
1616//
1617// The context must be non-nil and will be used for request cancellation. If
1618// the context is nil a panic will occur. In the future the SDK may create
1619// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1620// for more information on using Contexts.
1621func (c *ElastiCache) DecreaseReplicaCountWithContext(ctx aws.Context, input *DecreaseReplicaCountInput, opts ...request.Option) (*DecreaseReplicaCountOutput, error) {
1622	req, out := c.DecreaseReplicaCountRequest(input)
1623	req.SetContext(ctx)
1624	req.ApplyOptions(opts...)
1625	return out, req.Send()
1626}
1627
1628const opDeleteCacheCluster = "DeleteCacheCluster"
1629
1630// DeleteCacheClusterRequest generates a "aws/request.Request" representing the
1631// client's request for the DeleteCacheCluster operation. The "output" return
1632// value will be populated with the request's response once the request completes
1633// successfully.
1634//
1635// Use "Send" method on the returned Request to send the API call to the service.
1636// the "output" return value is not valid until after Send returns without error.
1637//
1638// See DeleteCacheCluster for more information on using the DeleteCacheCluster
1639// API call, and error handling.
1640//
1641// This method is useful when you want to inject custom logic or configuration
1642// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1643//
1644//
1645//    // Example sending a request using the DeleteCacheClusterRequest method.
1646//    req, resp := client.DeleteCacheClusterRequest(params)
1647//
1648//    err := req.Send()
1649//    if err == nil { // resp is now filled
1650//        fmt.Println(resp)
1651//    }
1652//
1653// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheCluster
1654func (c *ElastiCache) DeleteCacheClusterRequest(input *DeleteCacheClusterInput) (req *request.Request, output *DeleteCacheClusterOutput) {
1655	op := &request.Operation{
1656		Name:       opDeleteCacheCluster,
1657		HTTPMethod: "POST",
1658		HTTPPath:   "/",
1659	}
1660
1661	if input == nil {
1662		input = &DeleteCacheClusterInput{}
1663	}
1664
1665	output = &DeleteCacheClusterOutput{}
1666	req = c.newRequest(op, input, output)
1667	return
1668}
1669
1670// DeleteCacheCluster API operation for Amazon ElastiCache.
1671//
1672// Deletes a previously provisioned cluster. DeleteCacheCluster deletes all
1673// associated cache nodes, node endpoints and the cluster itself. When you receive
1674// a successful response from this operation, Amazon ElastiCache immediately
1675// begins deleting the cluster; you cannot cancel or revert this operation.
1676//
1677// This operation is not valid for:
1678//
1679//    * Redis (cluster mode enabled) clusters
1680//
1681//    * A cluster that is the last read replica of a replication group
1682//
1683//    * A node group (shard) that has Multi-AZ mode enabled
1684//
1685//    * A cluster from a Redis (cluster mode enabled) replication group
1686//
1687//    * A cluster that is not in the available state
1688//
1689// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1690// with awserr.Error's Code and Message methods to get detailed information about
1691// the error.
1692//
1693// See the AWS API reference guide for Amazon ElastiCache's
1694// API operation DeleteCacheCluster for usage and error information.
1695//
1696// Returned Error Codes:
1697//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
1698//   The requested cluster ID does not refer to an existing cluster.
1699//
1700//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
1701//   The requested cluster is not in the available state.
1702//
1703//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
1704//   You already have a snapshot with the given name.
1705//
1706//   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
1707//   You attempted one of the following operations:
1708//
1709//      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
1710//      node.
1711//
1712//      * Creating a snapshot of a cluster that is running Memcached rather than
1713//      Redis.
1714//
1715//   Neither of these are supported by ElastiCache.
1716//
1717//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
1718//   The request cannot be processed because it would exceed the maximum number
1719//   of snapshots.
1720//
1721//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1722//   The value for a parameter is invalid.
1723//
1724//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1725//   Two or more incompatible parameters were specified.
1726//
1727// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheCluster
1728func (c *ElastiCache) DeleteCacheCluster(input *DeleteCacheClusterInput) (*DeleteCacheClusterOutput, error) {
1729	req, out := c.DeleteCacheClusterRequest(input)
1730	return out, req.Send()
1731}
1732
1733// DeleteCacheClusterWithContext is the same as DeleteCacheCluster with the addition of
1734// the ability to pass a context and additional request options.
1735//
1736// See DeleteCacheCluster for details on how to use this API operation.
1737//
1738// The context must be non-nil and will be used for request cancellation. If
1739// the context is nil a panic will occur. In the future the SDK may create
1740// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1741// for more information on using Contexts.
1742func (c *ElastiCache) DeleteCacheClusterWithContext(ctx aws.Context, input *DeleteCacheClusterInput, opts ...request.Option) (*DeleteCacheClusterOutput, error) {
1743	req, out := c.DeleteCacheClusterRequest(input)
1744	req.SetContext(ctx)
1745	req.ApplyOptions(opts...)
1746	return out, req.Send()
1747}
1748
1749const opDeleteCacheParameterGroup = "DeleteCacheParameterGroup"
1750
1751// DeleteCacheParameterGroupRequest generates a "aws/request.Request" representing the
1752// client's request for the DeleteCacheParameterGroup operation. The "output" return
1753// value will be populated with the request's response once the request completes
1754// successfully.
1755//
1756// Use "Send" method on the returned Request to send the API call to the service.
1757// the "output" return value is not valid until after Send returns without error.
1758//
1759// See DeleteCacheParameterGroup for more information on using the DeleteCacheParameterGroup
1760// API call, and error handling.
1761//
1762// This method is useful when you want to inject custom logic or configuration
1763// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1764//
1765//
1766//    // Example sending a request using the DeleteCacheParameterGroupRequest method.
1767//    req, resp := client.DeleteCacheParameterGroupRequest(params)
1768//
1769//    err := req.Send()
1770//    if err == nil { // resp is now filled
1771//        fmt.Println(resp)
1772//    }
1773//
1774// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheParameterGroup
1775func (c *ElastiCache) DeleteCacheParameterGroupRequest(input *DeleteCacheParameterGroupInput) (req *request.Request, output *DeleteCacheParameterGroupOutput) {
1776	op := &request.Operation{
1777		Name:       opDeleteCacheParameterGroup,
1778		HTTPMethod: "POST",
1779		HTTPPath:   "/",
1780	}
1781
1782	if input == nil {
1783		input = &DeleteCacheParameterGroupInput{}
1784	}
1785
1786	output = &DeleteCacheParameterGroupOutput{}
1787	req = c.newRequest(op, input, output)
1788	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1789	return
1790}
1791
1792// DeleteCacheParameterGroup API operation for Amazon ElastiCache.
1793//
1794// Deletes the specified cache parameter group. You cannot delete a cache parameter
1795// group if it is associated with any cache clusters.
1796//
1797// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1798// with awserr.Error's Code and Message methods to get detailed information about
1799// the error.
1800//
1801// See the AWS API reference guide for Amazon ElastiCache's
1802// API operation DeleteCacheParameterGroup for usage and error information.
1803//
1804// Returned Error Codes:
1805//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
1806//   The current state of the cache parameter group does not allow the requested
1807//   operation to occur.
1808//
1809//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
1810//   The requested cache parameter group name does not refer to an existing cache
1811//   parameter group.
1812//
1813//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1814//   The value for a parameter is invalid.
1815//
1816//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1817//   Two or more incompatible parameters were specified.
1818//
1819// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheParameterGroup
1820func (c *ElastiCache) DeleteCacheParameterGroup(input *DeleteCacheParameterGroupInput) (*DeleteCacheParameterGroupOutput, error) {
1821	req, out := c.DeleteCacheParameterGroupRequest(input)
1822	return out, req.Send()
1823}
1824
1825// DeleteCacheParameterGroupWithContext is the same as DeleteCacheParameterGroup with the addition of
1826// the ability to pass a context and additional request options.
1827//
1828// See DeleteCacheParameterGroup for details on how to use this API operation.
1829//
1830// The context must be non-nil and will be used for request cancellation. If
1831// the context is nil a panic will occur. In the future the SDK may create
1832// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1833// for more information on using Contexts.
1834func (c *ElastiCache) DeleteCacheParameterGroupWithContext(ctx aws.Context, input *DeleteCacheParameterGroupInput, opts ...request.Option) (*DeleteCacheParameterGroupOutput, error) {
1835	req, out := c.DeleteCacheParameterGroupRequest(input)
1836	req.SetContext(ctx)
1837	req.ApplyOptions(opts...)
1838	return out, req.Send()
1839}
1840
1841const opDeleteCacheSecurityGroup = "DeleteCacheSecurityGroup"
1842
1843// DeleteCacheSecurityGroupRequest generates a "aws/request.Request" representing the
1844// client's request for the DeleteCacheSecurityGroup operation. The "output" return
1845// value will be populated with the request's response once the request completes
1846// successfully.
1847//
1848// Use "Send" method on the returned Request to send the API call to the service.
1849// the "output" return value is not valid until after Send returns without error.
1850//
1851// See DeleteCacheSecurityGroup for more information on using the DeleteCacheSecurityGroup
1852// API call, and error handling.
1853//
1854// This method is useful when you want to inject custom logic or configuration
1855// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1856//
1857//
1858//    // Example sending a request using the DeleteCacheSecurityGroupRequest method.
1859//    req, resp := client.DeleteCacheSecurityGroupRequest(params)
1860//
1861//    err := req.Send()
1862//    if err == nil { // resp is now filled
1863//        fmt.Println(resp)
1864//    }
1865//
1866// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSecurityGroup
1867func (c *ElastiCache) DeleteCacheSecurityGroupRequest(input *DeleteCacheSecurityGroupInput) (req *request.Request, output *DeleteCacheSecurityGroupOutput) {
1868	op := &request.Operation{
1869		Name:       opDeleteCacheSecurityGroup,
1870		HTTPMethod: "POST",
1871		HTTPPath:   "/",
1872	}
1873
1874	if input == nil {
1875		input = &DeleteCacheSecurityGroupInput{}
1876	}
1877
1878	output = &DeleteCacheSecurityGroupOutput{}
1879	req = c.newRequest(op, input, output)
1880	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1881	return
1882}
1883
1884// DeleteCacheSecurityGroup API operation for Amazon ElastiCache.
1885//
1886// Deletes a cache security group.
1887//
1888// You cannot delete a cache security group if it is associated with any clusters.
1889//
1890// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1891// with awserr.Error's Code and Message methods to get detailed information about
1892// the error.
1893//
1894// See the AWS API reference guide for Amazon ElastiCache's
1895// API operation DeleteCacheSecurityGroup for usage and error information.
1896//
1897// Returned Error Codes:
1898//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
1899//   The current state of the cache security group does not allow deletion.
1900//
1901//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
1902//   The requested cache security group name does not refer to an existing cache
1903//   security group.
1904//
1905//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
1906//   The value for a parameter is invalid.
1907//
1908//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
1909//   Two or more incompatible parameters were specified.
1910//
1911// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSecurityGroup
1912func (c *ElastiCache) DeleteCacheSecurityGroup(input *DeleteCacheSecurityGroupInput) (*DeleteCacheSecurityGroupOutput, error) {
1913	req, out := c.DeleteCacheSecurityGroupRequest(input)
1914	return out, req.Send()
1915}
1916
1917// DeleteCacheSecurityGroupWithContext is the same as DeleteCacheSecurityGroup with the addition of
1918// the ability to pass a context and additional request options.
1919//
1920// See DeleteCacheSecurityGroup for details on how to use this API operation.
1921//
1922// The context must be non-nil and will be used for request cancellation. If
1923// the context is nil a panic will occur. In the future the SDK may create
1924// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1925// for more information on using Contexts.
1926func (c *ElastiCache) DeleteCacheSecurityGroupWithContext(ctx aws.Context, input *DeleteCacheSecurityGroupInput, opts ...request.Option) (*DeleteCacheSecurityGroupOutput, error) {
1927	req, out := c.DeleteCacheSecurityGroupRequest(input)
1928	req.SetContext(ctx)
1929	req.ApplyOptions(opts...)
1930	return out, req.Send()
1931}
1932
1933const opDeleteCacheSubnetGroup = "DeleteCacheSubnetGroup"
1934
1935// DeleteCacheSubnetGroupRequest generates a "aws/request.Request" representing the
1936// client's request for the DeleteCacheSubnetGroup operation. The "output" return
1937// value will be populated with the request's response once the request completes
1938// successfully.
1939//
1940// Use "Send" method on the returned Request to send the API call to the service.
1941// the "output" return value is not valid until after Send returns without error.
1942//
1943// See DeleteCacheSubnetGroup for more information on using the DeleteCacheSubnetGroup
1944// API call, and error handling.
1945//
1946// This method is useful when you want to inject custom logic or configuration
1947// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1948//
1949//
1950//    // Example sending a request using the DeleteCacheSubnetGroupRequest method.
1951//    req, resp := client.DeleteCacheSubnetGroupRequest(params)
1952//
1953//    err := req.Send()
1954//    if err == nil { // resp is now filled
1955//        fmt.Println(resp)
1956//    }
1957//
1958// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSubnetGroup
1959func (c *ElastiCache) DeleteCacheSubnetGroupRequest(input *DeleteCacheSubnetGroupInput) (req *request.Request, output *DeleteCacheSubnetGroupOutput) {
1960	op := &request.Operation{
1961		Name:       opDeleteCacheSubnetGroup,
1962		HTTPMethod: "POST",
1963		HTTPPath:   "/",
1964	}
1965
1966	if input == nil {
1967		input = &DeleteCacheSubnetGroupInput{}
1968	}
1969
1970	output = &DeleteCacheSubnetGroupOutput{}
1971	req = c.newRequest(op, input, output)
1972	req.Handlers.Unmarshal.Swap(query.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1973	return
1974}
1975
1976// DeleteCacheSubnetGroup API operation for Amazon ElastiCache.
1977//
1978// Deletes a cache subnet group.
1979//
1980// You cannot delete a cache subnet group if it is associated with any clusters.
1981//
1982// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1983// with awserr.Error's Code and Message methods to get detailed information about
1984// the error.
1985//
1986// See the AWS API reference guide for Amazon ElastiCache's
1987// API operation DeleteCacheSubnetGroup for usage and error information.
1988//
1989// Returned Error Codes:
1990//   * ErrCodeCacheSubnetGroupInUse "CacheSubnetGroupInUse"
1991//   The requested cache subnet group is currently in use.
1992//
1993//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
1994//   The requested cache subnet group name does not refer to an existing cache
1995//   subnet group.
1996//
1997// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteCacheSubnetGroup
1998func (c *ElastiCache) DeleteCacheSubnetGroup(input *DeleteCacheSubnetGroupInput) (*DeleteCacheSubnetGroupOutput, error) {
1999	req, out := c.DeleteCacheSubnetGroupRequest(input)
2000	return out, req.Send()
2001}
2002
2003// DeleteCacheSubnetGroupWithContext is the same as DeleteCacheSubnetGroup with the addition of
2004// the ability to pass a context and additional request options.
2005//
2006// See DeleteCacheSubnetGroup for details on how to use this API operation.
2007//
2008// The context must be non-nil and will be used for request cancellation. If
2009// the context is nil a panic will occur. In the future the SDK may create
2010// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2011// for more information on using Contexts.
2012func (c *ElastiCache) DeleteCacheSubnetGroupWithContext(ctx aws.Context, input *DeleteCacheSubnetGroupInput, opts ...request.Option) (*DeleteCacheSubnetGroupOutput, error) {
2013	req, out := c.DeleteCacheSubnetGroupRequest(input)
2014	req.SetContext(ctx)
2015	req.ApplyOptions(opts...)
2016	return out, req.Send()
2017}
2018
2019const opDeleteGlobalReplicationGroup = "DeleteGlobalReplicationGroup"
2020
2021// DeleteGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
2022// client's request for the DeleteGlobalReplicationGroup operation. The "output" return
2023// value will be populated with the request's response once the request completes
2024// successfully.
2025//
2026// Use "Send" method on the returned Request to send the API call to the service.
2027// the "output" return value is not valid until after Send returns without error.
2028//
2029// See DeleteGlobalReplicationGroup for more information on using the DeleteGlobalReplicationGroup
2030// API call, and error handling.
2031//
2032// This method is useful when you want to inject custom logic or configuration
2033// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2034//
2035//
2036//    // Example sending a request using the DeleteGlobalReplicationGroupRequest method.
2037//    req, resp := client.DeleteGlobalReplicationGroupRequest(params)
2038//
2039//    err := req.Send()
2040//    if err == nil { // resp is now filled
2041//        fmt.Println(resp)
2042//    }
2043//
2044// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteGlobalReplicationGroup
2045func (c *ElastiCache) DeleteGlobalReplicationGroupRequest(input *DeleteGlobalReplicationGroupInput) (req *request.Request, output *DeleteGlobalReplicationGroupOutput) {
2046	op := &request.Operation{
2047		Name:       opDeleteGlobalReplicationGroup,
2048		HTTPMethod: "POST",
2049		HTTPPath:   "/",
2050	}
2051
2052	if input == nil {
2053		input = &DeleteGlobalReplicationGroupInput{}
2054	}
2055
2056	output = &DeleteGlobalReplicationGroupOutput{}
2057	req = c.newRequest(op, input, output)
2058	return
2059}
2060
2061// DeleteGlobalReplicationGroup API operation for Amazon ElastiCache.
2062//
2063// Deleting a Global Datastore is a two-step process:
2064//
2065//    * First, you must DisassociateGlobalReplicationGroup to remove the secondary
2066//    clusters in the Global Datastore.
2067//
2068//    * Once the Global Datastore contains only the primary cluster, you can
2069//    use DeleteGlobalReplicationGroup API to delete the Global Datastore while
2070//    retainining the primary cluster using Retain…= true.
2071//
2072// Since the Global Datastore has only a primary cluster, you can delete the
2073// Global Datastore while retaining the primary by setting RetainPrimaryCluster=true.
2074//
2075// When you receive a successful response from this operation, Amazon ElastiCache
2076// immediately begins deleting the selected resources; you cannot cancel or
2077// revert this operation.
2078//
2079// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2080// with awserr.Error's Code and Message methods to get detailed information about
2081// the error.
2082//
2083// See the AWS API reference guide for Amazon ElastiCache's
2084// API operation DeleteGlobalReplicationGroup for usage and error information.
2085//
2086// Returned Error Codes:
2087//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
2088//   The Global Datastore does not exist
2089//
2090//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
2091//   The Global Datastore is not available or in primary-only state.
2092//
2093//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2094//   The value for a parameter is invalid.
2095//
2096// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteGlobalReplicationGroup
2097func (c *ElastiCache) DeleteGlobalReplicationGroup(input *DeleteGlobalReplicationGroupInput) (*DeleteGlobalReplicationGroupOutput, error) {
2098	req, out := c.DeleteGlobalReplicationGroupRequest(input)
2099	return out, req.Send()
2100}
2101
2102// DeleteGlobalReplicationGroupWithContext is the same as DeleteGlobalReplicationGroup with the addition of
2103// the ability to pass a context and additional request options.
2104//
2105// See DeleteGlobalReplicationGroup for details on how to use this API operation.
2106//
2107// The context must be non-nil and will be used for request cancellation. If
2108// the context is nil a panic will occur. In the future the SDK may create
2109// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2110// for more information on using Contexts.
2111func (c *ElastiCache) DeleteGlobalReplicationGroupWithContext(ctx aws.Context, input *DeleteGlobalReplicationGroupInput, opts ...request.Option) (*DeleteGlobalReplicationGroupOutput, error) {
2112	req, out := c.DeleteGlobalReplicationGroupRequest(input)
2113	req.SetContext(ctx)
2114	req.ApplyOptions(opts...)
2115	return out, req.Send()
2116}
2117
2118const opDeleteReplicationGroup = "DeleteReplicationGroup"
2119
2120// DeleteReplicationGroupRequest generates a "aws/request.Request" representing the
2121// client's request for the DeleteReplicationGroup operation. The "output" return
2122// value will be populated with the request's response once the request completes
2123// successfully.
2124//
2125// Use "Send" method on the returned Request to send the API call to the service.
2126// the "output" return value is not valid until after Send returns without error.
2127//
2128// See DeleteReplicationGroup for more information on using the DeleteReplicationGroup
2129// API call, and error handling.
2130//
2131// This method is useful when you want to inject custom logic or configuration
2132// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2133//
2134//
2135//    // Example sending a request using the DeleteReplicationGroupRequest method.
2136//    req, resp := client.DeleteReplicationGroupRequest(params)
2137//
2138//    err := req.Send()
2139//    if err == nil { // resp is now filled
2140//        fmt.Println(resp)
2141//    }
2142//
2143// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteReplicationGroup
2144func (c *ElastiCache) DeleteReplicationGroupRequest(input *DeleteReplicationGroupInput) (req *request.Request, output *DeleteReplicationGroupOutput) {
2145	op := &request.Operation{
2146		Name:       opDeleteReplicationGroup,
2147		HTTPMethod: "POST",
2148		HTTPPath:   "/",
2149	}
2150
2151	if input == nil {
2152		input = &DeleteReplicationGroupInput{}
2153	}
2154
2155	output = &DeleteReplicationGroupOutput{}
2156	req = c.newRequest(op, input, output)
2157	return
2158}
2159
2160// DeleteReplicationGroup API operation for Amazon ElastiCache.
2161//
2162// Deletes an existing replication group. By default, this operation deletes
2163// the entire replication group, including the primary/primaries and all of
2164// the read replicas. If the replication group has only one primary, you can
2165// optionally delete only the read replicas, while retaining the primary by
2166// setting RetainPrimaryCluster=true.
2167//
2168// When you receive a successful response from this operation, Amazon ElastiCache
2169// immediately begins deleting the selected resources; you cannot cancel or
2170// revert this operation.
2171//
2172// This operation is valid for Redis only.
2173//
2174// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2175// with awserr.Error's Code and Message methods to get detailed information about
2176// the error.
2177//
2178// See the AWS API reference guide for Amazon ElastiCache's
2179// API operation DeleteReplicationGroup for usage and error information.
2180//
2181// Returned Error Codes:
2182//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
2183//   The specified replication group does not exist.
2184//
2185//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
2186//   The requested replication group is not in the available state.
2187//
2188//   * ErrCodeSnapshotAlreadyExistsFault "SnapshotAlreadyExistsFault"
2189//   You already have a snapshot with the given name.
2190//
2191//   * ErrCodeSnapshotFeatureNotSupportedFault "SnapshotFeatureNotSupportedFault"
2192//   You attempted one of the following operations:
2193//
2194//      * Creating a snapshot of a Redis cluster running on a cache.t1.micro cache
2195//      node.
2196//
2197//      * Creating a snapshot of a cluster that is running Memcached rather than
2198//      Redis.
2199//
2200//   Neither of these are supported by ElastiCache.
2201//
2202//   * ErrCodeSnapshotQuotaExceededFault "SnapshotQuotaExceededFault"
2203//   The request cannot be processed because it would exceed the maximum number
2204//   of snapshots.
2205//
2206//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2207//   The value for a parameter is invalid.
2208//
2209//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2210//   Two or more incompatible parameters were specified.
2211//
2212// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteReplicationGroup
2213func (c *ElastiCache) DeleteReplicationGroup(input *DeleteReplicationGroupInput) (*DeleteReplicationGroupOutput, error) {
2214	req, out := c.DeleteReplicationGroupRequest(input)
2215	return out, req.Send()
2216}
2217
2218// DeleteReplicationGroupWithContext is the same as DeleteReplicationGroup with the addition of
2219// the ability to pass a context and additional request options.
2220//
2221// See DeleteReplicationGroup for details on how to use this API operation.
2222//
2223// The context must be non-nil and will be used for request cancellation. If
2224// the context is nil a panic will occur. In the future the SDK may create
2225// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2226// for more information on using Contexts.
2227func (c *ElastiCache) DeleteReplicationGroupWithContext(ctx aws.Context, input *DeleteReplicationGroupInput, opts ...request.Option) (*DeleteReplicationGroupOutput, error) {
2228	req, out := c.DeleteReplicationGroupRequest(input)
2229	req.SetContext(ctx)
2230	req.ApplyOptions(opts...)
2231	return out, req.Send()
2232}
2233
2234const opDeleteSnapshot = "DeleteSnapshot"
2235
2236// DeleteSnapshotRequest generates a "aws/request.Request" representing the
2237// client's request for the DeleteSnapshot operation. The "output" return
2238// value will be populated with the request's response once the request completes
2239// successfully.
2240//
2241// Use "Send" method on the returned Request to send the API call to the service.
2242// the "output" return value is not valid until after Send returns without error.
2243//
2244// See DeleteSnapshot for more information on using the DeleteSnapshot
2245// API call, and error handling.
2246//
2247// This method is useful when you want to inject custom logic or configuration
2248// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2249//
2250//
2251//    // Example sending a request using the DeleteSnapshotRequest method.
2252//    req, resp := client.DeleteSnapshotRequest(params)
2253//
2254//    err := req.Send()
2255//    if err == nil { // resp is now filled
2256//        fmt.Println(resp)
2257//    }
2258//
2259// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteSnapshot
2260func (c *ElastiCache) DeleteSnapshotRequest(input *DeleteSnapshotInput) (req *request.Request, output *DeleteSnapshotOutput) {
2261	op := &request.Operation{
2262		Name:       opDeleteSnapshot,
2263		HTTPMethod: "POST",
2264		HTTPPath:   "/",
2265	}
2266
2267	if input == nil {
2268		input = &DeleteSnapshotInput{}
2269	}
2270
2271	output = &DeleteSnapshotOutput{}
2272	req = c.newRequest(op, input, output)
2273	return
2274}
2275
2276// DeleteSnapshot API operation for Amazon ElastiCache.
2277//
2278// Deletes an existing snapshot. When you receive a successful response from
2279// this operation, ElastiCache immediately begins deleting the snapshot; you
2280// cannot cancel or revert this operation.
2281//
2282// This operation is valid for Redis only.
2283//
2284// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2285// with awserr.Error's Code and Message methods to get detailed information about
2286// the error.
2287//
2288// See the AWS API reference guide for Amazon ElastiCache's
2289// API operation DeleteSnapshot for usage and error information.
2290//
2291// Returned Error Codes:
2292//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
2293//   The requested snapshot name does not refer to an existing snapshot.
2294//
2295//   * ErrCodeInvalidSnapshotStateFault "InvalidSnapshotState"
2296//   The current state of the snapshot does not allow the requested operation
2297//   to occur.
2298//
2299//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2300//   The value for a parameter is invalid.
2301//
2302//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2303//   Two or more incompatible parameters were specified.
2304//
2305// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DeleteSnapshot
2306func (c *ElastiCache) DeleteSnapshot(input *DeleteSnapshotInput) (*DeleteSnapshotOutput, error) {
2307	req, out := c.DeleteSnapshotRequest(input)
2308	return out, req.Send()
2309}
2310
2311// DeleteSnapshotWithContext is the same as DeleteSnapshot with the addition of
2312// the ability to pass a context and additional request options.
2313//
2314// See DeleteSnapshot for details on how to use this API operation.
2315//
2316// The context must be non-nil and will be used for request cancellation. If
2317// the context is nil a panic will occur. In the future the SDK may create
2318// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2319// for more information on using Contexts.
2320func (c *ElastiCache) DeleteSnapshotWithContext(ctx aws.Context, input *DeleteSnapshotInput, opts ...request.Option) (*DeleteSnapshotOutput, error) {
2321	req, out := c.DeleteSnapshotRequest(input)
2322	req.SetContext(ctx)
2323	req.ApplyOptions(opts...)
2324	return out, req.Send()
2325}
2326
2327const opDescribeCacheClusters = "DescribeCacheClusters"
2328
2329// DescribeCacheClustersRequest generates a "aws/request.Request" representing the
2330// client's request for the DescribeCacheClusters operation. The "output" return
2331// value will be populated with the request's response once the request completes
2332// successfully.
2333//
2334// Use "Send" method on the returned Request to send the API call to the service.
2335// the "output" return value is not valid until after Send returns without error.
2336//
2337// See DescribeCacheClusters for more information on using the DescribeCacheClusters
2338// API call, and error handling.
2339//
2340// This method is useful when you want to inject custom logic or configuration
2341// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2342//
2343//
2344//    // Example sending a request using the DescribeCacheClustersRequest method.
2345//    req, resp := client.DescribeCacheClustersRequest(params)
2346//
2347//    err := req.Send()
2348//    if err == nil { // resp is now filled
2349//        fmt.Println(resp)
2350//    }
2351//
2352// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheClusters
2353func (c *ElastiCache) DescribeCacheClustersRequest(input *DescribeCacheClustersInput) (req *request.Request, output *DescribeCacheClustersOutput) {
2354	op := &request.Operation{
2355		Name:       opDescribeCacheClusters,
2356		HTTPMethod: "POST",
2357		HTTPPath:   "/",
2358		Paginator: &request.Paginator{
2359			InputTokens:     []string{"Marker"},
2360			OutputTokens:    []string{"Marker"},
2361			LimitToken:      "MaxRecords",
2362			TruncationToken: "",
2363		},
2364	}
2365
2366	if input == nil {
2367		input = &DescribeCacheClustersInput{}
2368	}
2369
2370	output = &DescribeCacheClustersOutput{}
2371	req = c.newRequest(op, input, output)
2372	return
2373}
2374
2375// DescribeCacheClusters API operation for Amazon ElastiCache.
2376//
2377// Returns information about all provisioned clusters if no cluster identifier
2378// is specified, or about a specific cache cluster if a cluster identifier is
2379// supplied.
2380//
2381// By default, abbreviated information about the clusters is returned. You can
2382// use the optional ShowCacheNodeInfo flag to retrieve detailed information
2383// about the cache nodes associated with the clusters. These details include
2384// the DNS address and port for the cache node endpoint.
2385//
2386// If the cluster is in the creating state, only cluster-level information is
2387// displayed until all of the nodes are successfully provisioned.
2388//
2389// If the cluster is in the deleting state, only cluster-level information is
2390// displayed.
2391//
2392// If cache nodes are currently being added to the cluster, node endpoint information
2393// and creation time for the additional nodes are not displayed until they are
2394// completely provisioned. When the cluster state is available, the cluster
2395// is ready for use.
2396//
2397// If cache nodes are currently being removed from the cluster, no endpoint
2398// information for the removed nodes is displayed.
2399//
2400// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2401// with awserr.Error's Code and Message methods to get detailed information about
2402// the error.
2403//
2404// See the AWS API reference guide for Amazon ElastiCache's
2405// API operation DescribeCacheClusters for usage and error information.
2406//
2407// Returned Error Codes:
2408//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
2409//   The requested cluster ID does not refer to an existing cluster.
2410//
2411//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2412//   The value for a parameter is invalid.
2413//
2414//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2415//   Two or more incompatible parameters were specified.
2416//
2417// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheClusters
2418func (c *ElastiCache) DescribeCacheClusters(input *DescribeCacheClustersInput) (*DescribeCacheClustersOutput, error) {
2419	req, out := c.DescribeCacheClustersRequest(input)
2420	return out, req.Send()
2421}
2422
2423// DescribeCacheClustersWithContext is the same as DescribeCacheClusters with the addition of
2424// the ability to pass a context and additional request options.
2425//
2426// See DescribeCacheClusters for details on how to use this API operation.
2427//
2428// The context must be non-nil and will be used for request cancellation. If
2429// the context is nil a panic will occur. In the future the SDK may create
2430// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2431// for more information on using Contexts.
2432func (c *ElastiCache) DescribeCacheClustersWithContext(ctx aws.Context, input *DescribeCacheClustersInput, opts ...request.Option) (*DescribeCacheClustersOutput, error) {
2433	req, out := c.DescribeCacheClustersRequest(input)
2434	req.SetContext(ctx)
2435	req.ApplyOptions(opts...)
2436	return out, req.Send()
2437}
2438
2439// DescribeCacheClustersPages iterates over the pages of a DescribeCacheClusters operation,
2440// calling the "fn" function with the response data for each page. To stop
2441// iterating, return false from the fn function.
2442//
2443// See DescribeCacheClusters method for more information on how to use this operation.
2444//
2445// Note: This operation can generate multiple requests to a service.
2446//
2447//    // Example iterating over at most 3 pages of a DescribeCacheClusters operation.
2448//    pageNum := 0
2449//    err := client.DescribeCacheClustersPages(params,
2450//        func(page *elasticache.DescribeCacheClustersOutput, lastPage bool) bool {
2451//            pageNum++
2452//            fmt.Println(page)
2453//            return pageNum <= 3
2454//        })
2455//
2456func (c *ElastiCache) DescribeCacheClustersPages(input *DescribeCacheClustersInput, fn func(*DescribeCacheClustersOutput, bool) bool) error {
2457	return c.DescribeCacheClustersPagesWithContext(aws.BackgroundContext(), input, fn)
2458}
2459
2460// DescribeCacheClustersPagesWithContext same as DescribeCacheClustersPages except
2461// it takes a Context and allows setting request options on the pages.
2462//
2463// The context must be non-nil and will be used for request cancellation. If
2464// the context is nil a panic will occur. In the future the SDK may create
2465// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2466// for more information on using Contexts.
2467func (c *ElastiCache) DescribeCacheClustersPagesWithContext(ctx aws.Context, input *DescribeCacheClustersInput, fn func(*DescribeCacheClustersOutput, bool) bool, opts ...request.Option) error {
2468	p := request.Pagination{
2469		NewRequest: func() (*request.Request, error) {
2470			var inCpy *DescribeCacheClustersInput
2471			if input != nil {
2472				tmp := *input
2473				inCpy = &tmp
2474			}
2475			req, _ := c.DescribeCacheClustersRequest(inCpy)
2476			req.SetContext(ctx)
2477			req.ApplyOptions(opts...)
2478			return req, nil
2479		},
2480	}
2481
2482	for p.Next() {
2483		if !fn(p.Page().(*DescribeCacheClustersOutput), !p.HasNextPage()) {
2484			break
2485		}
2486	}
2487
2488	return p.Err()
2489}
2490
2491const opDescribeCacheEngineVersions = "DescribeCacheEngineVersions"
2492
2493// DescribeCacheEngineVersionsRequest generates a "aws/request.Request" representing the
2494// client's request for the DescribeCacheEngineVersions operation. The "output" return
2495// value will be populated with the request's response once the request completes
2496// successfully.
2497//
2498// Use "Send" method on the returned Request to send the API call to the service.
2499// the "output" return value is not valid until after Send returns without error.
2500//
2501// See DescribeCacheEngineVersions for more information on using the DescribeCacheEngineVersions
2502// API call, and error handling.
2503//
2504// This method is useful when you want to inject custom logic or configuration
2505// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2506//
2507//
2508//    // Example sending a request using the DescribeCacheEngineVersionsRequest method.
2509//    req, resp := client.DescribeCacheEngineVersionsRequest(params)
2510//
2511//    err := req.Send()
2512//    if err == nil { // resp is now filled
2513//        fmt.Println(resp)
2514//    }
2515//
2516// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheEngineVersions
2517func (c *ElastiCache) DescribeCacheEngineVersionsRequest(input *DescribeCacheEngineVersionsInput) (req *request.Request, output *DescribeCacheEngineVersionsOutput) {
2518	op := &request.Operation{
2519		Name:       opDescribeCacheEngineVersions,
2520		HTTPMethod: "POST",
2521		HTTPPath:   "/",
2522		Paginator: &request.Paginator{
2523			InputTokens:     []string{"Marker"},
2524			OutputTokens:    []string{"Marker"},
2525			LimitToken:      "MaxRecords",
2526			TruncationToken: "",
2527		},
2528	}
2529
2530	if input == nil {
2531		input = &DescribeCacheEngineVersionsInput{}
2532	}
2533
2534	output = &DescribeCacheEngineVersionsOutput{}
2535	req = c.newRequest(op, input, output)
2536	return
2537}
2538
2539// DescribeCacheEngineVersions API operation for Amazon ElastiCache.
2540//
2541// Returns a list of the available cache engines and their versions.
2542//
2543// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2544// with awserr.Error's Code and Message methods to get detailed information about
2545// the error.
2546//
2547// See the AWS API reference guide for Amazon ElastiCache's
2548// API operation DescribeCacheEngineVersions for usage and error information.
2549// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheEngineVersions
2550func (c *ElastiCache) DescribeCacheEngineVersions(input *DescribeCacheEngineVersionsInput) (*DescribeCacheEngineVersionsOutput, error) {
2551	req, out := c.DescribeCacheEngineVersionsRequest(input)
2552	return out, req.Send()
2553}
2554
2555// DescribeCacheEngineVersionsWithContext is the same as DescribeCacheEngineVersions with the addition of
2556// the ability to pass a context and additional request options.
2557//
2558// See DescribeCacheEngineVersions for details on how to use this API operation.
2559//
2560// The context must be non-nil and will be used for request cancellation. If
2561// the context is nil a panic will occur. In the future the SDK may create
2562// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2563// for more information on using Contexts.
2564func (c *ElastiCache) DescribeCacheEngineVersionsWithContext(ctx aws.Context, input *DescribeCacheEngineVersionsInput, opts ...request.Option) (*DescribeCacheEngineVersionsOutput, error) {
2565	req, out := c.DescribeCacheEngineVersionsRequest(input)
2566	req.SetContext(ctx)
2567	req.ApplyOptions(opts...)
2568	return out, req.Send()
2569}
2570
2571// DescribeCacheEngineVersionsPages iterates over the pages of a DescribeCacheEngineVersions operation,
2572// calling the "fn" function with the response data for each page. To stop
2573// iterating, return false from the fn function.
2574//
2575// See DescribeCacheEngineVersions method for more information on how to use this operation.
2576//
2577// Note: This operation can generate multiple requests to a service.
2578//
2579//    // Example iterating over at most 3 pages of a DescribeCacheEngineVersions operation.
2580//    pageNum := 0
2581//    err := client.DescribeCacheEngineVersionsPages(params,
2582//        func(page *elasticache.DescribeCacheEngineVersionsOutput, lastPage bool) bool {
2583//            pageNum++
2584//            fmt.Println(page)
2585//            return pageNum <= 3
2586//        })
2587//
2588func (c *ElastiCache) DescribeCacheEngineVersionsPages(input *DescribeCacheEngineVersionsInput, fn func(*DescribeCacheEngineVersionsOutput, bool) bool) error {
2589	return c.DescribeCacheEngineVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
2590}
2591
2592// DescribeCacheEngineVersionsPagesWithContext same as DescribeCacheEngineVersionsPages except
2593// it takes a Context and allows setting request options on the pages.
2594//
2595// The context must be non-nil and will be used for request cancellation. If
2596// the context is nil a panic will occur. In the future the SDK may create
2597// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2598// for more information on using Contexts.
2599func (c *ElastiCache) DescribeCacheEngineVersionsPagesWithContext(ctx aws.Context, input *DescribeCacheEngineVersionsInput, fn func(*DescribeCacheEngineVersionsOutput, bool) bool, opts ...request.Option) error {
2600	p := request.Pagination{
2601		NewRequest: func() (*request.Request, error) {
2602			var inCpy *DescribeCacheEngineVersionsInput
2603			if input != nil {
2604				tmp := *input
2605				inCpy = &tmp
2606			}
2607			req, _ := c.DescribeCacheEngineVersionsRequest(inCpy)
2608			req.SetContext(ctx)
2609			req.ApplyOptions(opts...)
2610			return req, nil
2611		},
2612	}
2613
2614	for p.Next() {
2615		if !fn(p.Page().(*DescribeCacheEngineVersionsOutput), !p.HasNextPage()) {
2616			break
2617		}
2618	}
2619
2620	return p.Err()
2621}
2622
2623const opDescribeCacheParameterGroups = "DescribeCacheParameterGroups"
2624
2625// DescribeCacheParameterGroupsRequest generates a "aws/request.Request" representing the
2626// client's request for the DescribeCacheParameterGroups operation. The "output" return
2627// value will be populated with the request's response once the request completes
2628// successfully.
2629//
2630// Use "Send" method on the returned Request to send the API call to the service.
2631// the "output" return value is not valid until after Send returns without error.
2632//
2633// See DescribeCacheParameterGroups for more information on using the DescribeCacheParameterGroups
2634// API call, and error handling.
2635//
2636// This method is useful when you want to inject custom logic or configuration
2637// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2638//
2639//
2640//    // Example sending a request using the DescribeCacheParameterGroupsRequest method.
2641//    req, resp := client.DescribeCacheParameterGroupsRequest(params)
2642//
2643//    err := req.Send()
2644//    if err == nil { // resp is now filled
2645//        fmt.Println(resp)
2646//    }
2647//
2648// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameterGroups
2649func (c *ElastiCache) DescribeCacheParameterGroupsRequest(input *DescribeCacheParameterGroupsInput) (req *request.Request, output *DescribeCacheParameterGroupsOutput) {
2650	op := &request.Operation{
2651		Name:       opDescribeCacheParameterGroups,
2652		HTTPMethod: "POST",
2653		HTTPPath:   "/",
2654		Paginator: &request.Paginator{
2655			InputTokens:     []string{"Marker"},
2656			OutputTokens:    []string{"Marker"},
2657			LimitToken:      "MaxRecords",
2658			TruncationToken: "",
2659		},
2660	}
2661
2662	if input == nil {
2663		input = &DescribeCacheParameterGroupsInput{}
2664	}
2665
2666	output = &DescribeCacheParameterGroupsOutput{}
2667	req = c.newRequest(op, input, output)
2668	return
2669}
2670
2671// DescribeCacheParameterGroups API operation for Amazon ElastiCache.
2672//
2673// Returns a list of cache parameter group descriptions. If a cache parameter
2674// group name is specified, the list contains only the descriptions for that
2675// group.
2676//
2677// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2678// with awserr.Error's Code and Message methods to get detailed information about
2679// the error.
2680//
2681// See the AWS API reference guide for Amazon ElastiCache's
2682// API operation DescribeCacheParameterGroups for usage and error information.
2683//
2684// Returned Error Codes:
2685//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
2686//   The requested cache parameter group name does not refer to an existing cache
2687//   parameter group.
2688//
2689//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2690//   The value for a parameter is invalid.
2691//
2692//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2693//   Two or more incompatible parameters were specified.
2694//
2695// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameterGroups
2696func (c *ElastiCache) DescribeCacheParameterGroups(input *DescribeCacheParameterGroupsInput) (*DescribeCacheParameterGroupsOutput, error) {
2697	req, out := c.DescribeCacheParameterGroupsRequest(input)
2698	return out, req.Send()
2699}
2700
2701// DescribeCacheParameterGroupsWithContext is the same as DescribeCacheParameterGroups with the addition of
2702// the ability to pass a context and additional request options.
2703//
2704// See DescribeCacheParameterGroups for details on how to use this API operation.
2705//
2706// The context must be non-nil and will be used for request cancellation. If
2707// the context is nil a panic will occur. In the future the SDK may create
2708// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2709// for more information on using Contexts.
2710func (c *ElastiCache) DescribeCacheParameterGroupsWithContext(ctx aws.Context, input *DescribeCacheParameterGroupsInput, opts ...request.Option) (*DescribeCacheParameterGroupsOutput, error) {
2711	req, out := c.DescribeCacheParameterGroupsRequest(input)
2712	req.SetContext(ctx)
2713	req.ApplyOptions(opts...)
2714	return out, req.Send()
2715}
2716
2717// DescribeCacheParameterGroupsPages iterates over the pages of a DescribeCacheParameterGroups operation,
2718// calling the "fn" function with the response data for each page. To stop
2719// iterating, return false from the fn function.
2720//
2721// See DescribeCacheParameterGroups method for more information on how to use this operation.
2722//
2723// Note: This operation can generate multiple requests to a service.
2724//
2725//    // Example iterating over at most 3 pages of a DescribeCacheParameterGroups operation.
2726//    pageNum := 0
2727//    err := client.DescribeCacheParameterGroupsPages(params,
2728//        func(page *elasticache.DescribeCacheParameterGroupsOutput, lastPage bool) bool {
2729//            pageNum++
2730//            fmt.Println(page)
2731//            return pageNum <= 3
2732//        })
2733//
2734func (c *ElastiCache) DescribeCacheParameterGroupsPages(input *DescribeCacheParameterGroupsInput, fn func(*DescribeCacheParameterGroupsOutput, bool) bool) error {
2735	return c.DescribeCacheParameterGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
2736}
2737
2738// DescribeCacheParameterGroupsPagesWithContext same as DescribeCacheParameterGroupsPages except
2739// it takes a Context and allows setting request options on the pages.
2740//
2741// The context must be non-nil and will be used for request cancellation. If
2742// the context is nil a panic will occur. In the future the SDK may create
2743// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2744// for more information on using Contexts.
2745func (c *ElastiCache) DescribeCacheParameterGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheParameterGroupsInput, fn func(*DescribeCacheParameterGroupsOutput, bool) bool, opts ...request.Option) error {
2746	p := request.Pagination{
2747		NewRequest: func() (*request.Request, error) {
2748			var inCpy *DescribeCacheParameterGroupsInput
2749			if input != nil {
2750				tmp := *input
2751				inCpy = &tmp
2752			}
2753			req, _ := c.DescribeCacheParameterGroupsRequest(inCpy)
2754			req.SetContext(ctx)
2755			req.ApplyOptions(opts...)
2756			return req, nil
2757		},
2758	}
2759
2760	for p.Next() {
2761		if !fn(p.Page().(*DescribeCacheParameterGroupsOutput), !p.HasNextPage()) {
2762			break
2763		}
2764	}
2765
2766	return p.Err()
2767}
2768
2769const opDescribeCacheParameters = "DescribeCacheParameters"
2770
2771// DescribeCacheParametersRequest generates a "aws/request.Request" representing the
2772// client's request for the DescribeCacheParameters operation. The "output" return
2773// value will be populated with the request's response once the request completes
2774// successfully.
2775//
2776// Use "Send" method on the returned Request to send the API call to the service.
2777// the "output" return value is not valid until after Send returns without error.
2778//
2779// See DescribeCacheParameters for more information on using the DescribeCacheParameters
2780// API call, and error handling.
2781//
2782// This method is useful when you want to inject custom logic or configuration
2783// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2784//
2785//
2786//    // Example sending a request using the DescribeCacheParametersRequest method.
2787//    req, resp := client.DescribeCacheParametersRequest(params)
2788//
2789//    err := req.Send()
2790//    if err == nil { // resp is now filled
2791//        fmt.Println(resp)
2792//    }
2793//
2794// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameters
2795func (c *ElastiCache) DescribeCacheParametersRequest(input *DescribeCacheParametersInput) (req *request.Request, output *DescribeCacheParametersOutput) {
2796	op := &request.Operation{
2797		Name:       opDescribeCacheParameters,
2798		HTTPMethod: "POST",
2799		HTTPPath:   "/",
2800		Paginator: &request.Paginator{
2801			InputTokens:     []string{"Marker"},
2802			OutputTokens:    []string{"Marker"},
2803			LimitToken:      "MaxRecords",
2804			TruncationToken: "",
2805		},
2806	}
2807
2808	if input == nil {
2809		input = &DescribeCacheParametersInput{}
2810	}
2811
2812	output = &DescribeCacheParametersOutput{}
2813	req = c.newRequest(op, input, output)
2814	return
2815}
2816
2817// DescribeCacheParameters API operation for Amazon ElastiCache.
2818//
2819// Returns the detailed parameter list for a particular cache parameter group.
2820//
2821// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2822// with awserr.Error's Code and Message methods to get detailed information about
2823// the error.
2824//
2825// See the AWS API reference guide for Amazon ElastiCache's
2826// API operation DescribeCacheParameters for usage and error information.
2827//
2828// Returned Error Codes:
2829//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
2830//   The requested cache parameter group name does not refer to an existing cache
2831//   parameter group.
2832//
2833//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2834//   The value for a parameter is invalid.
2835//
2836//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2837//   Two or more incompatible parameters were specified.
2838//
2839// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheParameters
2840func (c *ElastiCache) DescribeCacheParameters(input *DescribeCacheParametersInput) (*DescribeCacheParametersOutput, error) {
2841	req, out := c.DescribeCacheParametersRequest(input)
2842	return out, req.Send()
2843}
2844
2845// DescribeCacheParametersWithContext is the same as DescribeCacheParameters with the addition of
2846// the ability to pass a context and additional request options.
2847//
2848// See DescribeCacheParameters for details on how to use this API operation.
2849//
2850// The context must be non-nil and will be used for request cancellation. If
2851// the context is nil a panic will occur. In the future the SDK may create
2852// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2853// for more information on using Contexts.
2854func (c *ElastiCache) DescribeCacheParametersWithContext(ctx aws.Context, input *DescribeCacheParametersInput, opts ...request.Option) (*DescribeCacheParametersOutput, error) {
2855	req, out := c.DescribeCacheParametersRequest(input)
2856	req.SetContext(ctx)
2857	req.ApplyOptions(opts...)
2858	return out, req.Send()
2859}
2860
2861// DescribeCacheParametersPages iterates over the pages of a DescribeCacheParameters operation,
2862// calling the "fn" function with the response data for each page. To stop
2863// iterating, return false from the fn function.
2864//
2865// See DescribeCacheParameters method for more information on how to use this operation.
2866//
2867// Note: This operation can generate multiple requests to a service.
2868//
2869//    // Example iterating over at most 3 pages of a DescribeCacheParameters operation.
2870//    pageNum := 0
2871//    err := client.DescribeCacheParametersPages(params,
2872//        func(page *elasticache.DescribeCacheParametersOutput, lastPage bool) bool {
2873//            pageNum++
2874//            fmt.Println(page)
2875//            return pageNum <= 3
2876//        })
2877//
2878func (c *ElastiCache) DescribeCacheParametersPages(input *DescribeCacheParametersInput, fn func(*DescribeCacheParametersOutput, bool) bool) error {
2879	return c.DescribeCacheParametersPagesWithContext(aws.BackgroundContext(), input, fn)
2880}
2881
2882// DescribeCacheParametersPagesWithContext same as DescribeCacheParametersPages except
2883// it takes a Context and allows setting request options on the pages.
2884//
2885// The context must be non-nil and will be used for request cancellation. If
2886// the context is nil a panic will occur. In the future the SDK may create
2887// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2888// for more information on using Contexts.
2889func (c *ElastiCache) DescribeCacheParametersPagesWithContext(ctx aws.Context, input *DescribeCacheParametersInput, fn func(*DescribeCacheParametersOutput, bool) bool, opts ...request.Option) error {
2890	p := request.Pagination{
2891		NewRequest: func() (*request.Request, error) {
2892			var inCpy *DescribeCacheParametersInput
2893			if input != nil {
2894				tmp := *input
2895				inCpy = &tmp
2896			}
2897			req, _ := c.DescribeCacheParametersRequest(inCpy)
2898			req.SetContext(ctx)
2899			req.ApplyOptions(opts...)
2900			return req, nil
2901		},
2902	}
2903
2904	for p.Next() {
2905		if !fn(p.Page().(*DescribeCacheParametersOutput), !p.HasNextPage()) {
2906			break
2907		}
2908	}
2909
2910	return p.Err()
2911}
2912
2913const opDescribeCacheSecurityGroups = "DescribeCacheSecurityGroups"
2914
2915// DescribeCacheSecurityGroupsRequest generates a "aws/request.Request" representing the
2916// client's request for the DescribeCacheSecurityGroups operation. The "output" return
2917// value will be populated with the request's response once the request completes
2918// successfully.
2919//
2920// Use "Send" method on the returned Request to send the API call to the service.
2921// the "output" return value is not valid until after Send returns without error.
2922//
2923// See DescribeCacheSecurityGroups for more information on using the DescribeCacheSecurityGroups
2924// API call, and error handling.
2925//
2926// This method is useful when you want to inject custom logic or configuration
2927// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2928//
2929//
2930//    // Example sending a request using the DescribeCacheSecurityGroupsRequest method.
2931//    req, resp := client.DescribeCacheSecurityGroupsRequest(params)
2932//
2933//    err := req.Send()
2934//    if err == nil { // resp is now filled
2935//        fmt.Println(resp)
2936//    }
2937//
2938// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSecurityGroups
2939func (c *ElastiCache) DescribeCacheSecurityGroupsRequest(input *DescribeCacheSecurityGroupsInput) (req *request.Request, output *DescribeCacheSecurityGroupsOutput) {
2940	op := &request.Operation{
2941		Name:       opDescribeCacheSecurityGroups,
2942		HTTPMethod: "POST",
2943		HTTPPath:   "/",
2944		Paginator: &request.Paginator{
2945			InputTokens:     []string{"Marker"},
2946			OutputTokens:    []string{"Marker"},
2947			LimitToken:      "MaxRecords",
2948			TruncationToken: "",
2949		},
2950	}
2951
2952	if input == nil {
2953		input = &DescribeCacheSecurityGroupsInput{}
2954	}
2955
2956	output = &DescribeCacheSecurityGroupsOutput{}
2957	req = c.newRequest(op, input, output)
2958	return
2959}
2960
2961// DescribeCacheSecurityGroups API operation for Amazon ElastiCache.
2962//
2963// Returns a list of cache security group descriptions. If a cache security
2964// group name is specified, the list contains only the description of that group.
2965// This applicable only when you have ElastiCache in Classic setup
2966//
2967// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2968// with awserr.Error's Code and Message methods to get detailed information about
2969// the error.
2970//
2971// See the AWS API reference guide for Amazon ElastiCache's
2972// API operation DescribeCacheSecurityGroups for usage and error information.
2973//
2974// Returned Error Codes:
2975//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
2976//   The requested cache security group name does not refer to an existing cache
2977//   security group.
2978//
2979//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
2980//   The value for a parameter is invalid.
2981//
2982//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
2983//   Two or more incompatible parameters were specified.
2984//
2985// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSecurityGroups
2986func (c *ElastiCache) DescribeCacheSecurityGroups(input *DescribeCacheSecurityGroupsInput) (*DescribeCacheSecurityGroupsOutput, error) {
2987	req, out := c.DescribeCacheSecurityGroupsRequest(input)
2988	return out, req.Send()
2989}
2990
2991// DescribeCacheSecurityGroupsWithContext is the same as DescribeCacheSecurityGroups with the addition of
2992// the ability to pass a context and additional request options.
2993//
2994// See DescribeCacheSecurityGroups for details on how to use this API operation.
2995//
2996// The context must be non-nil and will be used for request cancellation. If
2997// the context is nil a panic will occur. In the future the SDK may create
2998// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2999// for more information on using Contexts.
3000func (c *ElastiCache) DescribeCacheSecurityGroupsWithContext(ctx aws.Context, input *DescribeCacheSecurityGroupsInput, opts ...request.Option) (*DescribeCacheSecurityGroupsOutput, error) {
3001	req, out := c.DescribeCacheSecurityGroupsRequest(input)
3002	req.SetContext(ctx)
3003	req.ApplyOptions(opts...)
3004	return out, req.Send()
3005}
3006
3007// DescribeCacheSecurityGroupsPages iterates over the pages of a DescribeCacheSecurityGroups operation,
3008// calling the "fn" function with the response data for each page. To stop
3009// iterating, return false from the fn function.
3010//
3011// See DescribeCacheSecurityGroups method for more information on how to use this operation.
3012//
3013// Note: This operation can generate multiple requests to a service.
3014//
3015//    // Example iterating over at most 3 pages of a DescribeCacheSecurityGroups operation.
3016//    pageNum := 0
3017//    err := client.DescribeCacheSecurityGroupsPages(params,
3018//        func(page *elasticache.DescribeCacheSecurityGroupsOutput, lastPage bool) bool {
3019//            pageNum++
3020//            fmt.Println(page)
3021//            return pageNum <= 3
3022//        })
3023//
3024func (c *ElastiCache) DescribeCacheSecurityGroupsPages(input *DescribeCacheSecurityGroupsInput, fn func(*DescribeCacheSecurityGroupsOutput, bool) bool) error {
3025	return c.DescribeCacheSecurityGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3026}
3027
3028// DescribeCacheSecurityGroupsPagesWithContext same as DescribeCacheSecurityGroupsPages except
3029// it takes a Context and allows setting request options on the pages.
3030//
3031// The context must be non-nil and will be used for request cancellation. If
3032// the context is nil a panic will occur. In the future the SDK may create
3033// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3034// for more information on using Contexts.
3035func (c *ElastiCache) DescribeCacheSecurityGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheSecurityGroupsInput, fn func(*DescribeCacheSecurityGroupsOutput, bool) bool, opts ...request.Option) error {
3036	p := request.Pagination{
3037		NewRequest: func() (*request.Request, error) {
3038			var inCpy *DescribeCacheSecurityGroupsInput
3039			if input != nil {
3040				tmp := *input
3041				inCpy = &tmp
3042			}
3043			req, _ := c.DescribeCacheSecurityGroupsRequest(inCpy)
3044			req.SetContext(ctx)
3045			req.ApplyOptions(opts...)
3046			return req, nil
3047		},
3048	}
3049
3050	for p.Next() {
3051		if !fn(p.Page().(*DescribeCacheSecurityGroupsOutput), !p.HasNextPage()) {
3052			break
3053		}
3054	}
3055
3056	return p.Err()
3057}
3058
3059const opDescribeCacheSubnetGroups = "DescribeCacheSubnetGroups"
3060
3061// DescribeCacheSubnetGroupsRequest generates a "aws/request.Request" representing the
3062// client's request for the DescribeCacheSubnetGroups operation. The "output" return
3063// value will be populated with the request's response once the request completes
3064// successfully.
3065//
3066// Use "Send" method on the returned Request to send the API call to the service.
3067// the "output" return value is not valid until after Send returns without error.
3068//
3069// See DescribeCacheSubnetGroups for more information on using the DescribeCacheSubnetGroups
3070// API call, and error handling.
3071//
3072// This method is useful when you want to inject custom logic or configuration
3073// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3074//
3075//
3076//    // Example sending a request using the DescribeCacheSubnetGroupsRequest method.
3077//    req, resp := client.DescribeCacheSubnetGroupsRequest(params)
3078//
3079//    err := req.Send()
3080//    if err == nil { // resp is now filled
3081//        fmt.Println(resp)
3082//    }
3083//
3084// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSubnetGroups
3085func (c *ElastiCache) DescribeCacheSubnetGroupsRequest(input *DescribeCacheSubnetGroupsInput) (req *request.Request, output *DescribeCacheSubnetGroupsOutput) {
3086	op := &request.Operation{
3087		Name:       opDescribeCacheSubnetGroups,
3088		HTTPMethod: "POST",
3089		HTTPPath:   "/",
3090		Paginator: &request.Paginator{
3091			InputTokens:     []string{"Marker"},
3092			OutputTokens:    []string{"Marker"},
3093			LimitToken:      "MaxRecords",
3094			TruncationToken: "",
3095		},
3096	}
3097
3098	if input == nil {
3099		input = &DescribeCacheSubnetGroupsInput{}
3100	}
3101
3102	output = &DescribeCacheSubnetGroupsOutput{}
3103	req = c.newRequest(op, input, output)
3104	return
3105}
3106
3107// DescribeCacheSubnetGroups API operation for Amazon ElastiCache.
3108//
3109// Returns a list of cache subnet group descriptions. If a subnet group name
3110// is specified, the list contains only the description of that group. This
3111// is applicable only when you have ElastiCache in VPC setup. All ElastiCache
3112// clusters now launch in VPC by default.
3113//
3114// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3115// with awserr.Error's Code and Message methods to get detailed information about
3116// the error.
3117//
3118// See the AWS API reference guide for Amazon ElastiCache's
3119// API operation DescribeCacheSubnetGroups for usage and error information.
3120//
3121// Returned Error Codes:
3122//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
3123//   The requested cache subnet group name does not refer to an existing cache
3124//   subnet group.
3125//
3126// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeCacheSubnetGroups
3127func (c *ElastiCache) DescribeCacheSubnetGroups(input *DescribeCacheSubnetGroupsInput) (*DescribeCacheSubnetGroupsOutput, error) {
3128	req, out := c.DescribeCacheSubnetGroupsRequest(input)
3129	return out, req.Send()
3130}
3131
3132// DescribeCacheSubnetGroupsWithContext is the same as DescribeCacheSubnetGroups with the addition of
3133// the ability to pass a context and additional request options.
3134//
3135// See DescribeCacheSubnetGroups for details on how to use this API operation.
3136//
3137// The context must be non-nil and will be used for request cancellation. If
3138// the context is nil a panic will occur. In the future the SDK may create
3139// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3140// for more information on using Contexts.
3141func (c *ElastiCache) DescribeCacheSubnetGroupsWithContext(ctx aws.Context, input *DescribeCacheSubnetGroupsInput, opts ...request.Option) (*DescribeCacheSubnetGroupsOutput, error) {
3142	req, out := c.DescribeCacheSubnetGroupsRequest(input)
3143	req.SetContext(ctx)
3144	req.ApplyOptions(opts...)
3145	return out, req.Send()
3146}
3147
3148// DescribeCacheSubnetGroupsPages iterates over the pages of a DescribeCacheSubnetGroups operation,
3149// calling the "fn" function with the response data for each page. To stop
3150// iterating, return false from the fn function.
3151//
3152// See DescribeCacheSubnetGroups method for more information on how to use this operation.
3153//
3154// Note: This operation can generate multiple requests to a service.
3155//
3156//    // Example iterating over at most 3 pages of a DescribeCacheSubnetGroups operation.
3157//    pageNum := 0
3158//    err := client.DescribeCacheSubnetGroupsPages(params,
3159//        func(page *elasticache.DescribeCacheSubnetGroupsOutput, lastPage bool) bool {
3160//            pageNum++
3161//            fmt.Println(page)
3162//            return pageNum <= 3
3163//        })
3164//
3165func (c *ElastiCache) DescribeCacheSubnetGroupsPages(input *DescribeCacheSubnetGroupsInput, fn func(*DescribeCacheSubnetGroupsOutput, bool) bool) error {
3166	return c.DescribeCacheSubnetGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3167}
3168
3169// DescribeCacheSubnetGroupsPagesWithContext same as DescribeCacheSubnetGroupsPages except
3170// it takes a Context and allows setting request options on the pages.
3171//
3172// The context must be non-nil and will be used for request cancellation. If
3173// the context is nil a panic will occur. In the future the SDK may create
3174// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3175// for more information on using Contexts.
3176func (c *ElastiCache) DescribeCacheSubnetGroupsPagesWithContext(ctx aws.Context, input *DescribeCacheSubnetGroupsInput, fn func(*DescribeCacheSubnetGroupsOutput, bool) bool, opts ...request.Option) error {
3177	p := request.Pagination{
3178		NewRequest: func() (*request.Request, error) {
3179			var inCpy *DescribeCacheSubnetGroupsInput
3180			if input != nil {
3181				tmp := *input
3182				inCpy = &tmp
3183			}
3184			req, _ := c.DescribeCacheSubnetGroupsRequest(inCpy)
3185			req.SetContext(ctx)
3186			req.ApplyOptions(opts...)
3187			return req, nil
3188		},
3189	}
3190
3191	for p.Next() {
3192		if !fn(p.Page().(*DescribeCacheSubnetGroupsOutput), !p.HasNextPage()) {
3193			break
3194		}
3195	}
3196
3197	return p.Err()
3198}
3199
3200const opDescribeEngineDefaultParameters = "DescribeEngineDefaultParameters"
3201
3202// DescribeEngineDefaultParametersRequest generates a "aws/request.Request" representing the
3203// client's request for the DescribeEngineDefaultParameters operation. The "output" return
3204// value will be populated with the request's response once the request completes
3205// successfully.
3206//
3207// Use "Send" method on the returned Request to send the API call to the service.
3208// the "output" return value is not valid until after Send returns without error.
3209//
3210// See DescribeEngineDefaultParameters for more information on using the DescribeEngineDefaultParameters
3211// API call, and error handling.
3212//
3213// This method is useful when you want to inject custom logic or configuration
3214// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3215//
3216//
3217//    // Example sending a request using the DescribeEngineDefaultParametersRequest method.
3218//    req, resp := client.DescribeEngineDefaultParametersRequest(params)
3219//
3220//    err := req.Send()
3221//    if err == nil { // resp is now filled
3222//        fmt.Println(resp)
3223//    }
3224//
3225// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEngineDefaultParameters
3226func (c *ElastiCache) DescribeEngineDefaultParametersRequest(input *DescribeEngineDefaultParametersInput) (req *request.Request, output *DescribeEngineDefaultParametersOutput) {
3227	op := &request.Operation{
3228		Name:       opDescribeEngineDefaultParameters,
3229		HTTPMethod: "POST",
3230		HTTPPath:   "/",
3231		Paginator: &request.Paginator{
3232			InputTokens:     []string{"Marker"},
3233			OutputTokens:    []string{"EngineDefaults.Marker"},
3234			LimitToken:      "MaxRecords",
3235			TruncationToken: "",
3236		},
3237	}
3238
3239	if input == nil {
3240		input = &DescribeEngineDefaultParametersInput{}
3241	}
3242
3243	output = &DescribeEngineDefaultParametersOutput{}
3244	req = c.newRequest(op, input, output)
3245	return
3246}
3247
3248// DescribeEngineDefaultParameters API operation for Amazon ElastiCache.
3249//
3250// Returns the default engine and system parameter information for the specified
3251// cache engine.
3252//
3253// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3254// with awserr.Error's Code and Message methods to get detailed information about
3255// the error.
3256//
3257// See the AWS API reference guide for Amazon ElastiCache's
3258// API operation DescribeEngineDefaultParameters for usage and error information.
3259//
3260// Returned Error Codes:
3261//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3262//   The value for a parameter is invalid.
3263//
3264//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3265//   Two or more incompatible parameters were specified.
3266//
3267// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEngineDefaultParameters
3268func (c *ElastiCache) DescribeEngineDefaultParameters(input *DescribeEngineDefaultParametersInput) (*DescribeEngineDefaultParametersOutput, error) {
3269	req, out := c.DescribeEngineDefaultParametersRequest(input)
3270	return out, req.Send()
3271}
3272
3273// DescribeEngineDefaultParametersWithContext is the same as DescribeEngineDefaultParameters with the addition of
3274// the ability to pass a context and additional request options.
3275//
3276// See DescribeEngineDefaultParameters for details on how to use this API operation.
3277//
3278// The context must be non-nil and will be used for request cancellation. If
3279// the context is nil a panic will occur. In the future the SDK may create
3280// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3281// for more information on using Contexts.
3282func (c *ElastiCache) DescribeEngineDefaultParametersWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, opts ...request.Option) (*DescribeEngineDefaultParametersOutput, error) {
3283	req, out := c.DescribeEngineDefaultParametersRequest(input)
3284	req.SetContext(ctx)
3285	req.ApplyOptions(opts...)
3286	return out, req.Send()
3287}
3288
3289// DescribeEngineDefaultParametersPages iterates over the pages of a DescribeEngineDefaultParameters operation,
3290// calling the "fn" function with the response data for each page. To stop
3291// iterating, return false from the fn function.
3292//
3293// See DescribeEngineDefaultParameters method for more information on how to use this operation.
3294//
3295// Note: This operation can generate multiple requests to a service.
3296//
3297//    // Example iterating over at most 3 pages of a DescribeEngineDefaultParameters operation.
3298//    pageNum := 0
3299//    err := client.DescribeEngineDefaultParametersPages(params,
3300//        func(page *elasticache.DescribeEngineDefaultParametersOutput, lastPage bool) bool {
3301//            pageNum++
3302//            fmt.Println(page)
3303//            return pageNum <= 3
3304//        })
3305//
3306func (c *ElastiCache) DescribeEngineDefaultParametersPages(input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool) error {
3307	return c.DescribeEngineDefaultParametersPagesWithContext(aws.BackgroundContext(), input, fn)
3308}
3309
3310// DescribeEngineDefaultParametersPagesWithContext same as DescribeEngineDefaultParametersPages except
3311// it takes a Context and allows setting request options on the pages.
3312//
3313// The context must be non-nil and will be used for request cancellation. If
3314// the context is nil a panic will occur. In the future the SDK may create
3315// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3316// for more information on using Contexts.
3317func (c *ElastiCache) DescribeEngineDefaultParametersPagesWithContext(ctx aws.Context, input *DescribeEngineDefaultParametersInput, fn func(*DescribeEngineDefaultParametersOutput, bool) bool, opts ...request.Option) error {
3318	p := request.Pagination{
3319		NewRequest: func() (*request.Request, error) {
3320			var inCpy *DescribeEngineDefaultParametersInput
3321			if input != nil {
3322				tmp := *input
3323				inCpy = &tmp
3324			}
3325			req, _ := c.DescribeEngineDefaultParametersRequest(inCpy)
3326			req.SetContext(ctx)
3327			req.ApplyOptions(opts...)
3328			return req, nil
3329		},
3330	}
3331
3332	for p.Next() {
3333		if !fn(p.Page().(*DescribeEngineDefaultParametersOutput), !p.HasNextPage()) {
3334			break
3335		}
3336	}
3337
3338	return p.Err()
3339}
3340
3341const opDescribeEvents = "DescribeEvents"
3342
3343// DescribeEventsRequest generates a "aws/request.Request" representing the
3344// client's request for the DescribeEvents operation. The "output" return
3345// value will be populated with the request's response once the request completes
3346// successfully.
3347//
3348// Use "Send" method on the returned Request to send the API call to the service.
3349// the "output" return value is not valid until after Send returns without error.
3350//
3351// See DescribeEvents for more information on using the DescribeEvents
3352// API call, and error handling.
3353//
3354// This method is useful when you want to inject custom logic or configuration
3355// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3356//
3357//
3358//    // Example sending a request using the DescribeEventsRequest method.
3359//    req, resp := client.DescribeEventsRequest(params)
3360//
3361//    err := req.Send()
3362//    if err == nil { // resp is now filled
3363//        fmt.Println(resp)
3364//    }
3365//
3366// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEvents
3367func (c *ElastiCache) DescribeEventsRequest(input *DescribeEventsInput) (req *request.Request, output *DescribeEventsOutput) {
3368	op := &request.Operation{
3369		Name:       opDescribeEvents,
3370		HTTPMethod: "POST",
3371		HTTPPath:   "/",
3372		Paginator: &request.Paginator{
3373			InputTokens:     []string{"Marker"},
3374			OutputTokens:    []string{"Marker"},
3375			LimitToken:      "MaxRecords",
3376			TruncationToken: "",
3377		},
3378	}
3379
3380	if input == nil {
3381		input = &DescribeEventsInput{}
3382	}
3383
3384	output = &DescribeEventsOutput{}
3385	req = c.newRequest(op, input, output)
3386	return
3387}
3388
3389// DescribeEvents API operation for Amazon ElastiCache.
3390//
3391// Returns events related to clusters, cache security groups, and cache parameter
3392// groups. You can obtain events specific to a particular cluster, cache security
3393// group, or cache parameter group by providing the name as a parameter.
3394//
3395// By default, only the events occurring within the last hour are returned;
3396// however, you can retrieve up to 14 days' worth of events if necessary.
3397//
3398// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3399// with awserr.Error's Code and Message methods to get detailed information about
3400// the error.
3401//
3402// See the AWS API reference guide for Amazon ElastiCache's
3403// API operation DescribeEvents for usage and error information.
3404//
3405// Returned Error Codes:
3406//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3407//   The value for a parameter is invalid.
3408//
3409//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3410//   Two or more incompatible parameters were specified.
3411//
3412// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeEvents
3413func (c *ElastiCache) DescribeEvents(input *DescribeEventsInput) (*DescribeEventsOutput, error) {
3414	req, out := c.DescribeEventsRequest(input)
3415	return out, req.Send()
3416}
3417
3418// DescribeEventsWithContext is the same as DescribeEvents with the addition of
3419// the ability to pass a context and additional request options.
3420//
3421// See DescribeEvents for details on how to use this API operation.
3422//
3423// The context must be non-nil and will be used for request cancellation. If
3424// the context is nil a panic will occur. In the future the SDK may create
3425// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3426// for more information on using Contexts.
3427func (c *ElastiCache) DescribeEventsWithContext(ctx aws.Context, input *DescribeEventsInput, opts ...request.Option) (*DescribeEventsOutput, error) {
3428	req, out := c.DescribeEventsRequest(input)
3429	req.SetContext(ctx)
3430	req.ApplyOptions(opts...)
3431	return out, req.Send()
3432}
3433
3434// DescribeEventsPages iterates over the pages of a DescribeEvents operation,
3435// calling the "fn" function with the response data for each page. To stop
3436// iterating, return false from the fn function.
3437//
3438// See DescribeEvents method for more information on how to use this operation.
3439//
3440// Note: This operation can generate multiple requests to a service.
3441//
3442//    // Example iterating over at most 3 pages of a DescribeEvents operation.
3443//    pageNum := 0
3444//    err := client.DescribeEventsPages(params,
3445//        func(page *elasticache.DescribeEventsOutput, lastPage bool) bool {
3446//            pageNum++
3447//            fmt.Println(page)
3448//            return pageNum <= 3
3449//        })
3450//
3451func (c *ElastiCache) DescribeEventsPages(input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool) error {
3452	return c.DescribeEventsPagesWithContext(aws.BackgroundContext(), input, fn)
3453}
3454
3455// DescribeEventsPagesWithContext same as DescribeEventsPages except
3456// it takes a Context and allows setting request options on the pages.
3457//
3458// The context must be non-nil and will be used for request cancellation. If
3459// the context is nil a panic will occur. In the future the SDK may create
3460// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3461// for more information on using Contexts.
3462func (c *ElastiCache) DescribeEventsPagesWithContext(ctx aws.Context, input *DescribeEventsInput, fn func(*DescribeEventsOutput, bool) bool, opts ...request.Option) error {
3463	p := request.Pagination{
3464		NewRequest: func() (*request.Request, error) {
3465			var inCpy *DescribeEventsInput
3466			if input != nil {
3467				tmp := *input
3468				inCpy = &tmp
3469			}
3470			req, _ := c.DescribeEventsRequest(inCpy)
3471			req.SetContext(ctx)
3472			req.ApplyOptions(opts...)
3473			return req, nil
3474		},
3475	}
3476
3477	for p.Next() {
3478		if !fn(p.Page().(*DescribeEventsOutput), !p.HasNextPage()) {
3479			break
3480		}
3481	}
3482
3483	return p.Err()
3484}
3485
3486const opDescribeGlobalReplicationGroups = "DescribeGlobalReplicationGroups"
3487
3488// DescribeGlobalReplicationGroupsRequest generates a "aws/request.Request" representing the
3489// client's request for the DescribeGlobalReplicationGroups operation. The "output" return
3490// value will be populated with the request's response once the request completes
3491// successfully.
3492//
3493// Use "Send" method on the returned Request to send the API call to the service.
3494// the "output" return value is not valid until after Send returns without error.
3495//
3496// See DescribeGlobalReplicationGroups for more information on using the DescribeGlobalReplicationGroups
3497// API call, and error handling.
3498//
3499// This method is useful when you want to inject custom logic or configuration
3500// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3501//
3502//
3503//    // Example sending a request using the DescribeGlobalReplicationGroupsRequest method.
3504//    req, resp := client.DescribeGlobalReplicationGroupsRequest(params)
3505//
3506//    err := req.Send()
3507//    if err == nil { // resp is now filled
3508//        fmt.Println(resp)
3509//    }
3510//
3511// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeGlobalReplicationGroups
3512func (c *ElastiCache) DescribeGlobalReplicationGroupsRequest(input *DescribeGlobalReplicationGroupsInput) (req *request.Request, output *DescribeGlobalReplicationGroupsOutput) {
3513	op := &request.Operation{
3514		Name:       opDescribeGlobalReplicationGroups,
3515		HTTPMethod: "POST",
3516		HTTPPath:   "/",
3517		Paginator: &request.Paginator{
3518			InputTokens:     []string{"Marker"},
3519			OutputTokens:    []string{"Marker"},
3520			LimitToken:      "MaxRecords",
3521			TruncationToken: "",
3522		},
3523	}
3524
3525	if input == nil {
3526		input = &DescribeGlobalReplicationGroupsInput{}
3527	}
3528
3529	output = &DescribeGlobalReplicationGroupsOutput{}
3530	req = c.newRequest(op, input, output)
3531	return
3532}
3533
3534// DescribeGlobalReplicationGroups API operation for Amazon ElastiCache.
3535//
3536// Returns information about a particular global replication group. If no identifier
3537// is specified, returns information about all Global Datastores.
3538//
3539// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3540// with awserr.Error's Code and Message methods to get detailed information about
3541// the error.
3542//
3543// See the AWS API reference guide for Amazon ElastiCache's
3544// API operation DescribeGlobalReplicationGroups for usage and error information.
3545//
3546// Returned Error Codes:
3547//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
3548//   The Global Datastore does not exist
3549//
3550//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3551//   The value for a parameter is invalid.
3552//
3553//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3554//   Two or more incompatible parameters were specified.
3555//
3556// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeGlobalReplicationGroups
3557func (c *ElastiCache) DescribeGlobalReplicationGroups(input *DescribeGlobalReplicationGroupsInput) (*DescribeGlobalReplicationGroupsOutput, error) {
3558	req, out := c.DescribeGlobalReplicationGroupsRequest(input)
3559	return out, req.Send()
3560}
3561
3562// DescribeGlobalReplicationGroupsWithContext is the same as DescribeGlobalReplicationGroups with the addition of
3563// the ability to pass a context and additional request options.
3564//
3565// See DescribeGlobalReplicationGroups for details on how to use this API operation.
3566//
3567// The context must be non-nil and will be used for request cancellation. If
3568// the context is nil a panic will occur. In the future the SDK may create
3569// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3570// for more information on using Contexts.
3571func (c *ElastiCache) DescribeGlobalReplicationGroupsWithContext(ctx aws.Context, input *DescribeGlobalReplicationGroupsInput, opts ...request.Option) (*DescribeGlobalReplicationGroupsOutput, error) {
3572	req, out := c.DescribeGlobalReplicationGroupsRequest(input)
3573	req.SetContext(ctx)
3574	req.ApplyOptions(opts...)
3575	return out, req.Send()
3576}
3577
3578// DescribeGlobalReplicationGroupsPages iterates over the pages of a DescribeGlobalReplicationGroups operation,
3579// calling the "fn" function with the response data for each page. To stop
3580// iterating, return false from the fn function.
3581//
3582// See DescribeGlobalReplicationGroups method for more information on how to use this operation.
3583//
3584// Note: This operation can generate multiple requests to a service.
3585//
3586//    // Example iterating over at most 3 pages of a DescribeGlobalReplicationGroups operation.
3587//    pageNum := 0
3588//    err := client.DescribeGlobalReplicationGroupsPages(params,
3589//        func(page *elasticache.DescribeGlobalReplicationGroupsOutput, lastPage bool) bool {
3590//            pageNum++
3591//            fmt.Println(page)
3592//            return pageNum <= 3
3593//        })
3594//
3595func (c *ElastiCache) DescribeGlobalReplicationGroupsPages(input *DescribeGlobalReplicationGroupsInput, fn func(*DescribeGlobalReplicationGroupsOutput, bool) bool) error {
3596	return c.DescribeGlobalReplicationGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3597}
3598
3599// DescribeGlobalReplicationGroupsPagesWithContext same as DescribeGlobalReplicationGroupsPages except
3600// it takes a Context and allows setting request options on the pages.
3601//
3602// The context must be non-nil and will be used for request cancellation. If
3603// the context is nil a panic will occur. In the future the SDK may create
3604// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3605// for more information on using Contexts.
3606func (c *ElastiCache) DescribeGlobalReplicationGroupsPagesWithContext(ctx aws.Context, input *DescribeGlobalReplicationGroupsInput, fn func(*DescribeGlobalReplicationGroupsOutput, bool) bool, opts ...request.Option) error {
3607	p := request.Pagination{
3608		NewRequest: func() (*request.Request, error) {
3609			var inCpy *DescribeGlobalReplicationGroupsInput
3610			if input != nil {
3611				tmp := *input
3612				inCpy = &tmp
3613			}
3614			req, _ := c.DescribeGlobalReplicationGroupsRequest(inCpy)
3615			req.SetContext(ctx)
3616			req.ApplyOptions(opts...)
3617			return req, nil
3618		},
3619	}
3620
3621	for p.Next() {
3622		if !fn(p.Page().(*DescribeGlobalReplicationGroupsOutput), !p.HasNextPage()) {
3623			break
3624		}
3625	}
3626
3627	return p.Err()
3628}
3629
3630const opDescribeReplicationGroups = "DescribeReplicationGroups"
3631
3632// DescribeReplicationGroupsRequest generates a "aws/request.Request" representing the
3633// client's request for the DescribeReplicationGroups operation. The "output" return
3634// value will be populated with the request's response once the request completes
3635// successfully.
3636//
3637// Use "Send" method on the returned Request to send the API call to the service.
3638// the "output" return value is not valid until after Send returns without error.
3639//
3640// See DescribeReplicationGroups for more information on using the DescribeReplicationGroups
3641// API call, and error handling.
3642//
3643// This method is useful when you want to inject custom logic or configuration
3644// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3645//
3646//
3647//    // Example sending a request using the DescribeReplicationGroupsRequest method.
3648//    req, resp := client.DescribeReplicationGroupsRequest(params)
3649//
3650//    err := req.Send()
3651//    if err == nil { // resp is now filled
3652//        fmt.Println(resp)
3653//    }
3654//
3655// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReplicationGroups
3656func (c *ElastiCache) DescribeReplicationGroupsRequest(input *DescribeReplicationGroupsInput) (req *request.Request, output *DescribeReplicationGroupsOutput) {
3657	op := &request.Operation{
3658		Name:       opDescribeReplicationGroups,
3659		HTTPMethod: "POST",
3660		HTTPPath:   "/",
3661		Paginator: &request.Paginator{
3662			InputTokens:     []string{"Marker"},
3663			OutputTokens:    []string{"Marker"},
3664			LimitToken:      "MaxRecords",
3665			TruncationToken: "",
3666		},
3667	}
3668
3669	if input == nil {
3670		input = &DescribeReplicationGroupsInput{}
3671	}
3672
3673	output = &DescribeReplicationGroupsOutput{}
3674	req = c.newRequest(op, input, output)
3675	return
3676}
3677
3678// DescribeReplicationGroups API operation for Amazon ElastiCache.
3679//
3680// Returns information about a particular replication group. If no identifier
3681// is specified, DescribeReplicationGroups returns information about all replication
3682// groups.
3683//
3684// This operation is valid for Redis only.
3685//
3686// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3687// with awserr.Error's Code and Message methods to get detailed information about
3688// the error.
3689//
3690// See the AWS API reference guide for Amazon ElastiCache's
3691// API operation DescribeReplicationGroups for usage and error information.
3692//
3693// Returned Error Codes:
3694//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
3695//   The specified replication group does not exist.
3696//
3697//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3698//   The value for a parameter is invalid.
3699//
3700//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3701//   Two or more incompatible parameters were specified.
3702//
3703// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReplicationGroups
3704func (c *ElastiCache) DescribeReplicationGroups(input *DescribeReplicationGroupsInput) (*DescribeReplicationGroupsOutput, error) {
3705	req, out := c.DescribeReplicationGroupsRequest(input)
3706	return out, req.Send()
3707}
3708
3709// DescribeReplicationGroupsWithContext is the same as DescribeReplicationGroups with the addition of
3710// the ability to pass a context and additional request options.
3711//
3712// See DescribeReplicationGroups for details on how to use this API operation.
3713//
3714// The context must be non-nil and will be used for request cancellation. If
3715// the context is nil a panic will occur. In the future the SDK may create
3716// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3717// for more information on using Contexts.
3718func (c *ElastiCache) DescribeReplicationGroupsWithContext(ctx aws.Context, input *DescribeReplicationGroupsInput, opts ...request.Option) (*DescribeReplicationGroupsOutput, error) {
3719	req, out := c.DescribeReplicationGroupsRequest(input)
3720	req.SetContext(ctx)
3721	req.ApplyOptions(opts...)
3722	return out, req.Send()
3723}
3724
3725// DescribeReplicationGroupsPages iterates over the pages of a DescribeReplicationGroups operation,
3726// calling the "fn" function with the response data for each page. To stop
3727// iterating, return false from the fn function.
3728//
3729// See DescribeReplicationGroups method for more information on how to use this operation.
3730//
3731// Note: This operation can generate multiple requests to a service.
3732//
3733//    // Example iterating over at most 3 pages of a DescribeReplicationGroups operation.
3734//    pageNum := 0
3735//    err := client.DescribeReplicationGroupsPages(params,
3736//        func(page *elasticache.DescribeReplicationGroupsOutput, lastPage bool) bool {
3737//            pageNum++
3738//            fmt.Println(page)
3739//            return pageNum <= 3
3740//        })
3741//
3742func (c *ElastiCache) DescribeReplicationGroupsPages(input *DescribeReplicationGroupsInput, fn func(*DescribeReplicationGroupsOutput, bool) bool) error {
3743	return c.DescribeReplicationGroupsPagesWithContext(aws.BackgroundContext(), input, fn)
3744}
3745
3746// DescribeReplicationGroupsPagesWithContext same as DescribeReplicationGroupsPages except
3747// it takes a Context and allows setting request options on the pages.
3748//
3749// The context must be non-nil and will be used for request cancellation. If
3750// the context is nil a panic will occur. In the future the SDK may create
3751// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3752// for more information on using Contexts.
3753func (c *ElastiCache) DescribeReplicationGroupsPagesWithContext(ctx aws.Context, input *DescribeReplicationGroupsInput, fn func(*DescribeReplicationGroupsOutput, bool) bool, opts ...request.Option) error {
3754	p := request.Pagination{
3755		NewRequest: func() (*request.Request, error) {
3756			var inCpy *DescribeReplicationGroupsInput
3757			if input != nil {
3758				tmp := *input
3759				inCpy = &tmp
3760			}
3761			req, _ := c.DescribeReplicationGroupsRequest(inCpy)
3762			req.SetContext(ctx)
3763			req.ApplyOptions(opts...)
3764			return req, nil
3765		},
3766	}
3767
3768	for p.Next() {
3769		if !fn(p.Page().(*DescribeReplicationGroupsOutput), !p.HasNextPage()) {
3770			break
3771		}
3772	}
3773
3774	return p.Err()
3775}
3776
3777const opDescribeReservedCacheNodes = "DescribeReservedCacheNodes"
3778
3779// DescribeReservedCacheNodesRequest generates a "aws/request.Request" representing the
3780// client's request for the DescribeReservedCacheNodes operation. The "output" return
3781// value will be populated with the request's response once the request completes
3782// successfully.
3783//
3784// Use "Send" method on the returned Request to send the API call to the service.
3785// the "output" return value is not valid until after Send returns without error.
3786//
3787// See DescribeReservedCacheNodes for more information on using the DescribeReservedCacheNodes
3788// API call, and error handling.
3789//
3790// This method is useful when you want to inject custom logic or configuration
3791// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3792//
3793//
3794//    // Example sending a request using the DescribeReservedCacheNodesRequest method.
3795//    req, resp := client.DescribeReservedCacheNodesRequest(params)
3796//
3797//    err := req.Send()
3798//    if err == nil { // resp is now filled
3799//        fmt.Println(resp)
3800//    }
3801//
3802// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodes
3803func (c *ElastiCache) DescribeReservedCacheNodesRequest(input *DescribeReservedCacheNodesInput) (req *request.Request, output *DescribeReservedCacheNodesOutput) {
3804	op := &request.Operation{
3805		Name:       opDescribeReservedCacheNodes,
3806		HTTPMethod: "POST",
3807		HTTPPath:   "/",
3808		Paginator: &request.Paginator{
3809			InputTokens:     []string{"Marker"},
3810			OutputTokens:    []string{"Marker"},
3811			LimitToken:      "MaxRecords",
3812			TruncationToken: "",
3813		},
3814	}
3815
3816	if input == nil {
3817		input = &DescribeReservedCacheNodesInput{}
3818	}
3819
3820	output = &DescribeReservedCacheNodesOutput{}
3821	req = c.newRequest(op, input, output)
3822	return
3823}
3824
3825// DescribeReservedCacheNodes API operation for Amazon ElastiCache.
3826//
3827// Returns information about reserved cache nodes for this account, or about
3828// a specified reserved cache node.
3829//
3830// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3831// with awserr.Error's Code and Message methods to get detailed information about
3832// the error.
3833//
3834// See the AWS API reference guide for Amazon ElastiCache's
3835// API operation DescribeReservedCacheNodes for usage and error information.
3836//
3837// Returned Error Codes:
3838//   * ErrCodeReservedCacheNodeNotFoundFault "ReservedCacheNodeNotFound"
3839//   The requested reserved cache node was not found.
3840//
3841//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3842//   The value for a parameter is invalid.
3843//
3844//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3845//   Two or more incompatible parameters were specified.
3846//
3847// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodes
3848func (c *ElastiCache) DescribeReservedCacheNodes(input *DescribeReservedCacheNodesInput) (*DescribeReservedCacheNodesOutput, error) {
3849	req, out := c.DescribeReservedCacheNodesRequest(input)
3850	return out, req.Send()
3851}
3852
3853// DescribeReservedCacheNodesWithContext is the same as DescribeReservedCacheNodes with the addition of
3854// the ability to pass a context and additional request options.
3855//
3856// See DescribeReservedCacheNodes for details on how to use this API operation.
3857//
3858// The context must be non-nil and will be used for request cancellation. If
3859// the context is nil a panic will occur. In the future the SDK may create
3860// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3861// for more information on using Contexts.
3862func (c *ElastiCache) DescribeReservedCacheNodesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesInput, opts ...request.Option) (*DescribeReservedCacheNodesOutput, error) {
3863	req, out := c.DescribeReservedCacheNodesRequest(input)
3864	req.SetContext(ctx)
3865	req.ApplyOptions(opts...)
3866	return out, req.Send()
3867}
3868
3869// DescribeReservedCacheNodesPages iterates over the pages of a DescribeReservedCacheNodes operation,
3870// calling the "fn" function with the response data for each page. To stop
3871// iterating, return false from the fn function.
3872//
3873// See DescribeReservedCacheNodes method for more information on how to use this operation.
3874//
3875// Note: This operation can generate multiple requests to a service.
3876//
3877//    // Example iterating over at most 3 pages of a DescribeReservedCacheNodes operation.
3878//    pageNum := 0
3879//    err := client.DescribeReservedCacheNodesPages(params,
3880//        func(page *elasticache.DescribeReservedCacheNodesOutput, lastPage bool) bool {
3881//            pageNum++
3882//            fmt.Println(page)
3883//            return pageNum <= 3
3884//        })
3885//
3886func (c *ElastiCache) DescribeReservedCacheNodesPages(input *DescribeReservedCacheNodesInput, fn func(*DescribeReservedCacheNodesOutput, bool) bool) error {
3887	return c.DescribeReservedCacheNodesPagesWithContext(aws.BackgroundContext(), input, fn)
3888}
3889
3890// DescribeReservedCacheNodesPagesWithContext same as DescribeReservedCacheNodesPages except
3891// it takes a Context and allows setting request options on the pages.
3892//
3893// The context must be non-nil and will be used for request cancellation. If
3894// the context is nil a panic will occur. In the future the SDK may create
3895// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3896// for more information on using Contexts.
3897func (c *ElastiCache) DescribeReservedCacheNodesPagesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesInput, fn func(*DescribeReservedCacheNodesOutput, bool) bool, opts ...request.Option) error {
3898	p := request.Pagination{
3899		NewRequest: func() (*request.Request, error) {
3900			var inCpy *DescribeReservedCacheNodesInput
3901			if input != nil {
3902				tmp := *input
3903				inCpy = &tmp
3904			}
3905			req, _ := c.DescribeReservedCacheNodesRequest(inCpy)
3906			req.SetContext(ctx)
3907			req.ApplyOptions(opts...)
3908			return req, nil
3909		},
3910	}
3911
3912	for p.Next() {
3913		if !fn(p.Page().(*DescribeReservedCacheNodesOutput), !p.HasNextPage()) {
3914			break
3915		}
3916	}
3917
3918	return p.Err()
3919}
3920
3921const opDescribeReservedCacheNodesOfferings = "DescribeReservedCacheNodesOfferings"
3922
3923// DescribeReservedCacheNodesOfferingsRequest generates a "aws/request.Request" representing the
3924// client's request for the DescribeReservedCacheNodesOfferings operation. The "output" return
3925// value will be populated with the request's response once the request completes
3926// successfully.
3927//
3928// Use "Send" method on the returned Request to send the API call to the service.
3929// the "output" return value is not valid until after Send returns without error.
3930//
3931// See DescribeReservedCacheNodesOfferings for more information on using the DescribeReservedCacheNodesOfferings
3932// API call, and error handling.
3933//
3934// This method is useful when you want to inject custom logic or configuration
3935// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3936//
3937//
3938//    // Example sending a request using the DescribeReservedCacheNodesOfferingsRequest method.
3939//    req, resp := client.DescribeReservedCacheNodesOfferingsRequest(params)
3940//
3941//    err := req.Send()
3942//    if err == nil { // resp is now filled
3943//        fmt.Println(resp)
3944//    }
3945//
3946// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodesOfferings
3947func (c *ElastiCache) DescribeReservedCacheNodesOfferingsRequest(input *DescribeReservedCacheNodesOfferingsInput) (req *request.Request, output *DescribeReservedCacheNodesOfferingsOutput) {
3948	op := &request.Operation{
3949		Name:       opDescribeReservedCacheNodesOfferings,
3950		HTTPMethod: "POST",
3951		HTTPPath:   "/",
3952		Paginator: &request.Paginator{
3953			InputTokens:     []string{"Marker"},
3954			OutputTokens:    []string{"Marker"},
3955			LimitToken:      "MaxRecords",
3956			TruncationToken: "",
3957		},
3958	}
3959
3960	if input == nil {
3961		input = &DescribeReservedCacheNodesOfferingsInput{}
3962	}
3963
3964	output = &DescribeReservedCacheNodesOfferingsOutput{}
3965	req = c.newRequest(op, input, output)
3966	return
3967}
3968
3969// DescribeReservedCacheNodesOfferings API operation for Amazon ElastiCache.
3970//
3971// Lists available reserved cache node offerings.
3972//
3973// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3974// with awserr.Error's Code and Message methods to get detailed information about
3975// the error.
3976//
3977// See the AWS API reference guide for Amazon ElastiCache's
3978// API operation DescribeReservedCacheNodesOfferings for usage and error information.
3979//
3980// Returned Error Codes:
3981//   * ErrCodeReservedCacheNodesOfferingNotFoundFault "ReservedCacheNodesOfferingNotFound"
3982//   The requested cache node offering does not exist.
3983//
3984//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
3985//   The value for a parameter is invalid.
3986//
3987//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
3988//   Two or more incompatible parameters were specified.
3989//
3990// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeReservedCacheNodesOfferings
3991func (c *ElastiCache) DescribeReservedCacheNodesOfferings(input *DescribeReservedCacheNodesOfferingsInput) (*DescribeReservedCacheNodesOfferingsOutput, error) {
3992	req, out := c.DescribeReservedCacheNodesOfferingsRequest(input)
3993	return out, req.Send()
3994}
3995
3996// DescribeReservedCacheNodesOfferingsWithContext is the same as DescribeReservedCacheNodesOfferings with the addition of
3997// the ability to pass a context and additional request options.
3998//
3999// See DescribeReservedCacheNodesOfferings for details on how to use this API operation.
4000//
4001// The context must be non-nil and will be used for request cancellation. If
4002// the context is nil a panic will occur. In the future the SDK may create
4003// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4004// for more information on using Contexts.
4005func (c *ElastiCache) DescribeReservedCacheNodesOfferingsWithContext(ctx aws.Context, input *DescribeReservedCacheNodesOfferingsInput, opts ...request.Option) (*DescribeReservedCacheNodesOfferingsOutput, error) {
4006	req, out := c.DescribeReservedCacheNodesOfferingsRequest(input)
4007	req.SetContext(ctx)
4008	req.ApplyOptions(opts...)
4009	return out, req.Send()
4010}
4011
4012// DescribeReservedCacheNodesOfferingsPages iterates over the pages of a DescribeReservedCacheNodesOfferings operation,
4013// calling the "fn" function with the response data for each page. To stop
4014// iterating, return false from the fn function.
4015//
4016// See DescribeReservedCacheNodesOfferings method for more information on how to use this operation.
4017//
4018// Note: This operation can generate multiple requests to a service.
4019//
4020//    // Example iterating over at most 3 pages of a DescribeReservedCacheNodesOfferings operation.
4021//    pageNum := 0
4022//    err := client.DescribeReservedCacheNodesOfferingsPages(params,
4023//        func(page *elasticache.DescribeReservedCacheNodesOfferingsOutput, lastPage bool) bool {
4024//            pageNum++
4025//            fmt.Println(page)
4026//            return pageNum <= 3
4027//        })
4028//
4029func (c *ElastiCache) DescribeReservedCacheNodesOfferingsPages(input *DescribeReservedCacheNodesOfferingsInput, fn func(*DescribeReservedCacheNodesOfferingsOutput, bool) bool) error {
4030	return c.DescribeReservedCacheNodesOfferingsPagesWithContext(aws.BackgroundContext(), input, fn)
4031}
4032
4033// DescribeReservedCacheNodesOfferingsPagesWithContext same as DescribeReservedCacheNodesOfferingsPages except
4034// it takes a Context and allows setting request options on the pages.
4035//
4036// The context must be non-nil and will be used for request cancellation. If
4037// the context is nil a panic will occur. In the future the SDK may create
4038// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4039// for more information on using Contexts.
4040func (c *ElastiCache) DescribeReservedCacheNodesOfferingsPagesWithContext(ctx aws.Context, input *DescribeReservedCacheNodesOfferingsInput, fn func(*DescribeReservedCacheNodesOfferingsOutput, bool) bool, opts ...request.Option) error {
4041	p := request.Pagination{
4042		NewRequest: func() (*request.Request, error) {
4043			var inCpy *DescribeReservedCacheNodesOfferingsInput
4044			if input != nil {
4045				tmp := *input
4046				inCpy = &tmp
4047			}
4048			req, _ := c.DescribeReservedCacheNodesOfferingsRequest(inCpy)
4049			req.SetContext(ctx)
4050			req.ApplyOptions(opts...)
4051			return req, nil
4052		},
4053	}
4054
4055	for p.Next() {
4056		if !fn(p.Page().(*DescribeReservedCacheNodesOfferingsOutput), !p.HasNextPage()) {
4057			break
4058		}
4059	}
4060
4061	return p.Err()
4062}
4063
4064const opDescribeServiceUpdates = "DescribeServiceUpdates"
4065
4066// DescribeServiceUpdatesRequest generates a "aws/request.Request" representing the
4067// client's request for the DescribeServiceUpdates operation. The "output" return
4068// value will be populated with the request's response once the request completes
4069// successfully.
4070//
4071// Use "Send" method on the returned Request to send the API call to the service.
4072// the "output" return value is not valid until after Send returns without error.
4073//
4074// See DescribeServiceUpdates for more information on using the DescribeServiceUpdates
4075// API call, and error handling.
4076//
4077// This method is useful when you want to inject custom logic or configuration
4078// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4079//
4080//
4081//    // Example sending a request using the DescribeServiceUpdatesRequest method.
4082//    req, resp := client.DescribeServiceUpdatesRequest(params)
4083//
4084//    err := req.Send()
4085//    if err == nil { // resp is now filled
4086//        fmt.Println(resp)
4087//    }
4088//
4089// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeServiceUpdates
4090func (c *ElastiCache) DescribeServiceUpdatesRequest(input *DescribeServiceUpdatesInput) (req *request.Request, output *DescribeServiceUpdatesOutput) {
4091	op := &request.Operation{
4092		Name:       opDescribeServiceUpdates,
4093		HTTPMethod: "POST",
4094		HTTPPath:   "/",
4095		Paginator: &request.Paginator{
4096			InputTokens:     []string{"Marker"},
4097			OutputTokens:    []string{"Marker"},
4098			LimitToken:      "MaxRecords",
4099			TruncationToken: "",
4100		},
4101	}
4102
4103	if input == nil {
4104		input = &DescribeServiceUpdatesInput{}
4105	}
4106
4107	output = &DescribeServiceUpdatesOutput{}
4108	req = c.newRequest(op, input, output)
4109	return
4110}
4111
4112// DescribeServiceUpdates API operation for Amazon ElastiCache.
4113//
4114// Returns details of the service updates
4115//
4116// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4117// with awserr.Error's Code and Message methods to get detailed information about
4118// the error.
4119//
4120// See the AWS API reference guide for Amazon ElastiCache's
4121// API operation DescribeServiceUpdates for usage and error information.
4122//
4123// Returned Error Codes:
4124//   * ErrCodeServiceUpdateNotFoundFault "ServiceUpdateNotFoundFault"
4125//   The service update doesn't exist
4126//
4127//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4128//   The value for a parameter is invalid.
4129//
4130//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4131//   Two or more incompatible parameters were specified.
4132//
4133// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeServiceUpdates
4134func (c *ElastiCache) DescribeServiceUpdates(input *DescribeServiceUpdatesInput) (*DescribeServiceUpdatesOutput, error) {
4135	req, out := c.DescribeServiceUpdatesRequest(input)
4136	return out, req.Send()
4137}
4138
4139// DescribeServiceUpdatesWithContext is the same as DescribeServiceUpdates with the addition of
4140// the ability to pass a context and additional request options.
4141//
4142// See DescribeServiceUpdates for details on how to use this API operation.
4143//
4144// The context must be non-nil and will be used for request cancellation. If
4145// the context is nil a panic will occur. In the future the SDK may create
4146// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4147// for more information on using Contexts.
4148func (c *ElastiCache) DescribeServiceUpdatesWithContext(ctx aws.Context, input *DescribeServiceUpdatesInput, opts ...request.Option) (*DescribeServiceUpdatesOutput, error) {
4149	req, out := c.DescribeServiceUpdatesRequest(input)
4150	req.SetContext(ctx)
4151	req.ApplyOptions(opts...)
4152	return out, req.Send()
4153}
4154
4155// DescribeServiceUpdatesPages iterates over the pages of a DescribeServiceUpdates operation,
4156// calling the "fn" function with the response data for each page. To stop
4157// iterating, return false from the fn function.
4158//
4159// See DescribeServiceUpdates method for more information on how to use this operation.
4160//
4161// Note: This operation can generate multiple requests to a service.
4162//
4163//    // Example iterating over at most 3 pages of a DescribeServiceUpdates operation.
4164//    pageNum := 0
4165//    err := client.DescribeServiceUpdatesPages(params,
4166//        func(page *elasticache.DescribeServiceUpdatesOutput, lastPage bool) bool {
4167//            pageNum++
4168//            fmt.Println(page)
4169//            return pageNum <= 3
4170//        })
4171//
4172func (c *ElastiCache) DescribeServiceUpdatesPages(input *DescribeServiceUpdatesInput, fn func(*DescribeServiceUpdatesOutput, bool) bool) error {
4173	return c.DescribeServiceUpdatesPagesWithContext(aws.BackgroundContext(), input, fn)
4174}
4175
4176// DescribeServiceUpdatesPagesWithContext same as DescribeServiceUpdatesPages except
4177// it takes a Context and allows setting request options on the pages.
4178//
4179// The context must be non-nil and will be used for request cancellation. If
4180// the context is nil a panic will occur. In the future the SDK may create
4181// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4182// for more information on using Contexts.
4183func (c *ElastiCache) DescribeServiceUpdatesPagesWithContext(ctx aws.Context, input *DescribeServiceUpdatesInput, fn func(*DescribeServiceUpdatesOutput, bool) bool, opts ...request.Option) error {
4184	p := request.Pagination{
4185		NewRequest: func() (*request.Request, error) {
4186			var inCpy *DescribeServiceUpdatesInput
4187			if input != nil {
4188				tmp := *input
4189				inCpy = &tmp
4190			}
4191			req, _ := c.DescribeServiceUpdatesRequest(inCpy)
4192			req.SetContext(ctx)
4193			req.ApplyOptions(opts...)
4194			return req, nil
4195		},
4196	}
4197
4198	for p.Next() {
4199		if !fn(p.Page().(*DescribeServiceUpdatesOutput), !p.HasNextPage()) {
4200			break
4201		}
4202	}
4203
4204	return p.Err()
4205}
4206
4207const opDescribeSnapshots = "DescribeSnapshots"
4208
4209// DescribeSnapshotsRequest generates a "aws/request.Request" representing the
4210// client's request for the DescribeSnapshots operation. The "output" return
4211// value will be populated with the request's response once the request completes
4212// successfully.
4213//
4214// Use "Send" method on the returned Request to send the API call to the service.
4215// the "output" return value is not valid until after Send returns without error.
4216//
4217// See DescribeSnapshots for more information on using the DescribeSnapshots
4218// API call, and error handling.
4219//
4220// This method is useful when you want to inject custom logic or configuration
4221// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4222//
4223//
4224//    // Example sending a request using the DescribeSnapshotsRequest method.
4225//    req, resp := client.DescribeSnapshotsRequest(params)
4226//
4227//    err := req.Send()
4228//    if err == nil { // resp is now filled
4229//        fmt.Println(resp)
4230//    }
4231//
4232// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeSnapshots
4233func (c *ElastiCache) DescribeSnapshotsRequest(input *DescribeSnapshotsInput) (req *request.Request, output *DescribeSnapshotsOutput) {
4234	op := &request.Operation{
4235		Name:       opDescribeSnapshots,
4236		HTTPMethod: "POST",
4237		HTTPPath:   "/",
4238		Paginator: &request.Paginator{
4239			InputTokens:     []string{"Marker"},
4240			OutputTokens:    []string{"Marker"},
4241			LimitToken:      "MaxRecords",
4242			TruncationToken: "",
4243		},
4244	}
4245
4246	if input == nil {
4247		input = &DescribeSnapshotsInput{}
4248	}
4249
4250	output = &DescribeSnapshotsOutput{}
4251	req = c.newRequest(op, input, output)
4252	return
4253}
4254
4255// DescribeSnapshots API operation for Amazon ElastiCache.
4256//
4257// Returns information about cluster or replication group snapshots. By default,
4258// DescribeSnapshots lists all of your snapshots; it can optionally describe
4259// a single snapshot, or just the snapshots associated with a particular cache
4260// cluster.
4261//
4262// This operation is valid for Redis only.
4263//
4264// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4265// with awserr.Error's Code and Message methods to get detailed information about
4266// the error.
4267//
4268// See the AWS API reference guide for Amazon ElastiCache's
4269// API operation DescribeSnapshots for usage and error information.
4270//
4271// Returned Error Codes:
4272//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4273//   The requested cluster ID does not refer to an existing cluster.
4274//
4275//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
4276//   The requested snapshot name does not refer to an existing snapshot.
4277//
4278//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4279//   The value for a parameter is invalid.
4280//
4281//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4282//   Two or more incompatible parameters were specified.
4283//
4284// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeSnapshots
4285func (c *ElastiCache) DescribeSnapshots(input *DescribeSnapshotsInput) (*DescribeSnapshotsOutput, error) {
4286	req, out := c.DescribeSnapshotsRequest(input)
4287	return out, req.Send()
4288}
4289
4290// DescribeSnapshotsWithContext is the same as DescribeSnapshots with the addition of
4291// the ability to pass a context and additional request options.
4292//
4293// See DescribeSnapshots for details on how to use this API operation.
4294//
4295// The context must be non-nil and will be used for request cancellation. If
4296// the context is nil a panic will occur. In the future the SDK may create
4297// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4298// for more information on using Contexts.
4299func (c *ElastiCache) DescribeSnapshotsWithContext(ctx aws.Context, input *DescribeSnapshotsInput, opts ...request.Option) (*DescribeSnapshotsOutput, error) {
4300	req, out := c.DescribeSnapshotsRequest(input)
4301	req.SetContext(ctx)
4302	req.ApplyOptions(opts...)
4303	return out, req.Send()
4304}
4305
4306// DescribeSnapshotsPages iterates over the pages of a DescribeSnapshots operation,
4307// calling the "fn" function with the response data for each page. To stop
4308// iterating, return false from the fn function.
4309//
4310// See DescribeSnapshots method for more information on how to use this operation.
4311//
4312// Note: This operation can generate multiple requests to a service.
4313//
4314//    // Example iterating over at most 3 pages of a DescribeSnapshots operation.
4315//    pageNum := 0
4316//    err := client.DescribeSnapshotsPages(params,
4317//        func(page *elasticache.DescribeSnapshotsOutput, lastPage bool) bool {
4318//            pageNum++
4319//            fmt.Println(page)
4320//            return pageNum <= 3
4321//        })
4322//
4323func (c *ElastiCache) DescribeSnapshotsPages(input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool) error {
4324	return c.DescribeSnapshotsPagesWithContext(aws.BackgroundContext(), input, fn)
4325}
4326
4327// DescribeSnapshotsPagesWithContext same as DescribeSnapshotsPages except
4328// it takes a Context and allows setting request options on the pages.
4329//
4330// The context must be non-nil and will be used for request cancellation. If
4331// the context is nil a panic will occur. In the future the SDK may create
4332// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4333// for more information on using Contexts.
4334func (c *ElastiCache) DescribeSnapshotsPagesWithContext(ctx aws.Context, input *DescribeSnapshotsInput, fn func(*DescribeSnapshotsOutput, bool) bool, opts ...request.Option) error {
4335	p := request.Pagination{
4336		NewRequest: func() (*request.Request, error) {
4337			var inCpy *DescribeSnapshotsInput
4338			if input != nil {
4339				tmp := *input
4340				inCpy = &tmp
4341			}
4342			req, _ := c.DescribeSnapshotsRequest(inCpy)
4343			req.SetContext(ctx)
4344			req.ApplyOptions(opts...)
4345			return req, nil
4346		},
4347	}
4348
4349	for p.Next() {
4350		if !fn(p.Page().(*DescribeSnapshotsOutput), !p.HasNextPage()) {
4351			break
4352		}
4353	}
4354
4355	return p.Err()
4356}
4357
4358const opDescribeUpdateActions = "DescribeUpdateActions"
4359
4360// DescribeUpdateActionsRequest generates a "aws/request.Request" representing the
4361// client's request for the DescribeUpdateActions operation. The "output" return
4362// value will be populated with the request's response once the request completes
4363// successfully.
4364//
4365// Use "Send" method on the returned Request to send the API call to the service.
4366// the "output" return value is not valid until after Send returns without error.
4367//
4368// See DescribeUpdateActions for more information on using the DescribeUpdateActions
4369// API call, and error handling.
4370//
4371// This method is useful when you want to inject custom logic or configuration
4372// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4373//
4374//
4375//    // Example sending a request using the DescribeUpdateActionsRequest method.
4376//    req, resp := client.DescribeUpdateActionsRequest(params)
4377//
4378//    err := req.Send()
4379//    if err == nil { // resp is now filled
4380//        fmt.Println(resp)
4381//    }
4382//
4383// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUpdateActions
4384func (c *ElastiCache) DescribeUpdateActionsRequest(input *DescribeUpdateActionsInput) (req *request.Request, output *DescribeUpdateActionsOutput) {
4385	op := &request.Operation{
4386		Name:       opDescribeUpdateActions,
4387		HTTPMethod: "POST",
4388		HTTPPath:   "/",
4389		Paginator: &request.Paginator{
4390			InputTokens:     []string{"Marker"},
4391			OutputTokens:    []string{"Marker"},
4392			LimitToken:      "MaxRecords",
4393			TruncationToken: "",
4394		},
4395	}
4396
4397	if input == nil {
4398		input = &DescribeUpdateActionsInput{}
4399	}
4400
4401	output = &DescribeUpdateActionsOutput{}
4402	req = c.newRequest(op, input, output)
4403	return
4404}
4405
4406// DescribeUpdateActions API operation for Amazon ElastiCache.
4407//
4408// Returns details of the update actions
4409//
4410// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4411// with awserr.Error's Code and Message methods to get detailed information about
4412// the error.
4413//
4414// See the AWS API reference guide for Amazon ElastiCache's
4415// API operation DescribeUpdateActions for usage and error information.
4416//
4417// Returned Error Codes:
4418//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4419//   The value for a parameter is invalid.
4420//
4421//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4422//   Two or more incompatible parameters were specified.
4423//
4424// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DescribeUpdateActions
4425func (c *ElastiCache) DescribeUpdateActions(input *DescribeUpdateActionsInput) (*DescribeUpdateActionsOutput, error) {
4426	req, out := c.DescribeUpdateActionsRequest(input)
4427	return out, req.Send()
4428}
4429
4430// DescribeUpdateActionsWithContext is the same as DescribeUpdateActions with the addition of
4431// the ability to pass a context and additional request options.
4432//
4433// See DescribeUpdateActions for details on how to use this API operation.
4434//
4435// The context must be non-nil and will be used for request cancellation. If
4436// the context is nil a panic will occur. In the future the SDK may create
4437// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4438// for more information on using Contexts.
4439func (c *ElastiCache) DescribeUpdateActionsWithContext(ctx aws.Context, input *DescribeUpdateActionsInput, opts ...request.Option) (*DescribeUpdateActionsOutput, error) {
4440	req, out := c.DescribeUpdateActionsRequest(input)
4441	req.SetContext(ctx)
4442	req.ApplyOptions(opts...)
4443	return out, req.Send()
4444}
4445
4446// DescribeUpdateActionsPages iterates over the pages of a DescribeUpdateActions operation,
4447// calling the "fn" function with the response data for each page. To stop
4448// iterating, return false from the fn function.
4449//
4450// See DescribeUpdateActions method for more information on how to use this operation.
4451//
4452// Note: This operation can generate multiple requests to a service.
4453//
4454//    // Example iterating over at most 3 pages of a DescribeUpdateActions operation.
4455//    pageNum := 0
4456//    err := client.DescribeUpdateActionsPages(params,
4457//        func(page *elasticache.DescribeUpdateActionsOutput, lastPage bool) bool {
4458//            pageNum++
4459//            fmt.Println(page)
4460//            return pageNum <= 3
4461//        })
4462//
4463func (c *ElastiCache) DescribeUpdateActionsPages(input *DescribeUpdateActionsInput, fn func(*DescribeUpdateActionsOutput, bool) bool) error {
4464	return c.DescribeUpdateActionsPagesWithContext(aws.BackgroundContext(), input, fn)
4465}
4466
4467// DescribeUpdateActionsPagesWithContext same as DescribeUpdateActionsPages except
4468// it takes a Context and allows setting request options on the pages.
4469//
4470// The context must be non-nil and will be used for request cancellation. If
4471// the context is nil a panic will occur. In the future the SDK may create
4472// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4473// for more information on using Contexts.
4474func (c *ElastiCache) DescribeUpdateActionsPagesWithContext(ctx aws.Context, input *DescribeUpdateActionsInput, fn func(*DescribeUpdateActionsOutput, bool) bool, opts ...request.Option) error {
4475	p := request.Pagination{
4476		NewRequest: func() (*request.Request, error) {
4477			var inCpy *DescribeUpdateActionsInput
4478			if input != nil {
4479				tmp := *input
4480				inCpy = &tmp
4481			}
4482			req, _ := c.DescribeUpdateActionsRequest(inCpy)
4483			req.SetContext(ctx)
4484			req.ApplyOptions(opts...)
4485			return req, nil
4486		},
4487	}
4488
4489	for p.Next() {
4490		if !fn(p.Page().(*DescribeUpdateActionsOutput), !p.HasNextPage()) {
4491			break
4492		}
4493	}
4494
4495	return p.Err()
4496}
4497
4498const opDisassociateGlobalReplicationGroup = "DisassociateGlobalReplicationGroup"
4499
4500// DisassociateGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
4501// client's request for the DisassociateGlobalReplicationGroup operation. The "output" return
4502// value will be populated with the request's response once the request completes
4503// successfully.
4504//
4505// Use "Send" method on the returned Request to send the API call to the service.
4506// the "output" return value is not valid until after Send returns without error.
4507//
4508// See DisassociateGlobalReplicationGroup for more information on using the DisassociateGlobalReplicationGroup
4509// API call, and error handling.
4510//
4511// This method is useful when you want to inject custom logic or configuration
4512// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4513//
4514//
4515//    // Example sending a request using the DisassociateGlobalReplicationGroupRequest method.
4516//    req, resp := client.DisassociateGlobalReplicationGroupRequest(params)
4517//
4518//    err := req.Send()
4519//    if err == nil { // resp is now filled
4520//        fmt.Println(resp)
4521//    }
4522//
4523// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DisassociateGlobalReplicationGroup
4524func (c *ElastiCache) DisassociateGlobalReplicationGroupRequest(input *DisassociateGlobalReplicationGroupInput) (req *request.Request, output *DisassociateGlobalReplicationGroupOutput) {
4525	op := &request.Operation{
4526		Name:       opDisassociateGlobalReplicationGroup,
4527		HTTPMethod: "POST",
4528		HTTPPath:   "/",
4529	}
4530
4531	if input == nil {
4532		input = &DisassociateGlobalReplicationGroupInput{}
4533	}
4534
4535	output = &DisassociateGlobalReplicationGroupOutput{}
4536	req = c.newRequest(op, input, output)
4537	return
4538}
4539
4540// DisassociateGlobalReplicationGroup API operation for Amazon ElastiCache.
4541//
4542// Remove a secondary cluster from the Global Datastore using the Global Datastore
4543// name. The secondary cluster will no longer receive updates from the primary
4544// cluster, but will remain as a standalone cluster in that AWS region.
4545//
4546// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4547// with awserr.Error's Code and Message methods to get detailed information about
4548// the error.
4549//
4550// See the AWS API reference guide for Amazon ElastiCache's
4551// API operation DisassociateGlobalReplicationGroup for usage and error information.
4552//
4553// Returned Error Codes:
4554//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
4555//   The Global Datastore does not exist
4556//
4557//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
4558//   The Global Datastore is not available or in primary-only state.
4559//
4560//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4561//   The value for a parameter is invalid.
4562//
4563//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4564//   Two or more incompatible parameters were specified.
4565//
4566// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/DisassociateGlobalReplicationGroup
4567func (c *ElastiCache) DisassociateGlobalReplicationGroup(input *DisassociateGlobalReplicationGroupInput) (*DisassociateGlobalReplicationGroupOutput, error) {
4568	req, out := c.DisassociateGlobalReplicationGroupRequest(input)
4569	return out, req.Send()
4570}
4571
4572// DisassociateGlobalReplicationGroupWithContext is the same as DisassociateGlobalReplicationGroup with the addition of
4573// the ability to pass a context and additional request options.
4574//
4575// See DisassociateGlobalReplicationGroup for details on how to use this API operation.
4576//
4577// The context must be non-nil and will be used for request cancellation. If
4578// the context is nil a panic will occur. In the future the SDK may create
4579// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4580// for more information on using Contexts.
4581func (c *ElastiCache) DisassociateGlobalReplicationGroupWithContext(ctx aws.Context, input *DisassociateGlobalReplicationGroupInput, opts ...request.Option) (*DisassociateGlobalReplicationGroupOutput, error) {
4582	req, out := c.DisassociateGlobalReplicationGroupRequest(input)
4583	req.SetContext(ctx)
4584	req.ApplyOptions(opts...)
4585	return out, req.Send()
4586}
4587
4588const opFailoverGlobalReplicationGroup = "FailoverGlobalReplicationGroup"
4589
4590// FailoverGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
4591// client's request for the FailoverGlobalReplicationGroup operation. The "output" return
4592// value will be populated with the request's response once the request completes
4593// successfully.
4594//
4595// Use "Send" method on the returned Request to send the API call to the service.
4596// the "output" return value is not valid until after Send returns without error.
4597//
4598// See FailoverGlobalReplicationGroup for more information on using the FailoverGlobalReplicationGroup
4599// API call, and error handling.
4600//
4601// This method is useful when you want to inject custom logic or configuration
4602// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4603//
4604//
4605//    // Example sending a request using the FailoverGlobalReplicationGroupRequest method.
4606//    req, resp := client.FailoverGlobalReplicationGroupRequest(params)
4607//
4608//    err := req.Send()
4609//    if err == nil { // resp is now filled
4610//        fmt.Println(resp)
4611//    }
4612//
4613// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/FailoverGlobalReplicationGroup
4614func (c *ElastiCache) FailoverGlobalReplicationGroupRequest(input *FailoverGlobalReplicationGroupInput) (req *request.Request, output *FailoverGlobalReplicationGroupOutput) {
4615	op := &request.Operation{
4616		Name:       opFailoverGlobalReplicationGroup,
4617		HTTPMethod: "POST",
4618		HTTPPath:   "/",
4619	}
4620
4621	if input == nil {
4622		input = &FailoverGlobalReplicationGroupInput{}
4623	}
4624
4625	output = &FailoverGlobalReplicationGroupOutput{}
4626	req = c.newRequest(op, input, output)
4627	return
4628}
4629
4630// FailoverGlobalReplicationGroup API operation for Amazon ElastiCache.
4631//
4632// Used to failover the primary region to a selected secondary region. The selected
4633// secondary region will become primary, and all other clusters will become
4634// secondary.
4635//
4636// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4637// with awserr.Error's Code and Message methods to get detailed information about
4638// the error.
4639//
4640// See the AWS API reference guide for Amazon ElastiCache's
4641// API operation FailoverGlobalReplicationGroup for usage and error information.
4642//
4643// Returned Error Codes:
4644//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
4645//   The Global Datastore does not exist
4646//
4647//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
4648//   The Global Datastore is not available or in primary-only state.
4649//
4650//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4651//   The value for a parameter is invalid.
4652//
4653//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4654//   Two or more incompatible parameters were specified.
4655//
4656// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/FailoverGlobalReplicationGroup
4657func (c *ElastiCache) FailoverGlobalReplicationGroup(input *FailoverGlobalReplicationGroupInput) (*FailoverGlobalReplicationGroupOutput, error) {
4658	req, out := c.FailoverGlobalReplicationGroupRequest(input)
4659	return out, req.Send()
4660}
4661
4662// FailoverGlobalReplicationGroupWithContext is the same as FailoverGlobalReplicationGroup with the addition of
4663// the ability to pass a context and additional request options.
4664//
4665// See FailoverGlobalReplicationGroup for details on how to use this API operation.
4666//
4667// The context must be non-nil and will be used for request cancellation. If
4668// the context is nil a panic will occur. In the future the SDK may create
4669// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4670// for more information on using Contexts.
4671func (c *ElastiCache) FailoverGlobalReplicationGroupWithContext(ctx aws.Context, input *FailoverGlobalReplicationGroupInput, opts ...request.Option) (*FailoverGlobalReplicationGroupOutput, error) {
4672	req, out := c.FailoverGlobalReplicationGroupRequest(input)
4673	req.SetContext(ctx)
4674	req.ApplyOptions(opts...)
4675	return out, req.Send()
4676}
4677
4678const opIncreaseNodeGroupsInGlobalReplicationGroup = "IncreaseNodeGroupsInGlobalReplicationGroup"
4679
4680// IncreaseNodeGroupsInGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
4681// client's request for the IncreaseNodeGroupsInGlobalReplicationGroup operation. The "output" return
4682// value will be populated with the request's response once the request completes
4683// successfully.
4684//
4685// Use "Send" method on the returned Request to send the API call to the service.
4686// the "output" return value is not valid until after Send returns without error.
4687//
4688// See IncreaseNodeGroupsInGlobalReplicationGroup for more information on using the IncreaseNodeGroupsInGlobalReplicationGroup
4689// API call, and error handling.
4690//
4691// This method is useful when you want to inject custom logic or configuration
4692// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4693//
4694//
4695//    // Example sending a request using the IncreaseNodeGroupsInGlobalReplicationGroupRequest method.
4696//    req, resp := client.IncreaseNodeGroupsInGlobalReplicationGroupRequest(params)
4697//
4698//    err := req.Send()
4699//    if err == nil { // resp is now filled
4700//        fmt.Println(resp)
4701//    }
4702//
4703// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseNodeGroupsInGlobalReplicationGroup
4704func (c *ElastiCache) IncreaseNodeGroupsInGlobalReplicationGroupRequest(input *IncreaseNodeGroupsInGlobalReplicationGroupInput) (req *request.Request, output *IncreaseNodeGroupsInGlobalReplicationGroupOutput) {
4705	op := &request.Operation{
4706		Name:       opIncreaseNodeGroupsInGlobalReplicationGroup,
4707		HTTPMethod: "POST",
4708		HTTPPath:   "/",
4709	}
4710
4711	if input == nil {
4712		input = &IncreaseNodeGroupsInGlobalReplicationGroupInput{}
4713	}
4714
4715	output = &IncreaseNodeGroupsInGlobalReplicationGroupOutput{}
4716	req = c.newRequest(op, input, output)
4717	return
4718}
4719
4720// IncreaseNodeGroupsInGlobalReplicationGroup API operation for Amazon ElastiCache.
4721//
4722// Increase the number of node groups in the Global Datastore
4723//
4724// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4725// with awserr.Error's Code and Message methods to get detailed information about
4726// the error.
4727//
4728// See the AWS API reference guide for Amazon ElastiCache's
4729// API operation IncreaseNodeGroupsInGlobalReplicationGroup for usage and error information.
4730//
4731// Returned Error Codes:
4732//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
4733//   The Global Datastore does not exist
4734//
4735//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
4736//   The Global Datastore is not available or in primary-only state.
4737//
4738//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4739//   The value for a parameter is invalid.
4740//
4741// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseNodeGroupsInGlobalReplicationGroup
4742func (c *ElastiCache) IncreaseNodeGroupsInGlobalReplicationGroup(input *IncreaseNodeGroupsInGlobalReplicationGroupInput) (*IncreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
4743	req, out := c.IncreaseNodeGroupsInGlobalReplicationGroupRequest(input)
4744	return out, req.Send()
4745}
4746
4747// IncreaseNodeGroupsInGlobalReplicationGroupWithContext is the same as IncreaseNodeGroupsInGlobalReplicationGroup with the addition of
4748// the ability to pass a context and additional request options.
4749//
4750// See IncreaseNodeGroupsInGlobalReplicationGroup for details on how to use this API operation.
4751//
4752// The context must be non-nil and will be used for request cancellation. If
4753// the context is nil a panic will occur. In the future the SDK may create
4754// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4755// for more information on using Contexts.
4756func (c *ElastiCache) IncreaseNodeGroupsInGlobalReplicationGroupWithContext(ctx aws.Context, input *IncreaseNodeGroupsInGlobalReplicationGroupInput, opts ...request.Option) (*IncreaseNodeGroupsInGlobalReplicationGroupOutput, error) {
4757	req, out := c.IncreaseNodeGroupsInGlobalReplicationGroupRequest(input)
4758	req.SetContext(ctx)
4759	req.ApplyOptions(opts...)
4760	return out, req.Send()
4761}
4762
4763const opIncreaseReplicaCount = "IncreaseReplicaCount"
4764
4765// IncreaseReplicaCountRequest generates a "aws/request.Request" representing the
4766// client's request for the IncreaseReplicaCount operation. The "output" return
4767// value will be populated with the request's response once the request completes
4768// successfully.
4769//
4770// Use "Send" method on the returned Request to send the API call to the service.
4771// the "output" return value is not valid until after Send returns without error.
4772//
4773// See IncreaseReplicaCount for more information on using the IncreaseReplicaCount
4774// API call, and error handling.
4775//
4776// This method is useful when you want to inject custom logic or configuration
4777// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4778//
4779//
4780//    // Example sending a request using the IncreaseReplicaCountRequest method.
4781//    req, resp := client.IncreaseReplicaCountRequest(params)
4782//
4783//    err := req.Send()
4784//    if err == nil { // resp is now filled
4785//        fmt.Println(resp)
4786//    }
4787//
4788// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseReplicaCount
4789func (c *ElastiCache) IncreaseReplicaCountRequest(input *IncreaseReplicaCountInput) (req *request.Request, output *IncreaseReplicaCountOutput) {
4790	op := &request.Operation{
4791		Name:       opIncreaseReplicaCount,
4792		HTTPMethod: "POST",
4793		HTTPPath:   "/",
4794	}
4795
4796	if input == nil {
4797		input = &IncreaseReplicaCountInput{}
4798	}
4799
4800	output = &IncreaseReplicaCountOutput{}
4801	req = c.newRequest(op, input, output)
4802	return
4803}
4804
4805// IncreaseReplicaCount API operation for Amazon ElastiCache.
4806//
4807// Dynamically increases the number of replics in a Redis (cluster mode disabled)
4808// replication group or the number of replica nodes in one or more node groups
4809// (shards) of a Redis (cluster mode enabled) replication group. This operation
4810// is performed with no cluster down time.
4811//
4812// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4813// with awserr.Error's Code and Message methods to get detailed information about
4814// the error.
4815//
4816// See the AWS API reference guide for Amazon ElastiCache's
4817// API operation IncreaseReplicaCount for usage and error information.
4818//
4819// Returned Error Codes:
4820//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4821//   The specified replication group does not exist.
4822//
4823//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
4824//   The requested replication group is not in the available state.
4825//
4826//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
4827//   The requested cluster is not in the available state.
4828//
4829//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
4830//   The VPC network is in an invalid state.
4831//
4832//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
4833//   The requested cache node type is not available in the specified Availability
4834//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
4835//   in the ElastiCache User Guide.
4836//
4837//   * ErrCodeClusterQuotaForCustomerExceededFault "ClusterQuotaForCustomerExceeded"
4838//   The request cannot be processed because it would exceed the allowed number
4839//   of clusters per customer.
4840//
4841//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
4842//   The request cannot be processed because it would exceed the maximum allowed
4843//   number of node groups (shards) in a single replication group. The default
4844//   maximum is 90
4845//
4846//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
4847//   The request cannot be processed because it would exceed the allowed number
4848//   of cache nodes per customer.
4849//
4850//   * ErrCodeNoOperationFault "NoOperationFault"
4851//   The operation was not performed because no changes were required.
4852//
4853//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
4854//   The KMS key supplied is not valid.
4855//
4856//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4857//   The value for a parameter is invalid.
4858//
4859//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4860//   Two or more incompatible parameters were specified.
4861//
4862// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/IncreaseReplicaCount
4863func (c *ElastiCache) IncreaseReplicaCount(input *IncreaseReplicaCountInput) (*IncreaseReplicaCountOutput, error) {
4864	req, out := c.IncreaseReplicaCountRequest(input)
4865	return out, req.Send()
4866}
4867
4868// IncreaseReplicaCountWithContext is the same as IncreaseReplicaCount with the addition of
4869// the ability to pass a context and additional request options.
4870//
4871// See IncreaseReplicaCount for details on how to use this API operation.
4872//
4873// The context must be non-nil and will be used for request cancellation. If
4874// the context is nil a panic will occur. In the future the SDK may create
4875// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4876// for more information on using Contexts.
4877func (c *ElastiCache) IncreaseReplicaCountWithContext(ctx aws.Context, input *IncreaseReplicaCountInput, opts ...request.Option) (*IncreaseReplicaCountOutput, error) {
4878	req, out := c.IncreaseReplicaCountRequest(input)
4879	req.SetContext(ctx)
4880	req.ApplyOptions(opts...)
4881	return out, req.Send()
4882}
4883
4884const opListAllowedNodeTypeModifications = "ListAllowedNodeTypeModifications"
4885
4886// ListAllowedNodeTypeModificationsRequest generates a "aws/request.Request" representing the
4887// client's request for the ListAllowedNodeTypeModifications operation. The "output" return
4888// value will be populated with the request's response once the request completes
4889// successfully.
4890//
4891// Use "Send" method on the returned Request to send the API call to the service.
4892// the "output" return value is not valid until after Send returns without error.
4893//
4894// See ListAllowedNodeTypeModifications for more information on using the ListAllowedNodeTypeModifications
4895// API call, and error handling.
4896//
4897// This method is useful when you want to inject custom logic or configuration
4898// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4899//
4900//
4901//    // Example sending a request using the ListAllowedNodeTypeModificationsRequest method.
4902//    req, resp := client.ListAllowedNodeTypeModificationsRequest(params)
4903//
4904//    err := req.Send()
4905//    if err == nil { // resp is now filled
4906//        fmt.Println(resp)
4907//    }
4908//
4909// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListAllowedNodeTypeModifications
4910func (c *ElastiCache) ListAllowedNodeTypeModificationsRequest(input *ListAllowedNodeTypeModificationsInput) (req *request.Request, output *ListAllowedNodeTypeModificationsOutput) {
4911	op := &request.Operation{
4912		Name:       opListAllowedNodeTypeModifications,
4913		HTTPMethod: "POST",
4914		HTTPPath:   "/",
4915	}
4916
4917	if input == nil {
4918		input = &ListAllowedNodeTypeModificationsInput{}
4919	}
4920
4921	output = &ListAllowedNodeTypeModificationsOutput{}
4922	req = c.newRequest(op, input, output)
4923	return
4924}
4925
4926// ListAllowedNodeTypeModifications API operation for Amazon ElastiCache.
4927//
4928// Lists all available node types that you can scale your Redis cluster's or
4929// replication group's current node type.
4930//
4931// When you use the ModifyCacheCluster or ModifyReplicationGroup operations
4932// to scale your cluster or replication group, the value of the CacheNodeType
4933// parameter must be one of the node types returned by this operation.
4934//
4935// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4936// with awserr.Error's Code and Message methods to get detailed information about
4937// the error.
4938//
4939// See the AWS API reference guide for Amazon ElastiCache's
4940// API operation ListAllowedNodeTypeModifications for usage and error information.
4941//
4942// Returned Error Codes:
4943//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
4944//   The requested cluster ID does not refer to an existing cluster.
4945//
4946//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
4947//   The specified replication group does not exist.
4948//
4949//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
4950//   Two or more incompatible parameters were specified.
4951//
4952//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
4953//   The value for a parameter is invalid.
4954//
4955// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListAllowedNodeTypeModifications
4956func (c *ElastiCache) ListAllowedNodeTypeModifications(input *ListAllowedNodeTypeModificationsInput) (*ListAllowedNodeTypeModificationsOutput, error) {
4957	req, out := c.ListAllowedNodeTypeModificationsRequest(input)
4958	return out, req.Send()
4959}
4960
4961// ListAllowedNodeTypeModificationsWithContext is the same as ListAllowedNodeTypeModifications with the addition of
4962// the ability to pass a context and additional request options.
4963//
4964// See ListAllowedNodeTypeModifications for details on how to use this API operation.
4965//
4966// The context must be non-nil and will be used for request cancellation. If
4967// the context is nil a panic will occur. In the future the SDK may create
4968// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4969// for more information on using Contexts.
4970func (c *ElastiCache) ListAllowedNodeTypeModificationsWithContext(ctx aws.Context, input *ListAllowedNodeTypeModificationsInput, opts ...request.Option) (*ListAllowedNodeTypeModificationsOutput, error) {
4971	req, out := c.ListAllowedNodeTypeModificationsRequest(input)
4972	req.SetContext(ctx)
4973	req.ApplyOptions(opts...)
4974	return out, req.Send()
4975}
4976
4977const opListTagsForResource = "ListTagsForResource"
4978
4979// ListTagsForResourceRequest generates a "aws/request.Request" representing the
4980// client's request for the ListTagsForResource operation. The "output" return
4981// value will be populated with the request's response once the request completes
4982// successfully.
4983//
4984// Use "Send" method on the returned Request to send the API call to the service.
4985// the "output" return value is not valid until after Send returns without error.
4986//
4987// See ListTagsForResource for more information on using the ListTagsForResource
4988// API call, and error handling.
4989//
4990// This method is useful when you want to inject custom logic or configuration
4991// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4992//
4993//
4994//    // Example sending a request using the ListTagsForResourceRequest method.
4995//    req, resp := client.ListTagsForResourceRequest(params)
4996//
4997//    err := req.Send()
4998//    if err == nil { // resp is now filled
4999//        fmt.Println(resp)
5000//    }
5001//
5002// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListTagsForResource
5003func (c *ElastiCache) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *TagListMessage) {
5004	op := &request.Operation{
5005		Name:       opListTagsForResource,
5006		HTTPMethod: "POST",
5007		HTTPPath:   "/",
5008	}
5009
5010	if input == nil {
5011		input = &ListTagsForResourceInput{}
5012	}
5013
5014	output = &TagListMessage{}
5015	req = c.newRequest(op, input, output)
5016	return
5017}
5018
5019// ListTagsForResource API operation for Amazon ElastiCache.
5020//
5021// Lists all cost allocation tags currently on the named resource. A cost allocation
5022// tag is a key-value pair where the key is case-sensitive and the value is
5023// optional. You can use cost allocation tags to categorize and track your AWS
5024// costs.
5025//
5026// If the cluster is not in the available state, ListTagsForResource returns
5027// an error.
5028//
5029// You can have a maximum of 50 cost allocation tags on an ElastiCache resource.
5030// For more information, see Monitoring Costs with Tags (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Tagging.html).
5031//
5032// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5033// with awserr.Error's Code and Message methods to get detailed information about
5034// the error.
5035//
5036// See the AWS API reference guide for Amazon ElastiCache's
5037// API operation ListTagsForResource for usage and error information.
5038//
5039// Returned Error Codes:
5040//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5041//   The requested cluster ID does not refer to an existing cluster.
5042//
5043//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
5044//   The requested snapshot name does not refer to an existing snapshot.
5045//
5046//   * ErrCodeInvalidARNFault "InvalidARN"
5047//   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
5048//
5049// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ListTagsForResource
5050func (c *ElastiCache) ListTagsForResource(input *ListTagsForResourceInput) (*TagListMessage, error) {
5051	req, out := c.ListTagsForResourceRequest(input)
5052	return out, req.Send()
5053}
5054
5055// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
5056// the ability to pass a context and additional request options.
5057//
5058// See ListTagsForResource for details on how to use this API operation.
5059//
5060// The context must be non-nil and will be used for request cancellation. If
5061// the context is nil a panic will occur. In the future the SDK may create
5062// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5063// for more information on using Contexts.
5064func (c *ElastiCache) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*TagListMessage, error) {
5065	req, out := c.ListTagsForResourceRequest(input)
5066	req.SetContext(ctx)
5067	req.ApplyOptions(opts...)
5068	return out, req.Send()
5069}
5070
5071const opModifyCacheCluster = "ModifyCacheCluster"
5072
5073// ModifyCacheClusterRequest generates a "aws/request.Request" representing the
5074// client's request for the ModifyCacheCluster operation. The "output" return
5075// value will be populated with the request's response once the request completes
5076// successfully.
5077//
5078// Use "Send" method on the returned Request to send the API call to the service.
5079// the "output" return value is not valid until after Send returns without error.
5080//
5081// See ModifyCacheCluster for more information on using the ModifyCacheCluster
5082// API call, and error handling.
5083//
5084// This method is useful when you want to inject custom logic or configuration
5085// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5086//
5087//
5088//    // Example sending a request using the ModifyCacheClusterRequest method.
5089//    req, resp := client.ModifyCacheClusterRequest(params)
5090//
5091//    err := req.Send()
5092//    if err == nil { // resp is now filled
5093//        fmt.Println(resp)
5094//    }
5095//
5096// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster
5097func (c *ElastiCache) ModifyCacheClusterRequest(input *ModifyCacheClusterInput) (req *request.Request, output *ModifyCacheClusterOutput) {
5098	op := &request.Operation{
5099		Name:       opModifyCacheCluster,
5100		HTTPMethod: "POST",
5101		HTTPPath:   "/",
5102	}
5103
5104	if input == nil {
5105		input = &ModifyCacheClusterInput{}
5106	}
5107
5108	output = &ModifyCacheClusterOutput{}
5109	req = c.newRequest(op, input, output)
5110	return
5111}
5112
5113// ModifyCacheCluster API operation for Amazon ElastiCache.
5114//
5115// Modifies the settings for a cluster. You can use this operation to change
5116// one or more cluster configuration parameters by specifying the parameters
5117// and the new values.
5118//
5119// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5120// with awserr.Error's Code and Message methods to get detailed information about
5121// the error.
5122//
5123// See the AWS API reference guide for Amazon ElastiCache's
5124// API operation ModifyCacheCluster for usage and error information.
5125//
5126// Returned Error Codes:
5127//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5128//   The requested cluster is not in the available state.
5129//
5130//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
5131//   The current state of the cache security group does not allow deletion.
5132//
5133//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
5134//   The requested cache node type is not available in the specified Availability
5135//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
5136//   in the ElastiCache User Guide.
5137//
5138//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5139//   The requested cluster ID does not refer to an existing cluster.
5140//
5141//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
5142//   The request cannot be processed because it would exceed the allowed number
5143//   of cache nodes in a single cluster.
5144//
5145//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
5146//   The request cannot be processed because it would exceed the allowed number
5147//   of cache nodes per customer.
5148//
5149//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
5150//   The requested cache security group name does not refer to an existing cache
5151//   security group.
5152//
5153//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
5154//   The requested cache parameter group name does not refer to an existing cache
5155//   parameter group.
5156//
5157//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
5158//   The VPC network is in an invalid state.
5159//
5160//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5161//   The value for a parameter is invalid.
5162//
5163//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5164//   Two or more incompatible parameters were specified.
5165//
5166// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheCluster
5167func (c *ElastiCache) ModifyCacheCluster(input *ModifyCacheClusterInput) (*ModifyCacheClusterOutput, error) {
5168	req, out := c.ModifyCacheClusterRequest(input)
5169	return out, req.Send()
5170}
5171
5172// ModifyCacheClusterWithContext is the same as ModifyCacheCluster with the addition of
5173// the ability to pass a context and additional request options.
5174//
5175// See ModifyCacheCluster for details on how to use this API operation.
5176//
5177// The context must be non-nil and will be used for request cancellation. If
5178// the context is nil a panic will occur. In the future the SDK may create
5179// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5180// for more information on using Contexts.
5181func (c *ElastiCache) ModifyCacheClusterWithContext(ctx aws.Context, input *ModifyCacheClusterInput, opts ...request.Option) (*ModifyCacheClusterOutput, error) {
5182	req, out := c.ModifyCacheClusterRequest(input)
5183	req.SetContext(ctx)
5184	req.ApplyOptions(opts...)
5185	return out, req.Send()
5186}
5187
5188const opModifyCacheParameterGroup = "ModifyCacheParameterGroup"
5189
5190// ModifyCacheParameterGroupRequest generates a "aws/request.Request" representing the
5191// client's request for the ModifyCacheParameterGroup operation. The "output" return
5192// value will be populated with the request's response once the request completes
5193// successfully.
5194//
5195// Use "Send" method on the returned Request to send the API call to the service.
5196// the "output" return value is not valid until after Send returns without error.
5197//
5198// See ModifyCacheParameterGroup for more information on using the ModifyCacheParameterGroup
5199// API call, and error handling.
5200//
5201// This method is useful when you want to inject custom logic or configuration
5202// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5203//
5204//
5205//    // Example sending a request using the ModifyCacheParameterGroupRequest method.
5206//    req, resp := client.ModifyCacheParameterGroupRequest(params)
5207//
5208//    err := req.Send()
5209//    if err == nil { // resp is now filled
5210//        fmt.Println(resp)
5211//    }
5212//
5213// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheParameterGroup
5214func (c *ElastiCache) ModifyCacheParameterGroupRequest(input *ModifyCacheParameterGroupInput) (req *request.Request, output *CacheParameterGroupNameMessage) {
5215	op := &request.Operation{
5216		Name:       opModifyCacheParameterGroup,
5217		HTTPMethod: "POST",
5218		HTTPPath:   "/",
5219	}
5220
5221	if input == nil {
5222		input = &ModifyCacheParameterGroupInput{}
5223	}
5224
5225	output = &CacheParameterGroupNameMessage{}
5226	req = c.newRequest(op, input, output)
5227	return
5228}
5229
5230// ModifyCacheParameterGroup API operation for Amazon ElastiCache.
5231//
5232// Modifies the parameters of a cache parameter group. You can modify up to
5233// 20 parameters in a single request by submitting a list parameter name and
5234// value pairs.
5235//
5236// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5237// with awserr.Error's Code and Message methods to get detailed information about
5238// the error.
5239//
5240// See the AWS API reference guide for Amazon ElastiCache's
5241// API operation ModifyCacheParameterGroup for usage and error information.
5242//
5243// Returned Error Codes:
5244//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
5245//   The requested cache parameter group name does not refer to an existing cache
5246//   parameter group.
5247//
5248//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
5249//   The current state of the cache parameter group does not allow the requested
5250//   operation to occur.
5251//
5252//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5253//   The value for a parameter is invalid.
5254//
5255//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5256//   Two or more incompatible parameters were specified.
5257//
5258//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
5259//   The Global Datastore is not available or in primary-only state.
5260//
5261// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheParameterGroup
5262func (c *ElastiCache) ModifyCacheParameterGroup(input *ModifyCacheParameterGroupInput) (*CacheParameterGroupNameMessage, error) {
5263	req, out := c.ModifyCacheParameterGroupRequest(input)
5264	return out, req.Send()
5265}
5266
5267// ModifyCacheParameterGroupWithContext is the same as ModifyCacheParameterGroup with the addition of
5268// the ability to pass a context and additional request options.
5269//
5270// See ModifyCacheParameterGroup for details on how to use this API operation.
5271//
5272// The context must be non-nil and will be used for request cancellation. If
5273// the context is nil a panic will occur. In the future the SDK may create
5274// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5275// for more information on using Contexts.
5276func (c *ElastiCache) ModifyCacheParameterGroupWithContext(ctx aws.Context, input *ModifyCacheParameterGroupInput, opts ...request.Option) (*CacheParameterGroupNameMessage, error) {
5277	req, out := c.ModifyCacheParameterGroupRequest(input)
5278	req.SetContext(ctx)
5279	req.ApplyOptions(opts...)
5280	return out, req.Send()
5281}
5282
5283const opModifyCacheSubnetGroup = "ModifyCacheSubnetGroup"
5284
5285// ModifyCacheSubnetGroupRequest generates a "aws/request.Request" representing the
5286// client's request for the ModifyCacheSubnetGroup operation. The "output" return
5287// value will be populated with the request's response once the request completes
5288// successfully.
5289//
5290// Use "Send" method on the returned Request to send the API call to the service.
5291// the "output" return value is not valid until after Send returns without error.
5292//
5293// See ModifyCacheSubnetGroup for more information on using the ModifyCacheSubnetGroup
5294// API call, and error handling.
5295//
5296// This method is useful when you want to inject custom logic or configuration
5297// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5298//
5299//
5300//    // Example sending a request using the ModifyCacheSubnetGroupRequest method.
5301//    req, resp := client.ModifyCacheSubnetGroupRequest(params)
5302//
5303//    err := req.Send()
5304//    if err == nil { // resp is now filled
5305//        fmt.Println(resp)
5306//    }
5307//
5308// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheSubnetGroup
5309func (c *ElastiCache) ModifyCacheSubnetGroupRequest(input *ModifyCacheSubnetGroupInput) (req *request.Request, output *ModifyCacheSubnetGroupOutput) {
5310	op := &request.Operation{
5311		Name:       opModifyCacheSubnetGroup,
5312		HTTPMethod: "POST",
5313		HTTPPath:   "/",
5314	}
5315
5316	if input == nil {
5317		input = &ModifyCacheSubnetGroupInput{}
5318	}
5319
5320	output = &ModifyCacheSubnetGroupOutput{}
5321	req = c.newRequest(op, input, output)
5322	return
5323}
5324
5325// ModifyCacheSubnetGroup API operation for Amazon ElastiCache.
5326//
5327// Modifies an existing cache subnet group.
5328//
5329// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5330// with awserr.Error's Code and Message methods to get detailed information about
5331// the error.
5332//
5333// See the AWS API reference guide for Amazon ElastiCache's
5334// API operation ModifyCacheSubnetGroup for usage and error information.
5335//
5336// Returned Error Codes:
5337//   * ErrCodeCacheSubnetGroupNotFoundFault "CacheSubnetGroupNotFoundFault"
5338//   The requested cache subnet group name does not refer to an existing cache
5339//   subnet group.
5340//
5341//   * ErrCodeCacheSubnetQuotaExceededFault "CacheSubnetQuotaExceededFault"
5342//   The request cannot be processed because it would exceed the allowed number
5343//   of subnets in a cache subnet group.
5344//
5345//   * ErrCodeSubnetInUse "SubnetInUse"
5346//   The requested subnet is being used by another cache subnet group.
5347//
5348//   * ErrCodeInvalidSubnet "InvalidSubnet"
5349//   An invalid subnet identifier was specified.
5350//
5351// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyCacheSubnetGroup
5352func (c *ElastiCache) ModifyCacheSubnetGroup(input *ModifyCacheSubnetGroupInput) (*ModifyCacheSubnetGroupOutput, error) {
5353	req, out := c.ModifyCacheSubnetGroupRequest(input)
5354	return out, req.Send()
5355}
5356
5357// ModifyCacheSubnetGroupWithContext is the same as ModifyCacheSubnetGroup with the addition of
5358// the ability to pass a context and additional request options.
5359//
5360// See ModifyCacheSubnetGroup for details on how to use this API operation.
5361//
5362// The context must be non-nil and will be used for request cancellation. If
5363// the context is nil a panic will occur. In the future the SDK may create
5364// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5365// for more information on using Contexts.
5366func (c *ElastiCache) ModifyCacheSubnetGroupWithContext(ctx aws.Context, input *ModifyCacheSubnetGroupInput, opts ...request.Option) (*ModifyCacheSubnetGroupOutput, error) {
5367	req, out := c.ModifyCacheSubnetGroupRequest(input)
5368	req.SetContext(ctx)
5369	req.ApplyOptions(opts...)
5370	return out, req.Send()
5371}
5372
5373const opModifyGlobalReplicationGroup = "ModifyGlobalReplicationGroup"
5374
5375// ModifyGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
5376// client's request for the ModifyGlobalReplicationGroup operation. The "output" return
5377// value will be populated with the request's response once the request completes
5378// successfully.
5379//
5380// Use "Send" method on the returned Request to send the API call to the service.
5381// the "output" return value is not valid until after Send returns without error.
5382//
5383// See ModifyGlobalReplicationGroup for more information on using the ModifyGlobalReplicationGroup
5384// API call, and error handling.
5385//
5386// This method is useful when you want to inject custom logic or configuration
5387// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5388//
5389//
5390//    // Example sending a request using the ModifyGlobalReplicationGroupRequest method.
5391//    req, resp := client.ModifyGlobalReplicationGroupRequest(params)
5392//
5393//    err := req.Send()
5394//    if err == nil { // resp is now filled
5395//        fmt.Println(resp)
5396//    }
5397//
5398// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyGlobalReplicationGroup
5399func (c *ElastiCache) ModifyGlobalReplicationGroupRequest(input *ModifyGlobalReplicationGroupInput) (req *request.Request, output *ModifyGlobalReplicationGroupOutput) {
5400	op := &request.Operation{
5401		Name:       opModifyGlobalReplicationGroup,
5402		HTTPMethod: "POST",
5403		HTTPPath:   "/",
5404	}
5405
5406	if input == nil {
5407		input = &ModifyGlobalReplicationGroupInput{}
5408	}
5409
5410	output = &ModifyGlobalReplicationGroupOutput{}
5411	req = c.newRequest(op, input, output)
5412	return
5413}
5414
5415// ModifyGlobalReplicationGroup API operation for Amazon ElastiCache.
5416//
5417// Modifies the settings for a Global Datastore.
5418//
5419// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5420// with awserr.Error's Code and Message methods to get detailed information about
5421// the error.
5422//
5423// See the AWS API reference guide for Amazon ElastiCache's
5424// API operation ModifyGlobalReplicationGroup for usage and error information.
5425//
5426// Returned Error Codes:
5427//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
5428//   The Global Datastore does not exist
5429//
5430//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
5431//   The Global Datastore is not available or in primary-only state.
5432//
5433//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5434//   The value for a parameter is invalid.
5435//
5436// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyGlobalReplicationGroup
5437func (c *ElastiCache) ModifyGlobalReplicationGroup(input *ModifyGlobalReplicationGroupInput) (*ModifyGlobalReplicationGroupOutput, error) {
5438	req, out := c.ModifyGlobalReplicationGroupRequest(input)
5439	return out, req.Send()
5440}
5441
5442// ModifyGlobalReplicationGroupWithContext is the same as ModifyGlobalReplicationGroup with the addition of
5443// the ability to pass a context and additional request options.
5444//
5445// See ModifyGlobalReplicationGroup for details on how to use this API operation.
5446//
5447// The context must be non-nil and will be used for request cancellation. If
5448// the context is nil a panic will occur. In the future the SDK may create
5449// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5450// for more information on using Contexts.
5451func (c *ElastiCache) ModifyGlobalReplicationGroupWithContext(ctx aws.Context, input *ModifyGlobalReplicationGroupInput, opts ...request.Option) (*ModifyGlobalReplicationGroupOutput, error) {
5452	req, out := c.ModifyGlobalReplicationGroupRequest(input)
5453	req.SetContext(ctx)
5454	req.ApplyOptions(opts...)
5455	return out, req.Send()
5456}
5457
5458const opModifyReplicationGroup = "ModifyReplicationGroup"
5459
5460// ModifyReplicationGroupRequest generates a "aws/request.Request" representing the
5461// client's request for the ModifyReplicationGroup operation. The "output" return
5462// value will be populated with the request's response once the request completes
5463// successfully.
5464//
5465// Use "Send" method on the returned Request to send the API call to the service.
5466// the "output" return value is not valid until after Send returns without error.
5467//
5468// See ModifyReplicationGroup for more information on using the ModifyReplicationGroup
5469// API call, and error handling.
5470//
5471// This method is useful when you want to inject custom logic or configuration
5472// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5473//
5474//
5475//    // Example sending a request using the ModifyReplicationGroupRequest method.
5476//    req, resp := client.ModifyReplicationGroupRequest(params)
5477//
5478//    err := req.Send()
5479//    if err == nil { // resp is now filled
5480//        fmt.Println(resp)
5481//    }
5482//
5483// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroup
5484func (c *ElastiCache) ModifyReplicationGroupRequest(input *ModifyReplicationGroupInput) (req *request.Request, output *ModifyReplicationGroupOutput) {
5485	op := &request.Operation{
5486		Name:       opModifyReplicationGroup,
5487		HTTPMethod: "POST",
5488		HTTPPath:   "/",
5489	}
5490
5491	if input == nil {
5492		input = &ModifyReplicationGroupInput{}
5493	}
5494
5495	output = &ModifyReplicationGroupOutput{}
5496	req = c.newRequest(op, input, output)
5497	return
5498}
5499
5500// ModifyReplicationGroup API operation for Amazon ElastiCache.
5501//
5502// Modifies the settings for a replication group.
5503//
5504//    * Scaling for Amazon ElastiCache for Redis (cluster mode enabled) (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/scaling-redis-cluster-mode-enabled.html)
5505//    in the ElastiCache User Guide
5506//
5507//    * ModifyReplicationGroupShardConfiguration (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyReplicationGroupShardConfiguration.html)
5508//    in the ElastiCache API Reference
5509//
5510// This operation is valid for Redis only.
5511//
5512// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5513// with awserr.Error's Code and Message methods to get detailed information about
5514// the error.
5515//
5516// See the AWS API reference guide for Amazon ElastiCache's
5517// API operation ModifyReplicationGroup for usage and error information.
5518//
5519// Returned Error Codes:
5520//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
5521//   The specified replication group does not exist.
5522//
5523//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
5524//   The requested replication group is not in the available state.
5525//
5526//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5527//   The requested cluster is not in the available state.
5528//
5529//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
5530//   The current state of the cache security group does not allow deletion.
5531//
5532//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
5533//   The requested cache node type is not available in the specified Availability
5534//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
5535//   in the ElastiCache User Guide.
5536//
5537//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5538//   The requested cluster ID does not refer to an existing cluster.
5539//
5540//   * ErrCodeNodeQuotaForClusterExceededFault "NodeQuotaForClusterExceeded"
5541//   The request cannot be processed because it would exceed the allowed number
5542//   of cache nodes in a single cluster.
5543//
5544//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
5545//   The request cannot be processed because it would exceed the allowed number
5546//   of cache nodes per customer.
5547//
5548//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
5549//   The requested cache security group name does not refer to an existing cache
5550//   security group.
5551//
5552//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
5553//   The requested cache parameter group name does not refer to an existing cache
5554//   parameter group.
5555//
5556//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
5557//   The VPC network is in an invalid state.
5558//
5559//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
5560//   The KMS key supplied is not valid.
5561//
5562//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5563//   The value for a parameter is invalid.
5564//
5565//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5566//   Two or more incompatible parameters were specified.
5567//
5568// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroup
5569func (c *ElastiCache) ModifyReplicationGroup(input *ModifyReplicationGroupInput) (*ModifyReplicationGroupOutput, error) {
5570	req, out := c.ModifyReplicationGroupRequest(input)
5571	return out, req.Send()
5572}
5573
5574// ModifyReplicationGroupWithContext is the same as ModifyReplicationGroup with the addition of
5575// the ability to pass a context and additional request options.
5576//
5577// See ModifyReplicationGroup for details on how to use this API operation.
5578//
5579// The context must be non-nil and will be used for request cancellation. If
5580// the context is nil a panic will occur. In the future the SDK may create
5581// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5582// for more information on using Contexts.
5583func (c *ElastiCache) ModifyReplicationGroupWithContext(ctx aws.Context, input *ModifyReplicationGroupInput, opts ...request.Option) (*ModifyReplicationGroupOutput, error) {
5584	req, out := c.ModifyReplicationGroupRequest(input)
5585	req.SetContext(ctx)
5586	req.ApplyOptions(opts...)
5587	return out, req.Send()
5588}
5589
5590const opModifyReplicationGroupShardConfiguration = "ModifyReplicationGroupShardConfiguration"
5591
5592// ModifyReplicationGroupShardConfigurationRequest generates a "aws/request.Request" representing the
5593// client's request for the ModifyReplicationGroupShardConfiguration operation. The "output" return
5594// value will be populated with the request's response once the request completes
5595// successfully.
5596//
5597// Use "Send" method on the returned Request to send the API call to the service.
5598// the "output" return value is not valid until after Send returns without error.
5599//
5600// See ModifyReplicationGroupShardConfiguration for more information on using the ModifyReplicationGroupShardConfiguration
5601// API call, and error handling.
5602//
5603// This method is useful when you want to inject custom logic or configuration
5604// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5605//
5606//
5607//    // Example sending a request using the ModifyReplicationGroupShardConfigurationRequest method.
5608//    req, resp := client.ModifyReplicationGroupShardConfigurationRequest(params)
5609//
5610//    err := req.Send()
5611//    if err == nil { // resp is now filled
5612//        fmt.Println(resp)
5613//    }
5614//
5615// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroupShardConfiguration
5616func (c *ElastiCache) ModifyReplicationGroupShardConfigurationRequest(input *ModifyReplicationGroupShardConfigurationInput) (req *request.Request, output *ModifyReplicationGroupShardConfigurationOutput) {
5617	op := &request.Operation{
5618		Name:       opModifyReplicationGroupShardConfiguration,
5619		HTTPMethod: "POST",
5620		HTTPPath:   "/",
5621	}
5622
5623	if input == nil {
5624		input = &ModifyReplicationGroupShardConfigurationInput{}
5625	}
5626
5627	output = &ModifyReplicationGroupShardConfigurationOutput{}
5628	req = c.newRequest(op, input, output)
5629	return
5630}
5631
5632// ModifyReplicationGroupShardConfiguration API operation for Amazon ElastiCache.
5633//
5634// Modifies a replication group's shards (node groups) by allowing you to add
5635// shards, remove shards, or rebalance the keyspaces among exisiting shards.
5636//
5637// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5638// with awserr.Error's Code and Message methods to get detailed information about
5639// the error.
5640//
5641// See the AWS API reference guide for Amazon ElastiCache's
5642// API operation ModifyReplicationGroupShardConfiguration for usage and error information.
5643//
5644// Returned Error Codes:
5645//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
5646//   The specified replication group does not exist.
5647//
5648//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
5649//   The requested replication group is not in the available state.
5650//
5651//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5652//   The requested cluster is not in the available state.
5653//
5654//   * ErrCodeInvalidVPCNetworkStateFault "InvalidVPCNetworkStateFault"
5655//   The VPC network is in an invalid state.
5656//
5657//   * ErrCodeInsufficientCacheClusterCapacityFault "InsufficientCacheClusterCapacity"
5658//   The requested cache node type is not available in the specified Availability
5659//   Zone. For more information, see InsufficientCacheClusterCapacity (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ErrorMessages.html#ErrorMessages.INSUFFICIENT_CACHE_CLUSTER_CAPACITY)
5660//   in the ElastiCache User Guide.
5661//
5662//   * ErrCodeNodeGroupsPerReplicationGroupQuotaExceededFault "NodeGroupsPerReplicationGroupQuotaExceeded"
5663//   The request cannot be processed because it would exceed the maximum allowed
5664//   number of node groups (shards) in a single replication group. The default
5665//   maximum is 90
5666//
5667//   * ErrCodeNodeQuotaForCustomerExceededFault "NodeQuotaForCustomerExceeded"
5668//   The request cannot be processed because it would exceed the allowed number
5669//   of cache nodes per customer.
5670//
5671//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
5672//   The KMS key supplied is not valid.
5673//
5674//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5675//   The value for a parameter is invalid.
5676//
5677//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5678//   Two or more incompatible parameters were specified.
5679//
5680// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ModifyReplicationGroupShardConfiguration
5681func (c *ElastiCache) ModifyReplicationGroupShardConfiguration(input *ModifyReplicationGroupShardConfigurationInput) (*ModifyReplicationGroupShardConfigurationOutput, error) {
5682	req, out := c.ModifyReplicationGroupShardConfigurationRequest(input)
5683	return out, req.Send()
5684}
5685
5686// ModifyReplicationGroupShardConfigurationWithContext is the same as ModifyReplicationGroupShardConfiguration with the addition of
5687// the ability to pass a context and additional request options.
5688//
5689// See ModifyReplicationGroupShardConfiguration for details on how to use this API operation.
5690//
5691// The context must be non-nil and will be used for request cancellation. If
5692// the context is nil a panic will occur. In the future the SDK may create
5693// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5694// for more information on using Contexts.
5695func (c *ElastiCache) ModifyReplicationGroupShardConfigurationWithContext(ctx aws.Context, input *ModifyReplicationGroupShardConfigurationInput, opts ...request.Option) (*ModifyReplicationGroupShardConfigurationOutput, error) {
5696	req, out := c.ModifyReplicationGroupShardConfigurationRequest(input)
5697	req.SetContext(ctx)
5698	req.ApplyOptions(opts...)
5699	return out, req.Send()
5700}
5701
5702const opPurchaseReservedCacheNodesOffering = "PurchaseReservedCacheNodesOffering"
5703
5704// PurchaseReservedCacheNodesOfferingRequest generates a "aws/request.Request" representing the
5705// client's request for the PurchaseReservedCacheNodesOffering operation. The "output" return
5706// value will be populated with the request's response once the request completes
5707// successfully.
5708//
5709// Use "Send" method on the returned Request to send the API call to the service.
5710// the "output" return value is not valid until after Send returns without error.
5711//
5712// See PurchaseReservedCacheNodesOffering for more information on using the PurchaseReservedCacheNodesOffering
5713// API call, and error handling.
5714//
5715// This method is useful when you want to inject custom logic or configuration
5716// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5717//
5718//
5719//    // Example sending a request using the PurchaseReservedCacheNodesOfferingRequest method.
5720//    req, resp := client.PurchaseReservedCacheNodesOfferingRequest(params)
5721//
5722//    err := req.Send()
5723//    if err == nil { // resp is now filled
5724//        fmt.Println(resp)
5725//    }
5726//
5727// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/PurchaseReservedCacheNodesOffering
5728func (c *ElastiCache) PurchaseReservedCacheNodesOfferingRequest(input *PurchaseReservedCacheNodesOfferingInput) (req *request.Request, output *PurchaseReservedCacheNodesOfferingOutput) {
5729	op := &request.Operation{
5730		Name:       opPurchaseReservedCacheNodesOffering,
5731		HTTPMethod: "POST",
5732		HTTPPath:   "/",
5733	}
5734
5735	if input == nil {
5736		input = &PurchaseReservedCacheNodesOfferingInput{}
5737	}
5738
5739	output = &PurchaseReservedCacheNodesOfferingOutput{}
5740	req = c.newRequest(op, input, output)
5741	return
5742}
5743
5744// PurchaseReservedCacheNodesOffering API operation for Amazon ElastiCache.
5745//
5746// Allows you to purchase a reserved cache node offering.
5747//
5748// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5749// with awserr.Error's Code and Message methods to get detailed information about
5750// the error.
5751//
5752// See the AWS API reference guide for Amazon ElastiCache's
5753// API operation PurchaseReservedCacheNodesOffering for usage and error information.
5754//
5755// Returned Error Codes:
5756//   * ErrCodeReservedCacheNodesOfferingNotFoundFault "ReservedCacheNodesOfferingNotFound"
5757//   The requested cache node offering does not exist.
5758//
5759//   * ErrCodeReservedCacheNodeAlreadyExistsFault "ReservedCacheNodeAlreadyExists"
5760//   You already have a reservation with the given identifier.
5761//
5762//   * ErrCodeReservedCacheNodeQuotaExceededFault "ReservedCacheNodeQuotaExceeded"
5763//   The request cannot be processed because it would exceed the user's cache
5764//   node quota.
5765//
5766//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5767//   The value for a parameter is invalid.
5768//
5769//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
5770//   Two or more incompatible parameters were specified.
5771//
5772// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/PurchaseReservedCacheNodesOffering
5773func (c *ElastiCache) PurchaseReservedCacheNodesOffering(input *PurchaseReservedCacheNodesOfferingInput) (*PurchaseReservedCacheNodesOfferingOutput, error) {
5774	req, out := c.PurchaseReservedCacheNodesOfferingRequest(input)
5775	return out, req.Send()
5776}
5777
5778// PurchaseReservedCacheNodesOfferingWithContext is the same as PurchaseReservedCacheNodesOffering with the addition of
5779// the ability to pass a context and additional request options.
5780//
5781// See PurchaseReservedCacheNodesOffering for details on how to use this API operation.
5782//
5783// The context must be non-nil and will be used for request cancellation. If
5784// the context is nil a panic will occur. In the future the SDK may create
5785// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5786// for more information on using Contexts.
5787func (c *ElastiCache) PurchaseReservedCacheNodesOfferingWithContext(ctx aws.Context, input *PurchaseReservedCacheNodesOfferingInput, opts ...request.Option) (*PurchaseReservedCacheNodesOfferingOutput, error) {
5788	req, out := c.PurchaseReservedCacheNodesOfferingRequest(input)
5789	req.SetContext(ctx)
5790	req.ApplyOptions(opts...)
5791	return out, req.Send()
5792}
5793
5794const opRebalanceSlotsInGlobalReplicationGroup = "RebalanceSlotsInGlobalReplicationGroup"
5795
5796// RebalanceSlotsInGlobalReplicationGroupRequest generates a "aws/request.Request" representing the
5797// client's request for the RebalanceSlotsInGlobalReplicationGroup operation. The "output" return
5798// value will be populated with the request's response once the request completes
5799// successfully.
5800//
5801// Use "Send" method on the returned Request to send the API call to the service.
5802// the "output" return value is not valid until after Send returns without error.
5803//
5804// See RebalanceSlotsInGlobalReplicationGroup for more information on using the RebalanceSlotsInGlobalReplicationGroup
5805// API call, and error handling.
5806//
5807// This method is useful when you want to inject custom logic or configuration
5808// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5809//
5810//
5811//    // Example sending a request using the RebalanceSlotsInGlobalReplicationGroupRequest method.
5812//    req, resp := client.RebalanceSlotsInGlobalReplicationGroupRequest(params)
5813//
5814//    err := req.Send()
5815//    if err == nil { // resp is now filled
5816//        fmt.Println(resp)
5817//    }
5818//
5819// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebalanceSlotsInGlobalReplicationGroup
5820func (c *ElastiCache) RebalanceSlotsInGlobalReplicationGroupRequest(input *RebalanceSlotsInGlobalReplicationGroupInput) (req *request.Request, output *RebalanceSlotsInGlobalReplicationGroupOutput) {
5821	op := &request.Operation{
5822		Name:       opRebalanceSlotsInGlobalReplicationGroup,
5823		HTTPMethod: "POST",
5824		HTTPPath:   "/",
5825	}
5826
5827	if input == nil {
5828		input = &RebalanceSlotsInGlobalReplicationGroupInput{}
5829	}
5830
5831	output = &RebalanceSlotsInGlobalReplicationGroupOutput{}
5832	req = c.newRequest(op, input, output)
5833	return
5834}
5835
5836// RebalanceSlotsInGlobalReplicationGroup API operation for Amazon ElastiCache.
5837//
5838// Redistribute slots to ensure uniform distribution across existing shards
5839// in the cluster.
5840//
5841// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5842// with awserr.Error's Code and Message methods to get detailed information about
5843// the error.
5844//
5845// See the AWS API reference guide for Amazon ElastiCache's
5846// API operation RebalanceSlotsInGlobalReplicationGroup for usage and error information.
5847//
5848// Returned Error Codes:
5849//   * ErrCodeGlobalReplicationGroupNotFoundFault "GlobalReplicationGroupNotFoundFault"
5850//   The Global Datastore does not exist
5851//
5852//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
5853//   The Global Datastore is not available or in primary-only state.
5854//
5855//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
5856//   The value for a parameter is invalid.
5857//
5858// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebalanceSlotsInGlobalReplicationGroup
5859func (c *ElastiCache) RebalanceSlotsInGlobalReplicationGroup(input *RebalanceSlotsInGlobalReplicationGroupInput) (*RebalanceSlotsInGlobalReplicationGroupOutput, error) {
5860	req, out := c.RebalanceSlotsInGlobalReplicationGroupRequest(input)
5861	return out, req.Send()
5862}
5863
5864// RebalanceSlotsInGlobalReplicationGroupWithContext is the same as RebalanceSlotsInGlobalReplicationGroup with the addition of
5865// the ability to pass a context and additional request options.
5866//
5867// See RebalanceSlotsInGlobalReplicationGroup for details on how to use this API operation.
5868//
5869// The context must be non-nil and will be used for request cancellation. If
5870// the context is nil a panic will occur. In the future the SDK may create
5871// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5872// for more information on using Contexts.
5873func (c *ElastiCache) RebalanceSlotsInGlobalReplicationGroupWithContext(ctx aws.Context, input *RebalanceSlotsInGlobalReplicationGroupInput, opts ...request.Option) (*RebalanceSlotsInGlobalReplicationGroupOutput, error) {
5874	req, out := c.RebalanceSlotsInGlobalReplicationGroupRequest(input)
5875	req.SetContext(ctx)
5876	req.ApplyOptions(opts...)
5877	return out, req.Send()
5878}
5879
5880const opRebootCacheCluster = "RebootCacheCluster"
5881
5882// RebootCacheClusterRequest generates a "aws/request.Request" representing the
5883// client's request for the RebootCacheCluster operation. The "output" return
5884// value will be populated with the request's response once the request completes
5885// successfully.
5886//
5887// Use "Send" method on the returned Request to send the API call to the service.
5888// the "output" return value is not valid until after Send returns without error.
5889//
5890// See RebootCacheCluster for more information on using the RebootCacheCluster
5891// API call, and error handling.
5892//
5893// This method is useful when you want to inject custom logic or configuration
5894// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5895//
5896//
5897//    // Example sending a request using the RebootCacheClusterRequest method.
5898//    req, resp := client.RebootCacheClusterRequest(params)
5899//
5900//    err := req.Send()
5901//    if err == nil { // resp is now filled
5902//        fmt.Println(resp)
5903//    }
5904//
5905// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebootCacheCluster
5906func (c *ElastiCache) RebootCacheClusterRequest(input *RebootCacheClusterInput) (req *request.Request, output *RebootCacheClusterOutput) {
5907	op := &request.Operation{
5908		Name:       opRebootCacheCluster,
5909		HTTPMethod: "POST",
5910		HTTPPath:   "/",
5911	}
5912
5913	if input == nil {
5914		input = &RebootCacheClusterInput{}
5915	}
5916
5917	output = &RebootCacheClusterOutput{}
5918	req = c.newRequest(op, input, output)
5919	return
5920}
5921
5922// RebootCacheCluster API operation for Amazon ElastiCache.
5923//
5924// Reboots some, or all, of the cache nodes within a provisioned cluster. This
5925// operation applies any modified cache parameter groups to the cluster. The
5926// reboot operation takes place as soon as possible, and results in a momentary
5927// outage to the cluster. During the reboot, the cluster status is set to REBOOTING.
5928//
5929// The reboot causes the contents of the cache (for each cache node being rebooted)
5930// to be lost.
5931//
5932// When the reboot is complete, a cluster event is created.
5933//
5934// Rebooting a cluster is currently supported on Memcached and Redis (cluster
5935// mode disabled) clusters. Rebooting is not supported on Redis (cluster mode
5936// enabled) clusters.
5937//
5938// If you make changes to parameters that require a Redis (cluster mode enabled)
5939// cluster reboot for the changes to be applied, see Rebooting a Cluster (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html)
5940// for an alternate process.
5941//
5942// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5943// with awserr.Error's Code and Message methods to get detailed information about
5944// the error.
5945//
5946// See the AWS API reference guide for Amazon ElastiCache's
5947// API operation RebootCacheCluster for usage and error information.
5948//
5949// Returned Error Codes:
5950//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
5951//   The requested cluster is not in the available state.
5952//
5953//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
5954//   The requested cluster ID does not refer to an existing cluster.
5955//
5956// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RebootCacheCluster
5957func (c *ElastiCache) RebootCacheCluster(input *RebootCacheClusterInput) (*RebootCacheClusterOutput, error) {
5958	req, out := c.RebootCacheClusterRequest(input)
5959	return out, req.Send()
5960}
5961
5962// RebootCacheClusterWithContext is the same as RebootCacheCluster with the addition of
5963// the ability to pass a context and additional request options.
5964//
5965// See RebootCacheCluster for details on how to use this API operation.
5966//
5967// The context must be non-nil and will be used for request cancellation. If
5968// the context is nil a panic will occur. In the future the SDK may create
5969// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5970// for more information on using Contexts.
5971func (c *ElastiCache) RebootCacheClusterWithContext(ctx aws.Context, input *RebootCacheClusterInput, opts ...request.Option) (*RebootCacheClusterOutput, error) {
5972	req, out := c.RebootCacheClusterRequest(input)
5973	req.SetContext(ctx)
5974	req.ApplyOptions(opts...)
5975	return out, req.Send()
5976}
5977
5978const opRemoveTagsFromResource = "RemoveTagsFromResource"
5979
5980// RemoveTagsFromResourceRequest generates a "aws/request.Request" representing the
5981// client's request for the RemoveTagsFromResource operation. The "output" return
5982// value will be populated with the request's response once the request completes
5983// successfully.
5984//
5985// Use "Send" method on the returned Request to send the API call to the service.
5986// the "output" return value is not valid until after Send returns without error.
5987//
5988// See RemoveTagsFromResource for more information on using the RemoveTagsFromResource
5989// API call, and error handling.
5990//
5991// This method is useful when you want to inject custom logic or configuration
5992// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5993//
5994//
5995//    // Example sending a request using the RemoveTagsFromResourceRequest method.
5996//    req, resp := client.RemoveTagsFromResourceRequest(params)
5997//
5998//    err := req.Send()
5999//    if err == nil { // resp is now filled
6000//        fmt.Println(resp)
6001//    }
6002//
6003// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RemoveTagsFromResource
6004func (c *ElastiCache) RemoveTagsFromResourceRequest(input *RemoveTagsFromResourceInput) (req *request.Request, output *TagListMessage) {
6005	op := &request.Operation{
6006		Name:       opRemoveTagsFromResource,
6007		HTTPMethod: "POST",
6008		HTTPPath:   "/",
6009	}
6010
6011	if input == nil {
6012		input = &RemoveTagsFromResourceInput{}
6013	}
6014
6015	output = &TagListMessage{}
6016	req = c.newRequest(op, input, output)
6017	return
6018}
6019
6020// RemoveTagsFromResource API operation for Amazon ElastiCache.
6021//
6022// Removes the tags identified by the TagKeys list from the named resource.
6023//
6024// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6025// with awserr.Error's Code and Message methods to get detailed information about
6026// the error.
6027//
6028// See the AWS API reference guide for Amazon ElastiCache's
6029// API operation RemoveTagsFromResource for usage and error information.
6030//
6031// Returned Error Codes:
6032//   * ErrCodeCacheClusterNotFoundFault "CacheClusterNotFound"
6033//   The requested cluster ID does not refer to an existing cluster.
6034//
6035//   * ErrCodeSnapshotNotFoundFault "SnapshotNotFoundFault"
6036//   The requested snapshot name does not refer to an existing snapshot.
6037//
6038//   * ErrCodeInvalidARNFault "InvalidARN"
6039//   The requested Amazon Resource Name (ARN) does not refer to an existing resource.
6040//
6041//   * ErrCodeTagNotFoundFault "TagNotFound"
6042//   The requested tag was not found on this resource.
6043//
6044// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RemoveTagsFromResource
6045func (c *ElastiCache) RemoveTagsFromResource(input *RemoveTagsFromResourceInput) (*TagListMessage, error) {
6046	req, out := c.RemoveTagsFromResourceRequest(input)
6047	return out, req.Send()
6048}
6049
6050// RemoveTagsFromResourceWithContext is the same as RemoveTagsFromResource with the addition of
6051// the ability to pass a context and additional request options.
6052//
6053// See RemoveTagsFromResource for details on how to use this API operation.
6054//
6055// The context must be non-nil and will be used for request cancellation. If
6056// the context is nil a panic will occur. In the future the SDK may create
6057// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6058// for more information on using Contexts.
6059func (c *ElastiCache) RemoveTagsFromResourceWithContext(ctx aws.Context, input *RemoveTagsFromResourceInput, opts ...request.Option) (*TagListMessage, error) {
6060	req, out := c.RemoveTagsFromResourceRequest(input)
6061	req.SetContext(ctx)
6062	req.ApplyOptions(opts...)
6063	return out, req.Send()
6064}
6065
6066const opResetCacheParameterGroup = "ResetCacheParameterGroup"
6067
6068// ResetCacheParameterGroupRequest generates a "aws/request.Request" representing the
6069// client's request for the ResetCacheParameterGroup operation. The "output" return
6070// value will be populated with the request's response once the request completes
6071// successfully.
6072//
6073// Use "Send" method on the returned Request to send the API call to the service.
6074// the "output" return value is not valid until after Send returns without error.
6075//
6076// See ResetCacheParameterGroup for more information on using the ResetCacheParameterGroup
6077// API call, and error handling.
6078//
6079// This method is useful when you want to inject custom logic or configuration
6080// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6081//
6082//
6083//    // Example sending a request using the ResetCacheParameterGroupRequest method.
6084//    req, resp := client.ResetCacheParameterGroupRequest(params)
6085//
6086//    err := req.Send()
6087//    if err == nil { // resp is now filled
6088//        fmt.Println(resp)
6089//    }
6090//
6091// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ResetCacheParameterGroup
6092func (c *ElastiCache) ResetCacheParameterGroupRequest(input *ResetCacheParameterGroupInput) (req *request.Request, output *CacheParameterGroupNameMessage) {
6093	op := &request.Operation{
6094		Name:       opResetCacheParameterGroup,
6095		HTTPMethod: "POST",
6096		HTTPPath:   "/",
6097	}
6098
6099	if input == nil {
6100		input = &ResetCacheParameterGroupInput{}
6101	}
6102
6103	output = &CacheParameterGroupNameMessage{}
6104	req = c.newRequest(op, input, output)
6105	return
6106}
6107
6108// ResetCacheParameterGroup API operation for Amazon ElastiCache.
6109//
6110// Modifies the parameters of a cache parameter group to the engine or system
6111// default value. You can reset specific parameters by submitting a list of
6112// parameter names. To reset the entire cache parameter group, specify the ResetAllParameters
6113// and CacheParameterGroupName parameters.
6114//
6115// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6116// with awserr.Error's Code and Message methods to get detailed information about
6117// the error.
6118//
6119// See the AWS API reference guide for Amazon ElastiCache's
6120// API operation ResetCacheParameterGroup for usage and error information.
6121//
6122// Returned Error Codes:
6123//   * ErrCodeInvalidCacheParameterGroupStateFault "InvalidCacheParameterGroupState"
6124//   The current state of the cache parameter group does not allow the requested
6125//   operation to occur.
6126//
6127//   * ErrCodeCacheParameterGroupNotFoundFault "CacheParameterGroupNotFound"
6128//   The requested cache parameter group name does not refer to an existing cache
6129//   parameter group.
6130//
6131//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6132//   The value for a parameter is invalid.
6133//
6134//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
6135//   Two or more incompatible parameters were specified.
6136//
6137//   * ErrCodeInvalidGlobalReplicationGroupStateFault "InvalidGlobalReplicationGroupState"
6138//   The Global Datastore is not available or in primary-only state.
6139//
6140// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/ResetCacheParameterGroup
6141func (c *ElastiCache) ResetCacheParameterGroup(input *ResetCacheParameterGroupInput) (*CacheParameterGroupNameMessage, error) {
6142	req, out := c.ResetCacheParameterGroupRequest(input)
6143	return out, req.Send()
6144}
6145
6146// ResetCacheParameterGroupWithContext is the same as ResetCacheParameterGroup with the addition of
6147// the ability to pass a context and additional request options.
6148//
6149// See ResetCacheParameterGroup for details on how to use this API operation.
6150//
6151// The context must be non-nil and will be used for request cancellation. If
6152// the context is nil a panic will occur. In the future the SDK may create
6153// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6154// for more information on using Contexts.
6155func (c *ElastiCache) ResetCacheParameterGroupWithContext(ctx aws.Context, input *ResetCacheParameterGroupInput, opts ...request.Option) (*CacheParameterGroupNameMessage, error) {
6156	req, out := c.ResetCacheParameterGroupRequest(input)
6157	req.SetContext(ctx)
6158	req.ApplyOptions(opts...)
6159	return out, req.Send()
6160}
6161
6162const opRevokeCacheSecurityGroupIngress = "RevokeCacheSecurityGroupIngress"
6163
6164// RevokeCacheSecurityGroupIngressRequest generates a "aws/request.Request" representing the
6165// client's request for the RevokeCacheSecurityGroupIngress operation. The "output" return
6166// value will be populated with the request's response once the request completes
6167// successfully.
6168//
6169// Use "Send" method on the returned Request to send the API call to the service.
6170// the "output" return value is not valid until after Send returns without error.
6171//
6172// See RevokeCacheSecurityGroupIngress for more information on using the RevokeCacheSecurityGroupIngress
6173// API call, and error handling.
6174//
6175// This method is useful when you want to inject custom logic or configuration
6176// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6177//
6178//
6179//    // Example sending a request using the RevokeCacheSecurityGroupIngressRequest method.
6180//    req, resp := client.RevokeCacheSecurityGroupIngressRequest(params)
6181//
6182//    err := req.Send()
6183//    if err == nil { // resp is now filled
6184//        fmt.Println(resp)
6185//    }
6186//
6187// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RevokeCacheSecurityGroupIngress
6188func (c *ElastiCache) RevokeCacheSecurityGroupIngressRequest(input *RevokeCacheSecurityGroupIngressInput) (req *request.Request, output *RevokeCacheSecurityGroupIngressOutput) {
6189	op := &request.Operation{
6190		Name:       opRevokeCacheSecurityGroupIngress,
6191		HTTPMethod: "POST",
6192		HTTPPath:   "/",
6193	}
6194
6195	if input == nil {
6196		input = &RevokeCacheSecurityGroupIngressInput{}
6197	}
6198
6199	output = &RevokeCacheSecurityGroupIngressOutput{}
6200	req = c.newRequest(op, input, output)
6201	return
6202}
6203
6204// RevokeCacheSecurityGroupIngress API operation for Amazon ElastiCache.
6205//
6206// Revokes ingress from a cache security group. Use this operation to disallow
6207// access from an Amazon EC2 security group that had been previously authorized.
6208//
6209// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6210// with awserr.Error's Code and Message methods to get detailed information about
6211// the error.
6212//
6213// See the AWS API reference guide for Amazon ElastiCache's
6214// API operation RevokeCacheSecurityGroupIngress for usage and error information.
6215//
6216// Returned Error Codes:
6217//   * ErrCodeCacheSecurityGroupNotFoundFault "CacheSecurityGroupNotFound"
6218//   The requested cache security group name does not refer to an existing cache
6219//   security group.
6220//
6221//   * ErrCodeAuthorizationNotFoundFault "AuthorizationNotFound"
6222//   The specified Amazon EC2 security group is not authorized for the specified
6223//   cache security group.
6224//
6225//   * ErrCodeInvalidCacheSecurityGroupStateFault "InvalidCacheSecurityGroupState"
6226//   The current state of the cache security group does not allow deletion.
6227//
6228//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6229//   The value for a parameter is invalid.
6230//
6231//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
6232//   Two or more incompatible parameters were specified.
6233//
6234// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/RevokeCacheSecurityGroupIngress
6235func (c *ElastiCache) RevokeCacheSecurityGroupIngress(input *RevokeCacheSecurityGroupIngressInput) (*RevokeCacheSecurityGroupIngressOutput, error) {
6236	req, out := c.RevokeCacheSecurityGroupIngressRequest(input)
6237	return out, req.Send()
6238}
6239
6240// RevokeCacheSecurityGroupIngressWithContext is the same as RevokeCacheSecurityGroupIngress with the addition of
6241// the ability to pass a context and additional request options.
6242//
6243// See RevokeCacheSecurityGroupIngress for details on how to use this API operation.
6244//
6245// The context must be non-nil and will be used for request cancellation. If
6246// the context is nil a panic will occur. In the future the SDK may create
6247// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6248// for more information on using Contexts.
6249func (c *ElastiCache) RevokeCacheSecurityGroupIngressWithContext(ctx aws.Context, input *RevokeCacheSecurityGroupIngressInput, opts ...request.Option) (*RevokeCacheSecurityGroupIngressOutput, error) {
6250	req, out := c.RevokeCacheSecurityGroupIngressRequest(input)
6251	req.SetContext(ctx)
6252	req.ApplyOptions(opts...)
6253	return out, req.Send()
6254}
6255
6256const opStartMigration = "StartMigration"
6257
6258// StartMigrationRequest generates a "aws/request.Request" representing the
6259// client's request for the StartMigration operation. The "output" return
6260// value will be populated with the request's response once the request completes
6261// successfully.
6262//
6263// Use "Send" method on the returned Request to send the API call to the service.
6264// the "output" return value is not valid until after Send returns without error.
6265//
6266// See StartMigration for more information on using the StartMigration
6267// API call, and error handling.
6268//
6269// This method is useful when you want to inject custom logic or configuration
6270// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6271//
6272//
6273//    // Example sending a request using the StartMigrationRequest method.
6274//    req, resp := client.StartMigrationRequest(params)
6275//
6276//    err := req.Send()
6277//    if err == nil { // resp is now filled
6278//        fmt.Println(resp)
6279//    }
6280//
6281// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/StartMigration
6282func (c *ElastiCache) StartMigrationRequest(input *StartMigrationInput) (req *request.Request, output *StartMigrationOutput) {
6283	op := &request.Operation{
6284		Name:       opStartMigration,
6285		HTTPMethod: "POST",
6286		HTTPPath:   "/",
6287	}
6288
6289	if input == nil {
6290		input = &StartMigrationInput{}
6291	}
6292
6293	output = &StartMigrationOutput{}
6294	req = c.newRequest(op, input, output)
6295	return
6296}
6297
6298// StartMigration API operation for Amazon ElastiCache.
6299//
6300// Start the migration of data.
6301//
6302// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6303// with awserr.Error's Code and Message methods to get detailed information about
6304// the error.
6305//
6306// See the AWS API reference guide for Amazon ElastiCache's
6307// API operation StartMigration for usage and error information.
6308//
6309// Returned Error Codes:
6310//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
6311//   The specified replication group does not exist.
6312//
6313//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
6314//   The requested replication group is not in the available state.
6315//
6316//   * ErrCodeReplicationGroupAlreadyUnderMigrationFault "ReplicationGroupAlreadyUnderMigrationFault"
6317//   The targeted replication group is not available.
6318//
6319//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6320//   The value for a parameter is invalid.
6321//
6322// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/StartMigration
6323func (c *ElastiCache) StartMigration(input *StartMigrationInput) (*StartMigrationOutput, error) {
6324	req, out := c.StartMigrationRequest(input)
6325	return out, req.Send()
6326}
6327
6328// StartMigrationWithContext is the same as StartMigration with the addition of
6329// the ability to pass a context and additional request options.
6330//
6331// See StartMigration for details on how to use this API operation.
6332//
6333// The context must be non-nil and will be used for request cancellation. If
6334// the context is nil a panic will occur. In the future the SDK may create
6335// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6336// for more information on using Contexts.
6337func (c *ElastiCache) StartMigrationWithContext(ctx aws.Context, input *StartMigrationInput, opts ...request.Option) (*StartMigrationOutput, error) {
6338	req, out := c.StartMigrationRequest(input)
6339	req.SetContext(ctx)
6340	req.ApplyOptions(opts...)
6341	return out, req.Send()
6342}
6343
6344const opTestFailover = "TestFailover"
6345
6346// TestFailoverRequest generates a "aws/request.Request" representing the
6347// client's request for the TestFailover operation. The "output" return
6348// value will be populated with the request's response once the request completes
6349// successfully.
6350//
6351// Use "Send" method on the returned Request to send the API call to the service.
6352// the "output" return value is not valid until after Send returns without error.
6353//
6354// See TestFailover for more information on using the TestFailover
6355// API call, and error handling.
6356//
6357// This method is useful when you want to inject custom logic or configuration
6358// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6359//
6360//
6361//    // Example sending a request using the TestFailoverRequest method.
6362//    req, resp := client.TestFailoverRequest(params)
6363//
6364//    err := req.Send()
6365//    if err == nil { // resp is now filled
6366//        fmt.Println(resp)
6367//    }
6368//
6369// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/TestFailover
6370func (c *ElastiCache) TestFailoverRequest(input *TestFailoverInput) (req *request.Request, output *TestFailoverOutput) {
6371	op := &request.Operation{
6372		Name:       opTestFailover,
6373		HTTPMethod: "POST",
6374		HTTPPath:   "/",
6375	}
6376
6377	if input == nil {
6378		input = &TestFailoverInput{}
6379	}
6380
6381	output = &TestFailoverOutput{}
6382	req = c.newRequest(op, input, output)
6383	return
6384}
6385
6386// TestFailover API operation for Amazon ElastiCache.
6387//
6388// Represents the input of a TestFailover operation which test automatic failover
6389// on a specified node group (called shard in the console) in a replication
6390// group (called cluster in the console).
6391//
6392// Note the following
6393//
6394//    * A customer can use this operation to test automatic failover on up to
6395//    5 shards (called node groups in the ElastiCache API and AWS CLI) in any
6396//    rolling 24-hour period.
6397//
6398//    * If calling this operation on shards in different clusters (called replication
6399//    groups in the API and CLI), the calls can be made concurrently.
6400//
6401//    * If calling this operation multiple times on different shards in the
6402//    same Redis (cluster mode enabled) replication group, the first node replacement
6403//    must complete before a subsequent call can be made.
6404//
6405//    * To determine whether the node replacement is complete you can check
6406//    Events using the Amazon ElastiCache console, the AWS CLI, or the ElastiCache
6407//    API. Look for the following automatic failover related events, listed
6408//    here in order of occurrance: Replication group message: Test Failover
6409//    API called for node group <node-group-id> Cache cluster message: Failover
6410//    from master node <primary-node-id> to replica node <node-id> completed
6411//    Replication group message: Failover from master node <primary-node-id>
6412//    to replica node <node-id> completed Cache cluster message: Recovering
6413//    cache nodes <node-id> Cache cluster message: Finished recovery for cache
6414//    nodes <node-id> For more information see: Viewing ElastiCache Events (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/ECEvents.Viewing.html)
6415//    in the ElastiCache User Guide DescribeEvents (https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeEvents.html)
6416//    in the ElastiCache API Reference
6417//
6418// Also see, Testing Multi-AZ (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html#auto-failover-test)
6419// in the ElastiCache User Guide.
6420//
6421// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6422// with awserr.Error's Code and Message methods to get detailed information about
6423// the error.
6424//
6425// See the AWS API reference guide for Amazon ElastiCache's
6426// API operation TestFailover for usage and error information.
6427//
6428// Returned Error Codes:
6429//   * ErrCodeAPICallRateForCustomerExceededFault "APICallRateForCustomerExceeded"
6430//   The customer has exceeded the allowed rate of API calls.
6431//
6432//   * ErrCodeInvalidCacheClusterStateFault "InvalidCacheClusterState"
6433//   The requested cluster is not in the available state.
6434//
6435//   * ErrCodeInvalidReplicationGroupStateFault "InvalidReplicationGroupState"
6436//   The requested replication group is not in the available state.
6437//
6438//   * ErrCodeNodeGroupNotFoundFault "NodeGroupNotFoundFault"
6439//   The node group specified by the NodeGroupId parameter could not be found.
6440//   Please verify that the node group exists and that you spelled the NodeGroupId
6441//   value correctly.
6442//
6443//   * ErrCodeReplicationGroupNotFoundFault "ReplicationGroupNotFoundFault"
6444//   The specified replication group does not exist.
6445//
6446//   * ErrCodeTestFailoverNotAvailableFault "TestFailoverNotAvailableFault"
6447//   The TestFailover action is not available.
6448//
6449//   * ErrCodeInvalidKMSKeyFault "InvalidKMSKeyFault"
6450//   The KMS key supplied is not valid.
6451//
6452//   * ErrCodeInvalidParameterValueException "InvalidParameterValue"
6453//   The value for a parameter is invalid.
6454//
6455//   * ErrCodeInvalidParameterCombinationException "InvalidParameterCombination"
6456//   Two or more incompatible parameters were specified.
6457//
6458// See also, https://docs.aws.amazon.com/goto/WebAPI/elasticache-2015-02-02/TestFailover
6459func (c *ElastiCache) TestFailover(input *TestFailoverInput) (*TestFailoverOutput, error) {
6460	req, out := c.TestFailoverRequest(input)
6461	return out, req.Send()
6462}
6463
6464// TestFailoverWithContext is the same as TestFailover with the addition of
6465// the ability to pass a context and additional request options.
6466//
6467// See TestFailover for details on how to use this API operation.
6468//
6469// The context must be non-nil and will be used for request cancellation. If
6470// the context is nil a panic will occur. In the future the SDK may create
6471// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6472// for more information on using Contexts.
6473func (c *ElastiCache) TestFailoverWithContext(ctx aws.Context, input *TestFailoverInput, opts ...request.Option) (*TestFailoverOutput, error) {
6474	req, out := c.TestFailoverRequest(input)
6475	req.SetContext(ctx)
6476	req.ApplyOptions(opts...)
6477	return out, req.Send()
6478}
6479
6480// Represents the input of an AddTagsToResource operation.
6481type AddTagsToResourceInput struct {
6482	_ struct{} `type:"structure"`
6483
6484	// The Amazon Resource Name (ARN) of the resource to which the tags are to be
6485	// added, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
6486	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot. ElastiCache
6487	// resources are cluster and snapshot.
6488	//
6489	// For more information about ARNs, see Amazon Resource Names (ARNs) and AWS
6490	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
6491	//
6492	// ResourceName is a required field
6493	ResourceName *string `type:"string" required:"true"`
6494
6495	// A list of cost allocation tags to be added to this resource. A tag is a key-value
6496	// pair. A tag key must be accompanied by a tag value.
6497	//
6498	// Tags is a required field
6499	Tags []*Tag `locationNameList:"Tag" type:"list" required:"true"`
6500}
6501
6502// String returns the string representation
6503func (s AddTagsToResourceInput) String() string {
6504	return awsutil.Prettify(s)
6505}
6506
6507// GoString returns the string representation
6508func (s AddTagsToResourceInput) GoString() string {
6509	return s.String()
6510}
6511
6512// Validate inspects the fields of the type to determine if they are valid.
6513func (s *AddTagsToResourceInput) Validate() error {
6514	invalidParams := request.ErrInvalidParams{Context: "AddTagsToResourceInput"}
6515	if s.ResourceName == nil {
6516		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
6517	}
6518	if s.Tags == nil {
6519		invalidParams.Add(request.NewErrParamRequired("Tags"))
6520	}
6521
6522	if invalidParams.Len() > 0 {
6523		return invalidParams
6524	}
6525	return nil
6526}
6527
6528// SetResourceName sets the ResourceName field's value.
6529func (s *AddTagsToResourceInput) SetResourceName(v string) *AddTagsToResourceInput {
6530	s.ResourceName = &v
6531	return s
6532}
6533
6534// SetTags sets the Tags field's value.
6535func (s *AddTagsToResourceInput) SetTags(v []*Tag) *AddTagsToResourceInput {
6536	s.Tags = v
6537	return s
6538}
6539
6540// Represents the input of an AuthorizeCacheSecurityGroupIngress operation.
6541type AuthorizeCacheSecurityGroupIngressInput struct {
6542	_ struct{} `type:"structure"`
6543
6544	// The cache security group that allows network ingress.
6545	//
6546	// CacheSecurityGroupName is a required field
6547	CacheSecurityGroupName *string `type:"string" required:"true"`
6548
6549	// The Amazon EC2 security group to be authorized for ingress to the cache security
6550	// group.
6551	//
6552	// EC2SecurityGroupName is a required field
6553	EC2SecurityGroupName *string `type:"string" required:"true"`
6554
6555	// The AWS account number of the Amazon EC2 security group owner. Note that
6556	// this is not the same thing as an AWS access key ID - you must provide a valid
6557	// AWS account number for this parameter.
6558	//
6559	// EC2SecurityGroupOwnerId is a required field
6560	EC2SecurityGroupOwnerId *string `type:"string" required:"true"`
6561}
6562
6563// String returns the string representation
6564func (s AuthorizeCacheSecurityGroupIngressInput) String() string {
6565	return awsutil.Prettify(s)
6566}
6567
6568// GoString returns the string representation
6569func (s AuthorizeCacheSecurityGroupIngressInput) GoString() string {
6570	return s.String()
6571}
6572
6573// Validate inspects the fields of the type to determine if they are valid.
6574func (s *AuthorizeCacheSecurityGroupIngressInput) Validate() error {
6575	invalidParams := request.ErrInvalidParams{Context: "AuthorizeCacheSecurityGroupIngressInput"}
6576	if s.CacheSecurityGroupName == nil {
6577		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
6578	}
6579	if s.EC2SecurityGroupName == nil {
6580		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupName"))
6581	}
6582	if s.EC2SecurityGroupOwnerId == nil {
6583		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupOwnerId"))
6584	}
6585
6586	if invalidParams.Len() > 0 {
6587		return invalidParams
6588	}
6589	return nil
6590}
6591
6592// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
6593func (s *AuthorizeCacheSecurityGroupIngressInput) SetCacheSecurityGroupName(v string) *AuthorizeCacheSecurityGroupIngressInput {
6594	s.CacheSecurityGroupName = &v
6595	return s
6596}
6597
6598// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
6599func (s *AuthorizeCacheSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *AuthorizeCacheSecurityGroupIngressInput {
6600	s.EC2SecurityGroupName = &v
6601	return s
6602}
6603
6604// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
6605func (s *AuthorizeCacheSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *AuthorizeCacheSecurityGroupIngressInput {
6606	s.EC2SecurityGroupOwnerId = &v
6607	return s
6608}
6609
6610type AuthorizeCacheSecurityGroupIngressOutput struct {
6611	_ struct{} `type:"structure"`
6612
6613	// Represents the output of one of the following operations:
6614	//
6615	//    * AuthorizeCacheSecurityGroupIngress
6616	//
6617	//    * CreateCacheSecurityGroup
6618	//
6619	//    * RevokeCacheSecurityGroupIngress
6620	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
6621}
6622
6623// String returns the string representation
6624func (s AuthorizeCacheSecurityGroupIngressOutput) String() string {
6625	return awsutil.Prettify(s)
6626}
6627
6628// GoString returns the string representation
6629func (s AuthorizeCacheSecurityGroupIngressOutput) GoString() string {
6630	return s.String()
6631}
6632
6633// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
6634func (s *AuthorizeCacheSecurityGroupIngressOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *AuthorizeCacheSecurityGroupIngressOutput {
6635	s.CacheSecurityGroup = v
6636	return s
6637}
6638
6639// Describes an Availability Zone in which the cluster is launched.
6640type AvailabilityZone struct {
6641	_ struct{} `type:"structure"`
6642
6643	// The name of the Availability Zone.
6644	Name *string `type:"string"`
6645}
6646
6647// String returns the string representation
6648func (s AvailabilityZone) String() string {
6649	return awsutil.Prettify(s)
6650}
6651
6652// GoString returns the string representation
6653func (s AvailabilityZone) GoString() string {
6654	return s.String()
6655}
6656
6657// SetName sets the Name field's value.
6658func (s *AvailabilityZone) SetName(v string) *AvailabilityZone {
6659	s.Name = &v
6660	return s
6661}
6662
6663type BatchApplyUpdateActionInput struct {
6664	_ struct{} `type:"structure"`
6665
6666	// The cache cluster IDs
6667	CacheClusterIds []*string `type:"list"`
6668
6669	// The replication group IDs
6670	ReplicationGroupIds []*string `type:"list"`
6671
6672	// The unique ID of the service update
6673	//
6674	// ServiceUpdateName is a required field
6675	ServiceUpdateName *string `type:"string" required:"true"`
6676}
6677
6678// String returns the string representation
6679func (s BatchApplyUpdateActionInput) String() string {
6680	return awsutil.Prettify(s)
6681}
6682
6683// GoString returns the string representation
6684func (s BatchApplyUpdateActionInput) GoString() string {
6685	return s.String()
6686}
6687
6688// Validate inspects the fields of the type to determine if they are valid.
6689func (s *BatchApplyUpdateActionInput) Validate() error {
6690	invalidParams := request.ErrInvalidParams{Context: "BatchApplyUpdateActionInput"}
6691	if s.ServiceUpdateName == nil {
6692		invalidParams.Add(request.NewErrParamRequired("ServiceUpdateName"))
6693	}
6694
6695	if invalidParams.Len() > 0 {
6696		return invalidParams
6697	}
6698	return nil
6699}
6700
6701// SetCacheClusterIds sets the CacheClusterIds field's value.
6702func (s *BatchApplyUpdateActionInput) SetCacheClusterIds(v []*string) *BatchApplyUpdateActionInput {
6703	s.CacheClusterIds = v
6704	return s
6705}
6706
6707// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
6708func (s *BatchApplyUpdateActionInput) SetReplicationGroupIds(v []*string) *BatchApplyUpdateActionInput {
6709	s.ReplicationGroupIds = v
6710	return s
6711}
6712
6713// SetServiceUpdateName sets the ServiceUpdateName field's value.
6714func (s *BatchApplyUpdateActionInput) SetServiceUpdateName(v string) *BatchApplyUpdateActionInput {
6715	s.ServiceUpdateName = &v
6716	return s
6717}
6718
6719type BatchApplyUpdateActionOutput struct {
6720	_ struct{} `type:"structure"`
6721
6722	// Update actions that have been processed successfully
6723	ProcessedUpdateActions []*ProcessedUpdateAction `locationNameList:"ProcessedUpdateAction" type:"list"`
6724
6725	// Update actions that haven't been processed successfully
6726	UnprocessedUpdateActions []*UnprocessedUpdateAction `locationNameList:"UnprocessedUpdateAction" type:"list"`
6727}
6728
6729// String returns the string representation
6730func (s BatchApplyUpdateActionOutput) String() string {
6731	return awsutil.Prettify(s)
6732}
6733
6734// GoString returns the string representation
6735func (s BatchApplyUpdateActionOutput) GoString() string {
6736	return s.String()
6737}
6738
6739// SetProcessedUpdateActions sets the ProcessedUpdateActions field's value.
6740func (s *BatchApplyUpdateActionOutput) SetProcessedUpdateActions(v []*ProcessedUpdateAction) *BatchApplyUpdateActionOutput {
6741	s.ProcessedUpdateActions = v
6742	return s
6743}
6744
6745// SetUnprocessedUpdateActions sets the UnprocessedUpdateActions field's value.
6746func (s *BatchApplyUpdateActionOutput) SetUnprocessedUpdateActions(v []*UnprocessedUpdateAction) *BatchApplyUpdateActionOutput {
6747	s.UnprocessedUpdateActions = v
6748	return s
6749}
6750
6751type BatchStopUpdateActionInput struct {
6752	_ struct{} `type:"structure"`
6753
6754	// The cache cluster IDs
6755	CacheClusterIds []*string `type:"list"`
6756
6757	// The replication group IDs
6758	ReplicationGroupIds []*string `type:"list"`
6759
6760	// The unique ID of the service update
6761	//
6762	// ServiceUpdateName is a required field
6763	ServiceUpdateName *string `type:"string" required:"true"`
6764}
6765
6766// String returns the string representation
6767func (s BatchStopUpdateActionInput) String() string {
6768	return awsutil.Prettify(s)
6769}
6770
6771// GoString returns the string representation
6772func (s BatchStopUpdateActionInput) GoString() string {
6773	return s.String()
6774}
6775
6776// Validate inspects the fields of the type to determine if they are valid.
6777func (s *BatchStopUpdateActionInput) Validate() error {
6778	invalidParams := request.ErrInvalidParams{Context: "BatchStopUpdateActionInput"}
6779	if s.ServiceUpdateName == nil {
6780		invalidParams.Add(request.NewErrParamRequired("ServiceUpdateName"))
6781	}
6782
6783	if invalidParams.Len() > 0 {
6784		return invalidParams
6785	}
6786	return nil
6787}
6788
6789// SetCacheClusterIds sets the CacheClusterIds field's value.
6790func (s *BatchStopUpdateActionInput) SetCacheClusterIds(v []*string) *BatchStopUpdateActionInput {
6791	s.CacheClusterIds = v
6792	return s
6793}
6794
6795// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
6796func (s *BatchStopUpdateActionInput) SetReplicationGroupIds(v []*string) *BatchStopUpdateActionInput {
6797	s.ReplicationGroupIds = v
6798	return s
6799}
6800
6801// SetServiceUpdateName sets the ServiceUpdateName field's value.
6802func (s *BatchStopUpdateActionInput) SetServiceUpdateName(v string) *BatchStopUpdateActionInput {
6803	s.ServiceUpdateName = &v
6804	return s
6805}
6806
6807type BatchStopUpdateActionOutput struct {
6808	_ struct{} `type:"structure"`
6809
6810	// Update actions that have been processed successfully
6811	ProcessedUpdateActions []*ProcessedUpdateAction `locationNameList:"ProcessedUpdateAction" type:"list"`
6812
6813	// Update actions that haven't been processed successfully
6814	UnprocessedUpdateActions []*UnprocessedUpdateAction `locationNameList:"UnprocessedUpdateAction" type:"list"`
6815}
6816
6817// String returns the string representation
6818func (s BatchStopUpdateActionOutput) String() string {
6819	return awsutil.Prettify(s)
6820}
6821
6822// GoString returns the string representation
6823func (s BatchStopUpdateActionOutput) GoString() string {
6824	return s.String()
6825}
6826
6827// SetProcessedUpdateActions sets the ProcessedUpdateActions field's value.
6828func (s *BatchStopUpdateActionOutput) SetProcessedUpdateActions(v []*ProcessedUpdateAction) *BatchStopUpdateActionOutput {
6829	s.ProcessedUpdateActions = v
6830	return s
6831}
6832
6833// SetUnprocessedUpdateActions sets the UnprocessedUpdateActions field's value.
6834func (s *BatchStopUpdateActionOutput) SetUnprocessedUpdateActions(v []*UnprocessedUpdateAction) *BatchStopUpdateActionOutput {
6835	s.UnprocessedUpdateActions = v
6836	return s
6837}
6838
6839// Contains all of the attributes of a specific cluster.
6840type CacheCluster struct {
6841	_ struct{} `type:"structure"`
6842
6843	// The ARN (Amazon Resource Name) of the cache cluster.
6844	ARN *string `type:"string"`
6845
6846	// A flag that enables encryption at-rest when set to true.
6847	//
6848	// You cannot modify the value of AtRestEncryptionEnabled after the cluster
6849	// is created. To enable at-rest encryption on a cluster you must set AtRestEncryptionEnabled
6850	// to true when you create a cluster.
6851	//
6852	// Required: Only available when creating a replication group in an Amazon VPC
6853	// using redis version 3.2.6, 4.x or later.
6854	//
6855	// Default: false
6856	AtRestEncryptionEnabled *bool `type:"boolean"`
6857
6858	// A flag that enables using an AuthToken (password) when issuing Redis commands.
6859	//
6860	// Default: false
6861	AuthTokenEnabled *bool `type:"boolean"`
6862
6863	// The date the auth token was last modified
6864	AuthTokenLastModifiedDate *time.Time `type:"timestamp"`
6865
6866	// This parameter is currently disabled.
6867	AutoMinorVersionUpgrade *bool `type:"boolean"`
6868
6869	// The date and time when the cluster was created.
6870	CacheClusterCreateTime *time.Time `type:"timestamp"`
6871
6872	// The user-supplied identifier of the cluster. This identifier is a unique
6873	// key that identifies a cluster.
6874	CacheClusterId *string `type:"string"`
6875
6876	// The current state of this cluster, one of the following values: available,
6877	// creating, deleted, deleting, incompatible-network, modifying, rebooting cluster
6878	// nodes, restore-failed, or snapshotting.
6879	CacheClusterStatus *string `type:"string"`
6880
6881	// The name of the compute and memory capacity node type for the cluster.
6882	//
6883	// The following node types are supported by ElastiCache. Generally speaking,
6884	// the current generation types provide more memory and computational power
6885	// at lower cost when compared to their equivalent previous generation counterparts.
6886	//
6887	//    * General purpose: Current generation: M5 node types: cache.m5.large,
6888	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
6889	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
6890	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
6891	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
6892	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
6893	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
6894	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
6895	//
6896	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
6897	//    cache.c1.xlarge
6898	//
6899	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
6900	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
6901	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
6902	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
6903	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
6904	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
6905	//    cache.r3.8xlarge
6906	//
6907	// Additional node type info
6908	//
6909	//    * All current generation instance types are created in Amazon VPC by default.
6910	//
6911	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
6912	//
6913	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
6914	//
6915	//    * Redis configuration variables appendonly and appendfsync are not supported
6916	//    on Redis version 2.8.22 and later.
6917	CacheNodeType *string `type:"string"`
6918
6919	// A list of cache nodes that are members of the cluster.
6920	CacheNodes []*CacheNode `locationNameList:"CacheNode" type:"list"`
6921
6922	// Status of the cache parameter group.
6923	CacheParameterGroup *CacheParameterGroupStatus `type:"structure"`
6924
6925	// A list of cache security group elements, composed of name and status sub-elements.
6926	CacheSecurityGroups []*CacheSecurityGroupMembership `locationNameList:"CacheSecurityGroup" type:"list"`
6927
6928	// The name of the cache subnet group associated with the cluster.
6929	CacheSubnetGroupName *string `type:"string"`
6930
6931	// The URL of the web page where you can download the latest ElastiCache client
6932	// library.
6933	ClientDownloadLandingPage *string `type:"string"`
6934
6935	// Represents a Memcached cluster endpoint which, if Automatic Discovery is
6936	// enabled on the cluster, can be used by an application to connect to any node
6937	// in the cluster. The configuration endpoint will always have .cfg in it.
6938	//
6939	// Example: mem-3.9dvc4r.cfg.usw2.cache.amazonaws.com:11211
6940	ConfigurationEndpoint *Endpoint `type:"structure"`
6941
6942	// The name of the cache engine (memcached or redis) to be used for this cluster.
6943	Engine *string `type:"string"`
6944
6945	// The version of the cache engine that is used in this cluster.
6946	EngineVersion *string `type:"string"`
6947
6948	// Describes a notification topic and its status. Notification topics are used
6949	// for publishing ElastiCache events to subscribers using Amazon Simple Notification
6950	// Service (SNS).
6951	NotificationConfiguration *NotificationConfiguration `type:"structure"`
6952
6953	// The number of cache nodes in the cluster.
6954	//
6955	// For clusters running Redis, this value must be 1. For clusters running Memcached,
6956	// this value must be between 1 and 20.
6957	NumCacheNodes *int64 `type:"integer"`
6958
6959	// A group of settings that are applied to the cluster in the future, or that
6960	// are currently being applied.
6961	PendingModifiedValues *PendingModifiedValues `type:"structure"`
6962
6963	// The name of the Availability Zone in which the cluster is located or "Multiple"
6964	// if the cache nodes are located in different Availability Zones.
6965	PreferredAvailabilityZone *string `type:"string"`
6966
6967	// Specifies the weekly time range during which maintenance on the cluster is
6968	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
6969	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
6970	//
6971	// Valid values for ddd are:
6972	//
6973	//    * sun
6974	//
6975	//    * mon
6976	//
6977	//    * tue
6978	//
6979	//    * wed
6980	//
6981	//    * thu
6982	//
6983	//    * fri
6984	//
6985	//    * sat
6986	//
6987	// Example: sun:23:00-mon:01:30
6988	PreferredMaintenanceWindow *string `type:"string"`
6989
6990	// The replication group to which this cluster belongs. If this field is empty,
6991	// the cluster is not associated with any replication group.
6992	ReplicationGroupId *string `type:"string"`
6993
6994	// A list of VPC Security Groups associated with the cluster.
6995	SecurityGroups []*SecurityGroupMembership `type:"list"`
6996
6997	// The number of days for which ElastiCache retains automatic cluster snapshots
6998	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
6999	// a snapshot that was taken today is retained for 5 days before being deleted.
7000	//
7001	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
7002	// off.
7003	SnapshotRetentionLimit *int64 `type:"integer"`
7004
7005	// The daily time range (in UTC) during which ElastiCache begins taking a daily
7006	// snapshot of your cluster.
7007	//
7008	// Example: 05:00-09:00
7009	SnapshotWindow *string `type:"string"`
7010
7011	// A flag that enables in-transit encryption when set to true.
7012	//
7013	// You cannot modify the value of TransitEncryptionEnabled after the cluster
7014	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
7015	// to true when you create a cluster.
7016	//
7017	// Required: Only available when creating a replication group in an Amazon VPC
7018	// using redis version 3.2.6, 4.x or later.
7019	//
7020	// Default: false
7021	TransitEncryptionEnabled *bool `type:"boolean"`
7022}
7023
7024// String returns the string representation
7025func (s CacheCluster) String() string {
7026	return awsutil.Prettify(s)
7027}
7028
7029// GoString returns the string representation
7030func (s CacheCluster) GoString() string {
7031	return s.String()
7032}
7033
7034// SetARN sets the ARN field's value.
7035func (s *CacheCluster) SetARN(v string) *CacheCluster {
7036	s.ARN = &v
7037	return s
7038}
7039
7040// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
7041func (s *CacheCluster) SetAtRestEncryptionEnabled(v bool) *CacheCluster {
7042	s.AtRestEncryptionEnabled = &v
7043	return s
7044}
7045
7046// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
7047func (s *CacheCluster) SetAuthTokenEnabled(v bool) *CacheCluster {
7048	s.AuthTokenEnabled = &v
7049	return s
7050}
7051
7052// SetAuthTokenLastModifiedDate sets the AuthTokenLastModifiedDate field's value.
7053func (s *CacheCluster) SetAuthTokenLastModifiedDate(v time.Time) *CacheCluster {
7054	s.AuthTokenLastModifiedDate = &v
7055	return s
7056}
7057
7058// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
7059func (s *CacheCluster) SetAutoMinorVersionUpgrade(v bool) *CacheCluster {
7060	s.AutoMinorVersionUpgrade = &v
7061	return s
7062}
7063
7064// SetCacheClusterCreateTime sets the CacheClusterCreateTime field's value.
7065func (s *CacheCluster) SetCacheClusterCreateTime(v time.Time) *CacheCluster {
7066	s.CacheClusterCreateTime = &v
7067	return s
7068}
7069
7070// SetCacheClusterId sets the CacheClusterId field's value.
7071func (s *CacheCluster) SetCacheClusterId(v string) *CacheCluster {
7072	s.CacheClusterId = &v
7073	return s
7074}
7075
7076// SetCacheClusterStatus sets the CacheClusterStatus field's value.
7077func (s *CacheCluster) SetCacheClusterStatus(v string) *CacheCluster {
7078	s.CacheClusterStatus = &v
7079	return s
7080}
7081
7082// SetCacheNodeType sets the CacheNodeType field's value.
7083func (s *CacheCluster) SetCacheNodeType(v string) *CacheCluster {
7084	s.CacheNodeType = &v
7085	return s
7086}
7087
7088// SetCacheNodes sets the CacheNodes field's value.
7089func (s *CacheCluster) SetCacheNodes(v []*CacheNode) *CacheCluster {
7090	s.CacheNodes = v
7091	return s
7092}
7093
7094// SetCacheParameterGroup sets the CacheParameterGroup field's value.
7095func (s *CacheCluster) SetCacheParameterGroup(v *CacheParameterGroupStatus) *CacheCluster {
7096	s.CacheParameterGroup = v
7097	return s
7098}
7099
7100// SetCacheSecurityGroups sets the CacheSecurityGroups field's value.
7101func (s *CacheCluster) SetCacheSecurityGroups(v []*CacheSecurityGroupMembership) *CacheCluster {
7102	s.CacheSecurityGroups = v
7103	return s
7104}
7105
7106// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
7107func (s *CacheCluster) SetCacheSubnetGroupName(v string) *CacheCluster {
7108	s.CacheSubnetGroupName = &v
7109	return s
7110}
7111
7112// SetClientDownloadLandingPage sets the ClientDownloadLandingPage field's value.
7113func (s *CacheCluster) SetClientDownloadLandingPage(v string) *CacheCluster {
7114	s.ClientDownloadLandingPage = &v
7115	return s
7116}
7117
7118// SetConfigurationEndpoint sets the ConfigurationEndpoint field's value.
7119func (s *CacheCluster) SetConfigurationEndpoint(v *Endpoint) *CacheCluster {
7120	s.ConfigurationEndpoint = v
7121	return s
7122}
7123
7124// SetEngine sets the Engine field's value.
7125func (s *CacheCluster) SetEngine(v string) *CacheCluster {
7126	s.Engine = &v
7127	return s
7128}
7129
7130// SetEngineVersion sets the EngineVersion field's value.
7131func (s *CacheCluster) SetEngineVersion(v string) *CacheCluster {
7132	s.EngineVersion = &v
7133	return s
7134}
7135
7136// SetNotificationConfiguration sets the NotificationConfiguration field's value.
7137func (s *CacheCluster) SetNotificationConfiguration(v *NotificationConfiguration) *CacheCluster {
7138	s.NotificationConfiguration = v
7139	return s
7140}
7141
7142// SetNumCacheNodes sets the NumCacheNodes field's value.
7143func (s *CacheCluster) SetNumCacheNodes(v int64) *CacheCluster {
7144	s.NumCacheNodes = &v
7145	return s
7146}
7147
7148// SetPendingModifiedValues sets the PendingModifiedValues field's value.
7149func (s *CacheCluster) SetPendingModifiedValues(v *PendingModifiedValues) *CacheCluster {
7150	s.PendingModifiedValues = v
7151	return s
7152}
7153
7154// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
7155func (s *CacheCluster) SetPreferredAvailabilityZone(v string) *CacheCluster {
7156	s.PreferredAvailabilityZone = &v
7157	return s
7158}
7159
7160// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
7161func (s *CacheCluster) SetPreferredMaintenanceWindow(v string) *CacheCluster {
7162	s.PreferredMaintenanceWindow = &v
7163	return s
7164}
7165
7166// SetReplicationGroupId sets the ReplicationGroupId field's value.
7167func (s *CacheCluster) SetReplicationGroupId(v string) *CacheCluster {
7168	s.ReplicationGroupId = &v
7169	return s
7170}
7171
7172// SetSecurityGroups sets the SecurityGroups field's value.
7173func (s *CacheCluster) SetSecurityGroups(v []*SecurityGroupMembership) *CacheCluster {
7174	s.SecurityGroups = v
7175	return s
7176}
7177
7178// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
7179func (s *CacheCluster) SetSnapshotRetentionLimit(v int64) *CacheCluster {
7180	s.SnapshotRetentionLimit = &v
7181	return s
7182}
7183
7184// SetSnapshotWindow sets the SnapshotWindow field's value.
7185func (s *CacheCluster) SetSnapshotWindow(v string) *CacheCluster {
7186	s.SnapshotWindow = &v
7187	return s
7188}
7189
7190// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
7191func (s *CacheCluster) SetTransitEncryptionEnabled(v bool) *CacheCluster {
7192	s.TransitEncryptionEnabled = &v
7193	return s
7194}
7195
7196// Provides all of the details about a particular cache engine version.
7197type CacheEngineVersion struct {
7198	_ struct{} `type:"structure"`
7199
7200	// The description of the cache engine.
7201	CacheEngineDescription *string `type:"string"`
7202
7203	// The description of the cache engine version.
7204	CacheEngineVersionDescription *string `type:"string"`
7205
7206	// The name of the cache parameter group family associated with this cache engine.
7207	//
7208	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
7209	// | redis4.0 | redis5.0 |
7210	CacheParameterGroupFamily *string `type:"string"`
7211
7212	// The name of the cache engine.
7213	Engine *string `type:"string"`
7214
7215	// The version number of the cache engine.
7216	EngineVersion *string `type:"string"`
7217}
7218
7219// String returns the string representation
7220func (s CacheEngineVersion) String() string {
7221	return awsutil.Prettify(s)
7222}
7223
7224// GoString returns the string representation
7225func (s CacheEngineVersion) GoString() string {
7226	return s.String()
7227}
7228
7229// SetCacheEngineDescription sets the CacheEngineDescription field's value.
7230func (s *CacheEngineVersion) SetCacheEngineDescription(v string) *CacheEngineVersion {
7231	s.CacheEngineDescription = &v
7232	return s
7233}
7234
7235// SetCacheEngineVersionDescription sets the CacheEngineVersionDescription field's value.
7236func (s *CacheEngineVersion) SetCacheEngineVersionDescription(v string) *CacheEngineVersion {
7237	s.CacheEngineVersionDescription = &v
7238	return s
7239}
7240
7241// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
7242func (s *CacheEngineVersion) SetCacheParameterGroupFamily(v string) *CacheEngineVersion {
7243	s.CacheParameterGroupFamily = &v
7244	return s
7245}
7246
7247// SetEngine sets the Engine field's value.
7248func (s *CacheEngineVersion) SetEngine(v string) *CacheEngineVersion {
7249	s.Engine = &v
7250	return s
7251}
7252
7253// SetEngineVersion sets the EngineVersion field's value.
7254func (s *CacheEngineVersion) SetEngineVersion(v string) *CacheEngineVersion {
7255	s.EngineVersion = &v
7256	return s
7257}
7258
7259// Represents an individual cache node within a cluster. Each cache node runs
7260// its own instance of the cluster's protocol-compliant caching software - either
7261// Memcached or Redis.
7262//
7263// The following node types are supported by ElastiCache. Generally speaking,
7264// the current generation types provide more memory and computational power
7265// at lower cost when compared to their equivalent previous generation counterparts.
7266//
7267//    * General purpose: Current generation: M5 node types: cache.m5.large,
7268//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
7269//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
7270//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
7271//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
7272//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
7273//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
7274//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
7275//
7276//    * Compute optimized: Previous generation: (not recommended) C1 node types:
7277//    cache.c1.xlarge
7278//
7279//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
7280//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
7281//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
7282//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
7283//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
7284//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
7285//    cache.r3.8xlarge
7286//
7287// Additional node type info
7288//
7289//    * All current generation instance types are created in Amazon VPC by default.
7290//
7291//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
7292//
7293//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
7294//
7295//    * Redis configuration variables appendonly and appendfsync are not supported
7296//    on Redis version 2.8.22 and later.
7297type CacheNode struct {
7298	_ struct{} `type:"structure"`
7299
7300	// The date and time when the cache node was created.
7301	CacheNodeCreateTime *time.Time `type:"timestamp"`
7302
7303	// The cache node identifier. A node ID is a numeric identifier (0001, 0002,
7304	// etc.). The combination of cluster ID and node ID uniquely identifies every
7305	// cache node used in a customer's AWS account.
7306	CacheNodeId *string `type:"string"`
7307
7308	// The current state of this cache node, one of the following values: available,
7309	// creating, rebooting, or deleting.
7310	CacheNodeStatus *string `type:"string"`
7311
7312	// The Availability Zone where this node was created and now resides.
7313	CustomerAvailabilityZone *string `type:"string"`
7314
7315	// The hostname for connecting to this cache node.
7316	Endpoint *Endpoint `type:"structure"`
7317
7318	// The status of the parameter group applied to this cache node.
7319	ParameterGroupStatus *string `type:"string"`
7320
7321	// The ID of the primary node to which this read replica node is synchronized.
7322	// If this field is empty, this node is not associated with a primary cluster.
7323	SourceCacheNodeId *string `type:"string"`
7324}
7325
7326// String returns the string representation
7327func (s CacheNode) String() string {
7328	return awsutil.Prettify(s)
7329}
7330
7331// GoString returns the string representation
7332func (s CacheNode) GoString() string {
7333	return s.String()
7334}
7335
7336// SetCacheNodeCreateTime sets the CacheNodeCreateTime field's value.
7337func (s *CacheNode) SetCacheNodeCreateTime(v time.Time) *CacheNode {
7338	s.CacheNodeCreateTime = &v
7339	return s
7340}
7341
7342// SetCacheNodeId sets the CacheNodeId field's value.
7343func (s *CacheNode) SetCacheNodeId(v string) *CacheNode {
7344	s.CacheNodeId = &v
7345	return s
7346}
7347
7348// SetCacheNodeStatus sets the CacheNodeStatus field's value.
7349func (s *CacheNode) SetCacheNodeStatus(v string) *CacheNode {
7350	s.CacheNodeStatus = &v
7351	return s
7352}
7353
7354// SetCustomerAvailabilityZone sets the CustomerAvailabilityZone field's value.
7355func (s *CacheNode) SetCustomerAvailabilityZone(v string) *CacheNode {
7356	s.CustomerAvailabilityZone = &v
7357	return s
7358}
7359
7360// SetEndpoint sets the Endpoint field's value.
7361func (s *CacheNode) SetEndpoint(v *Endpoint) *CacheNode {
7362	s.Endpoint = v
7363	return s
7364}
7365
7366// SetParameterGroupStatus sets the ParameterGroupStatus field's value.
7367func (s *CacheNode) SetParameterGroupStatus(v string) *CacheNode {
7368	s.ParameterGroupStatus = &v
7369	return s
7370}
7371
7372// SetSourceCacheNodeId sets the SourceCacheNodeId field's value.
7373func (s *CacheNode) SetSourceCacheNodeId(v string) *CacheNode {
7374	s.SourceCacheNodeId = &v
7375	return s
7376}
7377
7378// A parameter that has a different value for each cache node type it is applied
7379// to. For example, in a Redis cluster, a cache.m1.large cache node type would
7380// have a larger maxmemory value than a cache.m1.small type.
7381type CacheNodeTypeSpecificParameter struct {
7382	_ struct{} `type:"structure"`
7383
7384	// The valid range of values for the parameter.
7385	AllowedValues *string `type:"string"`
7386
7387	// A list of cache node types and their corresponding values for this parameter.
7388	CacheNodeTypeSpecificValues []*CacheNodeTypeSpecificValue `locationNameList:"CacheNodeTypeSpecificValue" type:"list"`
7389
7390	// Indicates whether a change to the parameter is applied immediately or requires
7391	// a reboot for the change to be applied. You can force a reboot or wait until
7392	// the next maintenance window's reboot. For more information, see Rebooting
7393	// a Cluster (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html).
7394	ChangeType *string `type:"string" enum:"ChangeType"`
7395
7396	// The valid data type for the parameter.
7397	DataType *string `type:"string"`
7398
7399	// A description of the parameter.
7400	Description *string `type:"string"`
7401
7402	// Indicates whether (true) or not (false) the parameter can be modified. Some
7403	// parameters have security or operational implications that prevent them from
7404	// being changed.
7405	IsModifiable *bool `type:"boolean"`
7406
7407	// The earliest cache engine version to which the parameter can apply.
7408	MinimumEngineVersion *string `type:"string"`
7409
7410	// The name of the parameter.
7411	ParameterName *string `type:"string"`
7412
7413	// The source of the parameter value.
7414	Source *string `type:"string"`
7415}
7416
7417// String returns the string representation
7418func (s CacheNodeTypeSpecificParameter) String() string {
7419	return awsutil.Prettify(s)
7420}
7421
7422// GoString returns the string representation
7423func (s CacheNodeTypeSpecificParameter) GoString() string {
7424	return s.String()
7425}
7426
7427// SetAllowedValues sets the AllowedValues field's value.
7428func (s *CacheNodeTypeSpecificParameter) SetAllowedValues(v string) *CacheNodeTypeSpecificParameter {
7429	s.AllowedValues = &v
7430	return s
7431}
7432
7433// SetCacheNodeTypeSpecificValues sets the CacheNodeTypeSpecificValues field's value.
7434func (s *CacheNodeTypeSpecificParameter) SetCacheNodeTypeSpecificValues(v []*CacheNodeTypeSpecificValue) *CacheNodeTypeSpecificParameter {
7435	s.CacheNodeTypeSpecificValues = v
7436	return s
7437}
7438
7439// SetChangeType sets the ChangeType field's value.
7440func (s *CacheNodeTypeSpecificParameter) SetChangeType(v string) *CacheNodeTypeSpecificParameter {
7441	s.ChangeType = &v
7442	return s
7443}
7444
7445// SetDataType sets the DataType field's value.
7446func (s *CacheNodeTypeSpecificParameter) SetDataType(v string) *CacheNodeTypeSpecificParameter {
7447	s.DataType = &v
7448	return s
7449}
7450
7451// SetDescription sets the Description field's value.
7452func (s *CacheNodeTypeSpecificParameter) SetDescription(v string) *CacheNodeTypeSpecificParameter {
7453	s.Description = &v
7454	return s
7455}
7456
7457// SetIsModifiable sets the IsModifiable field's value.
7458func (s *CacheNodeTypeSpecificParameter) SetIsModifiable(v bool) *CacheNodeTypeSpecificParameter {
7459	s.IsModifiable = &v
7460	return s
7461}
7462
7463// SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
7464func (s *CacheNodeTypeSpecificParameter) SetMinimumEngineVersion(v string) *CacheNodeTypeSpecificParameter {
7465	s.MinimumEngineVersion = &v
7466	return s
7467}
7468
7469// SetParameterName sets the ParameterName field's value.
7470func (s *CacheNodeTypeSpecificParameter) SetParameterName(v string) *CacheNodeTypeSpecificParameter {
7471	s.ParameterName = &v
7472	return s
7473}
7474
7475// SetSource sets the Source field's value.
7476func (s *CacheNodeTypeSpecificParameter) SetSource(v string) *CacheNodeTypeSpecificParameter {
7477	s.Source = &v
7478	return s
7479}
7480
7481// A value that applies only to a certain cache node type.
7482type CacheNodeTypeSpecificValue struct {
7483	_ struct{} `type:"structure"`
7484
7485	// The cache node type for which this value applies.
7486	CacheNodeType *string `type:"string"`
7487
7488	// The value for the cache node type.
7489	Value *string `type:"string"`
7490}
7491
7492// String returns the string representation
7493func (s CacheNodeTypeSpecificValue) String() string {
7494	return awsutil.Prettify(s)
7495}
7496
7497// GoString returns the string representation
7498func (s CacheNodeTypeSpecificValue) GoString() string {
7499	return s.String()
7500}
7501
7502// SetCacheNodeType sets the CacheNodeType field's value.
7503func (s *CacheNodeTypeSpecificValue) SetCacheNodeType(v string) *CacheNodeTypeSpecificValue {
7504	s.CacheNodeType = &v
7505	return s
7506}
7507
7508// SetValue sets the Value field's value.
7509func (s *CacheNodeTypeSpecificValue) SetValue(v string) *CacheNodeTypeSpecificValue {
7510	s.Value = &v
7511	return s
7512}
7513
7514// The status of the service update on the cache node
7515type CacheNodeUpdateStatus struct {
7516	_ struct{} `type:"structure"`
7517
7518	// The node ID of the cache cluster
7519	CacheNodeId *string `type:"string"`
7520
7521	// The deletion date of the node
7522	NodeDeletionDate *time.Time `type:"timestamp"`
7523
7524	// The end date of the update for a node
7525	NodeUpdateEndDate *time.Time `type:"timestamp"`
7526
7527	// Reflects whether the update was initiated by the customer or automatically
7528	// applied
7529	NodeUpdateInitiatedBy *string `type:"string" enum:"NodeUpdateInitiatedBy"`
7530
7531	// The date when the update is triggered
7532	NodeUpdateInitiatedDate *time.Time `type:"timestamp"`
7533
7534	// The start date of the update for a node
7535	NodeUpdateStartDate *time.Time `type:"timestamp"`
7536
7537	// The update status of the node
7538	NodeUpdateStatus *string `type:"string" enum:"NodeUpdateStatus"`
7539
7540	// The date when the NodeUpdateStatus was last modified>
7541	NodeUpdateStatusModifiedDate *time.Time `type:"timestamp"`
7542}
7543
7544// String returns the string representation
7545func (s CacheNodeUpdateStatus) String() string {
7546	return awsutil.Prettify(s)
7547}
7548
7549// GoString returns the string representation
7550func (s CacheNodeUpdateStatus) GoString() string {
7551	return s.String()
7552}
7553
7554// SetCacheNodeId sets the CacheNodeId field's value.
7555func (s *CacheNodeUpdateStatus) SetCacheNodeId(v string) *CacheNodeUpdateStatus {
7556	s.CacheNodeId = &v
7557	return s
7558}
7559
7560// SetNodeDeletionDate sets the NodeDeletionDate field's value.
7561func (s *CacheNodeUpdateStatus) SetNodeDeletionDate(v time.Time) *CacheNodeUpdateStatus {
7562	s.NodeDeletionDate = &v
7563	return s
7564}
7565
7566// SetNodeUpdateEndDate sets the NodeUpdateEndDate field's value.
7567func (s *CacheNodeUpdateStatus) SetNodeUpdateEndDate(v time.Time) *CacheNodeUpdateStatus {
7568	s.NodeUpdateEndDate = &v
7569	return s
7570}
7571
7572// SetNodeUpdateInitiatedBy sets the NodeUpdateInitiatedBy field's value.
7573func (s *CacheNodeUpdateStatus) SetNodeUpdateInitiatedBy(v string) *CacheNodeUpdateStatus {
7574	s.NodeUpdateInitiatedBy = &v
7575	return s
7576}
7577
7578// SetNodeUpdateInitiatedDate sets the NodeUpdateInitiatedDate field's value.
7579func (s *CacheNodeUpdateStatus) SetNodeUpdateInitiatedDate(v time.Time) *CacheNodeUpdateStatus {
7580	s.NodeUpdateInitiatedDate = &v
7581	return s
7582}
7583
7584// SetNodeUpdateStartDate sets the NodeUpdateStartDate field's value.
7585func (s *CacheNodeUpdateStatus) SetNodeUpdateStartDate(v time.Time) *CacheNodeUpdateStatus {
7586	s.NodeUpdateStartDate = &v
7587	return s
7588}
7589
7590// SetNodeUpdateStatus sets the NodeUpdateStatus field's value.
7591func (s *CacheNodeUpdateStatus) SetNodeUpdateStatus(v string) *CacheNodeUpdateStatus {
7592	s.NodeUpdateStatus = &v
7593	return s
7594}
7595
7596// SetNodeUpdateStatusModifiedDate sets the NodeUpdateStatusModifiedDate field's value.
7597func (s *CacheNodeUpdateStatus) SetNodeUpdateStatusModifiedDate(v time.Time) *CacheNodeUpdateStatus {
7598	s.NodeUpdateStatusModifiedDate = &v
7599	return s
7600}
7601
7602// Represents the output of a CreateCacheParameterGroup operation.
7603type CacheParameterGroup struct {
7604	_ struct{} `type:"structure"`
7605
7606	// The ARN (Amazon Resource Name) of the cache parameter group.
7607	ARN *string `type:"string"`
7608
7609	// The name of the cache parameter group family that this cache parameter group
7610	// is compatible with.
7611	//
7612	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
7613	// | redis4.0 | redis5.0 |
7614	CacheParameterGroupFamily *string `type:"string"`
7615
7616	// The name of the cache parameter group.
7617	CacheParameterGroupName *string `type:"string"`
7618
7619	// The description for this cache parameter group.
7620	Description *string `type:"string"`
7621
7622	// Indicates whether the parameter group is associated with a Global Datastore
7623	IsGlobal *bool `type:"boolean"`
7624}
7625
7626// String returns the string representation
7627func (s CacheParameterGroup) String() string {
7628	return awsutil.Prettify(s)
7629}
7630
7631// GoString returns the string representation
7632func (s CacheParameterGroup) GoString() string {
7633	return s.String()
7634}
7635
7636// SetARN sets the ARN field's value.
7637func (s *CacheParameterGroup) SetARN(v string) *CacheParameterGroup {
7638	s.ARN = &v
7639	return s
7640}
7641
7642// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
7643func (s *CacheParameterGroup) SetCacheParameterGroupFamily(v string) *CacheParameterGroup {
7644	s.CacheParameterGroupFamily = &v
7645	return s
7646}
7647
7648// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
7649func (s *CacheParameterGroup) SetCacheParameterGroupName(v string) *CacheParameterGroup {
7650	s.CacheParameterGroupName = &v
7651	return s
7652}
7653
7654// SetDescription sets the Description field's value.
7655func (s *CacheParameterGroup) SetDescription(v string) *CacheParameterGroup {
7656	s.Description = &v
7657	return s
7658}
7659
7660// SetIsGlobal sets the IsGlobal field's value.
7661func (s *CacheParameterGroup) SetIsGlobal(v bool) *CacheParameterGroup {
7662	s.IsGlobal = &v
7663	return s
7664}
7665
7666// Represents the output of one of the following operations:
7667//
7668//    * ModifyCacheParameterGroup
7669//
7670//    * ResetCacheParameterGroup
7671type CacheParameterGroupNameMessage struct {
7672	_ struct{} `type:"structure"`
7673
7674	// The name of the cache parameter group.
7675	CacheParameterGroupName *string `type:"string"`
7676}
7677
7678// String returns the string representation
7679func (s CacheParameterGroupNameMessage) String() string {
7680	return awsutil.Prettify(s)
7681}
7682
7683// GoString returns the string representation
7684func (s CacheParameterGroupNameMessage) GoString() string {
7685	return s.String()
7686}
7687
7688// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
7689func (s *CacheParameterGroupNameMessage) SetCacheParameterGroupName(v string) *CacheParameterGroupNameMessage {
7690	s.CacheParameterGroupName = &v
7691	return s
7692}
7693
7694// Status of the cache parameter group.
7695type CacheParameterGroupStatus struct {
7696	_ struct{} `type:"structure"`
7697
7698	// A list of the cache node IDs which need to be rebooted for parameter changes
7699	// to be applied. A node ID is a numeric identifier (0001, 0002, etc.).
7700	CacheNodeIdsToReboot []*string `locationNameList:"CacheNodeId" type:"list"`
7701
7702	// The name of the cache parameter group.
7703	CacheParameterGroupName *string `type:"string"`
7704
7705	// The status of parameter updates.
7706	ParameterApplyStatus *string `type:"string"`
7707}
7708
7709// String returns the string representation
7710func (s CacheParameterGroupStatus) String() string {
7711	return awsutil.Prettify(s)
7712}
7713
7714// GoString returns the string representation
7715func (s CacheParameterGroupStatus) GoString() string {
7716	return s.String()
7717}
7718
7719// SetCacheNodeIdsToReboot sets the CacheNodeIdsToReboot field's value.
7720func (s *CacheParameterGroupStatus) SetCacheNodeIdsToReboot(v []*string) *CacheParameterGroupStatus {
7721	s.CacheNodeIdsToReboot = v
7722	return s
7723}
7724
7725// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
7726func (s *CacheParameterGroupStatus) SetCacheParameterGroupName(v string) *CacheParameterGroupStatus {
7727	s.CacheParameterGroupName = &v
7728	return s
7729}
7730
7731// SetParameterApplyStatus sets the ParameterApplyStatus field's value.
7732func (s *CacheParameterGroupStatus) SetParameterApplyStatus(v string) *CacheParameterGroupStatus {
7733	s.ParameterApplyStatus = &v
7734	return s
7735}
7736
7737// Represents the output of one of the following operations:
7738//
7739//    * AuthorizeCacheSecurityGroupIngress
7740//
7741//    * CreateCacheSecurityGroup
7742//
7743//    * RevokeCacheSecurityGroupIngress
7744type CacheSecurityGroup struct {
7745	_ struct{} `type:"structure"`
7746
7747	// The ARN (Amazon Resource Name) of the cache security group.
7748	ARN *string `type:"string"`
7749
7750	// The name of the cache security group.
7751	CacheSecurityGroupName *string `type:"string"`
7752
7753	// The description of the cache security group.
7754	Description *string `type:"string"`
7755
7756	// A list of Amazon EC2 security groups that are associated with this cache
7757	// security group.
7758	EC2SecurityGroups []*EC2SecurityGroup `locationNameList:"EC2SecurityGroup" type:"list"`
7759
7760	// The AWS account ID of the cache security group owner.
7761	OwnerId *string `type:"string"`
7762}
7763
7764// String returns the string representation
7765func (s CacheSecurityGroup) String() string {
7766	return awsutil.Prettify(s)
7767}
7768
7769// GoString returns the string representation
7770func (s CacheSecurityGroup) GoString() string {
7771	return s.String()
7772}
7773
7774// SetARN sets the ARN field's value.
7775func (s *CacheSecurityGroup) SetARN(v string) *CacheSecurityGroup {
7776	s.ARN = &v
7777	return s
7778}
7779
7780// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
7781func (s *CacheSecurityGroup) SetCacheSecurityGroupName(v string) *CacheSecurityGroup {
7782	s.CacheSecurityGroupName = &v
7783	return s
7784}
7785
7786// SetDescription sets the Description field's value.
7787func (s *CacheSecurityGroup) SetDescription(v string) *CacheSecurityGroup {
7788	s.Description = &v
7789	return s
7790}
7791
7792// SetEC2SecurityGroups sets the EC2SecurityGroups field's value.
7793func (s *CacheSecurityGroup) SetEC2SecurityGroups(v []*EC2SecurityGroup) *CacheSecurityGroup {
7794	s.EC2SecurityGroups = v
7795	return s
7796}
7797
7798// SetOwnerId sets the OwnerId field's value.
7799func (s *CacheSecurityGroup) SetOwnerId(v string) *CacheSecurityGroup {
7800	s.OwnerId = &v
7801	return s
7802}
7803
7804// Represents a cluster's status within a particular cache security group.
7805type CacheSecurityGroupMembership struct {
7806	_ struct{} `type:"structure"`
7807
7808	// The name of the cache security group.
7809	CacheSecurityGroupName *string `type:"string"`
7810
7811	// The membership status in the cache security group. The status changes when
7812	// a cache security group is modified, or when the cache security groups assigned
7813	// to a cluster are modified.
7814	Status *string `type:"string"`
7815}
7816
7817// String returns the string representation
7818func (s CacheSecurityGroupMembership) String() string {
7819	return awsutil.Prettify(s)
7820}
7821
7822// GoString returns the string representation
7823func (s CacheSecurityGroupMembership) GoString() string {
7824	return s.String()
7825}
7826
7827// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
7828func (s *CacheSecurityGroupMembership) SetCacheSecurityGroupName(v string) *CacheSecurityGroupMembership {
7829	s.CacheSecurityGroupName = &v
7830	return s
7831}
7832
7833// SetStatus sets the Status field's value.
7834func (s *CacheSecurityGroupMembership) SetStatus(v string) *CacheSecurityGroupMembership {
7835	s.Status = &v
7836	return s
7837}
7838
7839// Represents the output of one of the following operations:
7840//
7841//    * CreateCacheSubnetGroup
7842//
7843//    * ModifyCacheSubnetGroup
7844type CacheSubnetGroup struct {
7845	_ struct{} `type:"structure"`
7846
7847	// The ARN (Amazon Resource Name) of the cache subnet group.
7848	ARN *string `type:"string"`
7849
7850	// The description of the cache subnet group.
7851	CacheSubnetGroupDescription *string `type:"string"`
7852
7853	// The name of the cache subnet group.
7854	CacheSubnetGroupName *string `type:"string"`
7855
7856	// A list of subnets associated with the cache subnet group.
7857	Subnets []*Subnet `locationNameList:"Subnet" type:"list"`
7858
7859	// The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet
7860	// group.
7861	VpcId *string `type:"string"`
7862}
7863
7864// String returns the string representation
7865func (s CacheSubnetGroup) String() string {
7866	return awsutil.Prettify(s)
7867}
7868
7869// GoString returns the string representation
7870func (s CacheSubnetGroup) GoString() string {
7871	return s.String()
7872}
7873
7874// SetARN sets the ARN field's value.
7875func (s *CacheSubnetGroup) SetARN(v string) *CacheSubnetGroup {
7876	s.ARN = &v
7877	return s
7878}
7879
7880// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
7881func (s *CacheSubnetGroup) SetCacheSubnetGroupDescription(v string) *CacheSubnetGroup {
7882	s.CacheSubnetGroupDescription = &v
7883	return s
7884}
7885
7886// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
7887func (s *CacheSubnetGroup) SetCacheSubnetGroupName(v string) *CacheSubnetGroup {
7888	s.CacheSubnetGroupName = &v
7889	return s
7890}
7891
7892// SetSubnets sets the Subnets field's value.
7893func (s *CacheSubnetGroup) SetSubnets(v []*Subnet) *CacheSubnetGroup {
7894	s.Subnets = v
7895	return s
7896}
7897
7898// SetVpcId sets the VpcId field's value.
7899func (s *CacheSubnetGroup) SetVpcId(v string) *CacheSubnetGroup {
7900	s.VpcId = &v
7901	return s
7902}
7903
7904type CompleteMigrationInput struct {
7905	_ struct{} `type:"structure"`
7906
7907	// Forces the migration to stop without ensuring that data is in sync. It is
7908	// recommended to use this option only to abort the migration and not recommended
7909	// when application wants to continue migration to ElastiCache.
7910	Force *bool `type:"boolean"`
7911
7912	// The ID of the replication group to which data is being migrated.
7913	//
7914	// ReplicationGroupId is a required field
7915	ReplicationGroupId *string `type:"string" required:"true"`
7916}
7917
7918// String returns the string representation
7919func (s CompleteMigrationInput) String() string {
7920	return awsutil.Prettify(s)
7921}
7922
7923// GoString returns the string representation
7924func (s CompleteMigrationInput) GoString() string {
7925	return s.String()
7926}
7927
7928// Validate inspects the fields of the type to determine if they are valid.
7929func (s *CompleteMigrationInput) Validate() error {
7930	invalidParams := request.ErrInvalidParams{Context: "CompleteMigrationInput"}
7931	if s.ReplicationGroupId == nil {
7932		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
7933	}
7934
7935	if invalidParams.Len() > 0 {
7936		return invalidParams
7937	}
7938	return nil
7939}
7940
7941// SetForce sets the Force field's value.
7942func (s *CompleteMigrationInput) SetForce(v bool) *CompleteMigrationInput {
7943	s.Force = &v
7944	return s
7945}
7946
7947// SetReplicationGroupId sets the ReplicationGroupId field's value.
7948func (s *CompleteMigrationInput) SetReplicationGroupId(v string) *CompleteMigrationInput {
7949	s.ReplicationGroupId = &v
7950	return s
7951}
7952
7953type CompleteMigrationOutput struct {
7954	_ struct{} `type:"structure"`
7955
7956	// Contains all of the attributes of a specific Redis replication group.
7957	ReplicationGroup *ReplicationGroup `type:"structure"`
7958}
7959
7960// String returns the string representation
7961func (s CompleteMigrationOutput) String() string {
7962	return awsutil.Prettify(s)
7963}
7964
7965// GoString returns the string representation
7966func (s CompleteMigrationOutput) GoString() string {
7967	return s.String()
7968}
7969
7970// SetReplicationGroup sets the ReplicationGroup field's value.
7971func (s *CompleteMigrationOutput) SetReplicationGroup(v *ReplicationGroup) *CompleteMigrationOutput {
7972	s.ReplicationGroup = v
7973	return s
7974}
7975
7976// Node group (shard) configuration options when adding or removing replicas.
7977// Each node group (shard) configuration has the following members: NodeGroupId,
7978// NewReplicaCount, and PreferredAvailabilityZones.
7979type ConfigureShard struct {
7980	_ struct{} `type:"structure"`
7981
7982	// The number of replicas you want in this node group at the end of this operation.
7983	// The maximum value for NewReplicaCount is 5. The minimum value depends upon
7984	// the type of Redis replication group you are working with.
7985	//
7986	// The minimum number of replicas in a shard or replication group is:
7987	//
7988	//    * Redis (cluster mode disabled) If Multi-AZ: 1 If Multi-AZ: 0
7989	//
7990	//    * Redis (cluster mode enabled): 0 (though you will not be able to failover
7991	//    to a replica if your primary node fails)
7992	//
7993	// NewReplicaCount is a required field
7994	NewReplicaCount *int64 `type:"integer" required:"true"`
7995
7996	// The 4-digit id for the node group you are configuring. For Redis (cluster
7997	// mode disabled) replication groups, the node group id is always 0001. To find
7998	// a Redis (cluster mode enabled)'s node group's (shard's) id, see Finding a
7999	// Shard's Id (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/shard-find-id.html).
8000	//
8001	// NodeGroupId is a required field
8002	NodeGroupId *string `min:"1" type:"string" required:"true"`
8003
8004	// A list of PreferredAvailabilityZone strings that specify which availability
8005	// zones the replication group's nodes are to be in. The nummber of PreferredAvailabilityZone
8006	// values must equal the value of NewReplicaCount plus 1 to account for the
8007	// primary node. If this member of ReplicaConfiguration is omitted, ElastiCache
8008	// for Redis selects the availability zone for each of the replicas.
8009	PreferredAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
8010}
8011
8012// String returns the string representation
8013func (s ConfigureShard) String() string {
8014	return awsutil.Prettify(s)
8015}
8016
8017// GoString returns the string representation
8018func (s ConfigureShard) GoString() string {
8019	return s.String()
8020}
8021
8022// Validate inspects the fields of the type to determine if they are valid.
8023func (s *ConfigureShard) Validate() error {
8024	invalidParams := request.ErrInvalidParams{Context: "ConfigureShard"}
8025	if s.NewReplicaCount == nil {
8026		invalidParams.Add(request.NewErrParamRequired("NewReplicaCount"))
8027	}
8028	if s.NodeGroupId == nil {
8029		invalidParams.Add(request.NewErrParamRequired("NodeGroupId"))
8030	}
8031	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
8032		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
8033	}
8034
8035	if invalidParams.Len() > 0 {
8036		return invalidParams
8037	}
8038	return nil
8039}
8040
8041// SetNewReplicaCount sets the NewReplicaCount field's value.
8042func (s *ConfigureShard) SetNewReplicaCount(v int64) *ConfigureShard {
8043	s.NewReplicaCount = &v
8044	return s
8045}
8046
8047// SetNodeGroupId sets the NodeGroupId field's value.
8048func (s *ConfigureShard) SetNodeGroupId(v string) *ConfigureShard {
8049	s.NodeGroupId = &v
8050	return s
8051}
8052
8053// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
8054func (s *ConfigureShard) SetPreferredAvailabilityZones(v []*string) *ConfigureShard {
8055	s.PreferredAvailabilityZones = v
8056	return s
8057}
8058
8059// Represents the input of a CopySnapshotMessage operation.
8060type CopySnapshotInput struct {
8061	_ struct{} `type:"structure"`
8062
8063	// The ID of the KMS key used to encrypt the target snapshot.
8064	KmsKeyId *string `type:"string"`
8065
8066	// The name of an existing snapshot from which to make a copy.
8067	//
8068	// SourceSnapshotName is a required field
8069	SourceSnapshotName *string `type:"string" required:"true"`
8070
8071	// The Amazon S3 bucket to which the snapshot is exported. This parameter is
8072	// used only when exporting a snapshot for external access.
8073	//
8074	// When using this parameter to export a snapshot, be sure Amazon ElastiCache
8075	// has the needed permissions to this S3 bucket. For more information, see Step
8076	// 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)
8077	// in the Amazon ElastiCache User Guide.
8078	//
8079	// For more information, see Exporting a Snapshot (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Snapshots.Exporting.html)
8080	// in the Amazon ElastiCache User Guide.
8081	TargetBucket *string `type:"string"`
8082
8083	// A name for the snapshot copy. ElastiCache does not permit overwriting a snapshot,
8084	// therefore this name must be unique within its context - ElastiCache or an
8085	// Amazon S3 bucket if exporting.
8086	//
8087	// TargetSnapshotName is a required field
8088	TargetSnapshotName *string `type:"string" required:"true"`
8089}
8090
8091// String returns the string representation
8092func (s CopySnapshotInput) String() string {
8093	return awsutil.Prettify(s)
8094}
8095
8096// GoString returns the string representation
8097func (s CopySnapshotInput) GoString() string {
8098	return s.String()
8099}
8100
8101// Validate inspects the fields of the type to determine if they are valid.
8102func (s *CopySnapshotInput) Validate() error {
8103	invalidParams := request.ErrInvalidParams{Context: "CopySnapshotInput"}
8104	if s.SourceSnapshotName == nil {
8105		invalidParams.Add(request.NewErrParamRequired("SourceSnapshotName"))
8106	}
8107	if s.TargetSnapshotName == nil {
8108		invalidParams.Add(request.NewErrParamRequired("TargetSnapshotName"))
8109	}
8110
8111	if invalidParams.Len() > 0 {
8112		return invalidParams
8113	}
8114	return nil
8115}
8116
8117// SetKmsKeyId sets the KmsKeyId field's value.
8118func (s *CopySnapshotInput) SetKmsKeyId(v string) *CopySnapshotInput {
8119	s.KmsKeyId = &v
8120	return s
8121}
8122
8123// SetSourceSnapshotName sets the SourceSnapshotName field's value.
8124func (s *CopySnapshotInput) SetSourceSnapshotName(v string) *CopySnapshotInput {
8125	s.SourceSnapshotName = &v
8126	return s
8127}
8128
8129// SetTargetBucket sets the TargetBucket field's value.
8130func (s *CopySnapshotInput) SetTargetBucket(v string) *CopySnapshotInput {
8131	s.TargetBucket = &v
8132	return s
8133}
8134
8135// SetTargetSnapshotName sets the TargetSnapshotName field's value.
8136func (s *CopySnapshotInput) SetTargetSnapshotName(v string) *CopySnapshotInput {
8137	s.TargetSnapshotName = &v
8138	return s
8139}
8140
8141type CopySnapshotOutput struct {
8142	_ struct{} `type:"structure"`
8143
8144	// Represents a copy of an entire Redis cluster as of the time when the snapshot
8145	// was taken.
8146	Snapshot *Snapshot `type:"structure"`
8147}
8148
8149// String returns the string representation
8150func (s CopySnapshotOutput) String() string {
8151	return awsutil.Prettify(s)
8152}
8153
8154// GoString returns the string representation
8155func (s CopySnapshotOutput) GoString() string {
8156	return s.String()
8157}
8158
8159// SetSnapshot sets the Snapshot field's value.
8160func (s *CopySnapshotOutput) SetSnapshot(v *Snapshot) *CopySnapshotOutput {
8161	s.Snapshot = v
8162	return s
8163}
8164
8165// Represents the input of a CreateCacheCluster operation.
8166type CreateCacheClusterInput struct {
8167	_ struct{} `type:"structure"`
8168
8169	// Specifies whether the nodes in this Memcached cluster are created in a single
8170	// Availability Zone or created across multiple Availability Zones in the cluster's
8171	// region.
8172	//
8173	// This parameter is only supported for Memcached clusters.
8174	//
8175	// If the AZMode and PreferredAvailabilityZones are not specified, ElastiCache
8176	// assumes single-az mode.
8177	AZMode *string `type:"string" enum:"AZMode"`
8178
8179	// Reserved parameter. The password used to access a password protected server.
8180	//
8181	// Password constraints:
8182	//
8183	//    * Must be only printable ASCII characters.
8184	//
8185	//    * Must be at least 16 characters and no more than 128 characters in length.
8186	//
8187	//    * The only permitted printable special characters are !, &, #, $, ^, <,
8188	//    >, and -. Other printable special characters cannot be used in the AUTH
8189	//    token.
8190	//
8191	// For more information, see AUTH password (http://redis.io/commands/AUTH) at
8192	// http://redis.io/commands/AUTH.
8193	AuthToken *string `type:"string"`
8194
8195	// This parameter is currently disabled.
8196	AutoMinorVersionUpgrade *bool `type:"boolean"`
8197
8198	// The node group (shard) identifier. This parameter is stored as a lowercase
8199	// string.
8200	//
8201	// Constraints:
8202	//
8203	//    * A name must contain from 1 to 50 alphanumeric characters or hyphens.
8204	//
8205	//    * The first character must be a letter.
8206	//
8207	//    * A name cannot end with a hyphen or contain two consecutive hyphens.
8208	//
8209	// CacheClusterId is a required field
8210	CacheClusterId *string `type:"string" required:"true"`
8211
8212	// The compute and memory capacity of the nodes in the node group (shard).
8213	//
8214	// The following node types are supported by ElastiCache. Generally speaking,
8215	// the current generation types provide more memory and computational power
8216	// at lower cost when compared to their equivalent previous generation counterparts.
8217	//
8218	//    * General purpose: Current generation: M5 node types: cache.m5.large,
8219	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
8220	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
8221	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
8222	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
8223	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
8224	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
8225	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
8226	//
8227	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
8228	//    cache.c1.xlarge
8229	//
8230	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
8231	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
8232	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
8233	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
8234	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
8235	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
8236	//    cache.r3.8xlarge
8237	//
8238	// Additional node type info
8239	//
8240	//    * All current generation instance types are created in Amazon VPC by default.
8241	//
8242	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
8243	//
8244	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
8245	//
8246	//    * Redis configuration variables appendonly and appendfsync are not supported
8247	//    on Redis version 2.8.22 and later.
8248	CacheNodeType *string `type:"string"`
8249
8250	// The name of the parameter group to associate with this cluster. If this argument
8251	// is omitted, the default parameter group for the specified engine is used.
8252	// You cannot use any parameter group which has cluster-enabled='yes' when creating
8253	// a cluster.
8254	CacheParameterGroupName *string `type:"string"`
8255
8256	// A list of security group names to associate with this cluster.
8257	//
8258	// Use this parameter only when you are creating a cluster outside of an Amazon
8259	// Virtual Private Cloud (Amazon VPC).
8260	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
8261
8262	// The name of the subnet group to be used for the cluster.
8263	//
8264	// Use this parameter only when you are creating a cluster in an Amazon Virtual
8265	// Private Cloud (Amazon VPC).
8266	//
8267	// If you're going to launch your cluster in an Amazon VPC, you need to create
8268	// a subnet group before you start creating a cluster. For more information,
8269	// see Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.html).
8270	CacheSubnetGroupName *string `type:"string"`
8271
8272	// The name of the cache engine to be used for this cluster.
8273	//
8274	// Valid values for this parameter are: memcached | redis
8275	Engine *string `type:"string"`
8276
8277	// The version number of the cache engine to be used for this cluster. To view
8278	// the supported cache engine versions, use the DescribeCacheEngineVersions
8279	// operation.
8280	//
8281	// Important: You can upgrade to a newer engine version (see Selecting a Cache
8282	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
8283	// but you cannot downgrade to an earlier engine version. If you want to use
8284	// an earlier engine version, you must delete the existing cluster or replication
8285	// group and create it anew with the earlier engine version.
8286	EngineVersion *string `type:"string"`
8287
8288	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
8289	// (SNS) topic to which notifications are sent.
8290	//
8291	// The Amazon SNS topic owner must be the same as the cluster owner.
8292	NotificationTopicArn *string `type:"string"`
8293
8294	// The initial number of cache nodes that the cluster has.
8295	//
8296	// For clusters running Redis, this value must be 1. For clusters running Memcached,
8297	// this value must be between 1 and 20.
8298	//
8299	// If you need more than 20 nodes for your Memcached cluster, please fill out
8300	// the ElastiCache Limit Increase Request form at http://aws.amazon.com/contact-us/elasticache-node-limit-request/
8301	// (http://aws.amazon.com/contact-us/elasticache-node-limit-request/).
8302	NumCacheNodes *int64 `type:"integer"`
8303
8304	// The port number on which each of the cache nodes accepts connections.
8305	Port *int64 `type:"integer"`
8306
8307	// The EC2 Availability Zone in which the cluster is created.
8308	//
8309	// All nodes belonging to this cluster are placed in the preferred Availability
8310	// Zone. If you want to create your nodes across multiple Availability Zones,
8311	// use PreferredAvailabilityZones.
8312	//
8313	// Default: System chosen Availability Zone.
8314	PreferredAvailabilityZone *string `type:"string"`
8315
8316	// A list of the Availability Zones in which cache nodes are created. The order
8317	// of the zones in the list is not important.
8318	//
8319	// This option is only supported on Memcached.
8320	//
8321	// If you are creating your cluster in an Amazon VPC (recommended) you can only
8322	// locate nodes in Availability Zones that are associated with the subnets in
8323	// the selected subnet group.
8324	//
8325	// The number of Availability Zones listed must equal the value of NumCacheNodes.
8326	//
8327	// If you want all the nodes in the same Availability Zone, use PreferredAvailabilityZone
8328	// instead, or repeat the Availability Zone multiple times in the list.
8329	//
8330	// Default: System chosen Availability Zones.
8331	PreferredAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
8332
8333	// Specifies the weekly time range during which maintenance on the cluster is
8334	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
8335	// (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid
8336	// values for ddd are:
8337	//
8338	// Specifies the weekly time range during which maintenance on the cluster is
8339	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
8340	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
8341	//
8342	// Valid values for ddd are:
8343	//
8344	//    * sun
8345	//
8346	//    * mon
8347	//
8348	//    * tue
8349	//
8350	//    * wed
8351	//
8352	//    * thu
8353	//
8354	//    * fri
8355	//
8356	//    * sat
8357	//
8358	// Example: sun:23:00-mon:01:30
8359	PreferredMaintenanceWindow *string `type:"string"`
8360
8361	// The ID of the replication group to which this cluster should belong. If this
8362	// parameter is specified, the cluster is added to the specified replication
8363	// group as a read replica; otherwise, the cluster is a standalone primary that
8364	// is not part of any replication group.
8365	//
8366	// If the specified replication group is Multi-AZ enabled and the Availability
8367	// Zone is not specified, the cluster is created in Availability Zones that
8368	// provide the best spread of read replicas across Availability Zones.
8369	//
8370	// This parameter is only valid if the Engine parameter is redis.
8371	ReplicationGroupId *string `type:"string"`
8372
8373	// One or more VPC security groups associated with the cluster.
8374	//
8375	// Use this parameter only when you are creating a cluster in an Amazon Virtual
8376	// Private Cloud (Amazon VPC).
8377	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
8378
8379	// A single-element string list containing an Amazon Resource Name (ARN) that
8380	// uniquely identifies a Redis RDB snapshot file stored in Amazon S3. The snapshot
8381	// file is used to populate the node group (shard). The Amazon S3 object name
8382	// in the ARN cannot contain any commas.
8383	//
8384	// This parameter is only valid if the Engine parameter is redis.
8385	//
8386	// Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
8387	SnapshotArns []*string `locationNameList:"SnapshotArn" type:"list"`
8388
8389	// The name of a Redis snapshot from which to restore data into the new node
8390	// group (shard). The snapshot status changes to restoring while the new node
8391	// group (shard) is being created.
8392	//
8393	// This parameter is only valid if the Engine parameter is redis.
8394	SnapshotName *string `type:"string"`
8395
8396	// The number of days for which ElastiCache retains automatic snapshots before
8397	// deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot
8398	// taken today is retained for 5 days before being deleted.
8399	//
8400	// This parameter is only valid if the Engine parameter is redis.
8401	//
8402	// Default: 0 (i.e., automatic backups are disabled for this cache cluster).
8403	SnapshotRetentionLimit *int64 `type:"integer"`
8404
8405	// The daily time range (in UTC) during which ElastiCache begins taking a daily
8406	// snapshot of your node group (shard).
8407	//
8408	// Example: 05:00-09:00
8409	//
8410	// If you do not specify this parameter, ElastiCache automatically chooses an
8411	// appropriate time range.
8412	//
8413	// This parameter is only valid if the Engine parameter is redis.
8414	SnapshotWindow *string `type:"string"`
8415
8416	// A list of cost allocation tags to be added to this resource.
8417	Tags []*Tag `locationNameList:"Tag" type:"list"`
8418}
8419
8420// String returns the string representation
8421func (s CreateCacheClusterInput) String() string {
8422	return awsutil.Prettify(s)
8423}
8424
8425// GoString returns the string representation
8426func (s CreateCacheClusterInput) GoString() string {
8427	return s.String()
8428}
8429
8430// Validate inspects the fields of the type to determine if they are valid.
8431func (s *CreateCacheClusterInput) Validate() error {
8432	invalidParams := request.ErrInvalidParams{Context: "CreateCacheClusterInput"}
8433	if s.CacheClusterId == nil {
8434		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
8435	}
8436
8437	if invalidParams.Len() > 0 {
8438		return invalidParams
8439	}
8440	return nil
8441}
8442
8443// SetAZMode sets the AZMode field's value.
8444func (s *CreateCacheClusterInput) SetAZMode(v string) *CreateCacheClusterInput {
8445	s.AZMode = &v
8446	return s
8447}
8448
8449// SetAuthToken sets the AuthToken field's value.
8450func (s *CreateCacheClusterInput) SetAuthToken(v string) *CreateCacheClusterInput {
8451	s.AuthToken = &v
8452	return s
8453}
8454
8455// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
8456func (s *CreateCacheClusterInput) SetAutoMinorVersionUpgrade(v bool) *CreateCacheClusterInput {
8457	s.AutoMinorVersionUpgrade = &v
8458	return s
8459}
8460
8461// SetCacheClusterId sets the CacheClusterId field's value.
8462func (s *CreateCacheClusterInput) SetCacheClusterId(v string) *CreateCacheClusterInput {
8463	s.CacheClusterId = &v
8464	return s
8465}
8466
8467// SetCacheNodeType sets the CacheNodeType field's value.
8468func (s *CreateCacheClusterInput) SetCacheNodeType(v string) *CreateCacheClusterInput {
8469	s.CacheNodeType = &v
8470	return s
8471}
8472
8473// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
8474func (s *CreateCacheClusterInput) SetCacheParameterGroupName(v string) *CreateCacheClusterInput {
8475	s.CacheParameterGroupName = &v
8476	return s
8477}
8478
8479// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
8480func (s *CreateCacheClusterInput) SetCacheSecurityGroupNames(v []*string) *CreateCacheClusterInput {
8481	s.CacheSecurityGroupNames = v
8482	return s
8483}
8484
8485// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
8486func (s *CreateCacheClusterInput) SetCacheSubnetGroupName(v string) *CreateCacheClusterInput {
8487	s.CacheSubnetGroupName = &v
8488	return s
8489}
8490
8491// SetEngine sets the Engine field's value.
8492func (s *CreateCacheClusterInput) SetEngine(v string) *CreateCacheClusterInput {
8493	s.Engine = &v
8494	return s
8495}
8496
8497// SetEngineVersion sets the EngineVersion field's value.
8498func (s *CreateCacheClusterInput) SetEngineVersion(v string) *CreateCacheClusterInput {
8499	s.EngineVersion = &v
8500	return s
8501}
8502
8503// SetNotificationTopicArn sets the NotificationTopicArn field's value.
8504func (s *CreateCacheClusterInput) SetNotificationTopicArn(v string) *CreateCacheClusterInput {
8505	s.NotificationTopicArn = &v
8506	return s
8507}
8508
8509// SetNumCacheNodes sets the NumCacheNodes field's value.
8510func (s *CreateCacheClusterInput) SetNumCacheNodes(v int64) *CreateCacheClusterInput {
8511	s.NumCacheNodes = &v
8512	return s
8513}
8514
8515// SetPort sets the Port field's value.
8516func (s *CreateCacheClusterInput) SetPort(v int64) *CreateCacheClusterInput {
8517	s.Port = &v
8518	return s
8519}
8520
8521// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
8522func (s *CreateCacheClusterInput) SetPreferredAvailabilityZone(v string) *CreateCacheClusterInput {
8523	s.PreferredAvailabilityZone = &v
8524	return s
8525}
8526
8527// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
8528func (s *CreateCacheClusterInput) SetPreferredAvailabilityZones(v []*string) *CreateCacheClusterInput {
8529	s.PreferredAvailabilityZones = v
8530	return s
8531}
8532
8533// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
8534func (s *CreateCacheClusterInput) SetPreferredMaintenanceWindow(v string) *CreateCacheClusterInput {
8535	s.PreferredMaintenanceWindow = &v
8536	return s
8537}
8538
8539// SetReplicationGroupId sets the ReplicationGroupId field's value.
8540func (s *CreateCacheClusterInput) SetReplicationGroupId(v string) *CreateCacheClusterInput {
8541	s.ReplicationGroupId = &v
8542	return s
8543}
8544
8545// SetSecurityGroupIds sets the SecurityGroupIds field's value.
8546func (s *CreateCacheClusterInput) SetSecurityGroupIds(v []*string) *CreateCacheClusterInput {
8547	s.SecurityGroupIds = v
8548	return s
8549}
8550
8551// SetSnapshotArns sets the SnapshotArns field's value.
8552func (s *CreateCacheClusterInput) SetSnapshotArns(v []*string) *CreateCacheClusterInput {
8553	s.SnapshotArns = v
8554	return s
8555}
8556
8557// SetSnapshotName sets the SnapshotName field's value.
8558func (s *CreateCacheClusterInput) SetSnapshotName(v string) *CreateCacheClusterInput {
8559	s.SnapshotName = &v
8560	return s
8561}
8562
8563// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
8564func (s *CreateCacheClusterInput) SetSnapshotRetentionLimit(v int64) *CreateCacheClusterInput {
8565	s.SnapshotRetentionLimit = &v
8566	return s
8567}
8568
8569// SetSnapshotWindow sets the SnapshotWindow field's value.
8570func (s *CreateCacheClusterInput) SetSnapshotWindow(v string) *CreateCacheClusterInput {
8571	s.SnapshotWindow = &v
8572	return s
8573}
8574
8575// SetTags sets the Tags field's value.
8576func (s *CreateCacheClusterInput) SetTags(v []*Tag) *CreateCacheClusterInput {
8577	s.Tags = v
8578	return s
8579}
8580
8581type CreateCacheClusterOutput struct {
8582	_ struct{} `type:"structure"`
8583
8584	// Contains all of the attributes of a specific cluster.
8585	CacheCluster *CacheCluster `type:"structure"`
8586}
8587
8588// String returns the string representation
8589func (s CreateCacheClusterOutput) String() string {
8590	return awsutil.Prettify(s)
8591}
8592
8593// GoString returns the string representation
8594func (s CreateCacheClusterOutput) GoString() string {
8595	return s.String()
8596}
8597
8598// SetCacheCluster sets the CacheCluster field's value.
8599func (s *CreateCacheClusterOutput) SetCacheCluster(v *CacheCluster) *CreateCacheClusterOutput {
8600	s.CacheCluster = v
8601	return s
8602}
8603
8604// Represents the input of a CreateCacheParameterGroup operation.
8605type CreateCacheParameterGroupInput struct {
8606	_ struct{} `type:"structure"`
8607
8608	// The name of the cache parameter group family that the cache parameter group
8609	// can be used with.
8610	//
8611	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
8612	// | redis4.0 | redis5.0 |
8613	//
8614	// CacheParameterGroupFamily is a required field
8615	CacheParameterGroupFamily *string `type:"string" required:"true"`
8616
8617	// A user-specified name for the cache parameter group.
8618	//
8619	// CacheParameterGroupName is a required field
8620	CacheParameterGroupName *string `type:"string" required:"true"`
8621
8622	// A user-specified description for the cache parameter group.
8623	//
8624	// Description is a required field
8625	Description *string `type:"string" required:"true"`
8626}
8627
8628// String returns the string representation
8629func (s CreateCacheParameterGroupInput) String() string {
8630	return awsutil.Prettify(s)
8631}
8632
8633// GoString returns the string representation
8634func (s CreateCacheParameterGroupInput) GoString() string {
8635	return s.String()
8636}
8637
8638// Validate inspects the fields of the type to determine if they are valid.
8639func (s *CreateCacheParameterGroupInput) Validate() error {
8640	invalidParams := request.ErrInvalidParams{Context: "CreateCacheParameterGroupInput"}
8641	if s.CacheParameterGroupFamily == nil {
8642		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupFamily"))
8643	}
8644	if s.CacheParameterGroupName == nil {
8645		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
8646	}
8647	if s.Description == nil {
8648		invalidParams.Add(request.NewErrParamRequired("Description"))
8649	}
8650
8651	if invalidParams.Len() > 0 {
8652		return invalidParams
8653	}
8654	return nil
8655}
8656
8657// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
8658func (s *CreateCacheParameterGroupInput) SetCacheParameterGroupFamily(v string) *CreateCacheParameterGroupInput {
8659	s.CacheParameterGroupFamily = &v
8660	return s
8661}
8662
8663// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
8664func (s *CreateCacheParameterGroupInput) SetCacheParameterGroupName(v string) *CreateCacheParameterGroupInput {
8665	s.CacheParameterGroupName = &v
8666	return s
8667}
8668
8669// SetDescription sets the Description field's value.
8670func (s *CreateCacheParameterGroupInput) SetDescription(v string) *CreateCacheParameterGroupInput {
8671	s.Description = &v
8672	return s
8673}
8674
8675type CreateCacheParameterGroupOutput struct {
8676	_ struct{} `type:"structure"`
8677
8678	// Represents the output of a CreateCacheParameterGroup operation.
8679	CacheParameterGroup *CacheParameterGroup `type:"structure"`
8680}
8681
8682// String returns the string representation
8683func (s CreateCacheParameterGroupOutput) String() string {
8684	return awsutil.Prettify(s)
8685}
8686
8687// GoString returns the string representation
8688func (s CreateCacheParameterGroupOutput) GoString() string {
8689	return s.String()
8690}
8691
8692// SetCacheParameterGroup sets the CacheParameterGroup field's value.
8693func (s *CreateCacheParameterGroupOutput) SetCacheParameterGroup(v *CacheParameterGroup) *CreateCacheParameterGroupOutput {
8694	s.CacheParameterGroup = v
8695	return s
8696}
8697
8698// Represents the input of a CreateCacheSecurityGroup operation.
8699type CreateCacheSecurityGroupInput struct {
8700	_ struct{} `type:"structure"`
8701
8702	// A name for the cache security group. This value is stored as a lowercase
8703	// string.
8704	//
8705	// Constraints: Must contain no more than 255 alphanumeric characters. Cannot
8706	// be the word "Default".
8707	//
8708	// Example: mysecuritygroup
8709	//
8710	// CacheSecurityGroupName is a required field
8711	CacheSecurityGroupName *string `type:"string" required:"true"`
8712
8713	// A description for the cache security group.
8714	//
8715	// Description is a required field
8716	Description *string `type:"string" required:"true"`
8717}
8718
8719// String returns the string representation
8720func (s CreateCacheSecurityGroupInput) String() string {
8721	return awsutil.Prettify(s)
8722}
8723
8724// GoString returns the string representation
8725func (s CreateCacheSecurityGroupInput) GoString() string {
8726	return s.String()
8727}
8728
8729// Validate inspects the fields of the type to determine if they are valid.
8730func (s *CreateCacheSecurityGroupInput) Validate() error {
8731	invalidParams := request.ErrInvalidParams{Context: "CreateCacheSecurityGroupInput"}
8732	if s.CacheSecurityGroupName == nil {
8733		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
8734	}
8735	if s.Description == nil {
8736		invalidParams.Add(request.NewErrParamRequired("Description"))
8737	}
8738
8739	if invalidParams.Len() > 0 {
8740		return invalidParams
8741	}
8742	return nil
8743}
8744
8745// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
8746func (s *CreateCacheSecurityGroupInput) SetCacheSecurityGroupName(v string) *CreateCacheSecurityGroupInput {
8747	s.CacheSecurityGroupName = &v
8748	return s
8749}
8750
8751// SetDescription sets the Description field's value.
8752func (s *CreateCacheSecurityGroupInput) SetDescription(v string) *CreateCacheSecurityGroupInput {
8753	s.Description = &v
8754	return s
8755}
8756
8757type CreateCacheSecurityGroupOutput struct {
8758	_ struct{} `type:"structure"`
8759
8760	// Represents the output of one of the following operations:
8761	//
8762	//    * AuthorizeCacheSecurityGroupIngress
8763	//
8764	//    * CreateCacheSecurityGroup
8765	//
8766	//    * RevokeCacheSecurityGroupIngress
8767	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
8768}
8769
8770// String returns the string representation
8771func (s CreateCacheSecurityGroupOutput) String() string {
8772	return awsutil.Prettify(s)
8773}
8774
8775// GoString returns the string representation
8776func (s CreateCacheSecurityGroupOutput) GoString() string {
8777	return s.String()
8778}
8779
8780// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
8781func (s *CreateCacheSecurityGroupOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *CreateCacheSecurityGroupOutput {
8782	s.CacheSecurityGroup = v
8783	return s
8784}
8785
8786// Represents the input of a CreateCacheSubnetGroup operation.
8787type CreateCacheSubnetGroupInput struct {
8788	_ struct{} `type:"structure"`
8789
8790	// A description for the cache subnet group.
8791	//
8792	// CacheSubnetGroupDescription is a required field
8793	CacheSubnetGroupDescription *string `type:"string" required:"true"`
8794
8795	// A name for the cache subnet group. This value is stored as a lowercase string.
8796	//
8797	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
8798	//
8799	// Example: mysubnetgroup
8800	//
8801	// CacheSubnetGroupName is a required field
8802	CacheSubnetGroupName *string `type:"string" required:"true"`
8803
8804	// A list of VPC subnet IDs for the cache subnet group.
8805	//
8806	// SubnetIds is a required field
8807	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list" required:"true"`
8808}
8809
8810// String returns the string representation
8811func (s CreateCacheSubnetGroupInput) String() string {
8812	return awsutil.Prettify(s)
8813}
8814
8815// GoString returns the string representation
8816func (s CreateCacheSubnetGroupInput) GoString() string {
8817	return s.String()
8818}
8819
8820// Validate inspects the fields of the type to determine if they are valid.
8821func (s *CreateCacheSubnetGroupInput) Validate() error {
8822	invalidParams := request.ErrInvalidParams{Context: "CreateCacheSubnetGroupInput"}
8823	if s.CacheSubnetGroupDescription == nil {
8824		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupDescription"))
8825	}
8826	if s.CacheSubnetGroupName == nil {
8827		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
8828	}
8829	if s.SubnetIds == nil {
8830		invalidParams.Add(request.NewErrParamRequired("SubnetIds"))
8831	}
8832
8833	if invalidParams.Len() > 0 {
8834		return invalidParams
8835	}
8836	return nil
8837}
8838
8839// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
8840func (s *CreateCacheSubnetGroupInput) SetCacheSubnetGroupDescription(v string) *CreateCacheSubnetGroupInput {
8841	s.CacheSubnetGroupDescription = &v
8842	return s
8843}
8844
8845// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
8846func (s *CreateCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *CreateCacheSubnetGroupInput {
8847	s.CacheSubnetGroupName = &v
8848	return s
8849}
8850
8851// SetSubnetIds sets the SubnetIds field's value.
8852func (s *CreateCacheSubnetGroupInput) SetSubnetIds(v []*string) *CreateCacheSubnetGroupInput {
8853	s.SubnetIds = v
8854	return s
8855}
8856
8857type CreateCacheSubnetGroupOutput struct {
8858	_ struct{} `type:"structure"`
8859
8860	// Represents the output of one of the following operations:
8861	//
8862	//    * CreateCacheSubnetGroup
8863	//
8864	//    * ModifyCacheSubnetGroup
8865	CacheSubnetGroup *CacheSubnetGroup `type:"structure"`
8866}
8867
8868// String returns the string representation
8869func (s CreateCacheSubnetGroupOutput) String() string {
8870	return awsutil.Prettify(s)
8871}
8872
8873// GoString returns the string representation
8874func (s CreateCacheSubnetGroupOutput) GoString() string {
8875	return s.String()
8876}
8877
8878// SetCacheSubnetGroup sets the CacheSubnetGroup field's value.
8879func (s *CreateCacheSubnetGroupOutput) SetCacheSubnetGroup(v *CacheSubnetGroup) *CreateCacheSubnetGroupOutput {
8880	s.CacheSubnetGroup = v
8881	return s
8882}
8883
8884type CreateGlobalReplicationGroupInput struct {
8885	_ struct{} `type:"structure"`
8886
8887	// Provides details of the Global Datastore
8888	GlobalReplicationGroupDescription *string `type:"string"`
8889
8890	// The suffix name of a Global Datastore. The suffix guarantees uniqueness of
8891	// the Global Datastore name across multiple regions.
8892	//
8893	// GlobalReplicationGroupIdSuffix is a required field
8894	GlobalReplicationGroupIdSuffix *string `type:"string" required:"true"`
8895
8896	// The name of the primary cluster that accepts writes and will replicate updates
8897	// to the secondary cluster.
8898	//
8899	// PrimaryReplicationGroupId is a required field
8900	PrimaryReplicationGroupId *string `type:"string" required:"true"`
8901}
8902
8903// String returns the string representation
8904func (s CreateGlobalReplicationGroupInput) String() string {
8905	return awsutil.Prettify(s)
8906}
8907
8908// GoString returns the string representation
8909func (s CreateGlobalReplicationGroupInput) GoString() string {
8910	return s.String()
8911}
8912
8913// Validate inspects the fields of the type to determine if they are valid.
8914func (s *CreateGlobalReplicationGroupInput) Validate() error {
8915	invalidParams := request.ErrInvalidParams{Context: "CreateGlobalReplicationGroupInput"}
8916	if s.GlobalReplicationGroupIdSuffix == nil {
8917		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupIdSuffix"))
8918	}
8919	if s.PrimaryReplicationGroupId == nil {
8920		invalidParams.Add(request.NewErrParamRequired("PrimaryReplicationGroupId"))
8921	}
8922
8923	if invalidParams.Len() > 0 {
8924		return invalidParams
8925	}
8926	return nil
8927}
8928
8929// SetGlobalReplicationGroupDescription sets the GlobalReplicationGroupDescription field's value.
8930func (s *CreateGlobalReplicationGroupInput) SetGlobalReplicationGroupDescription(v string) *CreateGlobalReplicationGroupInput {
8931	s.GlobalReplicationGroupDescription = &v
8932	return s
8933}
8934
8935// SetGlobalReplicationGroupIdSuffix sets the GlobalReplicationGroupIdSuffix field's value.
8936func (s *CreateGlobalReplicationGroupInput) SetGlobalReplicationGroupIdSuffix(v string) *CreateGlobalReplicationGroupInput {
8937	s.GlobalReplicationGroupIdSuffix = &v
8938	return s
8939}
8940
8941// SetPrimaryReplicationGroupId sets the PrimaryReplicationGroupId field's value.
8942func (s *CreateGlobalReplicationGroupInput) SetPrimaryReplicationGroupId(v string) *CreateGlobalReplicationGroupInput {
8943	s.PrimaryReplicationGroupId = &v
8944	return s
8945}
8946
8947type CreateGlobalReplicationGroupOutput struct {
8948	_ struct{} `type:"structure"`
8949
8950	// Consists of a primary cluster that accepts writes and an associated secondary
8951	// cluster that resides in a different AWS region. The secondary cluster accepts
8952	// only reads. The primary cluster automatically replicates updates to the secondary
8953	// cluster.
8954	//
8955	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
8956	//    Datastore, which is what you use to associate a secondary cluster.
8957	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
8958}
8959
8960// String returns the string representation
8961func (s CreateGlobalReplicationGroupOutput) String() string {
8962	return awsutil.Prettify(s)
8963}
8964
8965// GoString returns the string representation
8966func (s CreateGlobalReplicationGroupOutput) GoString() string {
8967	return s.String()
8968}
8969
8970// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
8971func (s *CreateGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *CreateGlobalReplicationGroupOutput {
8972	s.GlobalReplicationGroup = v
8973	return s
8974}
8975
8976// Represents the input of a CreateReplicationGroup operation.
8977type CreateReplicationGroupInput struct {
8978	_ struct{} `type:"structure"`
8979
8980	// A flag that enables encryption at rest when set to true.
8981	//
8982	// You cannot modify the value of AtRestEncryptionEnabled after the replication
8983	// group is created. To enable encryption at rest on a replication group you
8984	// must set AtRestEncryptionEnabled to true when you create the replication
8985	// group.
8986	//
8987	// Required: Only available when creating a replication group in an Amazon VPC
8988	// using redis version 3.2.6, 4.x or later.
8989	//
8990	// Default: false
8991	AtRestEncryptionEnabled *bool `type:"boolean"`
8992
8993	// Reserved parameter. The password used to access a password protected server.
8994	//
8995	// AuthToken can be specified only on replication groups where TransitEncryptionEnabled
8996	// is true.
8997	//
8998	// For HIPAA compliance, you must specify TransitEncryptionEnabled as true,
8999	// an AuthToken, and a CacheSubnetGroup.
9000	//
9001	// Password constraints:
9002	//
9003	//    * Must be only printable ASCII characters.
9004	//
9005	//    * Must be at least 16 characters and no more than 128 characters in length.
9006	//
9007	//    * The only permitted printable special characters are !, &, #, $, ^, <,
9008	//    >, and -. Other printable special characters cannot be used in the AUTH
9009	//    token.
9010	//
9011	// For more information, see AUTH password (http://redis.io/commands/AUTH) at
9012	// http://redis.io/commands/AUTH.
9013	AuthToken *string `type:"string"`
9014
9015	// This parameter is currently disabled.
9016	AutoMinorVersionUpgrade *bool `type:"boolean"`
9017
9018	// Specifies whether a read-only replica is automatically promoted to read/write
9019	// primary if the existing primary fails.
9020	//
9021	// AutomaticFailoverEnabled must be enabled for Redis (cluster mode enabled)
9022	// replication groups.
9023	//
9024	// Default: false
9025	AutomaticFailoverEnabled *bool `type:"boolean"`
9026
9027	// The compute and memory capacity of the nodes in the node group (shard).
9028	//
9029	// The following node types are supported by ElastiCache. Generally speaking,
9030	// the current generation types provide more memory and computational power
9031	// at lower cost when compared to their equivalent previous generation counterparts.
9032	//
9033	//    * General purpose: Current generation: M5 node types: cache.m5.large,
9034	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
9035	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
9036	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
9037	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
9038	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
9039	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
9040	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
9041	//
9042	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
9043	//    cache.c1.xlarge
9044	//
9045	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
9046	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
9047	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
9048	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
9049	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
9050	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
9051	//    cache.r3.8xlarge
9052	//
9053	// Additional node type info
9054	//
9055	//    * All current generation instance types are created in Amazon VPC by default.
9056	//
9057	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
9058	//
9059	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
9060	//
9061	//    * Redis configuration variables appendonly and appendfsync are not supported
9062	//    on Redis version 2.8.22 and later.
9063	CacheNodeType *string `type:"string"`
9064
9065	// The name of the parameter group to associate with this replication group.
9066	// If this argument is omitted, the default cache parameter group for the specified
9067	// engine is used.
9068	//
9069	// If you are restoring to an engine version that is different than the original,
9070	// you must specify the default version of that version. For example, CacheParameterGroupName=default.redis4.0.
9071	//
9072	// If you are running Redis version 3.2.4 or later, only one node group (shard),
9073	// and want to use a default parameter group, we recommend that you specify
9074	// the parameter group by name.
9075	//
9076	//    * To create a Redis (cluster mode disabled) replication group, use CacheParameterGroupName=default.redis3.2.
9077	//
9078	//    * To create a Redis (cluster mode enabled) replication group, use CacheParameterGroupName=default.redis3.2.cluster.on.
9079	CacheParameterGroupName *string `type:"string"`
9080
9081	// A list of cache security group names to associate with this replication group.
9082	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
9083
9084	// The name of the cache subnet group to be used for the replication group.
9085	//
9086	// If you're going to launch your cluster in an Amazon VPC, you need to create
9087	// a subnet group before you start creating a cluster. For more information,
9088	// see Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SubnetGroups.html).
9089	CacheSubnetGroupName *string `type:"string"`
9090
9091	// The name of the cache engine to be used for the clusters in this replication
9092	// group.
9093	Engine *string `type:"string"`
9094
9095	// The version number of the cache engine to be used for the clusters in this
9096	// replication group. To view the supported cache engine versions, use the DescribeCacheEngineVersions
9097	// operation.
9098	//
9099	// Important: You can upgrade to a newer engine version (see Selecting a Cache
9100	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement))
9101	// in the ElastiCache User Guide, but you cannot downgrade to an earlier engine
9102	// version. If you want to use an earlier engine version, you must delete the
9103	// existing cluster or replication group and create it anew with the earlier
9104	// engine version.
9105	EngineVersion *string `type:"string"`
9106
9107	// The name of the Global Datastore
9108	GlobalReplicationGroupId *string `type:"string"`
9109
9110	// The ID of the KMS key used to encrypt the disk in the cluster.
9111	KmsKeyId *string `type:"string"`
9112
9113	// A flag indicating if you have Multi-AZ enabled to enhance fault tolerance.
9114	// For more information, see Minimizing Downtime: Multi-AZ (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html).
9115	MultiAZEnabled *bool `type:"boolean"`
9116
9117	// A list of node group (shard) configuration options. Each node group (shard)
9118	// configuration has the following members: PrimaryAvailabilityZone, ReplicaAvailabilityZones,
9119	// ReplicaCount, and Slots.
9120	//
9121	// If you're creating a Redis (cluster mode disabled) or a Redis (cluster mode
9122	// enabled) replication group, you can use this parameter to individually configure
9123	// each node group (shard), or you can omit this parameter. However, it is required
9124	// when seeding a Redis (cluster mode enabled) cluster from a S3 rdb file. You
9125	// must configure each node group (shard) using this parameter because you must
9126	// specify the slots for each node group.
9127	NodeGroupConfiguration []*NodeGroupConfiguration `locationNameList:"NodeGroupConfiguration" type:"list"`
9128
9129	// The Amazon Resource Name (ARN) of the Amazon Simple Notification Service
9130	// (SNS) topic to which notifications are sent.
9131	//
9132	// The Amazon SNS topic owner must be the same as the cluster owner.
9133	NotificationTopicArn *string `type:"string"`
9134
9135	// The number of clusters this replication group initially has.
9136	//
9137	// This parameter is not used if there is more than one node group (shard).
9138	// You should use ReplicasPerNodeGroup instead.
9139	//
9140	// If AutomaticFailoverEnabled is true, the value of this parameter must be
9141	// at least 2. If AutomaticFailoverEnabled is false you can omit this parameter
9142	// (it will default to 1), or you can explicitly set it to a value between 2
9143	// and 6.
9144	//
9145	// The maximum permitted value for NumCacheClusters is 6 (1 primary plus 5 replicas).
9146	NumCacheClusters *int64 `type:"integer"`
9147
9148	// An optional parameter that specifies the number of node groups (shards) for
9149	// this Redis (cluster mode enabled) replication group. For Redis (cluster mode
9150	// disabled) either omit this parameter or set it to 1.
9151	//
9152	// Default: 1
9153	NumNodeGroups *int64 `type:"integer"`
9154
9155	// The port number on which each member of the replication group accepts connections.
9156	Port *int64 `type:"integer"`
9157
9158	// A list of EC2 Availability Zones in which the replication group's clusters
9159	// are created. The order of the Availability Zones in the list is the order
9160	// in which clusters are allocated. The primary cluster is created in the first
9161	// AZ in the list.
9162	//
9163	// This parameter is not used if there is more than one node group (shard).
9164	// You should use NodeGroupConfiguration instead.
9165	//
9166	// If you are creating your replication group in an Amazon VPC (recommended),
9167	// you can only locate clusters in Availability Zones associated with the subnets
9168	// in the selected subnet group.
9169	//
9170	// The number of Availability Zones listed must equal the value of NumCacheClusters.
9171	//
9172	// Default: system chosen Availability Zones.
9173	PreferredCacheClusterAZs []*string `locationNameList:"AvailabilityZone" type:"list"`
9174
9175	// Specifies the weekly time range during which maintenance on the cluster is
9176	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
9177	// (24H Clock UTC). The minimum maintenance window is a 60 minute period. Valid
9178	// values for ddd are:
9179	//
9180	// Specifies the weekly time range during which maintenance on the cluster is
9181	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
9182	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
9183	//
9184	// Valid values for ddd are:
9185	//
9186	//    * sun
9187	//
9188	//    * mon
9189	//
9190	//    * tue
9191	//
9192	//    * wed
9193	//
9194	//    * thu
9195	//
9196	//    * fri
9197	//
9198	//    * sat
9199	//
9200	// Example: sun:23:00-mon:01:30
9201	PreferredMaintenanceWindow *string `type:"string"`
9202
9203	// The identifier of the cluster that serves as the primary for this replication
9204	// group. This cluster must already exist and have a status of available.
9205	//
9206	// This parameter is not required if NumCacheClusters, NumNodeGroups, or ReplicasPerNodeGroup
9207	// is specified.
9208	PrimaryClusterId *string `type:"string"`
9209
9210	// An optional parameter that specifies the number of replica nodes in each
9211	// node group (shard). Valid values are 0 to 5.
9212	ReplicasPerNodeGroup *int64 `type:"integer"`
9213
9214	// A user-created description for the replication group.
9215	//
9216	// ReplicationGroupDescription is a required field
9217	ReplicationGroupDescription *string `type:"string" required:"true"`
9218
9219	// The replication group identifier. This parameter is stored as a lowercase
9220	// string.
9221	//
9222	// Constraints:
9223	//
9224	//    * A name must contain from 1 to 40 alphanumeric characters or hyphens.
9225	//
9226	//    * The first character must be a letter.
9227	//
9228	//    * A name cannot end with a hyphen or contain two consecutive hyphens.
9229	//
9230	// ReplicationGroupId is a required field
9231	ReplicationGroupId *string `type:"string" required:"true"`
9232
9233	// One or more Amazon VPC security groups associated with this replication group.
9234	//
9235	// Use this parameter only when you are creating a replication group in an Amazon
9236	// Virtual Private Cloud (Amazon VPC).
9237	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
9238
9239	// A list of Amazon Resource Names (ARN) that uniquely identify the Redis RDB
9240	// snapshot files stored in Amazon S3. The snapshot files are used to populate
9241	// the new replication group. The Amazon S3 object name in the ARN cannot contain
9242	// any commas. The new replication group will have the number of node groups
9243	// (console: shards) specified by the parameter NumNodeGroups or the number
9244	// of node groups configured by NodeGroupConfiguration regardless of the number
9245	// of ARNs specified here.
9246	//
9247	// Example of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb
9248	SnapshotArns []*string `locationNameList:"SnapshotArn" type:"list"`
9249
9250	// The name of a snapshot from which to restore data into the new replication
9251	// group. The snapshot status changes to restoring while the new replication
9252	// group is being created.
9253	SnapshotName *string `type:"string"`
9254
9255	// The number of days for which ElastiCache retains automatic snapshots before
9256	// deleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot
9257	// that was taken today is retained for 5 days before being deleted.
9258	//
9259	// Default: 0 (i.e., automatic backups are disabled for this cluster).
9260	SnapshotRetentionLimit *int64 `type:"integer"`
9261
9262	// The daily time range (in UTC) during which ElastiCache begins taking a daily
9263	// snapshot of your node group (shard).
9264	//
9265	// Example: 05:00-09:00
9266	//
9267	// If you do not specify this parameter, ElastiCache automatically chooses an
9268	// appropriate time range.
9269	SnapshotWindow *string `type:"string"`
9270
9271	// A list of cost allocation tags to be added to this resource. Tags are comma-separated
9272	// key,value pairs (e.g. Key=myKey, Value=myKeyValue. You can include multiple
9273	// tags as shown following: Key=myKey, Value=myKeyValue Key=mySecondKey, Value=mySecondKeyValue.
9274	Tags []*Tag `locationNameList:"Tag" type:"list"`
9275
9276	// A flag that enables in-transit encryption when set to true.
9277	//
9278	// You cannot modify the value of TransitEncryptionEnabled after the cluster
9279	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
9280	// to true when you create a cluster.
9281	//
9282	// This parameter is valid only if the Engine parameter is redis, the EngineVersion
9283	// parameter is 3.2.6, 4.x or later, and the cluster is being created in an
9284	// Amazon VPC.
9285	//
9286	// If you enable in-transit encryption, you must also specify a value for CacheSubnetGroup.
9287	//
9288	// Required: Only available when creating a replication group in an Amazon VPC
9289	// using redis version 3.2.6, 4.x or later.
9290	//
9291	// Default: false
9292	//
9293	// For HIPAA compliance, you must specify TransitEncryptionEnabled as true,
9294	// an AuthToken, and a CacheSubnetGroup.
9295	TransitEncryptionEnabled *bool `type:"boolean"`
9296}
9297
9298// String returns the string representation
9299func (s CreateReplicationGroupInput) String() string {
9300	return awsutil.Prettify(s)
9301}
9302
9303// GoString returns the string representation
9304func (s CreateReplicationGroupInput) GoString() string {
9305	return s.String()
9306}
9307
9308// Validate inspects the fields of the type to determine if they are valid.
9309func (s *CreateReplicationGroupInput) Validate() error {
9310	invalidParams := request.ErrInvalidParams{Context: "CreateReplicationGroupInput"}
9311	if s.ReplicationGroupDescription == nil {
9312		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupDescription"))
9313	}
9314	if s.ReplicationGroupId == nil {
9315		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
9316	}
9317	if s.NodeGroupConfiguration != nil {
9318		for i, v := range s.NodeGroupConfiguration {
9319			if v == nil {
9320				continue
9321			}
9322			if err := v.Validate(); err != nil {
9323				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "NodeGroupConfiguration", i), err.(request.ErrInvalidParams))
9324			}
9325		}
9326	}
9327
9328	if invalidParams.Len() > 0 {
9329		return invalidParams
9330	}
9331	return nil
9332}
9333
9334// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
9335func (s *CreateReplicationGroupInput) SetAtRestEncryptionEnabled(v bool) *CreateReplicationGroupInput {
9336	s.AtRestEncryptionEnabled = &v
9337	return s
9338}
9339
9340// SetAuthToken sets the AuthToken field's value.
9341func (s *CreateReplicationGroupInput) SetAuthToken(v string) *CreateReplicationGroupInput {
9342	s.AuthToken = &v
9343	return s
9344}
9345
9346// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
9347func (s *CreateReplicationGroupInput) SetAutoMinorVersionUpgrade(v bool) *CreateReplicationGroupInput {
9348	s.AutoMinorVersionUpgrade = &v
9349	return s
9350}
9351
9352// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
9353func (s *CreateReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *CreateReplicationGroupInput {
9354	s.AutomaticFailoverEnabled = &v
9355	return s
9356}
9357
9358// SetCacheNodeType sets the CacheNodeType field's value.
9359func (s *CreateReplicationGroupInput) SetCacheNodeType(v string) *CreateReplicationGroupInput {
9360	s.CacheNodeType = &v
9361	return s
9362}
9363
9364// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
9365func (s *CreateReplicationGroupInput) SetCacheParameterGroupName(v string) *CreateReplicationGroupInput {
9366	s.CacheParameterGroupName = &v
9367	return s
9368}
9369
9370// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
9371func (s *CreateReplicationGroupInput) SetCacheSecurityGroupNames(v []*string) *CreateReplicationGroupInput {
9372	s.CacheSecurityGroupNames = v
9373	return s
9374}
9375
9376// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
9377func (s *CreateReplicationGroupInput) SetCacheSubnetGroupName(v string) *CreateReplicationGroupInput {
9378	s.CacheSubnetGroupName = &v
9379	return s
9380}
9381
9382// SetEngine sets the Engine field's value.
9383func (s *CreateReplicationGroupInput) SetEngine(v string) *CreateReplicationGroupInput {
9384	s.Engine = &v
9385	return s
9386}
9387
9388// SetEngineVersion sets the EngineVersion field's value.
9389func (s *CreateReplicationGroupInput) SetEngineVersion(v string) *CreateReplicationGroupInput {
9390	s.EngineVersion = &v
9391	return s
9392}
9393
9394// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
9395func (s *CreateReplicationGroupInput) SetGlobalReplicationGroupId(v string) *CreateReplicationGroupInput {
9396	s.GlobalReplicationGroupId = &v
9397	return s
9398}
9399
9400// SetKmsKeyId sets the KmsKeyId field's value.
9401func (s *CreateReplicationGroupInput) SetKmsKeyId(v string) *CreateReplicationGroupInput {
9402	s.KmsKeyId = &v
9403	return s
9404}
9405
9406// SetMultiAZEnabled sets the MultiAZEnabled field's value.
9407func (s *CreateReplicationGroupInput) SetMultiAZEnabled(v bool) *CreateReplicationGroupInput {
9408	s.MultiAZEnabled = &v
9409	return s
9410}
9411
9412// SetNodeGroupConfiguration sets the NodeGroupConfiguration field's value.
9413func (s *CreateReplicationGroupInput) SetNodeGroupConfiguration(v []*NodeGroupConfiguration) *CreateReplicationGroupInput {
9414	s.NodeGroupConfiguration = v
9415	return s
9416}
9417
9418// SetNotificationTopicArn sets the NotificationTopicArn field's value.
9419func (s *CreateReplicationGroupInput) SetNotificationTopicArn(v string) *CreateReplicationGroupInput {
9420	s.NotificationTopicArn = &v
9421	return s
9422}
9423
9424// SetNumCacheClusters sets the NumCacheClusters field's value.
9425func (s *CreateReplicationGroupInput) SetNumCacheClusters(v int64) *CreateReplicationGroupInput {
9426	s.NumCacheClusters = &v
9427	return s
9428}
9429
9430// SetNumNodeGroups sets the NumNodeGroups field's value.
9431func (s *CreateReplicationGroupInput) SetNumNodeGroups(v int64) *CreateReplicationGroupInput {
9432	s.NumNodeGroups = &v
9433	return s
9434}
9435
9436// SetPort sets the Port field's value.
9437func (s *CreateReplicationGroupInput) SetPort(v int64) *CreateReplicationGroupInput {
9438	s.Port = &v
9439	return s
9440}
9441
9442// SetPreferredCacheClusterAZs sets the PreferredCacheClusterAZs field's value.
9443func (s *CreateReplicationGroupInput) SetPreferredCacheClusterAZs(v []*string) *CreateReplicationGroupInput {
9444	s.PreferredCacheClusterAZs = v
9445	return s
9446}
9447
9448// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
9449func (s *CreateReplicationGroupInput) SetPreferredMaintenanceWindow(v string) *CreateReplicationGroupInput {
9450	s.PreferredMaintenanceWindow = &v
9451	return s
9452}
9453
9454// SetPrimaryClusterId sets the PrimaryClusterId field's value.
9455func (s *CreateReplicationGroupInput) SetPrimaryClusterId(v string) *CreateReplicationGroupInput {
9456	s.PrimaryClusterId = &v
9457	return s
9458}
9459
9460// SetReplicasPerNodeGroup sets the ReplicasPerNodeGroup field's value.
9461func (s *CreateReplicationGroupInput) SetReplicasPerNodeGroup(v int64) *CreateReplicationGroupInput {
9462	s.ReplicasPerNodeGroup = &v
9463	return s
9464}
9465
9466// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
9467func (s *CreateReplicationGroupInput) SetReplicationGroupDescription(v string) *CreateReplicationGroupInput {
9468	s.ReplicationGroupDescription = &v
9469	return s
9470}
9471
9472// SetReplicationGroupId sets the ReplicationGroupId field's value.
9473func (s *CreateReplicationGroupInput) SetReplicationGroupId(v string) *CreateReplicationGroupInput {
9474	s.ReplicationGroupId = &v
9475	return s
9476}
9477
9478// SetSecurityGroupIds sets the SecurityGroupIds field's value.
9479func (s *CreateReplicationGroupInput) SetSecurityGroupIds(v []*string) *CreateReplicationGroupInput {
9480	s.SecurityGroupIds = v
9481	return s
9482}
9483
9484// SetSnapshotArns sets the SnapshotArns field's value.
9485func (s *CreateReplicationGroupInput) SetSnapshotArns(v []*string) *CreateReplicationGroupInput {
9486	s.SnapshotArns = v
9487	return s
9488}
9489
9490// SetSnapshotName sets the SnapshotName field's value.
9491func (s *CreateReplicationGroupInput) SetSnapshotName(v string) *CreateReplicationGroupInput {
9492	s.SnapshotName = &v
9493	return s
9494}
9495
9496// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
9497func (s *CreateReplicationGroupInput) SetSnapshotRetentionLimit(v int64) *CreateReplicationGroupInput {
9498	s.SnapshotRetentionLimit = &v
9499	return s
9500}
9501
9502// SetSnapshotWindow sets the SnapshotWindow field's value.
9503func (s *CreateReplicationGroupInput) SetSnapshotWindow(v string) *CreateReplicationGroupInput {
9504	s.SnapshotWindow = &v
9505	return s
9506}
9507
9508// SetTags sets the Tags field's value.
9509func (s *CreateReplicationGroupInput) SetTags(v []*Tag) *CreateReplicationGroupInput {
9510	s.Tags = v
9511	return s
9512}
9513
9514// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
9515func (s *CreateReplicationGroupInput) SetTransitEncryptionEnabled(v bool) *CreateReplicationGroupInput {
9516	s.TransitEncryptionEnabled = &v
9517	return s
9518}
9519
9520type CreateReplicationGroupOutput struct {
9521	_ struct{} `type:"structure"`
9522
9523	// Contains all of the attributes of a specific Redis replication group.
9524	ReplicationGroup *ReplicationGroup `type:"structure"`
9525}
9526
9527// String returns the string representation
9528func (s CreateReplicationGroupOutput) String() string {
9529	return awsutil.Prettify(s)
9530}
9531
9532// GoString returns the string representation
9533func (s CreateReplicationGroupOutput) GoString() string {
9534	return s.String()
9535}
9536
9537// SetReplicationGroup sets the ReplicationGroup field's value.
9538func (s *CreateReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *CreateReplicationGroupOutput {
9539	s.ReplicationGroup = v
9540	return s
9541}
9542
9543// Represents the input of a CreateSnapshot operation.
9544type CreateSnapshotInput struct {
9545	_ struct{} `type:"structure"`
9546
9547	// The identifier of an existing cluster. The snapshot is created from this
9548	// cluster.
9549	CacheClusterId *string `type:"string"`
9550
9551	// The ID of the KMS key used to encrypt the snapshot.
9552	KmsKeyId *string `type:"string"`
9553
9554	// The identifier of an existing replication group. The snapshot is created
9555	// from this replication group.
9556	ReplicationGroupId *string `type:"string"`
9557
9558	// A name for the snapshot being created.
9559	//
9560	// SnapshotName is a required field
9561	SnapshotName *string `type:"string" required:"true"`
9562}
9563
9564// String returns the string representation
9565func (s CreateSnapshotInput) String() string {
9566	return awsutil.Prettify(s)
9567}
9568
9569// GoString returns the string representation
9570func (s CreateSnapshotInput) GoString() string {
9571	return s.String()
9572}
9573
9574// Validate inspects the fields of the type to determine if they are valid.
9575func (s *CreateSnapshotInput) Validate() error {
9576	invalidParams := request.ErrInvalidParams{Context: "CreateSnapshotInput"}
9577	if s.SnapshotName == nil {
9578		invalidParams.Add(request.NewErrParamRequired("SnapshotName"))
9579	}
9580
9581	if invalidParams.Len() > 0 {
9582		return invalidParams
9583	}
9584	return nil
9585}
9586
9587// SetCacheClusterId sets the CacheClusterId field's value.
9588func (s *CreateSnapshotInput) SetCacheClusterId(v string) *CreateSnapshotInput {
9589	s.CacheClusterId = &v
9590	return s
9591}
9592
9593// SetKmsKeyId sets the KmsKeyId field's value.
9594func (s *CreateSnapshotInput) SetKmsKeyId(v string) *CreateSnapshotInput {
9595	s.KmsKeyId = &v
9596	return s
9597}
9598
9599// SetReplicationGroupId sets the ReplicationGroupId field's value.
9600func (s *CreateSnapshotInput) SetReplicationGroupId(v string) *CreateSnapshotInput {
9601	s.ReplicationGroupId = &v
9602	return s
9603}
9604
9605// SetSnapshotName sets the SnapshotName field's value.
9606func (s *CreateSnapshotInput) SetSnapshotName(v string) *CreateSnapshotInput {
9607	s.SnapshotName = &v
9608	return s
9609}
9610
9611type CreateSnapshotOutput struct {
9612	_ struct{} `type:"structure"`
9613
9614	// Represents a copy of an entire Redis cluster as of the time when the snapshot
9615	// was taken.
9616	Snapshot *Snapshot `type:"structure"`
9617}
9618
9619// String returns the string representation
9620func (s CreateSnapshotOutput) String() string {
9621	return awsutil.Prettify(s)
9622}
9623
9624// GoString returns the string representation
9625func (s CreateSnapshotOutput) GoString() string {
9626	return s.String()
9627}
9628
9629// SetSnapshot sets the Snapshot field's value.
9630func (s *CreateSnapshotOutput) SetSnapshot(v *Snapshot) *CreateSnapshotOutput {
9631	s.Snapshot = v
9632	return s
9633}
9634
9635// The endpoint from which data should be migrated.
9636type CustomerNodeEndpoint struct {
9637	_ struct{} `type:"structure"`
9638
9639	// The address of the node endpoint
9640	Address *string `type:"string"`
9641
9642	// The port of the node endpoint
9643	Port *int64 `type:"integer"`
9644}
9645
9646// String returns the string representation
9647func (s CustomerNodeEndpoint) String() string {
9648	return awsutil.Prettify(s)
9649}
9650
9651// GoString returns the string representation
9652func (s CustomerNodeEndpoint) GoString() string {
9653	return s.String()
9654}
9655
9656// SetAddress sets the Address field's value.
9657func (s *CustomerNodeEndpoint) SetAddress(v string) *CustomerNodeEndpoint {
9658	s.Address = &v
9659	return s
9660}
9661
9662// SetPort sets the Port field's value.
9663func (s *CustomerNodeEndpoint) SetPort(v int64) *CustomerNodeEndpoint {
9664	s.Port = &v
9665	return s
9666}
9667
9668type DecreaseNodeGroupsInGlobalReplicationGroupInput struct {
9669	_ struct{} `type:"structure"`
9670
9671	// Indicates that the shard reconfiguration process begins immediately. At present,
9672	// the only permitted value for this parameter is true.
9673	//
9674	// ApplyImmediately is a required field
9675	ApplyImmediately *bool `type:"boolean" required:"true"`
9676
9677	// If the value of NodeGroupCount is less than the current number of node groups
9678	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
9679	// NodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster.
9680	// ElastiCache for Redis will attempt to remove all node groups listed by NodeGroupsToRemove
9681	// from the cluster.
9682	GlobalNodeGroupsToRemove []*string `locationNameList:"GlobalNodeGroupId" type:"list"`
9683
9684	// If the value of NodeGroupCount is less than the current number of node groups
9685	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
9686	// NodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster.
9687	// ElastiCache for Redis will attempt to remove all node groups listed by NodeGroupsToRemove
9688	// from the cluster.
9689	GlobalNodeGroupsToRetain []*string `locationNameList:"GlobalNodeGroupId" type:"list"`
9690
9691	// The name of the Global Datastore
9692	//
9693	// GlobalReplicationGroupId is a required field
9694	GlobalReplicationGroupId *string `type:"string" required:"true"`
9695
9696	// The number of node groups (shards) that results from the modification of
9697	// the shard configuration
9698	//
9699	// NodeGroupCount is a required field
9700	NodeGroupCount *int64 `type:"integer" required:"true"`
9701}
9702
9703// String returns the string representation
9704func (s DecreaseNodeGroupsInGlobalReplicationGroupInput) String() string {
9705	return awsutil.Prettify(s)
9706}
9707
9708// GoString returns the string representation
9709func (s DecreaseNodeGroupsInGlobalReplicationGroupInput) GoString() string {
9710	return s.String()
9711}
9712
9713// Validate inspects the fields of the type to determine if they are valid.
9714func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) Validate() error {
9715	invalidParams := request.ErrInvalidParams{Context: "DecreaseNodeGroupsInGlobalReplicationGroupInput"}
9716	if s.ApplyImmediately == nil {
9717		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
9718	}
9719	if s.GlobalReplicationGroupId == nil {
9720		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
9721	}
9722	if s.NodeGroupCount == nil {
9723		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
9724	}
9725
9726	if invalidParams.Len() > 0 {
9727		return invalidParams
9728	}
9729	return nil
9730}
9731
9732// SetApplyImmediately sets the ApplyImmediately field's value.
9733func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetApplyImmediately(v bool) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
9734	s.ApplyImmediately = &v
9735	return s
9736}
9737
9738// SetGlobalNodeGroupsToRemove sets the GlobalNodeGroupsToRemove field's value.
9739func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalNodeGroupsToRemove(v []*string) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
9740	s.GlobalNodeGroupsToRemove = v
9741	return s
9742}
9743
9744// SetGlobalNodeGroupsToRetain sets the GlobalNodeGroupsToRetain field's value.
9745func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalNodeGroupsToRetain(v []*string) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
9746	s.GlobalNodeGroupsToRetain = v
9747	return s
9748}
9749
9750// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
9751func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
9752	s.GlobalReplicationGroupId = &v
9753	return s
9754}
9755
9756// SetNodeGroupCount sets the NodeGroupCount field's value.
9757func (s *DecreaseNodeGroupsInGlobalReplicationGroupInput) SetNodeGroupCount(v int64) *DecreaseNodeGroupsInGlobalReplicationGroupInput {
9758	s.NodeGroupCount = &v
9759	return s
9760}
9761
9762type DecreaseNodeGroupsInGlobalReplicationGroupOutput struct {
9763	_ struct{} `type:"structure"`
9764
9765	// Consists of a primary cluster that accepts writes and an associated secondary
9766	// cluster that resides in a different AWS region. The secondary cluster accepts
9767	// only reads. The primary cluster automatically replicates updates to the secondary
9768	// cluster.
9769	//
9770	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
9771	//    Datastore, which is what you use to associate a secondary cluster.
9772	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
9773}
9774
9775// String returns the string representation
9776func (s DecreaseNodeGroupsInGlobalReplicationGroupOutput) String() string {
9777	return awsutil.Prettify(s)
9778}
9779
9780// GoString returns the string representation
9781func (s DecreaseNodeGroupsInGlobalReplicationGroupOutput) GoString() string {
9782	return s.String()
9783}
9784
9785// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
9786func (s *DecreaseNodeGroupsInGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *DecreaseNodeGroupsInGlobalReplicationGroupOutput {
9787	s.GlobalReplicationGroup = v
9788	return s
9789}
9790
9791type DecreaseReplicaCountInput struct {
9792	_ struct{} `type:"structure"`
9793
9794	// If True, the number of replica nodes is decreased immediately. ApplyImmediately=False
9795	// is not currently supported.
9796	//
9797	// ApplyImmediately is a required field
9798	ApplyImmediately *bool `type:"boolean" required:"true"`
9799
9800	// The number of read replica nodes you want at the completion of this operation.
9801	// For Redis (cluster mode disabled) replication groups, this is the number
9802	// of replica nodes in the replication group. For Redis (cluster mode enabled)
9803	// replication groups, this is the number of replica nodes in each of the replication
9804	// group's node groups.
9805	//
9806	// The minimum number of replicas in a shard or replication group is:
9807	//
9808	//    * Redis (cluster mode disabled) If Multi-AZ is enabled: 1 If Multi-AZ
9809	//    is not enabled: 0
9810	//
9811	//    * Redis (cluster mode enabled): 0 (though you will not be able to failover
9812	//    to a replica if your primary node fails)
9813	NewReplicaCount *int64 `type:"integer"`
9814
9815	// A list of ConfigureShard objects that can be used to configure each shard
9816	// in a Redis (cluster mode enabled) replication group. The ConfigureShard has
9817	// three members: NewReplicaCount, NodeGroupId, and PreferredAvailabilityZones.
9818	ReplicaConfiguration []*ConfigureShard `locationNameList:"ConfigureShard" type:"list"`
9819
9820	// A list of the node ids to remove from the replication group or node group
9821	// (shard).
9822	ReplicasToRemove []*string `type:"list"`
9823
9824	// The id of the replication group from which you want to remove replica nodes.
9825	//
9826	// ReplicationGroupId is a required field
9827	ReplicationGroupId *string `type:"string" required:"true"`
9828}
9829
9830// String returns the string representation
9831func (s DecreaseReplicaCountInput) String() string {
9832	return awsutil.Prettify(s)
9833}
9834
9835// GoString returns the string representation
9836func (s DecreaseReplicaCountInput) GoString() string {
9837	return s.String()
9838}
9839
9840// Validate inspects the fields of the type to determine if they are valid.
9841func (s *DecreaseReplicaCountInput) Validate() error {
9842	invalidParams := request.ErrInvalidParams{Context: "DecreaseReplicaCountInput"}
9843	if s.ApplyImmediately == nil {
9844		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
9845	}
9846	if s.ReplicationGroupId == nil {
9847		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
9848	}
9849	if s.ReplicaConfiguration != nil {
9850		for i, v := range s.ReplicaConfiguration {
9851			if v == nil {
9852				continue
9853			}
9854			if err := v.Validate(); err != nil {
9855				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaConfiguration", i), err.(request.ErrInvalidParams))
9856			}
9857		}
9858	}
9859
9860	if invalidParams.Len() > 0 {
9861		return invalidParams
9862	}
9863	return nil
9864}
9865
9866// SetApplyImmediately sets the ApplyImmediately field's value.
9867func (s *DecreaseReplicaCountInput) SetApplyImmediately(v bool) *DecreaseReplicaCountInput {
9868	s.ApplyImmediately = &v
9869	return s
9870}
9871
9872// SetNewReplicaCount sets the NewReplicaCount field's value.
9873func (s *DecreaseReplicaCountInput) SetNewReplicaCount(v int64) *DecreaseReplicaCountInput {
9874	s.NewReplicaCount = &v
9875	return s
9876}
9877
9878// SetReplicaConfiguration sets the ReplicaConfiguration field's value.
9879func (s *DecreaseReplicaCountInput) SetReplicaConfiguration(v []*ConfigureShard) *DecreaseReplicaCountInput {
9880	s.ReplicaConfiguration = v
9881	return s
9882}
9883
9884// SetReplicasToRemove sets the ReplicasToRemove field's value.
9885func (s *DecreaseReplicaCountInput) SetReplicasToRemove(v []*string) *DecreaseReplicaCountInput {
9886	s.ReplicasToRemove = v
9887	return s
9888}
9889
9890// SetReplicationGroupId sets the ReplicationGroupId field's value.
9891func (s *DecreaseReplicaCountInput) SetReplicationGroupId(v string) *DecreaseReplicaCountInput {
9892	s.ReplicationGroupId = &v
9893	return s
9894}
9895
9896type DecreaseReplicaCountOutput struct {
9897	_ struct{} `type:"structure"`
9898
9899	// Contains all of the attributes of a specific Redis replication group.
9900	ReplicationGroup *ReplicationGroup `type:"structure"`
9901}
9902
9903// String returns the string representation
9904func (s DecreaseReplicaCountOutput) String() string {
9905	return awsutil.Prettify(s)
9906}
9907
9908// GoString returns the string representation
9909func (s DecreaseReplicaCountOutput) GoString() string {
9910	return s.String()
9911}
9912
9913// SetReplicationGroup sets the ReplicationGroup field's value.
9914func (s *DecreaseReplicaCountOutput) SetReplicationGroup(v *ReplicationGroup) *DecreaseReplicaCountOutput {
9915	s.ReplicationGroup = v
9916	return s
9917}
9918
9919// Represents the input of a DeleteCacheCluster operation.
9920type DeleteCacheClusterInput struct {
9921	_ struct{} `type:"structure"`
9922
9923	// The cluster identifier for the cluster to be deleted. This parameter is not
9924	// case sensitive.
9925	//
9926	// CacheClusterId is a required field
9927	CacheClusterId *string `type:"string" required:"true"`
9928
9929	// The user-supplied name of a final cluster snapshot. This is the unique name
9930	// that identifies the snapshot. ElastiCache creates the snapshot, and then
9931	// deletes the cluster immediately afterward.
9932	FinalSnapshotIdentifier *string `type:"string"`
9933}
9934
9935// String returns the string representation
9936func (s DeleteCacheClusterInput) String() string {
9937	return awsutil.Prettify(s)
9938}
9939
9940// GoString returns the string representation
9941func (s DeleteCacheClusterInput) GoString() string {
9942	return s.String()
9943}
9944
9945// Validate inspects the fields of the type to determine if they are valid.
9946func (s *DeleteCacheClusterInput) Validate() error {
9947	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheClusterInput"}
9948	if s.CacheClusterId == nil {
9949		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
9950	}
9951
9952	if invalidParams.Len() > 0 {
9953		return invalidParams
9954	}
9955	return nil
9956}
9957
9958// SetCacheClusterId sets the CacheClusterId field's value.
9959func (s *DeleteCacheClusterInput) SetCacheClusterId(v string) *DeleteCacheClusterInput {
9960	s.CacheClusterId = &v
9961	return s
9962}
9963
9964// SetFinalSnapshotIdentifier sets the FinalSnapshotIdentifier field's value.
9965func (s *DeleteCacheClusterInput) SetFinalSnapshotIdentifier(v string) *DeleteCacheClusterInput {
9966	s.FinalSnapshotIdentifier = &v
9967	return s
9968}
9969
9970type DeleteCacheClusterOutput struct {
9971	_ struct{} `type:"structure"`
9972
9973	// Contains all of the attributes of a specific cluster.
9974	CacheCluster *CacheCluster `type:"structure"`
9975}
9976
9977// String returns the string representation
9978func (s DeleteCacheClusterOutput) String() string {
9979	return awsutil.Prettify(s)
9980}
9981
9982// GoString returns the string representation
9983func (s DeleteCacheClusterOutput) GoString() string {
9984	return s.String()
9985}
9986
9987// SetCacheCluster sets the CacheCluster field's value.
9988func (s *DeleteCacheClusterOutput) SetCacheCluster(v *CacheCluster) *DeleteCacheClusterOutput {
9989	s.CacheCluster = v
9990	return s
9991}
9992
9993// Represents the input of a DeleteCacheParameterGroup operation.
9994type DeleteCacheParameterGroupInput struct {
9995	_ struct{} `type:"structure"`
9996
9997	// The name of the cache parameter group to delete.
9998	//
9999	// The specified cache security group must not be associated with any clusters.
10000	//
10001	// CacheParameterGroupName is a required field
10002	CacheParameterGroupName *string `type:"string" required:"true"`
10003}
10004
10005// String returns the string representation
10006func (s DeleteCacheParameterGroupInput) String() string {
10007	return awsutil.Prettify(s)
10008}
10009
10010// GoString returns the string representation
10011func (s DeleteCacheParameterGroupInput) GoString() string {
10012	return s.String()
10013}
10014
10015// Validate inspects the fields of the type to determine if they are valid.
10016func (s *DeleteCacheParameterGroupInput) Validate() error {
10017	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheParameterGroupInput"}
10018	if s.CacheParameterGroupName == nil {
10019		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
10020	}
10021
10022	if invalidParams.Len() > 0 {
10023		return invalidParams
10024	}
10025	return nil
10026}
10027
10028// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
10029func (s *DeleteCacheParameterGroupInput) SetCacheParameterGroupName(v string) *DeleteCacheParameterGroupInput {
10030	s.CacheParameterGroupName = &v
10031	return s
10032}
10033
10034type DeleteCacheParameterGroupOutput struct {
10035	_ struct{} `type:"structure"`
10036}
10037
10038// String returns the string representation
10039func (s DeleteCacheParameterGroupOutput) String() string {
10040	return awsutil.Prettify(s)
10041}
10042
10043// GoString returns the string representation
10044func (s DeleteCacheParameterGroupOutput) GoString() string {
10045	return s.String()
10046}
10047
10048// Represents the input of a DeleteCacheSecurityGroup operation.
10049type DeleteCacheSecurityGroupInput struct {
10050	_ struct{} `type:"structure"`
10051
10052	// The name of the cache security group to delete.
10053	//
10054	// You cannot delete the default security group.
10055	//
10056	// CacheSecurityGroupName is a required field
10057	CacheSecurityGroupName *string `type:"string" required:"true"`
10058}
10059
10060// String returns the string representation
10061func (s DeleteCacheSecurityGroupInput) String() string {
10062	return awsutil.Prettify(s)
10063}
10064
10065// GoString returns the string representation
10066func (s DeleteCacheSecurityGroupInput) GoString() string {
10067	return s.String()
10068}
10069
10070// Validate inspects the fields of the type to determine if they are valid.
10071func (s *DeleteCacheSecurityGroupInput) Validate() error {
10072	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheSecurityGroupInput"}
10073	if s.CacheSecurityGroupName == nil {
10074		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
10075	}
10076
10077	if invalidParams.Len() > 0 {
10078		return invalidParams
10079	}
10080	return nil
10081}
10082
10083// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
10084func (s *DeleteCacheSecurityGroupInput) SetCacheSecurityGroupName(v string) *DeleteCacheSecurityGroupInput {
10085	s.CacheSecurityGroupName = &v
10086	return s
10087}
10088
10089type DeleteCacheSecurityGroupOutput struct {
10090	_ struct{} `type:"structure"`
10091}
10092
10093// String returns the string representation
10094func (s DeleteCacheSecurityGroupOutput) String() string {
10095	return awsutil.Prettify(s)
10096}
10097
10098// GoString returns the string representation
10099func (s DeleteCacheSecurityGroupOutput) GoString() string {
10100	return s.String()
10101}
10102
10103// Represents the input of a DeleteCacheSubnetGroup operation.
10104type DeleteCacheSubnetGroupInput struct {
10105	_ struct{} `type:"structure"`
10106
10107	// The name of the cache subnet group to delete.
10108	//
10109	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
10110	//
10111	// CacheSubnetGroupName is a required field
10112	CacheSubnetGroupName *string `type:"string" required:"true"`
10113}
10114
10115// String returns the string representation
10116func (s DeleteCacheSubnetGroupInput) String() string {
10117	return awsutil.Prettify(s)
10118}
10119
10120// GoString returns the string representation
10121func (s DeleteCacheSubnetGroupInput) GoString() string {
10122	return s.String()
10123}
10124
10125// Validate inspects the fields of the type to determine if they are valid.
10126func (s *DeleteCacheSubnetGroupInput) Validate() error {
10127	invalidParams := request.ErrInvalidParams{Context: "DeleteCacheSubnetGroupInput"}
10128	if s.CacheSubnetGroupName == nil {
10129		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
10130	}
10131
10132	if invalidParams.Len() > 0 {
10133		return invalidParams
10134	}
10135	return nil
10136}
10137
10138// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
10139func (s *DeleteCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *DeleteCacheSubnetGroupInput {
10140	s.CacheSubnetGroupName = &v
10141	return s
10142}
10143
10144type DeleteCacheSubnetGroupOutput struct {
10145	_ struct{} `type:"structure"`
10146}
10147
10148// String returns the string representation
10149func (s DeleteCacheSubnetGroupOutput) String() string {
10150	return awsutil.Prettify(s)
10151}
10152
10153// GoString returns the string representation
10154func (s DeleteCacheSubnetGroupOutput) GoString() string {
10155	return s.String()
10156}
10157
10158type DeleteGlobalReplicationGroupInput struct {
10159	_ struct{} `type:"structure"`
10160
10161	// The name of the Global Datastore
10162	//
10163	// GlobalReplicationGroupId is a required field
10164	GlobalReplicationGroupId *string `type:"string" required:"true"`
10165
10166	// The primary replication group is retained as a standalone replication group.
10167	//
10168	// RetainPrimaryReplicationGroup is a required field
10169	RetainPrimaryReplicationGroup *bool `type:"boolean" required:"true"`
10170}
10171
10172// String returns the string representation
10173func (s DeleteGlobalReplicationGroupInput) String() string {
10174	return awsutil.Prettify(s)
10175}
10176
10177// GoString returns the string representation
10178func (s DeleteGlobalReplicationGroupInput) GoString() string {
10179	return s.String()
10180}
10181
10182// Validate inspects the fields of the type to determine if they are valid.
10183func (s *DeleteGlobalReplicationGroupInput) Validate() error {
10184	invalidParams := request.ErrInvalidParams{Context: "DeleteGlobalReplicationGroupInput"}
10185	if s.GlobalReplicationGroupId == nil {
10186		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
10187	}
10188	if s.RetainPrimaryReplicationGroup == nil {
10189		invalidParams.Add(request.NewErrParamRequired("RetainPrimaryReplicationGroup"))
10190	}
10191
10192	if invalidParams.Len() > 0 {
10193		return invalidParams
10194	}
10195	return nil
10196}
10197
10198// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
10199func (s *DeleteGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *DeleteGlobalReplicationGroupInput {
10200	s.GlobalReplicationGroupId = &v
10201	return s
10202}
10203
10204// SetRetainPrimaryReplicationGroup sets the RetainPrimaryReplicationGroup field's value.
10205func (s *DeleteGlobalReplicationGroupInput) SetRetainPrimaryReplicationGroup(v bool) *DeleteGlobalReplicationGroupInput {
10206	s.RetainPrimaryReplicationGroup = &v
10207	return s
10208}
10209
10210type DeleteGlobalReplicationGroupOutput struct {
10211	_ struct{} `type:"structure"`
10212
10213	// Consists of a primary cluster that accepts writes and an associated secondary
10214	// cluster that resides in a different AWS region. The secondary cluster accepts
10215	// only reads. The primary cluster automatically replicates updates to the secondary
10216	// cluster.
10217	//
10218	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
10219	//    Datastore, which is what you use to associate a secondary cluster.
10220	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
10221}
10222
10223// String returns the string representation
10224func (s DeleteGlobalReplicationGroupOutput) String() string {
10225	return awsutil.Prettify(s)
10226}
10227
10228// GoString returns the string representation
10229func (s DeleteGlobalReplicationGroupOutput) GoString() string {
10230	return s.String()
10231}
10232
10233// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
10234func (s *DeleteGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *DeleteGlobalReplicationGroupOutput {
10235	s.GlobalReplicationGroup = v
10236	return s
10237}
10238
10239// Represents the input of a DeleteReplicationGroup operation.
10240type DeleteReplicationGroupInput struct {
10241	_ struct{} `type:"structure"`
10242
10243	// The name of a final node group (shard) snapshot. ElastiCache creates the
10244	// snapshot from the primary node in the cluster, rather than one of the replicas;
10245	// this is to ensure that it captures the freshest data. After the final snapshot
10246	// is taken, the replication group is immediately deleted.
10247	FinalSnapshotIdentifier *string `type:"string"`
10248
10249	// The identifier for the cluster to be deleted. This parameter is not case
10250	// sensitive.
10251	//
10252	// ReplicationGroupId is a required field
10253	ReplicationGroupId *string `type:"string" required:"true"`
10254
10255	// If set to true, all of the read replicas are deleted, but the primary node
10256	// is retained.
10257	RetainPrimaryCluster *bool `type:"boolean"`
10258}
10259
10260// String returns the string representation
10261func (s DeleteReplicationGroupInput) String() string {
10262	return awsutil.Prettify(s)
10263}
10264
10265// GoString returns the string representation
10266func (s DeleteReplicationGroupInput) GoString() string {
10267	return s.String()
10268}
10269
10270// Validate inspects the fields of the type to determine if they are valid.
10271func (s *DeleteReplicationGroupInput) Validate() error {
10272	invalidParams := request.ErrInvalidParams{Context: "DeleteReplicationGroupInput"}
10273	if s.ReplicationGroupId == nil {
10274		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
10275	}
10276
10277	if invalidParams.Len() > 0 {
10278		return invalidParams
10279	}
10280	return nil
10281}
10282
10283// SetFinalSnapshotIdentifier sets the FinalSnapshotIdentifier field's value.
10284func (s *DeleteReplicationGroupInput) SetFinalSnapshotIdentifier(v string) *DeleteReplicationGroupInput {
10285	s.FinalSnapshotIdentifier = &v
10286	return s
10287}
10288
10289// SetReplicationGroupId sets the ReplicationGroupId field's value.
10290func (s *DeleteReplicationGroupInput) SetReplicationGroupId(v string) *DeleteReplicationGroupInput {
10291	s.ReplicationGroupId = &v
10292	return s
10293}
10294
10295// SetRetainPrimaryCluster sets the RetainPrimaryCluster field's value.
10296func (s *DeleteReplicationGroupInput) SetRetainPrimaryCluster(v bool) *DeleteReplicationGroupInput {
10297	s.RetainPrimaryCluster = &v
10298	return s
10299}
10300
10301type DeleteReplicationGroupOutput struct {
10302	_ struct{} `type:"structure"`
10303
10304	// Contains all of the attributes of a specific Redis replication group.
10305	ReplicationGroup *ReplicationGroup `type:"structure"`
10306}
10307
10308// String returns the string representation
10309func (s DeleteReplicationGroupOutput) String() string {
10310	return awsutil.Prettify(s)
10311}
10312
10313// GoString returns the string representation
10314func (s DeleteReplicationGroupOutput) GoString() string {
10315	return s.String()
10316}
10317
10318// SetReplicationGroup sets the ReplicationGroup field's value.
10319func (s *DeleteReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *DeleteReplicationGroupOutput {
10320	s.ReplicationGroup = v
10321	return s
10322}
10323
10324// Represents the input of a DeleteSnapshot operation.
10325type DeleteSnapshotInput struct {
10326	_ struct{} `type:"structure"`
10327
10328	// The name of the snapshot to be deleted.
10329	//
10330	// SnapshotName is a required field
10331	SnapshotName *string `type:"string" required:"true"`
10332}
10333
10334// String returns the string representation
10335func (s DeleteSnapshotInput) String() string {
10336	return awsutil.Prettify(s)
10337}
10338
10339// GoString returns the string representation
10340func (s DeleteSnapshotInput) GoString() string {
10341	return s.String()
10342}
10343
10344// Validate inspects the fields of the type to determine if they are valid.
10345func (s *DeleteSnapshotInput) Validate() error {
10346	invalidParams := request.ErrInvalidParams{Context: "DeleteSnapshotInput"}
10347	if s.SnapshotName == nil {
10348		invalidParams.Add(request.NewErrParamRequired("SnapshotName"))
10349	}
10350
10351	if invalidParams.Len() > 0 {
10352		return invalidParams
10353	}
10354	return nil
10355}
10356
10357// SetSnapshotName sets the SnapshotName field's value.
10358func (s *DeleteSnapshotInput) SetSnapshotName(v string) *DeleteSnapshotInput {
10359	s.SnapshotName = &v
10360	return s
10361}
10362
10363type DeleteSnapshotOutput struct {
10364	_ struct{} `type:"structure"`
10365
10366	// Represents a copy of an entire Redis cluster as of the time when the snapshot
10367	// was taken.
10368	Snapshot *Snapshot `type:"structure"`
10369}
10370
10371// String returns the string representation
10372func (s DeleteSnapshotOutput) String() string {
10373	return awsutil.Prettify(s)
10374}
10375
10376// GoString returns the string representation
10377func (s DeleteSnapshotOutput) GoString() string {
10378	return s.String()
10379}
10380
10381// SetSnapshot sets the Snapshot field's value.
10382func (s *DeleteSnapshotOutput) SetSnapshot(v *Snapshot) *DeleteSnapshotOutput {
10383	s.Snapshot = v
10384	return s
10385}
10386
10387// Represents the input of a DescribeCacheClusters operation.
10388type DescribeCacheClustersInput struct {
10389	_ struct{} `type:"structure"`
10390
10391	// The user-supplied cluster identifier. If this parameter is specified, only
10392	// information about that specific cluster is returned. This parameter isn't
10393	// case sensitive.
10394	CacheClusterId *string `type:"string"`
10395
10396	// An optional marker returned from a prior request. Use this marker for pagination
10397	// of results from this operation. If this parameter is specified, the response
10398	// includes only records beyond the marker, up to the value specified by MaxRecords.
10399	Marker *string `type:"string"`
10400
10401	// The maximum number of records to include in the response. If more records
10402	// exist than the specified MaxRecords value, a marker is included in the response
10403	// so that the remaining results can be retrieved.
10404	//
10405	// Default: 100
10406	//
10407	// Constraints: minimum 20; maximum 100.
10408	MaxRecords *int64 `type:"integer"`
10409
10410	// An optional flag that can be included in the DescribeCacheCluster request
10411	// to show only nodes (API/CLI: clusters) that are not members of a replication
10412	// group. In practice, this mean Memcached and single node Redis clusters.
10413	ShowCacheClustersNotInReplicationGroups *bool `type:"boolean"`
10414
10415	// An optional flag that can be included in the DescribeCacheCluster request
10416	// to retrieve information about the individual cache nodes.
10417	ShowCacheNodeInfo *bool `type:"boolean"`
10418}
10419
10420// String returns the string representation
10421func (s DescribeCacheClustersInput) String() string {
10422	return awsutil.Prettify(s)
10423}
10424
10425// GoString returns the string representation
10426func (s DescribeCacheClustersInput) GoString() string {
10427	return s.String()
10428}
10429
10430// SetCacheClusterId sets the CacheClusterId field's value.
10431func (s *DescribeCacheClustersInput) SetCacheClusterId(v string) *DescribeCacheClustersInput {
10432	s.CacheClusterId = &v
10433	return s
10434}
10435
10436// SetMarker sets the Marker field's value.
10437func (s *DescribeCacheClustersInput) SetMarker(v string) *DescribeCacheClustersInput {
10438	s.Marker = &v
10439	return s
10440}
10441
10442// SetMaxRecords sets the MaxRecords field's value.
10443func (s *DescribeCacheClustersInput) SetMaxRecords(v int64) *DescribeCacheClustersInput {
10444	s.MaxRecords = &v
10445	return s
10446}
10447
10448// SetShowCacheClustersNotInReplicationGroups sets the ShowCacheClustersNotInReplicationGroups field's value.
10449func (s *DescribeCacheClustersInput) SetShowCacheClustersNotInReplicationGroups(v bool) *DescribeCacheClustersInput {
10450	s.ShowCacheClustersNotInReplicationGroups = &v
10451	return s
10452}
10453
10454// SetShowCacheNodeInfo sets the ShowCacheNodeInfo field's value.
10455func (s *DescribeCacheClustersInput) SetShowCacheNodeInfo(v bool) *DescribeCacheClustersInput {
10456	s.ShowCacheNodeInfo = &v
10457	return s
10458}
10459
10460// Represents the output of a DescribeCacheClusters operation.
10461type DescribeCacheClustersOutput struct {
10462	_ struct{} `type:"structure"`
10463
10464	// A list of clusters. Each item in the list contains detailed information about
10465	// one cluster.
10466	CacheClusters []*CacheCluster `locationNameList:"CacheCluster" type:"list"`
10467
10468	// Provides an identifier to allow retrieval of paginated results.
10469	Marker *string `type:"string"`
10470}
10471
10472// String returns the string representation
10473func (s DescribeCacheClustersOutput) String() string {
10474	return awsutil.Prettify(s)
10475}
10476
10477// GoString returns the string representation
10478func (s DescribeCacheClustersOutput) GoString() string {
10479	return s.String()
10480}
10481
10482// SetCacheClusters sets the CacheClusters field's value.
10483func (s *DescribeCacheClustersOutput) SetCacheClusters(v []*CacheCluster) *DescribeCacheClustersOutput {
10484	s.CacheClusters = v
10485	return s
10486}
10487
10488// SetMarker sets the Marker field's value.
10489func (s *DescribeCacheClustersOutput) SetMarker(v string) *DescribeCacheClustersOutput {
10490	s.Marker = &v
10491	return s
10492}
10493
10494// Represents the input of a DescribeCacheEngineVersions operation.
10495type DescribeCacheEngineVersionsInput struct {
10496	_ struct{} `type:"structure"`
10497
10498	// The name of a specific cache parameter group family to return details for.
10499	//
10500	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
10501	// | redis4.0 | redis5.0 |
10502	//
10503	// Constraints:
10504	//
10505	//    * Must be 1 to 255 alphanumeric characters
10506	//
10507	//    * First character must be a letter
10508	//
10509	//    * Cannot end with a hyphen or contain two consecutive hyphens
10510	CacheParameterGroupFamily *string `type:"string"`
10511
10512	// If true, specifies that only the default version of the specified engine
10513	// or engine and major version combination is to be returned.
10514	DefaultOnly *bool `type:"boolean"`
10515
10516	// The cache engine to return. Valid values: memcached | redis
10517	Engine *string `type:"string"`
10518
10519	// The cache engine version to return.
10520	//
10521	// Example: 1.4.14
10522	EngineVersion *string `type:"string"`
10523
10524	// An optional marker returned from a prior request. Use this marker for pagination
10525	// of results from this operation. If this parameter is specified, the response
10526	// includes only records beyond the marker, up to the value specified by MaxRecords.
10527	Marker *string `type:"string"`
10528
10529	// The maximum number of records to include in the response. If more records
10530	// exist than the specified MaxRecords value, a marker is included in the response
10531	// so that the remaining results can be retrieved.
10532	//
10533	// Default: 100
10534	//
10535	// Constraints: minimum 20; maximum 100.
10536	MaxRecords *int64 `type:"integer"`
10537}
10538
10539// String returns the string representation
10540func (s DescribeCacheEngineVersionsInput) String() string {
10541	return awsutil.Prettify(s)
10542}
10543
10544// GoString returns the string representation
10545func (s DescribeCacheEngineVersionsInput) GoString() string {
10546	return s.String()
10547}
10548
10549// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
10550func (s *DescribeCacheEngineVersionsInput) SetCacheParameterGroupFamily(v string) *DescribeCacheEngineVersionsInput {
10551	s.CacheParameterGroupFamily = &v
10552	return s
10553}
10554
10555// SetDefaultOnly sets the DefaultOnly field's value.
10556func (s *DescribeCacheEngineVersionsInput) SetDefaultOnly(v bool) *DescribeCacheEngineVersionsInput {
10557	s.DefaultOnly = &v
10558	return s
10559}
10560
10561// SetEngine sets the Engine field's value.
10562func (s *DescribeCacheEngineVersionsInput) SetEngine(v string) *DescribeCacheEngineVersionsInput {
10563	s.Engine = &v
10564	return s
10565}
10566
10567// SetEngineVersion sets the EngineVersion field's value.
10568func (s *DescribeCacheEngineVersionsInput) SetEngineVersion(v string) *DescribeCacheEngineVersionsInput {
10569	s.EngineVersion = &v
10570	return s
10571}
10572
10573// SetMarker sets the Marker field's value.
10574func (s *DescribeCacheEngineVersionsInput) SetMarker(v string) *DescribeCacheEngineVersionsInput {
10575	s.Marker = &v
10576	return s
10577}
10578
10579// SetMaxRecords sets the MaxRecords field's value.
10580func (s *DescribeCacheEngineVersionsInput) SetMaxRecords(v int64) *DescribeCacheEngineVersionsInput {
10581	s.MaxRecords = &v
10582	return s
10583}
10584
10585// Represents the output of a DescribeCacheEngineVersions operation.
10586type DescribeCacheEngineVersionsOutput struct {
10587	_ struct{} `type:"structure"`
10588
10589	// A list of cache engine version details. Each element in the list contains
10590	// detailed information about one cache engine version.
10591	CacheEngineVersions []*CacheEngineVersion `locationNameList:"CacheEngineVersion" type:"list"`
10592
10593	// Provides an identifier to allow retrieval of paginated results.
10594	Marker *string `type:"string"`
10595}
10596
10597// String returns the string representation
10598func (s DescribeCacheEngineVersionsOutput) String() string {
10599	return awsutil.Prettify(s)
10600}
10601
10602// GoString returns the string representation
10603func (s DescribeCacheEngineVersionsOutput) GoString() string {
10604	return s.String()
10605}
10606
10607// SetCacheEngineVersions sets the CacheEngineVersions field's value.
10608func (s *DescribeCacheEngineVersionsOutput) SetCacheEngineVersions(v []*CacheEngineVersion) *DescribeCacheEngineVersionsOutput {
10609	s.CacheEngineVersions = v
10610	return s
10611}
10612
10613// SetMarker sets the Marker field's value.
10614func (s *DescribeCacheEngineVersionsOutput) SetMarker(v string) *DescribeCacheEngineVersionsOutput {
10615	s.Marker = &v
10616	return s
10617}
10618
10619// Represents the input of a DescribeCacheParameterGroups operation.
10620type DescribeCacheParameterGroupsInput struct {
10621	_ struct{} `type:"structure"`
10622
10623	// The name of a specific cache parameter group to return details for.
10624	CacheParameterGroupName *string `type:"string"`
10625
10626	// An optional marker returned from a prior request. Use this marker for pagination
10627	// of results from this operation. If this parameter is specified, the response
10628	// includes only records beyond the marker, up to the value specified by MaxRecords.
10629	Marker *string `type:"string"`
10630
10631	// The maximum number of records to include in the response. If more records
10632	// exist than the specified MaxRecords value, a marker is included in the response
10633	// so that the remaining results can be retrieved.
10634	//
10635	// Default: 100
10636	//
10637	// Constraints: minimum 20; maximum 100.
10638	MaxRecords *int64 `type:"integer"`
10639}
10640
10641// String returns the string representation
10642func (s DescribeCacheParameterGroupsInput) String() string {
10643	return awsutil.Prettify(s)
10644}
10645
10646// GoString returns the string representation
10647func (s DescribeCacheParameterGroupsInput) GoString() string {
10648	return s.String()
10649}
10650
10651// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
10652func (s *DescribeCacheParameterGroupsInput) SetCacheParameterGroupName(v string) *DescribeCacheParameterGroupsInput {
10653	s.CacheParameterGroupName = &v
10654	return s
10655}
10656
10657// SetMarker sets the Marker field's value.
10658func (s *DescribeCacheParameterGroupsInput) SetMarker(v string) *DescribeCacheParameterGroupsInput {
10659	s.Marker = &v
10660	return s
10661}
10662
10663// SetMaxRecords sets the MaxRecords field's value.
10664func (s *DescribeCacheParameterGroupsInput) SetMaxRecords(v int64) *DescribeCacheParameterGroupsInput {
10665	s.MaxRecords = &v
10666	return s
10667}
10668
10669// Represents the output of a DescribeCacheParameterGroups operation.
10670type DescribeCacheParameterGroupsOutput struct {
10671	_ struct{} `type:"structure"`
10672
10673	// A list of cache parameter groups. Each element in the list contains detailed
10674	// information about one cache parameter group.
10675	CacheParameterGroups []*CacheParameterGroup `locationNameList:"CacheParameterGroup" type:"list"`
10676
10677	// Provides an identifier to allow retrieval of paginated results.
10678	Marker *string `type:"string"`
10679}
10680
10681// String returns the string representation
10682func (s DescribeCacheParameterGroupsOutput) String() string {
10683	return awsutil.Prettify(s)
10684}
10685
10686// GoString returns the string representation
10687func (s DescribeCacheParameterGroupsOutput) GoString() string {
10688	return s.String()
10689}
10690
10691// SetCacheParameterGroups sets the CacheParameterGroups field's value.
10692func (s *DescribeCacheParameterGroupsOutput) SetCacheParameterGroups(v []*CacheParameterGroup) *DescribeCacheParameterGroupsOutput {
10693	s.CacheParameterGroups = v
10694	return s
10695}
10696
10697// SetMarker sets the Marker field's value.
10698func (s *DescribeCacheParameterGroupsOutput) SetMarker(v string) *DescribeCacheParameterGroupsOutput {
10699	s.Marker = &v
10700	return s
10701}
10702
10703// Represents the input of a DescribeCacheParameters operation.
10704type DescribeCacheParametersInput struct {
10705	_ struct{} `type:"structure"`
10706
10707	// The name of a specific cache parameter group to return details for.
10708	//
10709	// CacheParameterGroupName is a required field
10710	CacheParameterGroupName *string `type:"string" required:"true"`
10711
10712	// An optional marker returned from a prior request. Use this marker for pagination
10713	// of results from this operation. If this parameter is specified, the response
10714	// includes only records beyond the marker, up to the value specified by MaxRecords.
10715	Marker *string `type:"string"`
10716
10717	// The maximum number of records to include in the response. If more records
10718	// exist than the specified MaxRecords value, a marker is included in the response
10719	// so that the remaining results can be retrieved.
10720	//
10721	// Default: 100
10722	//
10723	// Constraints: minimum 20; maximum 100.
10724	MaxRecords *int64 `type:"integer"`
10725
10726	// The parameter types to return.
10727	//
10728	// Valid values: user | system | engine-default
10729	Source *string `type:"string"`
10730}
10731
10732// String returns the string representation
10733func (s DescribeCacheParametersInput) String() string {
10734	return awsutil.Prettify(s)
10735}
10736
10737// GoString returns the string representation
10738func (s DescribeCacheParametersInput) GoString() string {
10739	return s.String()
10740}
10741
10742// Validate inspects the fields of the type to determine if they are valid.
10743func (s *DescribeCacheParametersInput) Validate() error {
10744	invalidParams := request.ErrInvalidParams{Context: "DescribeCacheParametersInput"}
10745	if s.CacheParameterGroupName == nil {
10746		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
10747	}
10748
10749	if invalidParams.Len() > 0 {
10750		return invalidParams
10751	}
10752	return nil
10753}
10754
10755// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
10756func (s *DescribeCacheParametersInput) SetCacheParameterGroupName(v string) *DescribeCacheParametersInput {
10757	s.CacheParameterGroupName = &v
10758	return s
10759}
10760
10761// SetMarker sets the Marker field's value.
10762func (s *DescribeCacheParametersInput) SetMarker(v string) *DescribeCacheParametersInput {
10763	s.Marker = &v
10764	return s
10765}
10766
10767// SetMaxRecords sets the MaxRecords field's value.
10768func (s *DescribeCacheParametersInput) SetMaxRecords(v int64) *DescribeCacheParametersInput {
10769	s.MaxRecords = &v
10770	return s
10771}
10772
10773// SetSource sets the Source field's value.
10774func (s *DescribeCacheParametersInput) SetSource(v string) *DescribeCacheParametersInput {
10775	s.Source = &v
10776	return s
10777}
10778
10779// Represents the output of a DescribeCacheParameters operation.
10780type DescribeCacheParametersOutput struct {
10781	_ struct{} `type:"structure"`
10782
10783	// A list of parameters specific to a particular cache node type. Each element
10784	// in the list contains detailed information about one parameter.
10785	CacheNodeTypeSpecificParameters []*CacheNodeTypeSpecificParameter `locationNameList:"CacheNodeTypeSpecificParameter" type:"list"`
10786
10787	// Provides an identifier to allow retrieval of paginated results.
10788	Marker *string `type:"string"`
10789
10790	// A list of Parameter instances.
10791	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`
10792}
10793
10794// String returns the string representation
10795func (s DescribeCacheParametersOutput) String() string {
10796	return awsutil.Prettify(s)
10797}
10798
10799// GoString returns the string representation
10800func (s DescribeCacheParametersOutput) GoString() string {
10801	return s.String()
10802}
10803
10804// SetCacheNodeTypeSpecificParameters sets the CacheNodeTypeSpecificParameters field's value.
10805func (s *DescribeCacheParametersOutput) SetCacheNodeTypeSpecificParameters(v []*CacheNodeTypeSpecificParameter) *DescribeCacheParametersOutput {
10806	s.CacheNodeTypeSpecificParameters = v
10807	return s
10808}
10809
10810// SetMarker sets the Marker field's value.
10811func (s *DescribeCacheParametersOutput) SetMarker(v string) *DescribeCacheParametersOutput {
10812	s.Marker = &v
10813	return s
10814}
10815
10816// SetParameters sets the Parameters field's value.
10817func (s *DescribeCacheParametersOutput) SetParameters(v []*Parameter) *DescribeCacheParametersOutput {
10818	s.Parameters = v
10819	return s
10820}
10821
10822// Represents the input of a DescribeCacheSecurityGroups operation.
10823type DescribeCacheSecurityGroupsInput struct {
10824	_ struct{} `type:"structure"`
10825
10826	// The name of the cache security group to return details for.
10827	CacheSecurityGroupName *string `type:"string"`
10828
10829	// An optional marker returned from a prior request. Use this marker for pagination
10830	// of results from this operation. If this parameter is specified, the response
10831	// includes only records beyond the marker, up to the value specified by MaxRecords.
10832	Marker *string `type:"string"`
10833
10834	// The maximum number of records to include in the response. If more records
10835	// exist than the specified MaxRecords value, a marker is included in the response
10836	// so that the remaining results can be retrieved.
10837	//
10838	// Default: 100
10839	//
10840	// Constraints: minimum 20; maximum 100.
10841	MaxRecords *int64 `type:"integer"`
10842}
10843
10844// String returns the string representation
10845func (s DescribeCacheSecurityGroupsInput) String() string {
10846	return awsutil.Prettify(s)
10847}
10848
10849// GoString returns the string representation
10850func (s DescribeCacheSecurityGroupsInput) GoString() string {
10851	return s.String()
10852}
10853
10854// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
10855func (s *DescribeCacheSecurityGroupsInput) SetCacheSecurityGroupName(v string) *DescribeCacheSecurityGroupsInput {
10856	s.CacheSecurityGroupName = &v
10857	return s
10858}
10859
10860// SetMarker sets the Marker field's value.
10861func (s *DescribeCacheSecurityGroupsInput) SetMarker(v string) *DescribeCacheSecurityGroupsInput {
10862	s.Marker = &v
10863	return s
10864}
10865
10866// SetMaxRecords sets the MaxRecords field's value.
10867func (s *DescribeCacheSecurityGroupsInput) SetMaxRecords(v int64) *DescribeCacheSecurityGroupsInput {
10868	s.MaxRecords = &v
10869	return s
10870}
10871
10872// Represents the output of a DescribeCacheSecurityGroups operation.
10873type DescribeCacheSecurityGroupsOutput struct {
10874	_ struct{} `type:"structure"`
10875
10876	// A list of cache security groups. Each element in the list contains detailed
10877	// information about one group.
10878	CacheSecurityGroups []*CacheSecurityGroup `locationNameList:"CacheSecurityGroup" type:"list"`
10879
10880	// Provides an identifier to allow retrieval of paginated results.
10881	Marker *string `type:"string"`
10882}
10883
10884// String returns the string representation
10885func (s DescribeCacheSecurityGroupsOutput) String() string {
10886	return awsutil.Prettify(s)
10887}
10888
10889// GoString returns the string representation
10890func (s DescribeCacheSecurityGroupsOutput) GoString() string {
10891	return s.String()
10892}
10893
10894// SetCacheSecurityGroups sets the CacheSecurityGroups field's value.
10895func (s *DescribeCacheSecurityGroupsOutput) SetCacheSecurityGroups(v []*CacheSecurityGroup) *DescribeCacheSecurityGroupsOutput {
10896	s.CacheSecurityGroups = v
10897	return s
10898}
10899
10900// SetMarker sets the Marker field's value.
10901func (s *DescribeCacheSecurityGroupsOutput) SetMarker(v string) *DescribeCacheSecurityGroupsOutput {
10902	s.Marker = &v
10903	return s
10904}
10905
10906// Represents the input of a DescribeCacheSubnetGroups operation.
10907type DescribeCacheSubnetGroupsInput struct {
10908	_ struct{} `type:"structure"`
10909
10910	// The name of the cache subnet group to return details for.
10911	CacheSubnetGroupName *string `type:"string"`
10912
10913	// An optional marker returned from a prior request. Use this marker for pagination
10914	// of results from this operation. If this parameter is specified, the response
10915	// includes only records beyond the marker, up to the value specified by MaxRecords.
10916	Marker *string `type:"string"`
10917
10918	// The maximum number of records to include in the response. If more records
10919	// exist than the specified MaxRecords value, a marker is included in the response
10920	// so that the remaining results can be retrieved.
10921	//
10922	// Default: 100
10923	//
10924	// Constraints: minimum 20; maximum 100.
10925	MaxRecords *int64 `type:"integer"`
10926}
10927
10928// String returns the string representation
10929func (s DescribeCacheSubnetGroupsInput) String() string {
10930	return awsutil.Prettify(s)
10931}
10932
10933// GoString returns the string representation
10934func (s DescribeCacheSubnetGroupsInput) GoString() string {
10935	return s.String()
10936}
10937
10938// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
10939func (s *DescribeCacheSubnetGroupsInput) SetCacheSubnetGroupName(v string) *DescribeCacheSubnetGroupsInput {
10940	s.CacheSubnetGroupName = &v
10941	return s
10942}
10943
10944// SetMarker sets the Marker field's value.
10945func (s *DescribeCacheSubnetGroupsInput) SetMarker(v string) *DescribeCacheSubnetGroupsInput {
10946	s.Marker = &v
10947	return s
10948}
10949
10950// SetMaxRecords sets the MaxRecords field's value.
10951func (s *DescribeCacheSubnetGroupsInput) SetMaxRecords(v int64) *DescribeCacheSubnetGroupsInput {
10952	s.MaxRecords = &v
10953	return s
10954}
10955
10956// Represents the output of a DescribeCacheSubnetGroups operation.
10957type DescribeCacheSubnetGroupsOutput struct {
10958	_ struct{} `type:"structure"`
10959
10960	// A list of cache subnet groups. Each element in the list contains detailed
10961	// information about one group.
10962	CacheSubnetGroups []*CacheSubnetGroup `locationNameList:"CacheSubnetGroup" type:"list"`
10963
10964	// Provides an identifier to allow retrieval of paginated results.
10965	Marker *string `type:"string"`
10966}
10967
10968// String returns the string representation
10969func (s DescribeCacheSubnetGroupsOutput) String() string {
10970	return awsutil.Prettify(s)
10971}
10972
10973// GoString returns the string representation
10974func (s DescribeCacheSubnetGroupsOutput) GoString() string {
10975	return s.String()
10976}
10977
10978// SetCacheSubnetGroups sets the CacheSubnetGroups field's value.
10979func (s *DescribeCacheSubnetGroupsOutput) SetCacheSubnetGroups(v []*CacheSubnetGroup) *DescribeCacheSubnetGroupsOutput {
10980	s.CacheSubnetGroups = v
10981	return s
10982}
10983
10984// SetMarker sets the Marker field's value.
10985func (s *DescribeCacheSubnetGroupsOutput) SetMarker(v string) *DescribeCacheSubnetGroupsOutput {
10986	s.Marker = &v
10987	return s
10988}
10989
10990// Represents the input of a DescribeEngineDefaultParameters operation.
10991type DescribeEngineDefaultParametersInput struct {
10992	_ struct{} `type:"structure"`
10993
10994	// The name of the cache parameter group family.
10995	//
10996	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
10997	// | redis4.0 | redis5.0 |
10998	//
10999	// CacheParameterGroupFamily is a required field
11000	CacheParameterGroupFamily *string `type:"string" required:"true"`
11001
11002	// An optional marker returned from a prior request. Use this marker for pagination
11003	// of results from this operation. If this parameter is specified, the response
11004	// includes only records beyond the marker, up to the value specified by MaxRecords.
11005	Marker *string `type:"string"`
11006
11007	// The maximum number of records to include in the response. If more records
11008	// exist than the specified MaxRecords value, a marker is included in the response
11009	// so that the remaining results can be retrieved.
11010	//
11011	// Default: 100
11012	//
11013	// Constraints: minimum 20; maximum 100.
11014	MaxRecords *int64 `type:"integer"`
11015}
11016
11017// String returns the string representation
11018func (s DescribeEngineDefaultParametersInput) String() string {
11019	return awsutil.Prettify(s)
11020}
11021
11022// GoString returns the string representation
11023func (s DescribeEngineDefaultParametersInput) GoString() string {
11024	return s.String()
11025}
11026
11027// Validate inspects the fields of the type to determine if they are valid.
11028func (s *DescribeEngineDefaultParametersInput) Validate() error {
11029	invalidParams := request.ErrInvalidParams{Context: "DescribeEngineDefaultParametersInput"}
11030	if s.CacheParameterGroupFamily == nil {
11031		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupFamily"))
11032	}
11033
11034	if invalidParams.Len() > 0 {
11035		return invalidParams
11036	}
11037	return nil
11038}
11039
11040// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
11041func (s *DescribeEngineDefaultParametersInput) SetCacheParameterGroupFamily(v string) *DescribeEngineDefaultParametersInput {
11042	s.CacheParameterGroupFamily = &v
11043	return s
11044}
11045
11046// SetMarker sets the Marker field's value.
11047func (s *DescribeEngineDefaultParametersInput) SetMarker(v string) *DescribeEngineDefaultParametersInput {
11048	s.Marker = &v
11049	return s
11050}
11051
11052// SetMaxRecords sets the MaxRecords field's value.
11053func (s *DescribeEngineDefaultParametersInput) SetMaxRecords(v int64) *DescribeEngineDefaultParametersInput {
11054	s.MaxRecords = &v
11055	return s
11056}
11057
11058type DescribeEngineDefaultParametersOutput struct {
11059	_ struct{} `type:"structure"`
11060
11061	// Represents the output of a DescribeEngineDefaultParameters operation.
11062	EngineDefaults *EngineDefaults `type:"structure"`
11063}
11064
11065// String returns the string representation
11066func (s DescribeEngineDefaultParametersOutput) String() string {
11067	return awsutil.Prettify(s)
11068}
11069
11070// GoString returns the string representation
11071func (s DescribeEngineDefaultParametersOutput) GoString() string {
11072	return s.String()
11073}
11074
11075// SetEngineDefaults sets the EngineDefaults field's value.
11076func (s *DescribeEngineDefaultParametersOutput) SetEngineDefaults(v *EngineDefaults) *DescribeEngineDefaultParametersOutput {
11077	s.EngineDefaults = v
11078	return s
11079}
11080
11081// Represents the input of a DescribeEvents operation.
11082type DescribeEventsInput struct {
11083	_ struct{} `type:"structure"`
11084
11085	// The number of minutes worth of events to retrieve.
11086	Duration *int64 `type:"integer"`
11087
11088	// The end of the time interval for which to retrieve events, specified in ISO
11089	// 8601 format.
11090	//
11091	// Example: 2017-03-30T07:03:49.555Z
11092	EndTime *time.Time `type:"timestamp"`
11093
11094	// An optional marker returned from a prior request. Use this marker for pagination
11095	// of results from this operation. If this parameter is specified, the response
11096	// includes only records beyond the marker, up to the value specified by MaxRecords.
11097	Marker *string `type:"string"`
11098
11099	// The maximum number of records to include in the response. If more records
11100	// exist than the specified MaxRecords value, a marker is included in the response
11101	// so that the remaining results can be retrieved.
11102	//
11103	// Default: 100
11104	//
11105	// Constraints: minimum 20; maximum 100.
11106	MaxRecords *int64 `type:"integer"`
11107
11108	// The identifier of the event source for which events are returned. If not
11109	// specified, all sources are included in the response.
11110	SourceIdentifier *string `type:"string"`
11111
11112	// The event source to retrieve events for. If no value is specified, all events
11113	// are returned.
11114	SourceType *string `type:"string" enum:"SourceType"`
11115
11116	// The beginning of the time interval to retrieve events for, specified in ISO
11117	// 8601 format.
11118	//
11119	// Example: 2017-03-30T07:03:49.555Z
11120	StartTime *time.Time `type:"timestamp"`
11121}
11122
11123// String returns the string representation
11124func (s DescribeEventsInput) String() string {
11125	return awsutil.Prettify(s)
11126}
11127
11128// GoString returns the string representation
11129func (s DescribeEventsInput) GoString() string {
11130	return s.String()
11131}
11132
11133// SetDuration sets the Duration field's value.
11134func (s *DescribeEventsInput) SetDuration(v int64) *DescribeEventsInput {
11135	s.Duration = &v
11136	return s
11137}
11138
11139// SetEndTime sets the EndTime field's value.
11140func (s *DescribeEventsInput) SetEndTime(v time.Time) *DescribeEventsInput {
11141	s.EndTime = &v
11142	return s
11143}
11144
11145// SetMarker sets the Marker field's value.
11146func (s *DescribeEventsInput) SetMarker(v string) *DescribeEventsInput {
11147	s.Marker = &v
11148	return s
11149}
11150
11151// SetMaxRecords sets the MaxRecords field's value.
11152func (s *DescribeEventsInput) SetMaxRecords(v int64) *DescribeEventsInput {
11153	s.MaxRecords = &v
11154	return s
11155}
11156
11157// SetSourceIdentifier sets the SourceIdentifier field's value.
11158func (s *DescribeEventsInput) SetSourceIdentifier(v string) *DescribeEventsInput {
11159	s.SourceIdentifier = &v
11160	return s
11161}
11162
11163// SetSourceType sets the SourceType field's value.
11164func (s *DescribeEventsInput) SetSourceType(v string) *DescribeEventsInput {
11165	s.SourceType = &v
11166	return s
11167}
11168
11169// SetStartTime sets the StartTime field's value.
11170func (s *DescribeEventsInput) SetStartTime(v time.Time) *DescribeEventsInput {
11171	s.StartTime = &v
11172	return s
11173}
11174
11175// Represents the output of a DescribeEvents operation.
11176type DescribeEventsOutput struct {
11177	_ struct{} `type:"structure"`
11178
11179	// A list of events. Each element in the list contains detailed information
11180	// about one event.
11181	Events []*Event `locationNameList:"Event" type:"list"`
11182
11183	// Provides an identifier to allow retrieval of paginated results.
11184	Marker *string `type:"string"`
11185}
11186
11187// String returns the string representation
11188func (s DescribeEventsOutput) String() string {
11189	return awsutil.Prettify(s)
11190}
11191
11192// GoString returns the string representation
11193func (s DescribeEventsOutput) GoString() string {
11194	return s.String()
11195}
11196
11197// SetEvents sets the Events field's value.
11198func (s *DescribeEventsOutput) SetEvents(v []*Event) *DescribeEventsOutput {
11199	s.Events = v
11200	return s
11201}
11202
11203// SetMarker sets the Marker field's value.
11204func (s *DescribeEventsOutput) SetMarker(v string) *DescribeEventsOutput {
11205	s.Marker = &v
11206	return s
11207}
11208
11209type DescribeGlobalReplicationGroupsInput struct {
11210	_ struct{} `type:"structure"`
11211
11212	// The name of the Global Datastore
11213	GlobalReplicationGroupId *string `type:"string"`
11214
11215	// An optional marker returned from a prior request. Use this marker for pagination
11216	// of results from this operation. If this parameter is specified, the response
11217	// includes only records beyond the marker, up to the value specified by MaxRecords.
11218	Marker *string `type:"string"`
11219
11220	// The maximum number of records to include in the response. If more records
11221	// exist than the specified MaxRecords value, a marker is included in the response
11222	// so that the remaining results can be retrieved.
11223	MaxRecords *int64 `type:"integer"`
11224
11225	// Returns the list of members that comprise the Global Datastore.
11226	ShowMemberInfo *bool `type:"boolean"`
11227}
11228
11229// String returns the string representation
11230func (s DescribeGlobalReplicationGroupsInput) String() string {
11231	return awsutil.Prettify(s)
11232}
11233
11234// GoString returns the string representation
11235func (s DescribeGlobalReplicationGroupsInput) GoString() string {
11236	return s.String()
11237}
11238
11239// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
11240func (s *DescribeGlobalReplicationGroupsInput) SetGlobalReplicationGroupId(v string) *DescribeGlobalReplicationGroupsInput {
11241	s.GlobalReplicationGroupId = &v
11242	return s
11243}
11244
11245// SetMarker sets the Marker field's value.
11246func (s *DescribeGlobalReplicationGroupsInput) SetMarker(v string) *DescribeGlobalReplicationGroupsInput {
11247	s.Marker = &v
11248	return s
11249}
11250
11251// SetMaxRecords sets the MaxRecords field's value.
11252func (s *DescribeGlobalReplicationGroupsInput) SetMaxRecords(v int64) *DescribeGlobalReplicationGroupsInput {
11253	s.MaxRecords = &v
11254	return s
11255}
11256
11257// SetShowMemberInfo sets the ShowMemberInfo field's value.
11258func (s *DescribeGlobalReplicationGroupsInput) SetShowMemberInfo(v bool) *DescribeGlobalReplicationGroupsInput {
11259	s.ShowMemberInfo = &v
11260	return s
11261}
11262
11263type DescribeGlobalReplicationGroupsOutput struct {
11264	_ struct{} `type:"structure"`
11265
11266	// Indicates the slot configuration and global identifier for each slice group.
11267	GlobalReplicationGroups []*GlobalReplicationGroup `locationNameList:"GlobalReplicationGroup" type:"list"`
11268
11269	// An optional marker returned from a prior request. Use this marker for pagination
11270	// of results from this operation. If this parameter is specified, the response
11271	// includes only records beyond the marker, up to the value specified by MaxRecords.
11272	// >
11273	Marker *string `type:"string"`
11274}
11275
11276// String returns the string representation
11277func (s DescribeGlobalReplicationGroupsOutput) String() string {
11278	return awsutil.Prettify(s)
11279}
11280
11281// GoString returns the string representation
11282func (s DescribeGlobalReplicationGroupsOutput) GoString() string {
11283	return s.String()
11284}
11285
11286// SetGlobalReplicationGroups sets the GlobalReplicationGroups field's value.
11287func (s *DescribeGlobalReplicationGroupsOutput) SetGlobalReplicationGroups(v []*GlobalReplicationGroup) *DescribeGlobalReplicationGroupsOutput {
11288	s.GlobalReplicationGroups = v
11289	return s
11290}
11291
11292// SetMarker sets the Marker field's value.
11293func (s *DescribeGlobalReplicationGroupsOutput) SetMarker(v string) *DescribeGlobalReplicationGroupsOutput {
11294	s.Marker = &v
11295	return s
11296}
11297
11298// Represents the input of a DescribeReplicationGroups operation.
11299type DescribeReplicationGroupsInput struct {
11300	_ struct{} `type:"structure"`
11301
11302	// An optional marker returned from a prior request. Use this marker for pagination
11303	// of results from this operation. If this parameter is specified, the response
11304	// includes only records beyond the marker, up to the value specified by MaxRecords.
11305	Marker *string `type:"string"`
11306
11307	// The maximum number of records to include in the response. If more records
11308	// exist than the specified MaxRecords value, a marker is included in the response
11309	// so that the remaining results can be retrieved.
11310	//
11311	// Default: 100
11312	//
11313	// Constraints: minimum 20; maximum 100.
11314	MaxRecords *int64 `type:"integer"`
11315
11316	// The identifier for the replication group to be described. This parameter
11317	// is not case sensitive.
11318	//
11319	// If you do not specify this parameter, information about all replication groups
11320	// is returned.
11321	ReplicationGroupId *string `type:"string"`
11322}
11323
11324// String returns the string representation
11325func (s DescribeReplicationGroupsInput) String() string {
11326	return awsutil.Prettify(s)
11327}
11328
11329// GoString returns the string representation
11330func (s DescribeReplicationGroupsInput) GoString() string {
11331	return s.String()
11332}
11333
11334// SetMarker sets the Marker field's value.
11335func (s *DescribeReplicationGroupsInput) SetMarker(v string) *DescribeReplicationGroupsInput {
11336	s.Marker = &v
11337	return s
11338}
11339
11340// SetMaxRecords sets the MaxRecords field's value.
11341func (s *DescribeReplicationGroupsInput) SetMaxRecords(v int64) *DescribeReplicationGroupsInput {
11342	s.MaxRecords = &v
11343	return s
11344}
11345
11346// SetReplicationGroupId sets the ReplicationGroupId field's value.
11347func (s *DescribeReplicationGroupsInput) SetReplicationGroupId(v string) *DescribeReplicationGroupsInput {
11348	s.ReplicationGroupId = &v
11349	return s
11350}
11351
11352// Represents the output of a DescribeReplicationGroups operation.
11353type DescribeReplicationGroupsOutput struct {
11354	_ struct{} `type:"structure"`
11355
11356	// Provides an identifier to allow retrieval of paginated results.
11357	Marker *string `type:"string"`
11358
11359	// A list of replication groups. Each item in the list contains detailed information
11360	// about one replication group.
11361	ReplicationGroups []*ReplicationGroup `locationNameList:"ReplicationGroup" type:"list"`
11362}
11363
11364// String returns the string representation
11365func (s DescribeReplicationGroupsOutput) String() string {
11366	return awsutil.Prettify(s)
11367}
11368
11369// GoString returns the string representation
11370func (s DescribeReplicationGroupsOutput) GoString() string {
11371	return s.String()
11372}
11373
11374// SetMarker sets the Marker field's value.
11375func (s *DescribeReplicationGroupsOutput) SetMarker(v string) *DescribeReplicationGroupsOutput {
11376	s.Marker = &v
11377	return s
11378}
11379
11380// SetReplicationGroups sets the ReplicationGroups field's value.
11381func (s *DescribeReplicationGroupsOutput) SetReplicationGroups(v []*ReplicationGroup) *DescribeReplicationGroupsOutput {
11382	s.ReplicationGroups = v
11383	return s
11384}
11385
11386// Represents the input of a DescribeReservedCacheNodes operation.
11387type DescribeReservedCacheNodesInput struct {
11388	_ struct{} `type:"structure"`
11389
11390	// The cache node type filter value. Use this parameter to show only those reservations
11391	// matching the specified cache node type.
11392	//
11393	// The following node types are supported by ElastiCache. Generally speaking,
11394	// the current generation types provide more memory and computational power
11395	// at lower cost when compared to their equivalent previous generation counterparts.
11396	//
11397	//    * General purpose: Current generation: M5 node types: cache.m5.large,
11398	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
11399	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
11400	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
11401	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
11402	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
11403	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
11404	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
11405	//
11406	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
11407	//    cache.c1.xlarge
11408	//
11409	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
11410	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
11411	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
11412	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
11413	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
11414	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
11415	//    cache.r3.8xlarge
11416	//
11417	// Additional node type info
11418	//
11419	//    * All current generation instance types are created in Amazon VPC by default.
11420	//
11421	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
11422	//
11423	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
11424	//
11425	//    * Redis configuration variables appendonly and appendfsync are not supported
11426	//    on Redis version 2.8.22 and later.
11427	CacheNodeType *string `type:"string"`
11428
11429	// The duration filter value, specified in years or seconds. Use this parameter
11430	// to show only reservations for this duration.
11431	//
11432	// Valid Values: 1 | 3 | 31536000 | 94608000
11433	Duration *string `type:"string"`
11434
11435	// An optional marker returned from a prior request. Use this marker for pagination
11436	// of results from this operation. If this parameter is specified, the response
11437	// includes only records beyond the marker, up to the value specified by MaxRecords.
11438	Marker *string `type:"string"`
11439
11440	// The maximum number of records to include in the response. If more records
11441	// exist than the specified MaxRecords value, a marker is included in the response
11442	// so that the remaining results can be retrieved.
11443	//
11444	// Default: 100
11445	//
11446	// Constraints: minimum 20; maximum 100.
11447	MaxRecords *int64 `type:"integer"`
11448
11449	// The offering type filter value. Use this parameter to show only the available
11450	// offerings matching the specified offering type.
11451	//
11452	// Valid values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization"
11453	OfferingType *string `type:"string"`
11454
11455	// The product description filter value. Use this parameter to show only those
11456	// reservations matching the specified product description.
11457	ProductDescription *string `type:"string"`
11458
11459	// The reserved cache node identifier filter value. Use this parameter to show
11460	// only the reservation that matches the specified reservation ID.
11461	ReservedCacheNodeId *string `type:"string"`
11462
11463	// The offering identifier filter value. Use this parameter to show only purchased
11464	// reservations matching the specified offering identifier.
11465	ReservedCacheNodesOfferingId *string `type:"string"`
11466}
11467
11468// String returns the string representation
11469func (s DescribeReservedCacheNodesInput) String() string {
11470	return awsutil.Prettify(s)
11471}
11472
11473// GoString returns the string representation
11474func (s DescribeReservedCacheNodesInput) GoString() string {
11475	return s.String()
11476}
11477
11478// SetCacheNodeType sets the CacheNodeType field's value.
11479func (s *DescribeReservedCacheNodesInput) SetCacheNodeType(v string) *DescribeReservedCacheNodesInput {
11480	s.CacheNodeType = &v
11481	return s
11482}
11483
11484// SetDuration sets the Duration field's value.
11485func (s *DescribeReservedCacheNodesInput) SetDuration(v string) *DescribeReservedCacheNodesInput {
11486	s.Duration = &v
11487	return s
11488}
11489
11490// SetMarker sets the Marker field's value.
11491func (s *DescribeReservedCacheNodesInput) SetMarker(v string) *DescribeReservedCacheNodesInput {
11492	s.Marker = &v
11493	return s
11494}
11495
11496// SetMaxRecords sets the MaxRecords field's value.
11497func (s *DescribeReservedCacheNodesInput) SetMaxRecords(v int64) *DescribeReservedCacheNodesInput {
11498	s.MaxRecords = &v
11499	return s
11500}
11501
11502// SetOfferingType sets the OfferingType field's value.
11503func (s *DescribeReservedCacheNodesInput) SetOfferingType(v string) *DescribeReservedCacheNodesInput {
11504	s.OfferingType = &v
11505	return s
11506}
11507
11508// SetProductDescription sets the ProductDescription field's value.
11509func (s *DescribeReservedCacheNodesInput) SetProductDescription(v string) *DescribeReservedCacheNodesInput {
11510	s.ProductDescription = &v
11511	return s
11512}
11513
11514// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
11515func (s *DescribeReservedCacheNodesInput) SetReservedCacheNodeId(v string) *DescribeReservedCacheNodesInput {
11516	s.ReservedCacheNodeId = &v
11517	return s
11518}
11519
11520// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
11521func (s *DescribeReservedCacheNodesInput) SetReservedCacheNodesOfferingId(v string) *DescribeReservedCacheNodesInput {
11522	s.ReservedCacheNodesOfferingId = &v
11523	return s
11524}
11525
11526// Represents the input of a DescribeReservedCacheNodesOfferings operation.
11527type DescribeReservedCacheNodesOfferingsInput struct {
11528	_ struct{} `type:"structure"`
11529
11530	// The cache node type filter value. Use this parameter to show only the available
11531	// offerings matching the specified cache node type.
11532	//
11533	// The following node types are supported by ElastiCache. Generally speaking,
11534	// the current generation types provide more memory and computational power
11535	// at lower cost when compared to their equivalent previous generation counterparts.
11536	//
11537	//    * General purpose: Current generation: M5 node types: cache.m5.large,
11538	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
11539	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
11540	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
11541	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
11542	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
11543	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
11544	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
11545	//
11546	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
11547	//    cache.c1.xlarge
11548	//
11549	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
11550	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
11551	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
11552	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
11553	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
11554	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
11555	//    cache.r3.8xlarge
11556	//
11557	// Additional node type info
11558	//
11559	//    * All current generation instance types are created in Amazon VPC by default.
11560	//
11561	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
11562	//
11563	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
11564	//
11565	//    * Redis configuration variables appendonly and appendfsync are not supported
11566	//    on Redis version 2.8.22 and later.
11567	CacheNodeType *string `type:"string"`
11568
11569	// Duration filter value, specified in years or seconds. Use this parameter
11570	// to show only reservations for a given duration.
11571	//
11572	// Valid Values: 1 | 3 | 31536000 | 94608000
11573	Duration *string `type:"string"`
11574
11575	// An optional marker returned from a prior request. Use this marker for pagination
11576	// of results from this operation. If this parameter is specified, the response
11577	// includes only records beyond the marker, up to the value specified by MaxRecords.
11578	Marker *string `type:"string"`
11579
11580	// The maximum number of records to include in the response. If more records
11581	// exist than the specified MaxRecords value, a marker is included in the response
11582	// so that the remaining results can be retrieved.
11583	//
11584	// Default: 100
11585	//
11586	// Constraints: minimum 20; maximum 100.
11587	MaxRecords *int64 `type:"integer"`
11588
11589	// The offering type filter value. Use this parameter to show only the available
11590	// offerings matching the specified offering type.
11591	//
11592	// Valid Values: "Light Utilization"|"Medium Utilization"|"Heavy Utilization"
11593	OfferingType *string `type:"string"`
11594
11595	// The product description filter value. Use this parameter to show only the
11596	// available offerings matching the specified product description.
11597	ProductDescription *string `type:"string"`
11598
11599	// The offering identifier filter value. Use this parameter to show only the
11600	// available offering that matches the specified reservation identifier.
11601	//
11602	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
11603	ReservedCacheNodesOfferingId *string `type:"string"`
11604}
11605
11606// String returns the string representation
11607func (s DescribeReservedCacheNodesOfferingsInput) String() string {
11608	return awsutil.Prettify(s)
11609}
11610
11611// GoString returns the string representation
11612func (s DescribeReservedCacheNodesOfferingsInput) GoString() string {
11613	return s.String()
11614}
11615
11616// SetCacheNodeType sets the CacheNodeType field's value.
11617func (s *DescribeReservedCacheNodesOfferingsInput) SetCacheNodeType(v string) *DescribeReservedCacheNodesOfferingsInput {
11618	s.CacheNodeType = &v
11619	return s
11620}
11621
11622// SetDuration sets the Duration field's value.
11623func (s *DescribeReservedCacheNodesOfferingsInput) SetDuration(v string) *DescribeReservedCacheNodesOfferingsInput {
11624	s.Duration = &v
11625	return s
11626}
11627
11628// SetMarker sets the Marker field's value.
11629func (s *DescribeReservedCacheNodesOfferingsInput) SetMarker(v string) *DescribeReservedCacheNodesOfferingsInput {
11630	s.Marker = &v
11631	return s
11632}
11633
11634// SetMaxRecords sets the MaxRecords field's value.
11635func (s *DescribeReservedCacheNodesOfferingsInput) SetMaxRecords(v int64) *DescribeReservedCacheNodesOfferingsInput {
11636	s.MaxRecords = &v
11637	return s
11638}
11639
11640// SetOfferingType sets the OfferingType field's value.
11641func (s *DescribeReservedCacheNodesOfferingsInput) SetOfferingType(v string) *DescribeReservedCacheNodesOfferingsInput {
11642	s.OfferingType = &v
11643	return s
11644}
11645
11646// SetProductDescription sets the ProductDescription field's value.
11647func (s *DescribeReservedCacheNodesOfferingsInput) SetProductDescription(v string) *DescribeReservedCacheNodesOfferingsInput {
11648	s.ProductDescription = &v
11649	return s
11650}
11651
11652// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
11653func (s *DescribeReservedCacheNodesOfferingsInput) SetReservedCacheNodesOfferingId(v string) *DescribeReservedCacheNodesOfferingsInput {
11654	s.ReservedCacheNodesOfferingId = &v
11655	return s
11656}
11657
11658// Represents the output of a DescribeReservedCacheNodesOfferings operation.
11659type DescribeReservedCacheNodesOfferingsOutput struct {
11660	_ struct{} `type:"structure"`
11661
11662	// Provides an identifier to allow retrieval of paginated results.
11663	Marker *string `type:"string"`
11664
11665	// A list of reserved cache node offerings. Each element in the list contains
11666	// detailed information about one offering.
11667	ReservedCacheNodesOfferings []*ReservedCacheNodesOffering `locationNameList:"ReservedCacheNodesOffering" type:"list"`
11668}
11669
11670// String returns the string representation
11671func (s DescribeReservedCacheNodesOfferingsOutput) String() string {
11672	return awsutil.Prettify(s)
11673}
11674
11675// GoString returns the string representation
11676func (s DescribeReservedCacheNodesOfferingsOutput) GoString() string {
11677	return s.String()
11678}
11679
11680// SetMarker sets the Marker field's value.
11681func (s *DescribeReservedCacheNodesOfferingsOutput) SetMarker(v string) *DescribeReservedCacheNodesOfferingsOutput {
11682	s.Marker = &v
11683	return s
11684}
11685
11686// SetReservedCacheNodesOfferings sets the ReservedCacheNodesOfferings field's value.
11687func (s *DescribeReservedCacheNodesOfferingsOutput) SetReservedCacheNodesOfferings(v []*ReservedCacheNodesOffering) *DescribeReservedCacheNodesOfferingsOutput {
11688	s.ReservedCacheNodesOfferings = v
11689	return s
11690}
11691
11692// Represents the output of a DescribeReservedCacheNodes operation.
11693type DescribeReservedCacheNodesOutput struct {
11694	_ struct{} `type:"structure"`
11695
11696	// Provides an identifier to allow retrieval of paginated results.
11697	Marker *string `type:"string"`
11698
11699	// A list of reserved cache nodes. Each element in the list contains detailed
11700	// information about one node.
11701	ReservedCacheNodes []*ReservedCacheNode `locationNameList:"ReservedCacheNode" type:"list"`
11702}
11703
11704// String returns the string representation
11705func (s DescribeReservedCacheNodesOutput) String() string {
11706	return awsutil.Prettify(s)
11707}
11708
11709// GoString returns the string representation
11710func (s DescribeReservedCacheNodesOutput) GoString() string {
11711	return s.String()
11712}
11713
11714// SetMarker sets the Marker field's value.
11715func (s *DescribeReservedCacheNodesOutput) SetMarker(v string) *DescribeReservedCacheNodesOutput {
11716	s.Marker = &v
11717	return s
11718}
11719
11720// SetReservedCacheNodes sets the ReservedCacheNodes field's value.
11721func (s *DescribeReservedCacheNodesOutput) SetReservedCacheNodes(v []*ReservedCacheNode) *DescribeReservedCacheNodesOutput {
11722	s.ReservedCacheNodes = v
11723	return s
11724}
11725
11726type DescribeServiceUpdatesInput struct {
11727	_ struct{} `type:"structure"`
11728
11729	// An optional marker returned from a prior request. Use this marker for pagination
11730	// of results from this operation. If this parameter is specified, the response
11731	// includes only records beyond the marker, up to the value specified by MaxRecords.
11732	Marker *string `type:"string"`
11733
11734	// The maximum number of records to include in the response
11735	MaxRecords *int64 `type:"integer"`
11736
11737	// The unique ID of the service update
11738	ServiceUpdateName *string `type:"string"`
11739
11740	// The status of the service update
11741	ServiceUpdateStatus []*string `type:"list"`
11742}
11743
11744// String returns the string representation
11745func (s DescribeServiceUpdatesInput) String() string {
11746	return awsutil.Prettify(s)
11747}
11748
11749// GoString returns the string representation
11750func (s DescribeServiceUpdatesInput) GoString() string {
11751	return s.String()
11752}
11753
11754// SetMarker sets the Marker field's value.
11755func (s *DescribeServiceUpdatesInput) SetMarker(v string) *DescribeServiceUpdatesInput {
11756	s.Marker = &v
11757	return s
11758}
11759
11760// SetMaxRecords sets the MaxRecords field's value.
11761func (s *DescribeServiceUpdatesInput) SetMaxRecords(v int64) *DescribeServiceUpdatesInput {
11762	s.MaxRecords = &v
11763	return s
11764}
11765
11766// SetServiceUpdateName sets the ServiceUpdateName field's value.
11767func (s *DescribeServiceUpdatesInput) SetServiceUpdateName(v string) *DescribeServiceUpdatesInput {
11768	s.ServiceUpdateName = &v
11769	return s
11770}
11771
11772// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
11773func (s *DescribeServiceUpdatesInput) SetServiceUpdateStatus(v []*string) *DescribeServiceUpdatesInput {
11774	s.ServiceUpdateStatus = v
11775	return s
11776}
11777
11778type DescribeServiceUpdatesOutput struct {
11779	_ struct{} `type:"structure"`
11780
11781	// An optional marker returned from a prior request. Use this marker for pagination
11782	// of results from this operation. If this parameter is specified, the response
11783	// includes only records beyond the marker, up to the value specified by MaxRecords.
11784	Marker *string `type:"string"`
11785
11786	// A list of service updates
11787	ServiceUpdates []*ServiceUpdate `locationNameList:"ServiceUpdate" type:"list"`
11788}
11789
11790// String returns the string representation
11791func (s DescribeServiceUpdatesOutput) String() string {
11792	return awsutil.Prettify(s)
11793}
11794
11795// GoString returns the string representation
11796func (s DescribeServiceUpdatesOutput) GoString() string {
11797	return s.String()
11798}
11799
11800// SetMarker sets the Marker field's value.
11801func (s *DescribeServiceUpdatesOutput) SetMarker(v string) *DescribeServiceUpdatesOutput {
11802	s.Marker = &v
11803	return s
11804}
11805
11806// SetServiceUpdates sets the ServiceUpdates field's value.
11807func (s *DescribeServiceUpdatesOutput) SetServiceUpdates(v []*ServiceUpdate) *DescribeServiceUpdatesOutput {
11808	s.ServiceUpdates = v
11809	return s
11810}
11811
11812// Represents the input of a DescribeSnapshotsMessage operation.
11813type DescribeSnapshotsInput struct {
11814	_ struct{} `type:"structure"`
11815
11816	// A user-supplied cluster identifier. If this parameter is specified, only
11817	// snapshots associated with that specific cluster are described.
11818	CacheClusterId *string `type:"string"`
11819
11820	// An optional marker returned from a prior request. Use this marker for pagination
11821	// of results from this operation. If this parameter is specified, the response
11822	// includes only records beyond the marker, up to the value specified by MaxRecords.
11823	Marker *string `type:"string"`
11824
11825	// The maximum number of records to include in the response. If more records
11826	// exist than the specified MaxRecords value, a marker is included in the response
11827	// so that the remaining results can be retrieved.
11828	//
11829	// Default: 50
11830	//
11831	// Constraints: minimum 20; maximum 50.
11832	MaxRecords *int64 `type:"integer"`
11833
11834	// A user-supplied replication group identifier. If this parameter is specified,
11835	// only snapshots associated with that specific replication group are described.
11836	ReplicationGroupId *string `type:"string"`
11837
11838	// A Boolean value which if true, the node group (shard) configuration is included
11839	// in the snapshot description.
11840	ShowNodeGroupConfig *bool `type:"boolean"`
11841
11842	// A user-supplied name of the snapshot. If this parameter is specified, only
11843	// this snapshot are described.
11844	SnapshotName *string `type:"string"`
11845
11846	// If set to system, the output shows snapshots that were automatically created
11847	// by ElastiCache. If set to user the output shows snapshots that were manually
11848	// created. If omitted, the output shows both automatically and manually created
11849	// snapshots.
11850	SnapshotSource *string `type:"string"`
11851}
11852
11853// String returns the string representation
11854func (s DescribeSnapshotsInput) String() string {
11855	return awsutil.Prettify(s)
11856}
11857
11858// GoString returns the string representation
11859func (s DescribeSnapshotsInput) GoString() string {
11860	return s.String()
11861}
11862
11863// SetCacheClusterId sets the CacheClusterId field's value.
11864func (s *DescribeSnapshotsInput) SetCacheClusterId(v string) *DescribeSnapshotsInput {
11865	s.CacheClusterId = &v
11866	return s
11867}
11868
11869// SetMarker sets the Marker field's value.
11870func (s *DescribeSnapshotsInput) SetMarker(v string) *DescribeSnapshotsInput {
11871	s.Marker = &v
11872	return s
11873}
11874
11875// SetMaxRecords sets the MaxRecords field's value.
11876func (s *DescribeSnapshotsInput) SetMaxRecords(v int64) *DescribeSnapshotsInput {
11877	s.MaxRecords = &v
11878	return s
11879}
11880
11881// SetReplicationGroupId sets the ReplicationGroupId field's value.
11882func (s *DescribeSnapshotsInput) SetReplicationGroupId(v string) *DescribeSnapshotsInput {
11883	s.ReplicationGroupId = &v
11884	return s
11885}
11886
11887// SetShowNodeGroupConfig sets the ShowNodeGroupConfig field's value.
11888func (s *DescribeSnapshotsInput) SetShowNodeGroupConfig(v bool) *DescribeSnapshotsInput {
11889	s.ShowNodeGroupConfig = &v
11890	return s
11891}
11892
11893// SetSnapshotName sets the SnapshotName field's value.
11894func (s *DescribeSnapshotsInput) SetSnapshotName(v string) *DescribeSnapshotsInput {
11895	s.SnapshotName = &v
11896	return s
11897}
11898
11899// SetSnapshotSource sets the SnapshotSource field's value.
11900func (s *DescribeSnapshotsInput) SetSnapshotSource(v string) *DescribeSnapshotsInput {
11901	s.SnapshotSource = &v
11902	return s
11903}
11904
11905// Represents the output of a DescribeSnapshots operation.
11906type DescribeSnapshotsOutput struct {
11907	_ struct{} `type:"structure"`
11908
11909	// An optional marker returned from a prior request. Use this marker for pagination
11910	// of results from this operation. If this parameter is specified, the response
11911	// includes only records beyond the marker, up to the value specified by MaxRecords.
11912	Marker *string `type:"string"`
11913
11914	// A list of snapshots. Each item in the list contains detailed information
11915	// about one snapshot.
11916	Snapshots []*Snapshot `locationNameList:"Snapshot" type:"list"`
11917}
11918
11919// String returns the string representation
11920func (s DescribeSnapshotsOutput) String() string {
11921	return awsutil.Prettify(s)
11922}
11923
11924// GoString returns the string representation
11925func (s DescribeSnapshotsOutput) GoString() string {
11926	return s.String()
11927}
11928
11929// SetMarker sets the Marker field's value.
11930func (s *DescribeSnapshotsOutput) SetMarker(v string) *DescribeSnapshotsOutput {
11931	s.Marker = &v
11932	return s
11933}
11934
11935// SetSnapshots sets the Snapshots field's value.
11936func (s *DescribeSnapshotsOutput) SetSnapshots(v []*Snapshot) *DescribeSnapshotsOutput {
11937	s.Snapshots = v
11938	return s
11939}
11940
11941type DescribeUpdateActionsInput struct {
11942	_ struct{} `type:"structure"`
11943
11944	// The cache cluster IDs
11945	CacheClusterIds []*string `type:"list"`
11946
11947	// The Elasticache engine to which the update applies. Either Redis or Memcached
11948	Engine *string `type:"string"`
11949
11950	// An optional marker returned from a prior request. Use this marker for pagination
11951	// of results from this operation. If this parameter is specified, the response
11952	// includes only records beyond the marker, up to the value specified by MaxRecords.
11953	Marker *string `type:"string"`
11954
11955	// The maximum number of records to include in the response
11956	MaxRecords *int64 `type:"integer"`
11957
11958	// The replication group IDs
11959	ReplicationGroupIds []*string `type:"list"`
11960
11961	// The unique ID of the service update
11962	ServiceUpdateName *string `type:"string"`
11963
11964	// The status of the service update
11965	ServiceUpdateStatus []*string `type:"list"`
11966
11967	// The range of time specified to search for service updates that are in available
11968	// status
11969	ServiceUpdateTimeRange *TimeRangeFilter `type:"structure"`
11970
11971	// Dictates whether to include node level update status in the response
11972	ShowNodeLevelUpdateStatus *bool `type:"boolean"`
11973
11974	// The status of the update action.
11975	UpdateActionStatus []*string `type:"list"`
11976}
11977
11978// String returns the string representation
11979func (s DescribeUpdateActionsInput) String() string {
11980	return awsutil.Prettify(s)
11981}
11982
11983// GoString returns the string representation
11984func (s DescribeUpdateActionsInput) GoString() string {
11985	return s.String()
11986}
11987
11988// SetCacheClusterIds sets the CacheClusterIds field's value.
11989func (s *DescribeUpdateActionsInput) SetCacheClusterIds(v []*string) *DescribeUpdateActionsInput {
11990	s.CacheClusterIds = v
11991	return s
11992}
11993
11994// SetEngine sets the Engine field's value.
11995func (s *DescribeUpdateActionsInput) SetEngine(v string) *DescribeUpdateActionsInput {
11996	s.Engine = &v
11997	return s
11998}
11999
12000// SetMarker sets the Marker field's value.
12001func (s *DescribeUpdateActionsInput) SetMarker(v string) *DescribeUpdateActionsInput {
12002	s.Marker = &v
12003	return s
12004}
12005
12006// SetMaxRecords sets the MaxRecords field's value.
12007func (s *DescribeUpdateActionsInput) SetMaxRecords(v int64) *DescribeUpdateActionsInput {
12008	s.MaxRecords = &v
12009	return s
12010}
12011
12012// SetReplicationGroupIds sets the ReplicationGroupIds field's value.
12013func (s *DescribeUpdateActionsInput) SetReplicationGroupIds(v []*string) *DescribeUpdateActionsInput {
12014	s.ReplicationGroupIds = v
12015	return s
12016}
12017
12018// SetServiceUpdateName sets the ServiceUpdateName field's value.
12019func (s *DescribeUpdateActionsInput) SetServiceUpdateName(v string) *DescribeUpdateActionsInput {
12020	s.ServiceUpdateName = &v
12021	return s
12022}
12023
12024// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
12025func (s *DescribeUpdateActionsInput) SetServiceUpdateStatus(v []*string) *DescribeUpdateActionsInput {
12026	s.ServiceUpdateStatus = v
12027	return s
12028}
12029
12030// SetServiceUpdateTimeRange sets the ServiceUpdateTimeRange field's value.
12031func (s *DescribeUpdateActionsInput) SetServiceUpdateTimeRange(v *TimeRangeFilter) *DescribeUpdateActionsInput {
12032	s.ServiceUpdateTimeRange = v
12033	return s
12034}
12035
12036// SetShowNodeLevelUpdateStatus sets the ShowNodeLevelUpdateStatus field's value.
12037func (s *DescribeUpdateActionsInput) SetShowNodeLevelUpdateStatus(v bool) *DescribeUpdateActionsInput {
12038	s.ShowNodeLevelUpdateStatus = &v
12039	return s
12040}
12041
12042// SetUpdateActionStatus sets the UpdateActionStatus field's value.
12043func (s *DescribeUpdateActionsInput) SetUpdateActionStatus(v []*string) *DescribeUpdateActionsInput {
12044	s.UpdateActionStatus = v
12045	return s
12046}
12047
12048type DescribeUpdateActionsOutput struct {
12049	_ struct{} `type:"structure"`
12050
12051	// An optional marker returned from a prior request. Use this marker for pagination
12052	// of results from this operation. If this parameter is specified, the response
12053	// includes only records beyond the marker, up to the value specified by MaxRecords.
12054	Marker *string `type:"string"`
12055
12056	// Returns a list of update actions
12057	UpdateActions []*UpdateAction `locationNameList:"UpdateAction" type:"list"`
12058}
12059
12060// String returns the string representation
12061func (s DescribeUpdateActionsOutput) String() string {
12062	return awsutil.Prettify(s)
12063}
12064
12065// GoString returns the string representation
12066func (s DescribeUpdateActionsOutput) GoString() string {
12067	return s.String()
12068}
12069
12070// SetMarker sets the Marker field's value.
12071func (s *DescribeUpdateActionsOutput) SetMarker(v string) *DescribeUpdateActionsOutput {
12072	s.Marker = &v
12073	return s
12074}
12075
12076// SetUpdateActions sets the UpdateActions field's value.
12077func (s *DescribeUpdateActionsOutput) SetUpdateActions(v []*UpdateAction) *DescribeUpdateActionsOutput {
12078	s.UpdateActions = v
12079	return s
12080}
12081
12082type DisassociateGlobalReplicationGroupInput struct {
12083	_ struct{} `type:"structure"`
12084
12085	// The name of the Global Datastore
12086	//
12087	// GlobalReplicationGroupId is a required field
12088	GlobalReplicationGroupId *string `type:"string" required:"true"`
12089
12090	// The name of the secondary cluster you wish to remove from the Global Datastore
12091	//
12092	// ReplicationGroupId is a required field
12093	ReplicationGroupId *string `type:"string" required:"true"`
12094
12095	// The AWS region of secondary cluster you wish to remove from the Global Datastore
12096	//
12097	// ReplicationGroupRegion is a required field
12098	ReplicationGroupRegion *string `type:"string" required:"true"`
12099}
12100
12101// String returns the string representation
12102func (s DisassociateGlobalReplicationGroupInput) String() string {
12103	return awsutil.Prettify(s)
12104}
12105
12106// GoString returns the string representation
12107func (s DisassociateGlobalReplicationGroupInput) GoString() string {
12108	return s.String()
12109}
12110
12111// Validate inspects the fields of the type to determine if they are valid.
12112func (s *DisassociateGlobalReplicationGroupInput) Validate() error {
12113	invalidParams := request.ErrInvalidParams{Context: "DisassociateGlobalReplicationGroupInput"}
12114	if s.GlobalReplicationGroupId == nil {
12115		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
12116	}
12117	if s.ReplicationGroupId == nil {
12118		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
12119	}
12120	if s.ReplicationGroupRegion == nil {
12121		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupRegion"))
12122	}
12123
12124	if invalidParams.Len() > 0 {
12125		return invalidParams
12126	}
12127	return nil
12128}
12129
12130// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
12131func (s *DisassociateGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *DisassociateGlobalReplicationGroupInput {
12132	s.GlobalReplicationGroupId = &v
12133	return s
12134}
12135
12136// SetReplicationGroupId sets the ReplicationGroupId field's value.
12137func (s *DisassociateGlobalReplicationGroupInput) SetReplicationGroupId(v string) *DisassociateGlobalReplicationGroupInput {
12138	s.ReplicationGroupId = &v
12139	return s
12140}
12141
12142// SetReplicationGroupRegion sets the ReplicationGroupRegion field's value.
12143func (s *DisassociateGlobalReplicationGroupInput) SetReplicationGroupRegion(v string) *DisassociateGlobalReplicationGroupInput {
12144	s.ReplicationGroupRegion = &v
12145	return s
12146}
12147
12148type DisassociateGlobalReplicationGroupOutput struct {
12149	_ struct{} `type:"structure"`
12150
12151	// Consists of a primary cluster that accepts writes and an associated secondary
12152	// cluster that resides in a different AWS region. The secondary cluster accepts
12153	// only reads. The primary cluster automatically replicates updates to the secondary
12154	// cluster.
12155	//
12156	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
12157	//    Datastore, which is what you use to associate a secondary cluster.
12158	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
12159}
12160
12161// String returns the string representation
12162func (s DisassociateGlobalReplicationGroupOutput) String() string {
12163	return awsutil.Prettify(s)
12164}
12165
12166// GoString returns the string representation
12167func (s DisassociateGlobalReplicationGroupOutput) GoString() string {
12168	return s.String()
12169}
12170
12171// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
12172func (s *DisassociateGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *DisassociateGlobalReplicationGroupOutput {
12173	s.GlobalReplicationGroup = v
12174	return s
12175}
12176
12177// Provides ownership and status information for an Amazon EC2 security group.
12178type EC2SecurityGroup struct {
12179	_ struct{} `type:"structure"`
12180
12181	// The name of the Amazon EC2 security group.
12182	EC2SecurityGroupName *string `type:"string"`
12183
12184	// The AWS account ID of the Amazon EC2 security group owner.
12185	EC2SecurityGroupOwnerId *string `type:"string"`
12186
12187	// The status of the Amazon EC2 security group.
12188	Status *string `type:"string"`
12189}
12190
12191// String returns the string representation
12192func (s EC2SecurityGroup) String() string {
12193	return awsutil.Prettify(s)
12194}
12195
12196// GoString returns the string representation
12197func (s EC2SecurityGroup) GoString() string {
12198	return s.String()
12199}
12200
12201// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
12202func (s *EC2SecurityGroup) SetEC2SecurityGroupName(v string) *EC2SecurityGroup {
12203	s.EC2SecurityGroupName = &v
12204	return s
12205}
12206
12207// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
12208func (s *EC2SecurityGroup) SetEC2SecurityGroupOwnerId(v string) *EC2SecurityGroup {
12209	s.EC2SecurityGroupOwnerId = &v
12210	return s
12211}
12212
12213// SetStatus sets the Status field's value.
12214func (s *EC2SecurityGroup) SetStatus(v string) *EC2SecurityGroup {
12215	s.Status = &v
12216	return s
12217}
12218
12219// Represents the information required for client programs to connect to a cache
12220// node.
12221type Endpoint struct {
12222	_ struct{} `type:"structure"`
12223
12224	// The DNS hostname of the cache node.
12225	Address *string `type:"string"`
12226
12227	// The port number that the cache engine is listening on.
12228	Port *int64 `type:"integer"`
12229}
12230
12231// String returns the string representation
12232func (s Endpoint) String() string {
12233	return awsutil.Prettify(s)
12234}
12235
12236// GoString returns the string representation
12237func (s Endpoint) GoString() string {
12238	return s.String()
12239}
12240
12241// SetAddress sets the Address field's value.
12242func (s *Endpoint) SetAddress(v string) *Endpoint {
12243	s.Address = &v
12244	return s
12245}
12246
12247// SetPort sets the Port field's value.
12248func (s *Endpoint) SetPort(v int64) *Endpoint {
12249	s.Port = &v
12250	return s
12251}
12252
12253// Represents the output of a DescribeEngineDefaultParameters operation.
12254type EngineDefaults struct {
12255	_ struct{} `type:"structure"`
12256
12257	// A list of parameters specific to a particular cache node type. Each element
12258	// in the list contains detailed information about one parameter.
12259	CacheNodeTypeSpecificParameters []*CacheNodeTypeSpecificParameter `locationNameList:"CacheNodeTypeSpecificParameter" type:"list"`
12260
12261	// Specifies the name of the cache parameter group family to which the engine
12262	// default parameters apply.
12263	//
12264	// Valid values are: memcached1.4 | memcached1.5 | redis2.6 | redis2.8 | redis3.2
12265	// | redis4.0 | redis5.0 |
12266	CacheParameterGroupFamily *string `type:"string"`
12267
12268	// Provides an identifier to allow retrieval of paginated results.
12269	Marker *string `type:"string"`
12270
12271	// Contains a list of engine default parameters.
12272	Parameters []*Parameter `locationNameList:"Parameter" type:"list"`
12273}
12274
12275// String returns the string representation
12276func (s EngineDefaults) String() string {
12277	return awsutil.Prettify(s)
12278}
12279
12280// GoString returns the string representation
12281func (s EngineDefaults) GoString() string {
12282	return s.String()
12283}
12284
12285// SetCacheNodeTypeSpecificParameters sets the CacheNodeTypeSpecificParameters field's value.
12286func (s *EngineDefaults) SetCacheNodeTypeSpecificParameters(v []*CacheNodeTypeSpecificParameter) *EngineDefaults {
12287	s.CacheNodeTypeSpecificParameters = v
12288	return s
12289}
12290
12291// SetCacheParameterGroupFamily sets the CacheParameterGroupFamily field's value.
12292func (s *EngineDefaults) SetCacheParameterGroupFamily(v string) *EngineDefaults {
12293	s.CacheParameterGroupFamily = &v
12294	return s
12295}
12296
12297// SetMarker sets the Marker field's value.
12298func (s *EngineDefaults) SetMarker(v string) *EngineDefaults {
12299	s.Marker = &v
12300	return s
12301}
12302
12303// SetParameters sets the Parameters field's value.
12304func (s *EngineDefaults) SetParameters(v []*Parameter) *EngineDefaults {
12305	s.Parameters = v
12306	return s
12307}
12308
12309// Represents a single occurrence of something interesting within the system.
12310// Some examples of events are creating a cluster, adding or removing a cache
12311// node, or rebooting a node.
12312type Event struct {
12313	_ struct{} `type:"structure"`
12314
12315	// The date and time when the event occurred.
12316	Date *time.Time `type:"timestamp"`
12317
12318	// The text of the event.
12319	Message *string `type:"string"`
12320
12321	// The identifier for the source of the event. For example, if the event occurred
12322	// at the cluster level, the identifier would be the name of the cluster.
12323	SourceIdentifier *string `type:"string"`
12324
12325	// Specifies the origin of this event - a cluster, a parameter group, a security
12326	// group, etc.
12327	SourceType *string `type:"string" enum:"SourceType"`
12328}
12329
12330// String returns the string representation
12331func (s Event) String() string {
12332	return awsutil.Prettify(s)
12333}
12334
12335// GoString returns the string representation
12336func (s Event) GoString() string {
12337	return s.String()
12338}
12339
12340// SetDate sets the Date field's value.
12341func (s *Event) SetDate(v time.Time) *Event {
12342	s.Date = &v
12343	return s
12344}
12345
12346// SetMessage sets the Message field's value.
12347func (s *Event) SetMessage(v string) *Event {
12348	s.Message = &v
12349	return s
12350}
12351
12352// SetSourceIdentifier sets the SourceIdentifier field's value.
12353func (s *Event) SetSourceIdentifier(v string) *Event {
12354	s.SourceIdentifier = &v
12355	return s
12356}
12357
12358// SetSourceType sets the SourceType field's value.
12359func (s *Event) SetSourceType(v string) *Event {
12360	s.SourceType = &v
12361	return s
12362}
12363
12364type FailoverGlobalReplicationGroupInput struct {
12365	_ struct{} `type:"structure"`
12366
12367	// The name of the Global Datastore
12368	//
12369	// GlobalReplicationGroupId is a required field
12370	GlobalReplicationGroupId *string `type:"string" required:"true"`
12371
12372	// The AWS region of the primary cluster of the Global Datastore
12373	//
12374	// PrimaryRegion is a required field
12375	PrimaryRegion *string `type:"string" required:"true"`
12376
12377	// The name of the primary replication group
12378	//
12379	// PrimaryReplicationGroupId is a required field
12380	PrimaryReplicationGroupId *string `type:"string" required:"true"`
12381}
12382
12383// String returns the string representation
12384func (s FailoverGlobalReplicationGroupInput) String() string {
12385	return awsutil.Prettify(s)
12386}
12387
12388// GoString returns the string representation
12389func (s FailoverGlobalReplicationGroupInput) GoString() string {
12390	return s.String()
12391}
12392
12393// Validate inspects the fields of the type to determine if they are valid.
12394func (s *FailoverGlobalReplicationGroupInput) Validate() error {
12395	invalidParams := request.ErrInvalidParams{Context: "FailoverGlobalReplicationGroupInput"}
12396	if s.GlobalReplicationGroupId == nil {
12397		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
12398	}
12399	if s.PrimaryRegion == nil {
12400		invalidParams.Add(request.NewErrParamRequired("PrimaryRegion"))
12401	}
12402	if s.PrimaryReplicationGroupId == nil {
12403		invalidParams.Add(request.NewErrParamRequired("PrimaryReplicationGroupId"))
12404	}
12405
12406	if invalidParams.Len() > 0 {
12407		return invalidParams
12408	}
12409	return nil
12410}
12411
12412// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
12413func (s *FailoverGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *FailoverGlobalReplicationGroupInput {
12414	s.GlobalReplicationGroupId = &v
12415	return s
12416}
12417
12418// SetPrimaryRegion sets the PrimaryRegion field's value.
12419func (s *FailoverGlobalReplicationGroupInput) SetPrimaryRegion(v string) *FailoverGlobalReplicationGroupInput {
12420	s.PrimaryRegion = &v
12421	return s
12422}
12423
12424// SetPrimaryReplicationGroupId sets the PrimaryReplicationGroupId field's value.
12425func (s *FailoverGlobalReplicationGroupInput) SetPrimaryReplicationGroupId(v string) *FailoverGlobalReplicationGroupInput {
12426	s.PrimaryReplicationGroupId = &v
12427	return s
12428}
12429
12430type FailoverGlobalReplicationGroupOutput struct {
12431	_ struct{} `type:"structure"`
12432
12433	// Consists of a primary cluster that accepts writes and an associated secondary
12434	// cluster that resides in a different AWS region. The secondary cluster accepts
12435	// only reads. The primary cluster automatically replicates updates to the secondary
12436	// cluster.
12437	//
12438	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
12439	//    Datastore, which is what you use to associate a secondary cluster.
12440	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
12441}
12442
12443// String returns the string representation
12444func (s FailoverGlobalReplicationGroupOutput) String() string {
12445	return awsutil.Prettify(s)
12446}
12447
12448// GoString returns the string representation
12449func (s FailoverGlobalReplicationGroupOutput) GoString() string {
12450	return s.String()
12451}
12452
12453// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
12454func (s *FailoverGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *FailoverGlobalReplicationGroupOutput {
12455	s.GlobalReplicationGroup = v
12456	return s
12457}
12458
12459// Indicates the slot configuration and global identifier for a slice group.
12460type GlobalNodeGroup struct {
12461	_ struct{} `type:"structure"`
12462
12463	// The name of the global node group
12464	GlobalNodeGroupId *string `type:"string"`
12465
12466	// The keyspace for this node group
12467	Slots *string `type:"string"`
12468}
12469
12470// String returns the string representation
12471func (s GlobalNodeGroup) String() string {
12472	return awsutil.Prettify(s)
12473}
12474
12475// GoString returns the string representation
12476func (s GlobalNodeGroup) GoString() string {
12477	return s.String()
12478}
12479
12480// SetGlobalNodeGroupId sets the GlobalNodeGroupId field's value.
12481func (s *GlobalNodeGroup) SetGlobalNodeGroupId(v string) *GlobalNodeGroup {
12482	s.GlobalNodeGroupId = &v
12483	return s
12484}
12485
12486// SetSlots sets the Slots field's value.
12487func (s *GlobalNodeGroup) SetSlots(v string) *GlobalNodeGroup {
12488	s.Slots = &v
12489	return s
12490}
12491
12492// Consists of a primary cluster that accepts writes and an associated secondary
12493// cluster that resides in a different AWS region. The secondary cluster accepts
12494// only reads. The primary cluster automatically replicates updates to the secondary
12495// cluster.
12496//
12497//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
12498//    Datastore, which is what you use to associate a secondary cluster.
12499type GlobalReplicationGroup struct {
12500	_ struct{} `type:"structure"`
12501
12502	// The ARN (Amazon Resource Name) of the global replication group.
12503	ARN *string `type:"string"`
12504
12505	// A flag that enables encryption at rest when set to true.
12506	//
12507	// You cannot modify the value of AtRestEncryptionEnabled after the replication
12508	// group is created. To enable encryption at rest on a replication group you
12509	// must set AtRestEncryptionEnabled to true when you create the replication
12510	// group.
12511	//
12512	// Required: Only available when creating a replication group in an Amazon VPC
12513	// using redis version 3.2.6, 4.x or later.
12514	AtRestEncryptionEnabled *bool `type:"boolean"`
12515
12516	// A flag that enables using an AuthToken (password) when issuing Redis commands.
12517	//
12518	// Default: false
12519	AuthTokenEnabled *bool `type:"boolean"`
12520
12521	// The cache node type of the Global Datastore
12522	CacheNodeType *string `type:"string"`
12523
12524	// A flag that indicates whether the Global Datastore is cluster enabled.
12525	ClusterEnabled *bool `type:"boolean"`
12526
12527	// The Elasticache engine. For Redis only.
12528	Engine *string `type:"string"`
12529
12530	// The Elasticache Redis engine version. For preview, it is Redis version 5.0.5
12531	// only.
12532	EngineVersion *string `type:"string"`
12533
12534	// Indicates the slot configuration and global identifier for each slice group.
12535	GlobalNodeGroups []*GlobalNodeGroup `locationNameList:"GlobalNodeGroup" type:"list"`
12536
12537	// The optional description of the Global Datastore
12538	GlobalReplicationGroupDescription *string `type:"string"`
12539
12540	// The name of the Global Datastore
12541	GlobalReplicationGroupId *string `type:"string"`
12542
12543	// The replication groups that comprise the Global Datastore.
12544	Members []*GlobalReplicationGroupMember `locationNameList:"GlobalReplicationGroupMember" type:"list"`
12545
12546	// The status of the Global Datastore
12547	Status *string `type:"string"`
12548
12549	// A flag that enables in-transit encryption when set to true. You cannot modify
12550	// the value of TransitEncryptionEnabled after the cluster is created. To enable
12551	// in-transit encryption on a cluster you must set TransitEncryptionEnabled
12552	// to true when you create a cluster.
12553	TransitEncryptionEnabled *bool `type:"boolean"`
12554}
12555
12556// String returns the string representation
12557func (s GlobalReplicationGroup) String() string {
12558	return awsutil.Prettify(s)
12559}
12560
12561// GoString returns the string representation
12562func (s GlobalReplicationGroup) GoString() string {
12563	return s.String()
12564}
12565
12566// SetARN sets the ARN field's value.
12567func (s *GlobalReplicationGroup) SetARN(v string) *GlobalReplicationGroup {
12568	s.ARN = &v
12569	return s
12570}
12571
12572// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
12573func (s *GlobalReplicationGroup) SetAtRestEncryptionEnabled(v bool) *GlobalReplicationGroup {
12574	s.AtRestEncryptionEnabled = &v
12575	return s
12576}
12577
12578// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
12579func (s *GlobalReplicationGroup) SetAuthTokenEnabled(v bool) *GlobalReplicationGroup {
12580	s.AuthTokenEnabled = &v
12581	return s
12582}
12583
12584// SetCacheNodeType sets the CacheNodeType field's value.
12585func (s *GlobalReplicationGroup) SetCacheNodeType(v string) *GlobalReplicationGroup {
12586	s.CacheNodeType = &v
12587	return s
12588}
12589
12590// SetClusterEnabled sets the ClusterEnabled field's value.
12591func (s *GlobalReplicationGroup) SetClusterEnabled(v bool) *GlobalReplicationGroup {
12592	s.ClusterEnabled = &v
12593	return s
12594}
12595
12596// SetEngine sets the Engine field's value.
12597func (s *GlobalReplicationGroup) SetEngine(v string) *GlobalReplicationGroup {
12598	s.Engine = &v
12599	return s
12600}
12601
12602// SetEngineVersion sets the EngineVersion field's value.
12603func (s *GlobalReplicationGroup) SetEngineVersion(v string) *GlobalReplicationGroup {
12604	s.EngineVersion = &v
12605	return s
12606}
12607
12608// SetGlobalNodeGroups sets the GlobalNodeGroups field's value.
12609func (s *GlobalReplicationGroup) SetGlobalNodeGroups(v []*GlobalNodeGroup) *GlobalReplicationGroup {
12610	s.GlobalNodeGroups = v
12611	return s
12612}
12613
12614// SetGlobalReplicationGroupDescription sets the GlobalReplicationGroupDescription field's value.
12615func (s *GlobalReplicationGroup) SetGlobalReplicationGroupDescription(v string) *GlobalReplicationGroup {
12616	s.GlobalReplicationGroupDescription = &v
12617	return s
12618}
12619
12620// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
12621func (s *GlobalReplicationGroup) SetGlobalReplicationGroupId(v string) *GlobalReplicationGroup {
12622	s.GlobalReplicationGroupId = &v
12623	return s
12624}
12625
12626// SetMembers sets the Members field's value.
12627func (s *GlobalReplicationGroup) SetMembers(v []*GlobalReplicationGroupMember) *GlobalReplicationGroup {
12628	s.Members = v
12629	return s
12630}
12631
12632// SetStatus sets the Status field's value.
12633func (s *GlobalReplicationGroup) SetStatus(v string) *GlobalReplicationGroup {
12634	s.Status = &v
12635	return s
12636}
12637
12638// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
12639func (s *GlobalReplicationGroup) SetTransitEncryptionEnabled(v bool) *GlobalReplicationGroup {
12640	s.TransitEncryptionEnabled = &v
12641	return s
12642}
12643
12644// The name of the Global Datastore and role of this replication group in the
12645// Global Datastore.
12646type GlobalReplicationGroupInfo struct {
12647	_ struct{} `type:"structure"`
12648
12649	// The name of the Global Datastore
12650	GlobalReplicationGroupId *string `type:"string"`
12651
12652	// The role of the replication group in a Global Datastore. Can be primary or
12653	// secondary.
12654	GlobalReplicationGroupMemberRole *string `type:"string"`
12655}
12656
12657// String returns the string representation
12658func (s GlobalReplicationGroupInfo) String() string {
12659	return awsutil.Prettify(s)
12660}
12661
12662// GoString returns the string representation
12663func (s GlobalReplicationGroupInfo) GoString() string {
12664	return s.String()
12665}
12666
12667// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
12668func (s *GlobalReplicationGroupInfo) SetGlobalReplicationGroupId(v string) *GlobalReplicationGroupInfo {
12669	s.GlobalReplicationGroupId = &v
12670	return s
12671}
12672
12673// SetGlobalReplicationGroupMemberRole sets the GlobalReplicationGroupMemberRole field's value.
12674func (s *GlobalReplicationGroupInfo) SetGlobalReplicationGroupMemberRole(v string) *GlobalReplicationGroupInfo {
12675	s.GlobalReplicationGroupMemberRole = &v
12676	return s
12677}
12678
12679// A member of a Global Datastore. It contains the Replication Group Id, the
12680// AWS region and the role of the replication group.
12681type GlobalReplicationGroupMember struct {
12682	_ struct{} `type:"structure"`
12683
12684	// Indicates whether automatic failover is enabled for the replication group.
12685	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
12686
12687	// The replication group id of the Global Datastore member.
12688	ReplicationGroupId *string `type:"string"`
12689
12690	// The AWS region of the Global Datastore member.
12691	ReplicationGroupRegion *string `type:"string"`
12692
12693	// Indicates the role of the replication group, primary or secondary.
12694	Role *string `type:"string"`
12695
12696	// The status of the membership of the replication group.
12697	Status *string `type:"string"`
12698}
12699
12700// String returns the string representation
12701func (s GlobalReplicationGroupMember) String() string {
12702	return awsutil.Prettify(s)
12703}
12704
12705// GoString returns the string representation
12706func (s GlobalReplicationGroupMember) GoString() string {
12707	return s.String()
12708}
12709
12710// SetAutomaticFailover sets the AutomaticFailover field's value.
12711func (s *GlobalReplicationGroupMember) SetAutomaticFailover(v string) *GlobalReplicationGroupMember {
12712	s.AutomaticFailover = &v
12713	return s
12714}
12715
12716// SetReplicationGroupId sets the ReplicationGroupId field's value.
12717func (s *GlobalReplicationGroupMember) SetReplicationGroupId(v string) *GlobalReplicationGroupMember {
12718	s.ReplicationGroupId = &v
12719	return s
12720}
12721
12722// SetReplicationGroupRegion sets the ReplicationGroupRegion field's value.
12723func (s *GlobalReplicationGroupMember) SetReplicationGroupRegion(v string) *GlobalReplicationGroupMember {
12724	s.ReplicationGroupRegion = &v
12725	return s
12726}
12727
12728// SetRole sets the Role field's value.
12729func (s *GlobalReplicationGroupMember) SetRole(v string) *GlobalReplicationGroupMember {
12730	s.Role = &v
12731	return s
12732}
12733
12734// SetStatus sets the Status field's value.
12735func (s *GlobalReplicationGroupMember) SetStatus(v string) *GlobalReplicationGroupMember {
12736	s.Status = &v
12737	return s
12738}
12739
12740type IncreaseNodeGroupsInGlobalReplicationGroupInput struct {
12741	_ struct{} `type:"structure"`
12742
12743	// Indicates that the process begins immediately. At present, the only permitted
12744	// value for this parameter is true.
12745	//
12746	// ApplyImmediately is a required field
12747	ApplyImmediately *bool `type:"boolean" required:"true"`
12748
12749	// The name of the Global Datastore
12750	//
12751	// GlobalReplicationGroupId is a required field
12752	GlobalReplicationGroupId *string `type:"string" required:"true"`
12753
12754	// The number of node groups you wish to add
12755	//
12756	// NodeGroupCount is a required field
12757	NodeGroupCount *int64 `type:"integer" required:"true"`
12758
12759	// Describes the replication group IDs, the AWS regions where they are stored
12760	// and the shard configuration for each that comprise the Global Datastore
12761	RegionalConfigurations []*RegionalConfiguration `locationNameList:"RegionalConfiguration" type:"list"`
12762}
12763
12764// String returns the string representation
12765func (s IncreaseNodeGroupsInGlobalReplicationGroupInput) String() string {
12766	return awsutil.Prettify(s)
12767}
12768
12769// GoString returns the string representation
12770func (s IncreaseNodeGroupsInGlobalReplicationGroupInput) GoString() string {
12771	return s.String()
12772}
12773
12774// Validate inspects the fields of the type to determine if they are valid.
12775func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) Validate() error {
12776	invalidParams := request.ErrInvalidParams{Context: "IncreaseNodeGroupsInGlobalReplicationGroupInput"}
12777	if s.ApplyImmediately == nil {
12778		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
12779	}
12780	if s.GlobalReplicationGroupId == nil {
12781		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
12782	}
12783	if s.NodeGroupCount == nil {
12784		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
12785	}
12786	if s.RegionalConfigurations != nil {
12787		for i, v := range s.RegionalConfigurations {
12788			if v == nil {
12789				continue
12790			}
12791			if err := v.Validate(); err != nil {
12792				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RegionalConfigurations", i), err.(request.ErrInvalidParams))
12793			}
12794		}
12795	}
12796
12797	if invalidParams.Len() > 0 {
12798		return invalidParams
12799	}
12800	return nil
12801}
12802
12803// SetApplyImmediately sets the ApplyImmediately field's value.
12804func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetApplyImmediately(v bool) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
12805	s.ApplyImmediately = &v
12806	return s
12807}
12808
12809// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
12810func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
12811	s.GlobalReplicationGroupId = &v
12812	return s
12813}
12814
12815// SetNodeGroupCount sets the NodeGroupCount field's value.
12816func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetNodeGroupCount(v int64) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
12817	s.NodeGroupCount = &v
12818	return s
12819}
12820
12821// SetRegionalConfigurations sets the RegionalConfigurations field's value.
12822func (s *IncreaseNodeGroupsInGlobalReplicationGroupInput) SetRegionalConfigurations(v []*RegionalConfiguration) *IncreaseNodeGroupsInGlobalReplicationGroupInput {
12823	s.RegionalConfigurations = v
12824	return s
12825}
12826
12827type IncreaseNodeGroupsInGlobalReplicationGroupOutput struct {
12828	_ struct{} `type:"structure"`
12829
12830	// Consists of a primary cluster that accepts writes and an associated secondary
12831	// cluster that resides in a different AWS region. The secondary cluster accepts
12832	// only reads. The primary cluster automatically replicates updates to the secondary
12833	// cluster.
12834	//
12835	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
12836	//    Datastore, which is what you use to associate a secondary cluster.
12837	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
12838}
12839
12840// String returns the string representation
12841func (s IncreaseNodeGroupsInGlobalReplicationGroupOutput) String() string {
12842	return awsutil.Prettify(s)
12843}
12844
12845// GoString returns the string representation
12846func (s IncreaseNodeGroupsInGlobalReplicationGroupOutput) GoString() string {
12847	return s.String()
12848}
12849
12850// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
12851func (s *IncreaseNodeGroupsInGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *IncreaseNodeGroupsInGlobalReplicationGroupOutput {
12852	s.GlobalReplicationGroup = v
12853	return s
12854}
12855
12856type IncreaseReplicaCountInput struct {
12857	_ struct{} `type:"structure"`
12858
12859	// If True, the number of replica nodes is increased immediately. ApplyImmediately=False
12860	// is not currently supported.
12861	//
12862	// ApplyImmediately is a required field
12863	ApplyImmediately *bool `type:"boolean" required:"true"`
12864
12865	// The number of read replica nodes you want at the completion of this operation.
12866	// For Redis (cluster mode disabled) replication groups, this is the number
12867	// of replica nodes in the replication group. For Redis (cluster mode enabled)
12868	// replication groups, this is the number of replica nodes in each of the replication
12869	// group's node groups.
12870	NewReplicaCount *int64 `type:"integer"`
12871
12872	// A list of ConfigureShard objects that can be used to configure each shard
12873	// in a Redis (cluster mode enabled) replication group. The ConfigureShard has
12874	// three members: NewReplicaCount, NodeGroupId, and PreferredAvailabilityZones.
12875	ReplicaConfiguration []*ConfigureShard `locationNameList:"ConfigureShard" type:"list"`
12876
12877	// The id of the replication group to which you want to add replica nodes.
12878	//
12879	// ReplicationGroupId is a required field
12880	ReplicationGroupId *string `type:"string" required:"true"`
12881}
12882
12883// String returns the string representation
12884func (s IncreaseReplicaCountInput) String() string {
12885	return awsutil.Prettify(s)
12886}
12887
12888// GoString returns the string representation
12889func (s IncreaseReplicaCountInput) GoString() string {
12890	return s.String()
12891}
12892
12893// Validate inspects the fields of the type to determine if they are valid.
12894func (s *IncreaseReplicaCountInput) Validate() error {
12895	invalidParams := request.ErrInvalidParams{Context: "IncreaseReplicaCountInput"}
12896	if s.ApplyImmediately == nil {
12897		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
12898	}
12899	if s.ReplicationGroupId == nil {
12900		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
12901	}
12902	if s.ReplicaConfiguration != nil {
12903		for i, v := range s.ReplicaConfiguration {
12904			if v == nil {
12905				continue
12906			}
12907			if err := v.Validate(); err != nil {
12908				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReplicaConfiguration", i), err.(request.ErrInvalidParams))
12909			}
12910		}
12911	}
12912
12913	if invalidParams.Len() > 0 {
12914		return invalidParams
12915	}
12916	return nil
12917}
12918
12919// SetApplyImmediately sets the ApplyImmediately field's value.
12920func (s *IncreaseReplicaCountInput) SetApplyImmediately(v bool) *IncreaseReplicaCountInput {
12921	s.ApplyImmediately = &v
12922	return s
12923}
12924
12925// SetNewReplicaCount sets the NewReplicaCount field's value.
12926func (s *IncreaseReplicaCountInput) SetNewReplicaCount(v int64) *IncreaseReplicaCountInput {
12927	s.NewReplicaCount = &v
12928	return s
12929}
12930
12931// SetReplicaConfiguration sets the ReplicaConfiguration field's value.
12932func (s *IncreaseReplicaCountInput) SetReplicaConfiguration(v []*ConfigureShard) *IncreaseReplicaCountInput {
12933	s.ReplicaConfiguration = v
12934	return s
12935}
12936
12937// SetReplicationGroupId sets the ReplicationGroupId field's value.
12938func (s *IncreaseReplicaCountInput) SetReplicationGroupId(v string) *IncreaseReplicaCountInput {
12939	s.ReplicationGroupId = &v
12940	return s
12941}
12942
12943type IncreaseReplicaCountOutput struct {
12944	_ struct{} `type:"structure"`
12945
12946	// Contains all of the attributes of a specific Redis replication group.
12947	ReplicationGroup *ReplicationGroup `type:"structure"`
12948}
12949
12950// String returns the string representation
12951func (s IncreaseReplicaCountOutput) String() string {
12952	return awsutil.Prettify(s)
12953}
12954
12955// GoString returns the string representation
12956func (s IncreaseReplicaCountOutput) GoString() string {
12957	return s.String()
12958}
12959
12960// SetReplicationGroup sets the ReplicationGroup field's value.
12961func (s *IncreaseReplicaCountOutput) SetReplicationGroup(v *ReplicationGroup) *IncreaseReplicaCountOutput {
12962	s.ReplicationGroup = v
12963	return s
12964}
12965
12966// The input parameters for the ListAllowedNodeTypeModifications operation.
12967type ListAllowedNodeTypeModificationsInput struct {
12968	_ struct{} `type:"structure"`
12969
12970	// The name of the cluster you want to scale up to a larger node instanced type.
12971	// ElastiCache uses the cluster id to identify the current node type of this
12972	// cluster and from that to create a list of node types you can scale up to.
12973	//
12974	// You must provide a value for either the CacheClusterId or the ReplicationGroupId.
12975	CacheClusterId *string `type:"string"`
12976
12977	// The name of the replication group want to scale up to a larger node type.
12978	// ElastiCache uses the replication group id to identify the current node type
12979	// being used by this replication group, and from that to create a list of node
12980	// types you can scale up to.
12981	//
12982	// You must provide a value for either the CacheClusterId or the ReplicationGroupId.
12983	ReplicationGroupId *string `type:"string"`
12984}
12985
12986// String returns the string representation
12987func (s ListAllowedNodeTypeModificationsInput) String() string {
12988	return awsutil.Prettify(s)
12989}
12990
12991// GoString returns the string representation
12992func (s ListAllowedNodeTypeModificationsInput) GoString() string {
12993	return s.String()
12994}
12995
12996// SetCacheClusterId sets the CacheClusterId field's value.
12997func (s *ListAllowedNodeTypeModificationsInput) SetCacheClusterId(v string) *ListAllowedNodeTypeModificationsInput {
12998	s.CacheClusterId = &v
12999	return s
13000}
13001
13002// SetReplicationGroupId sets the ReplicationGroupId field's value.
13003func (s *ListAllowedNodeTypeModificationsInput) SetReplicationGroupId(v string) *ListAllowedNodeTypeModificationsInput {
13004	s.ReplicationGroupId = &v
13005	return s
13006}
13007
13008// Represents the allowed node types you can use to modify your cluster or replication
13009// group.
13010type ListAllowedNodeTypeModificationsOutput struct {
13011	_ struct{} `type:"structure"`
13012
13013	// A string list, each element of which specifies a cache node type which you
13014	// can use to scale your cluster or replication group. When scaling down a Redis
13015	// cluster or replication group using ModifyCacheCluster or ModifyReplicationGroup,
13016	// use a value from this list for the CacheNodeType parameter.
13017	ScaleDownModifications []*string `type:"list"`
13018
13019	// A string list, each element of which specifies a cache node type which you
13020	// can use to scale your cluster or replication group.
13021	//
13022	// When scaling up a Redis cluster or replication group using ModifyCacheCluster
13023	// or ModifyReplicationGroup, use a value from this list for the CacheNodeType
13024	// parameter.
13025	ScaleUpModifications []*string `type:"list"`
13026}
13027
13028// String returns the string representation
13029func (s ListAllowedNodeTypeModificationsOutput) String() string {
13030	return awsutil.Prettify(s)
13031}
13032
13033// GoString returns the string representation
13034func (s ListAllowedNodeTypeModificationsOutput) GoString() string {
13035	return s.String()
13036}
13037
13038// SetScaleDownModifications sets the ScaleDownModifications field's value.
13039func (s *ListAllowedNodeTypeModificationsOutput) SetScaleDownModifications(v []*string) *ListAllowedNodeTypeModificationsOutput {
13040	s.ScaleDownModifications = v
13041	return s
13042}
13043
13044// SetScaleUpModifications sets the ScaleUpModifications field's value.
13045func (s *ListAllowedNodeTypeModificationsOutput) SetScaleUpModifications(v []*string) *ListAllowedNodeTypeModificationsOutput {
13046	s.ScaleUpModifications = v
13047	return s
13048}
13049
13050// The input parameters for the ListTagsForResource operation.
13051type ListTagsForResourceInput struct {
13052	_ struct{} `type:"structure"`
13053
13054	// The Amazon Resource Name (ARN) of the resource for which you want the list
13055	// of tags, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
13056	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.
13057	//
13058	// For more information about ARNs, see Amazon Resource Names (ARNs) and AWS
13059	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
13060	//
13061	// ResourceName is a required field
13062	ResourceName *string `type:"string" required:"true"`
13063}
13064
13065// String returns the string representation
13066func (s ListTagsForResourceInput) String() string {
13067	return awsutil.Prettify(s)
13068}
13069
13070// GoString returns the string representation
13071func (s ListTagsForResourceInput) GoString() string {
13072	return s.String()
13073}
13074
13075// Validate inspects the fields of the type to determine if they are valid.
13076func (s *ListTagsForResourceInput) Validate() error {
13077	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
13078	if s.ResourceName == nil {
13079		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
13080	}
13081
13082	if invalidParams.Len() > 0 {
13083		return invalidParams
13084	}
13085	return nil
13086}
13087
13088// SetResourceName sets the ResourceName field's value.
13089func (s *ListTagsForResourceInput) SetResourceName(v string) *ListTagsForResourceInput {
13090	s.ResourceName = &v
13091	return s
13092}
13093
13094// Represents the input of a ModifyCacheCluster operation.
13095type ModifyCacheClusterInput struct {
13096	_ struct{} `type:"structure"`
13097
13098	// Specifies whether the new nodes in this Memcached cluster are all created
13099	// in a single Availability Zone or created across multiple Availability Zones.
13100	//
13101	// Valid values: single-az | cross-az.
13102	//
13103	// This option is only supported for Memcached clusters.
13104	//
13105	// You cannot specify single-az if the Memcached cluster already has cache nodes
13106	// in different Availability Zones. If cross-az is specified, existing Memcached
13107	// nodes remain in their current Availability Zone.
13108	//
13109	// Only newly created nodes are located in different Availability Zones.
13110	AZMode *string `type:"string" enum:"AZMode"`
13111
13112	// If true, this parameter causes the modifications in this request and any
13113	// pending modifications to be applied, asynchronously and as soon as possible,
13114	// regardless of the PreferredMaintenanceWindow setting for the cluster.
13115	//
13116	// If false, changes to the cluster are applied on the next maintenance reboot,
13117	// or the next failure reboot, whichever occurs first.
13118	//
13119	// If you perform a ModifyCacheCluster before a pending modification is applied,
13120	// the pending modification is replaced by the newer modification.
13121	//
13122	// Valid values: true | false
13123	//
13124	// Default: false
13125	ApplyImmediately *bool `type:"boolean"`
13126
13127	// Reserved parameter. The password used to access a password protected server.
13128	// This parameter must be specified with the auth-token-update parameter. Password
13129	// constraints:
13130	//
13131	//    * Must be only printable ASCII characters
13132	//
13133	//    * Must be at least 16 characters and no more than 128 characters in length
13134	//
13135	//    * Cannot contain any of the following characters: '/', '"', or '@', '%'
13136	//
13137	// For more information, see AUTH password at AUTH (http://redis.io/commands/AUTH).
13138	AuthToken *string `type:"string"`
13139
13140	// Specifies the strategy to use to update the AUTH token. This parameter must
13141	// be specified with the auth-token parameter. Possible values:
13142	//
13143	//    * Rotate
13144	//
13145	//    * Set
13146	//
13147	// For more information, see Authenticating Users with Redis AUTH (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html)
13148	AuthTokenUpdateStrategy *string `type:"string" enum:"AuthTokenUpdateStrategyType"`
13149
13150	// This parameter is currently disabled.
13151	AutoMinorVersionUpgrade *bool `type:"boolean"`
13152
13153	// The cluster identifier. This value is stored as a lowercase string.
13154	//
13155	// CacheClusterId is a required field
13156	CacheClusterId *string `type:"string" required:"true"`
13157
13158	// A list of cache node IDs to be removed. A node ID is a numeric identifier
13159	// (0001, 0002, etc.). This parameter is only valid when NumCacheNodes is less
13160	// than the existing number of cache nodes. The number of cache node IDs supplied
13161	// in this parameter must match the difference between the existing number of
13162	// cache nodes in the cluster or pending cache nodes, whichever is greater,
13163	// and the value of NumCacheNodes in the request.
13164	//
13165	// For example: If you have 3 active cache nodes, 7 pending cache nodes, and
13166	// the number of cache nodes in this ModifyCacheCluster call is 5, you must
13167	// list 2 (7 - 5) cache node IDs to remove.
13168	CacheNodeIdsToRemove []*string `locationNameList:"CacheNodeId" type:"list"`
13169
13170	// A valid cache node type that you want to scale this cluster up to.
13171	CacheNodeType *string `type:"string"`
13172
13173	// The name of the cache parameter group to apply to this cluster. This change
13174	// is asynchronously applied as soon as possible for parameters when the ApplyImmediately
13175	// parameter is specified as true for this request.
13176	CacheParameterGroupName *string `type:"string"`
13177
13178	// A list of cache security group names to authorize on this cluster. This change
13179	// is asynchronously applied as soon as possible.
13180	//
13181	// You can use this parameter only with clusters that are created outside of
13182	// an Amazon Virtual Private Cloud (Amazon VPC).
13183	//
13184	// Constraints: Must contain no more than 255 alphanumeric characters. Must
13185	// not be "Default".
13186	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
13187
13188	// The upgraded version of the cache engine to be run on the cache nodes.
13189	//
13190	// Important: You can upgrade to a newer engine version (see Selecting a Cache
13191	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
13192	// but you cannot downgrade to an earlier engine version. If you want to use
13193	// an earlier engine version, you must delete the existing cluster and create
13194	// it anew with the earlier engine version.
13195	EngineVersion *string `type:"string"`
13196
13197	// The list of Availability Zones where the new Memcached cache nodes are created.
13198	//
13199	// This parameter is only valid when NumCacheNodes in the request is greater
13200	// than the sum of the number of active cache nodes and the number of cache
13201	// nodes pending creation (which may be zero). The number of Availability Zones
13202	// supplied in this list must match the cache nodes being added in this request.
13203	//
13204	// This option is only supported on Memcached clusters.
13205	//
13206	// Scenarios:
13207	//
13208	//    * Scenario 1: You have 3 active nodes and wish to add 2 nodes. Specify
13209	//    NumCacheNodes=5 (3 + 2) and optionally specify two Availability Zones
13210	//    for the two new nodes.
13211	//
13212	//    * Scenario 2: You have 3 active nodes and 2 nodes pending creation (from
13213	//    the scenario 1 call) and want to add 1 more node. Specify NumCacheNodes=6
13214	//    ((3 + 2) + 1) and optionally specify an Availability Zone for the new
13215	//    node.
13216	//
13217	//    * Scenario 3: You want to cancel all pending operations. Specify NumCacheNodes=3
13218	//    to cancel all pending operations.
13219	//
13220	// The Availability Zone placement of nodes pending creation cannot be modified.
13221	// If you wish to cancel any nodes pending creation, add 0 nodes by setting
13222	// NumCacheNodes to the number of current nodes.
13223	//
13224	// If cross-az is specified, existing Memcached nodes remain in their current
13225	// Availability Zone. Only newly created nodes can be located in different Availability
13226	// Zones. For guidance on how to move existing Memcached nodes to different
13227	// Availability Zones, see the Availability Zone Considerations section of Cache
13228	// Node Considerations for Memcached (https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/CacheNodes.SupportedTypes.html).
13229	//
13230	// Impact of new add/remove requests upon pending requests
13231	//
13232	//    * Scenario-1 Pending Action: Delete New Request: Delete Result: The new
13233	//    delete, pending or immediate, replaces the pending delete.
13234	//
13235	//    * Scenario-2 Pending Action: Delete New Request: Create Result: The new
13236	//    create, pending or immediate, replaces the pending delete.
13237	//
13238	//    * Scenario-3 Pending Action: Create New Request: Delete Result: The new
13239	//    delete, pending or immediate, replaces the pending create.
13240	//
13241	//    * Scenario-4 Pending Action: Create New Request: Create Result: The new
13242	//    create is added to the pending create. Important: If the new create request
13243	//    is Apply Immediately - Yes, all creates are performed immediately. If
13244	//    the new create request is Apply Immediately - No, all creates are pending.
13245	NewAvailabilityZones []*string `locationNameList:"PreferredAvailabilityZone" type:"list"`
13246
13247	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
13248	// are sent.
13249	//
13250	// The Amazon SNS topic owner must be same as the cluster owner.
13251	NotificationTopicArn *string `type:"string"`
13252
13253	// The status of the Amazon SNS notification topic. Notifications are sent only
13254	// if the status is active.
13255	//
13256	// Valid values: active | inactive
13257	NotificationTopicStatus *string `type:"string"`
13258
13259	// The number of cache nodes that the cluster should have. If the value for
13260	// NumCacheNodes is greater than the sum of the number of current cache nodes
13261	// and the number of cache nodes pending creation (which may be zero), more
13262	// nodes are added. If the value is less than the number of existing cache nodes,
13263	// nodes are removed. If the value is equal to the number of current cache nodes,
13264	// any pending add or remove requests are canceled.
13265	//
13266	// If you are removing cache nodes, you must use the CacheNodeIdsToRemove parameter
13267	// to provide the IDs of the specific cache nodes to remove.
13268	//
13269	// For clusters running Redis, this value must be 1. For clusters running Memcached,
13270	// this value must be between 1 and 20.
13271	//
13272	// Adding or removing Memcached cache nodes can be applied immediately or as
13273	// a pending operation (see ApplyImmediately).
13274	//
13275	// A pending operation to modify the number of cache nodes in a cluster during
13276	// its maintenance window, whether by adding or removing nodes in accordance
13277	// with the scale out architecture, is not queued. The customer's latest request
13278	// to add or remove nodes to the cluster overrides any previous pending operations
13279	// to modify the number of cache nodes in the cluster. For example, a request
13280	// to remove 2 nodes would override a previous pending operation to remove 3
13281	// nodes. Similarly, a request to add 2 nodes would override a previous pending
13282	// operation to remove 3 nodes and vice versa. As Memcached cache nodes may
13283	// now be provisioned in different Availability Zones with flexible cache node
13284	// placement, a request to add nodes does not automatically override a previous
13285	// pending operation to add nodes. The customer can modify the previous pending
13286	// operation to add more nodes or explicitly cancel the pending request and
13287	// retry the new request. To cancel pending operations to modify the number
13288	// of cache nodes in a cluster, use the ModifyCacheCluster request and set NumCacheNodes
13289	// equal to the number of cache nodes currently in the cluster.
13290	NumCacheNodes *int64 `type:"integer"`
13291
13292	// Specifies the weekly time range during which maintenance on the cluster is
13293	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
13294	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
13295	//
13296	// Valid values for ddd are:
13297	//
13298	//    * sun
13299	//
13300	//    * mon
13301	//
13302	//    * tue
13303	//
13304	//    * wed
13305	//
13306	//    * thu
13307	//
13308	//    * fri
13309	//
13310	//    * sat
13311	//
13312	// Example: sun:23:00-mon:01:30
13313	PreferredMaintenanceWindow *string `type:"string"`
13314
13315	// Specifies the VPC Security Groups associated with the cluster.
13316	//
13317	// This parameter can be used only with clusters that are created in an Amazon
13318	// Virtual Private Cloud (Amazon VPC).
13319	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
13320
13321	// The number of days for which ElastiCache retains automatic cluster snapshots
13322	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
13323	// a snapshot that was taken today is retained for 5 days before being deleted.
13324	//
13325	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
13326	// off.
13327	SnapshotRetentionLimit *int64 `type:"integer"`
13328
13329	// The daily time range (in UTC) during which ElastiCache begins taking a daily
13330	// snapshot of your cluster.
13331	SnapshotWindow *string `type:"string"`
13332}
13333
13334// String returns the string representation
13335func (s ModifyCacheClusterInput) String() string {
13336	return awsutil.Prettify(s)
13337}
13338
13339// GoString returns the string representation
13340func (s ModifyCacheClusterInput) GoString() string {
13341	return s.String()
13342}
13343
13344// Validate inspects the fields of the type to determine if they are valid.
13345func (s *ModifyCacheClusterInput) Validate() error {
13346	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheClusterInput"}
13347	if s.CacheClusterId == nil {
13348		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
13349	}
13350
13351	if invalidParams.Len() > 0 {
13352		return invalidParams
13353	}
13354	return nil
13355}
13356
13357// SetAZMode sets the AZMode field's value.
13358func (s *ModifyCacheClusterInput) SetAZMode(v string) *ModifyCacheClusterInput {
13359	s.AZMode = &v
13360	return s
13361}
13362
13363// SetApplyImmediately sets the ApplyImmediately field's value.
13364func (s *ModifyCacheClusterInput) SetApplyImmediately(v bool) *ModifyCacheClusterInput {
13365	s.ApplyImmediately = &v
13366	return s
13367}
13368
13369// SetAuthToken sets the AuthToken field's value.
13370func (s *ModifyCacheClusterInput) SetAuthToken(v string) *ModifyCacheClusterInput {
13371	s.AuthToken = &v
13372	return s
13373}
13374
13375// SetAuthTokenUpdateStrategy sets the AuthTokenUpdateStrategy field's value.
13376func (s *ModifyCacheClusterInput) SetAuthTokenUpdateStrategy(v string) *ModifyCacheClusterInput {
13377	s.AuthTokenUpdateStrategy = &v
13378	return s
13379}
13380
13381// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
13382func (s *ModifyCacheClusterInput) SetAutoMinorVersionUpgrade(v bool) *ModifyCacheClusterInput {
13383	s.AutoMinorVersionUpgrade = &v
13384	return s
13385}
13386
13387// SetCacheClusterId sets the CacheClusterId field's value.
13388func (s *ModifyCacheClusterInput) SetCacheClusterId(v string) *ModifyCacheClusterInput {
13389	s.CacheClusterId = &v
13390	return s
13391}
13392
13393// SetCacheNodeIdsToRemove sets the CacheNodeIdsToRemove field's value.
13394func (s *ModifyCacheClusterInput) SetCacheNodeIdsToRemove(v []*string) *ModifyCacheClusterInput {
13395	s.CacheNodeIdsToRemove = v
13396	return s
13397}
13398
13399// SetCacheNodeType sets the CacheNodeType field's value.
13400func (s *ModifyCacheClusterInput) SetCacheNodeType(v string) *ModifyCacheClusterInput {
13401	s.CacheNodeType = &v
13402	return s
13403}
13404
13405// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
13406func (s *ModifyCacheClusterInput) SetCacheParameterGroupName(v string) *ModifyCacheClusterInput {
13407	s.CacheParameterGroupName = &v
13408	return s
13409}
13410
13411// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
13412func (s *ModifyCacheClusterInput) SetCacheSecurityGroupNames(v []*string) *ModifyCacheClusterInput {
13413	s.CacheSecurityGroupNames = v
13414	return s
13415}
13416
13417// SetEngineVersion sets the EngineVersion field's value.
13418func (s *ModifyCacheClusterInput) SetEngineVersion(v string) *ModifyCacheClusterInput {
13419	s.EngineVersion = &v
13420	return s
13421}
13422
13423// SetNewAvailabilityZones sets the NewAvailabilityZones field's value.
13424func (s *ModifyCacheClusterInput) SetNewAvailabilityZones(v []*string) *ModifyCacheClusterInput {
13425	s.NewAvailabilityZones = v
13426	return s
13427}
13428
13429// SetNotificationTopicArn sets the NotificationTopicArn field's value.
13430func (s *ModifyCacheClusterInput) SetNotificationTopicArn(v string) *ModifyCacheClusterInput {
13431	s.NotificationTopicArn = &v
13432	return s
13433}
13434
13435// SetNotificationTopicStatus sets the NotificationTopicStatus field's value.
13436func (s *ModifyCacheClusterInput) SetNotificationTopicStatus(v string) *ModifyCacheClusterInput {
13437	s.NotificationTopicStatus = &v
13438	return s
13439}
13440
13441// SetNumCacheNodes sets the NumCacheNodes field's value.
13442func (s *ModifyCacheClusterInput) SetNumCacheNodes(v int64) *ModifyCacheClusterInput {
13443	s.NumCacheNodes = &v
13444	return s
13445}
13446
13447// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
13448func (s *ModifyCacheClusterInput) SetPreferredMaintenanceWindow(v string) *ModifyCacheClusterInput {
13449	s.PreferredMaintenanceWindow = &v
13450	return s
13451}
13452
13453// SetSecurityGroupIds sets the SecurityGroupIds field's value.
13454func (s *ModifyCacheClusterInput) SetSecurityGroupIds(v []*string) *ModifyCacheClusterInput {
13455	s.SecurityGroupIds = v
13456	return s
13457}
13458
13459// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
13460func (s *ModifyCacheClusterInput) SetSnapshotRetentionLimit(v int64) *ModifyCacheClusterInput {
13461	s.SnapshotRetentionLimit = &v
13462	return s
13463}
13464
13465// SetSnapshotWindow sets the SnapshotWindow field's value.
13466func (s *ModifyCacheClusterInput) SetSnapshotWindow(v string) *ModifyCacheClusterInput {
13467	s.SnapshotWindow = &v
13468	return s
13469}
13470
13471type ModifyCacheClusterOutput struct {
13472	_ struct{} `type:"structure"`
13473
13474	// Contains all of the attributes of a specific cluster.
13475	CacheCluster *CacheCluster `type:"structure"`
13476}
13477
13478// String returns the string representation
13479func (s ModifyCacheClusterOutput) String() string {
13480	return awsutil.Prettify(s)
13481}
13482
13483// GoString returns the string representation
13484func (s ModifyCacheClusterOutput) GoString() string {
13485	return s.String()
13486}
13487
13488// SetCacheCluster sets the CacheCluster field's value.
13489func (s *ModifyCacheClusterOutput) SetCacheCluster(v *CacheCluster) *ModifyCacheClusterOutput {
13490	s.CacheCluster = v
13491	return s
13492}
13493
13494// Represents the input of a ModifyCacheParameterGroup operation.
13495type ModifyCacheParameterGroupInput struct {
13496	_ struct{} `type:"structure"`
13497
13498	// The name of the cache parameter group to modify.
13499	//
13500	// CacheParameterGroupName is a required field
13501	CacheParameterGroupName *string `type:"string" required:"true"`
13502
13503	// An array of parameter names and values for the parameter update. You must
13504	// supply at least one parameter name and value; subsequent arguments are optional.
13505	// A maximum of 20 parameters may be modified per request.
13506	//
13507	// ParameterNameValues is a required field
13508	ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list" required:"true"`
13509}
13510
13511// String returns the string representation
13512func (s ModifyCacheParameterGroupInput) String() string {
13513	return awsutil.Prettify(s)
13514}
13515
13516// GoString returns the string representation
13517func (s ModifyCacheParameterGroupInput) GoString() string {
13518	return s.String()
13519}
13520
13521// Validate inspects the fields of the type to determine if they are valid.
13522func (s *ModifyCacheParameterGroupInput) Validate() error {
13523	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheParameterGroupInput"}
13524	if s.CacheParameterGroupName == nil {
13525		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
13526	}
13527	if s.ParameterNameValues == nil {
13528		invalidParams.Add(request.NewErrParamRequired("ParameterNameValues"))
13529	}
13530
13531	if invalidParams.Len() > 0 {
13532		return invalidParams
13533	}
13534	return nil
13535}
13536
13537// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
13538func (s *ModifyCacheParameterGroupInput) SetCacheParameterGroupName(v string) *ModifyCacheParameterGroupInput {
13539	s.CacheParameterGroupName = &v
13540	return s
13541}
13542
13543// SetParameterNameValues sets the ParameterNameValues field's value.
13544func (s *ModifyCacheParameterGroupInput) SetParameterNameValues(v []*ParameterNameValue) *ModifyCacheParameterGroupInput {
13545	s.ParameterNameValues = v
13546	return s
13547}
13548
13549// Represents the input of a ModifyCacheSubnetGroup operation.
13550type ModifyCacheSubnetGroupInput struct {
13551	_ struct{} `type:"structure"`
13552
13553	// A description of the cache subnet group.
13554	CacheSubnetGroupDescription *string `type:"string"`
13555
13556	// The name for the cache subnet group. This value is stored as a lowercase
13557	// string.
13558	//
13559	// Constraints: Must contain no more than 255 alphanumeric characters or hyphens.
13560	//
13561	// Example: mysubnetgroup
13562	//
13563	// CacheSubnetGroupName is a required field
13564	CacheSubnetGroupName *string `type:"string" required:"true"`
13565
13566	// The EC2 subnet IDs for the cache subnet group.
13567	SubnetIds []*string `locationNameList:"SubnetIdentifier" type:"list"`
13568}
13569
13570// String returns the string representation
13571func (s ModifyCacheSubnetGroupInput) String() string {
13572	return awsutil.Prettify(s)
13573}
13574
13575// GoString returns the string representation
13576func (s ModifyCacheSubnetGroupInput) GoString() string {
13577	return s.String()
13578}
13579
13580// Validate inspects the fields of the type to determine if they are valid.
13581func (s *ModifyCacheSubnetGroupInput) Validate() error {
13582	invalidParams := request.ErrInvalidParams{Context: "ModifyCacheSubnetGroupInput"}
13583	if s.CacheSubnetGroupName == nil {
13584		invalidParams.Add(request.NewErrParamRequired("CacheSubnetGroupName"))
13585	}
13586
13587	if invalidParams.Len() > 0 {
13588		return invalidParams
13589	}
13590	return nil
13591}
13592
13593// SetCacheSubnetGroupDescription sets the CacheSubnetGroupDescription field's value.
13594func (s *ModifyCacheSubnetGroupInput) SetCacheSubnetGroupDescription(v string) *ModifyCacheSubnetGroupInput {
13595	s.CacheSubnetGroupDescription = &v
13596	return s
13597}
13598
13599// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
13600func (s *ModifyCacheSubnetGroupInput) SetCacheSubnetGroupName(v string) *ModifyCacheSubnetGroupInput {
13601	s.CacheSubnetGroupName = &v
13602	return s
13603}
13604
13605// SetSubnetIds sets the SubnetIds field's value.
13606func (s *ModifyCacheSubnetGroupInput) SetSubnetIds(v []*string) *ModifyCacheSubnetGroupInput {
13607	s.SubnetIds = v
13608	return s
13609}
13610
13611type ModifyCacheSubnetGroupOutput struct {
13612	_ struct{} `type:"structure"`
13613
13614	// Represents the output of one of the following operations:
13615	//
13616	//    * CreateCacheSubnetGroup
13617	//
13618	//    * ModifyCacheSubnetGroup
13619	CacheSubnetGroup *CacheSubnetGroup `type:"structure"`
13620}
13621
13622// String returns the string representation
13623func (s ModifyCacheSubnetGroupOutput) String() string {
13624	return awsutil.Prettify(s)
13625}
13626
13627// GoString returns the string representation
13628func (s ModifyCacheSubnetGroupOutput) GoString() string {
13629	return s.String()
13630}
13631
13632// SetCacheSubnetGroup sets the CacheSubnetGroup field's value.
13633func (s *ModifyCacheSubnetGroupOutput) SetCacheSubnetGroup(v *CacheSubnetGroup) *ModifyCacheSubnetGroupOutput {
13634	s.CacheSubnetGroup = v
13635	return s
13636}
13637
13638type ModifyGlobalReplicationGroupInput struct {
13639	_ struct{} `type:"structure"`
13640
13641	// This parameter causes the modifications in this request and any pending modifications
13642	// to be applied, asynchronously and as soon as possible. Modifications to Global
13643	// Replication Groups cannot be requested to be applied in PreferredMaintenceWindow.
13644	//
13645	// ApplyImmediately is a required field
13646	ApplyImmediately *bool `type:"boolean" required:"true"`
13647
13648	// Determines whether a read replica is automatically promoted to read/write
13649	// primary if the existing primary encounters a failure.
13650	AutomaticFailoverEnabled *bool `type:"boolean"`
13651
13652	// A valid cache node type that you want to scale this Global Datastore to.
13653	CacheNodeType *string `type:"string"`
13654
13655	// The upgraded version of the cache engine to be run on the clusters in the
13656	// Global Datastore.
13657	EngineVersion *string `type:"string"`
13658
13659	// A description of the Global Datastore
13660	GlobalReplicationGroupDescription *string `type:"string"`
13661
13662	// The name of the Global Datastore
13663	//
13664	// GlobalReplicationGroupId is a required field
13665	GlobalReplicationGroupId *string `type:"string" required:"true"`
13666}
13667
13668// String returns the string representation
13669func (s ModifyGlobalReplicationGroupInput) String() string {
13670	return awsutil.Prettify(s)
13671}
13672
13673// GoString returns the string representation
13674func (s ModifyGlobalReplicationGroupInput) GoString() string {
13675	return s.String()
13676}
13677
13678// Validate inspects the fields of the type to determine if they are valid.
13679func (s *ModifyGlobalReplicationGroupInput) Validate() error {
13680	invalidParams := request.ErrInvalidParams{Context: "ModifyGlobalReplicationGroupInput"}
13681	if s.ApplyImmediately == nil {
13682		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
13683	}
13684	if s.GlobalReplicationGroupId == nil {
13685		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
13686	}
13687
13688	if invalidParams.Len() > 0 {
13689		return invalidParams
13690	}
13691	return nil
13692}
13693
13694// SetApplyImmediately sets the ApplyImmediately field's value.
13695func (s *ModifyGlobalReplicationGroupInput) SetApplyImmediately(v bool) *ModifyGlobalReplicationGroupInput {
13696	s.ApplyImmediately = &v
13697	return s
13698}
13699
13700// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
13701func (s *ModifyGlobalReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *ModifyGlobalReplicationGroupInput {
13702	s.AutomaticFailoverEnabled = &v
13703	return s
13704}
13705
13706// SetCacheNodeType sets the CacheNodeType field's value.
13707func (s *ModifyGlobalReplicationGroupInput) SetCacheNodeType(v string) *ModifyGlobalReplicationGroupInput {
13708	s.CacheNodeType = &v
13709	return s
13710}
13711
13712// SetEngineVersion sets the EngineVersion field's value.
13713func (s *ModifyGlobalReplicationGroupInput) SetEngineVersion(v string) *ModifyGlobalReplicationGroupInput {
13714	s.EngineVersion = &v
13715	return s
13716}
13717
13718// SetGlobalReplicationGroupDescription sets the GlobalReplicationGroupDescription field's value.
13719func (s *ModifyGlobalReplicationGroupInput) SetGlobalReplicationGroupDescription(v string) *ModifyGlobalReplicationGroupInput {
13720	s.GlobalReplicationGroupDescription = &v
13721	return s
13722}
13723
13724// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
13725func (s *ModifyGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *ModifyGlobalReplicationGroupInput {
13726	s.GlobalReplicationGroupId = &v
13727	return s
13728}
13729
13730type ModifyGlobalReplicationGroupOutput struct {
13731	_ struct{} `type:"structure"`
13732
13733	// Consists of a primary cluster that accepts writes and an associated secondary
13734	// cluster that resides in a different AWS region. The secondary cluster accepts
13735	// only reads. The primary cluster automatically replicates updates to the secondary
13736	// cluster.
13737	//
13738	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
13739	//    Datastore, which is what you use to associate a secondary cluster.
13740	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
13741}
13742
13743// String returns the string representation
13744func (s ModifyGlobalReplicationGroupOutput) String() string {
13745	return awsutil.Prettify(s)
13746}
13747
13748// GoString returns the string representation
13749func (s ModifyGlobalReplicationGroupOutput) GoString() string {
13750	return s.String()
13751}
13752
13753// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
13754func (s *ModifyGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *ModifyGlobalReplicationGroupOutput {
13755	s.GlobalReplicationGroup = v
13756	return s
13757}
13758
13759// Represents the input of a ModifyReplicationGroups operation.
13760type ModifyReplicationGroupInput struct {
13761	_ struct{} `type:"structure"`
13762
13763	// If true, this parameter causes the modifications in this request and any
13764	// pending modifications to be applied, asynchronously and as soon as possible,
13765	// regardless of the PreferredMaintenanceWindow setting for the replication
13766	// group.
13767	//
13768	// If false, changes to the nodes in the replication group are applied on the
13769	// next maintenance reboot, or the next failure reboot, whichever occurs first.
13770	//
13771	// Valid values: true | false
13772	//
13773	// Default: false
13774	ApplyImmediately *bool `type:"boolean"`
13775
13776	// Reserved parameter. The password used to access a password protected server.
13777	// This parameter must be specified with the auth-token-update-strategy parameter.
13778	// Password constraints:
13779	//
13780	//    * Must be only printable ASCII characters
13781	//
13782	//    * Must be at least 16 characters and no more than 128 characters in length
13783	//
13784	//    * Cannot contain any of the following characters: '/', '"', or '@', '%'
13785	//
13786	// For more information, see AUTH password at AUTH (http://redis.io/commands/AUTH).
13787	AuthToken *string `type:"string"`
13788
13789	// Specifies the strategy to use to update the AUTH token. This parameter must
13790	// be specified with the auth-token parameter. Possible values:
13791	//
13792	//    * Rotate
13793	//
13794	//    * Set
13795	//
13796	// For more information, see Authenticating Users with Redis AUTH (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/auth.html)
13797	AuthTokenUpdateStrategy *string `type:"string" enum:"AuthTokenUpdateStrategyType"`
13798
13799	// This parameter is currently disabled.
13800	AutoMinorVersionUpgrade *bool `type:"boolean"`
13801
13802	// Determines whether a read replica is automatically promoted to read/write
13803	// primary if the existing primary encounters a failure.
13804	//
13805	// Valid values: true | false
13806	AutomaticFailoverEnabled *bool `type:"boolean"`
13807
13808	// A valid cache node type that you want to scale this replication group to.
13809	CacheNodeType *string `type:"string"`
13810
13811	// The name of the cache parameter group to apply to all of the clusters in
13812	// this replication group. This change is asynchronously applied as soon as
13813	// possible for parameters when the ApplyImmediately parameter is specified
13814	// as true for this request.
13815	CacheParameterGroupName *string `type:"string"`
13816
13817	// A list of cache security group names to authorize for the clusters in this
13818	// replication group. This change is asynchronously applied as soon as possible.
13819	//
13820	// This parameter can be used only with replication group containing clusters
13821	// running outside of an Amazon Virtual Private Cloud (Amazon VPC).
13822	//
13823	// Constraints: Must contain no more than 255 alphanumeric characters. Must
13824	// not be Default.
13825	CacheSecurityGroupNames []*string `locationNameList:"CacheSecurityGroupName" type:"list"`
13826
13827	// The upgraded version of the cache engine to be run on the clusters in the
13828	// replication group.
13829	//
13830	// Important: You can upgrade to a newer engine version (see Selecting a Cache
13831	// Engine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/SelectEngine.html#VersionManagement)),
13832	// but you cannot downgrade to an earlier engine version. If you want to use
13833	// an earlier engine version, you must delete the existing replication group
13834	// and create it anew with the earlier engine version.
13835	EngineVersion *string `type:"string"`
13836
13837	// A flag indicating if you have Multi-AZ enabled to enhance fault tolerance.
13838	// For more information, see Minimizing Downtime: Multi-AZ (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html).
13839	MultiAZEnabled *bool `type:"boolean"`
13840
13841	// Deprecated. This parameter is not used.
13842	//
13843	// Deprecated: NodeGroupId has been deprecated
13844	NodeGroupId *string `deprecated:"true" type:"string"`
13845
13846	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which notifications
13847	// are sent.
13848	//
13849	// The Amazon SNS topic owner must be same as the replication group owner.
13850	NotificationTopicArn *string `type:"string"`
13851
13852	// The status of the Amazon SNS notification topic for the replication group.
13853	// Notifications are sent only if the status is active.
13854	//
13855	// Valid values: active | inactive
13856	NotificationTopicStatus *string `type:"string"`
13857
13858	// Specifies the weekly time range during which maintenance on the cluster is
13859	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
13860	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
13861	//
13862	// Valid values for ddd are:
13863	//
13864	//    * sun
13865	//
13866	//    * mon
13867	//
13868	//    * tue
13869	//
13870	//    * wed
13871	//
13872	//    * thu
13873	//
13874	//    * fri
13875	//
13876	//    * sat
13877	//
13878	// Example: sun:23:00-mon:01:30
13879	PreferredMaintenanceWindow *string `type:"string"`
13880
13881	// For replication groups with a single primary, if this parameter is specified,
13882	// ElastiCache promotes the specified cluster in the specified replication group
13883	// to the primary role. The nodes of all other clusters in the replication group
13884	// are read replicas.
13885	PrimaryClusterId *string `type:"string"`
13886
13887	// A description for the replication group. Maximum length is 255 characters.
13888	ReplicationGroupDescription *string `type:"string"`
13889
13890	// The identifier of the replication group to modify.
13891	//
13892	// ReplicationGroupId is a required field
13893	ReplicationGroupId *string `type:"string" required:"true"`
13894
13895	// Specifies the VPC Security Groups associated with the clusters in the replication
13896	// group.
13897	//
13898	// This parameter can be used only with replication group containing clusters
13899	// running in an Amazon Virtual Private Cloud (Amazon VPC).
13900	SecurityGroupIds []*string `locationNameList:"SecurityGroupId" type:"list"`
13901
13902	// The number of days for which ElastiCache retains automatic node group (shard)
13903	// snapshots before deleting them. For example, if you set SnapshotRetentionLimit
13904	// to 5, a snapshot that was taken today is retained for 5 days before being
13905	// deleted.
13906	//
13907	// Important If the value of SnapshotRetentionLimit is set to zero (0), backups
13908	// are turned off.
13909	SnapshotRetentionLimit *int64 `type:"integer"`
13910
13911	// The daily time range (in UTC) during which ElastiCache begins taking a daily
13912	// snapshot of the node group (shard) specified by SnapshottingClusterId.
13913	//
13914	// Example: 05:00-09:00
13915	//
13916	// If you do not specify this parameter, ElastiCache automatically chooses an
13917	// appropriate time range.
13918	SnapshotWindow *string `type:"string"`
13919
13920	// The cluster ID that is used as the daily snapshot source for the replication
13921	// group. This parameter cannot be set for Redis (cluster mode enabled) replication
13922	// groups.
13923	SnapshottingClusterId *string `type:"string"`
13924}
13925
13926// String returns the string representation
13927func (s ModifyReplicationGroupInput) String() string {
13928	return awsutil.Prettify(s)
13929}
13930
13931// GoString returns the string representation
13932func (s ModifyReplicationGroupInput) GoString() string {
13933	return s.String()
13934}
13935
13936// Validate inspects the fields of the type to determine if they are valid.
13937func (s *ModifyReplicationGroupInput) Validate() error {
13938	invalidParams := request.ErrInvalidParams{Context: "ModifyReplicationGroupInput"}
13939	if s.ReplicationGroupId == nil {
13940		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
13941	}
13942
13943	if invalidParams.Len() > 0 {
13944		return invalidParams
13945	}
13946	return nil
13947}
13948
13949// SetApplyImmediately sets the ApplyImmediately field's value.
13950func (s *ModifyReplicationGroupInput) SetApplyImmediately(v bool) *ModifyReplicationGroupInput {
13951	s.ApplyImmediately = &v
13952	return s
13953}
13954
13955// SetAuthToken sets the AuthToken field's value.
13956func (s *ModifyReplicationGroupInput) SetAuthToken(v string) *ModifyReplicationGroupInput {
13957	s.AuthToken = &v
13958	return s
13959}
13960
13961// SetAuthTokenUpdateStrategy sets the AuthTokenUpdateStrategy field's value.
13962func (s *ModifyReplicationGroupInput) SetAuthTokenUpdateStrategy(v string) *ModifyReplicationGroupInput {
13963	s.AuthTokenUpdateStrategy = &v
13964	return s
13965}
13966
13967// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
13968func (s *ModifyReplicationGroupInput) SetAutoMinorVersionUpgrade(v bool) *ModifyReplicationGroupInput {
13969	s.AutoMinorVersionUpgrade = &v
13970	return s
13971}
13972
13973// SetAutomaticFailoverEnabled sets the AutomaticFailoverEnabled field's value.
13974func (s *ModifyReplicationGroupInput) SetAutomaticFailoverEnabled(v bool) *ModifyReplicationGroupInput {
13975	s.AutomaticFailoverEnabled = &v
13976	return s
13977}
13978
13979// SetCacheNodeType sets the CacheNodeType field's value.
13980func (s *ModifyReplicationGroupInput) SetCacheNodeType(v string) *ModifyReplicationGroupInput {
13981	s.CacheNodeType = &v
13982	return s
13983}
13984
13985// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
13986func (s *ModifyReplicationGroupInput) SetCacheParameterGroupName(v string) *ModifyReplicationGroupInput {
13987	s.CacheParameterGroupName = &v
13988	return s
13989}
13990
13991// SetCacheSecurityGroupNames sets the CacheSecurityGroupNames field's value.
13992func (s *ModifyReplicationGroupInput) SetCacheSecurityGroupNames(v []*string) *ModifyReplicationGroupInput {
13993	s.CacheSecurityGroupNames = v
13994	return s
13995}
13996
13997// SetEngineVersion sets the EngineVersion field's value.
13998func (s *ModifyReplicationGroupInput) SetEngineVersion(v string) *ModifyReplicationGroupInput {
13999	s.EngineVersion = &v
14000	return s
14001}
14002
14003// SetMultiAZEnabled sets the MultiAZEnabled field's value.
14004func (s *ModifyReplicationGroupInput) SetMultiAZEnabled(v bool) *ModifyReplicationGroupInput {
14005	s.MultiAZEnabled = &v
14006	return s
14007}
14008
14009// SetNodeGroupId sets the NodeGroupId field's value.
14010func (s *ModifyReplicationGroupInput) SetNodeGroupId(v string) *ModifyReplicationGroupInput {
14011	s.NodeGroupId = &v
14012	return s
14013}
14014
14015// SetNotificationTopicArn sets the NotificationTopicArn field's value.
14016func (s *ModifyReplicationGroupInput) SetNotificationTopicArn(v string) *ModifyReplicationGroupInput {
14017	s.NotificationTopicArn = &v
14018	return s
14019}
14020
14021// SetNotificationTopicStatus sets the NotificationTopicStatus field's value.
14022func (s *ModifyReplicationGroupInput) SetNotificationTopicStatus(v string) *ModifyReplicationGroupInput {
14023	s.NotificationTopicStatus = &v
14024	return s
14025}
14026
14027// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
14028func (s *ModifyReplicationGroupInput) SetPreferredMaintenanceWindow(v string) *ModifyReplicationGroupInput {
14029	s.PreferredMaintenanceWindow = &v
14030	return s
14031}
14032
14033// SetPrimaryClusterId sets the PrimaryClusterId field's value.
14034func (s *ModifyReplicationGroupInput) SetPrimaryClusterId(v string) *ModifyReplicationGroupInput {
14035	s.PrimaryClusterId = &v
14036	return s
14037}
14038
14039// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
14040func (s *ModifyReplicationGroupInput) SetReplicationGroupDescription(v string) *ModifyReplicationGroupInput {
14041	s.ReplicationGroupDescription = &v
14042	return s
14043}
14044
14045// SetReplicationGroupId sets the ReplicationGroupId field's value.
14046func (s *ModifyReplicationGroupInput) SetReplicationGroupId(v string) *ModifyReplicationGroupInput {
14047	s.ReplicationGroupId = &v
14048	return s
14049}
14050
14051// SetSecurityGroupIds sets the SecurityGroupIds field's value.
14052func (s *ModifyReplicationGroupInput) SetSecurityGroupIds(v []*string) *ModifyReplicationGroupInput {
14053	s.SecurityGroupIds = v
14054	return s
14055}
14056
14057// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
14058func (s *ModifyReplicationGroupInput) SetSnapshotRetentionLimit(v int64) *ModifyReplicationGroupInput {
14059	s.SnapshotRetentionLimit = &v
14060	return s
14061}
14062
14063// SetSnapshotWindow sets the SnapshotWindow field's value.
14064func (s *ModifyReplicationGroupInput) SetSnapshotWindow(v string) *ModifyReplicationGroupInput {
14065	s.SnapshotWindow = &v
14066	return s
14067}
14068
14069// SetSnapshottingClusterId sets the SnapshottingClusterId field's value.
14070func (s *ModifyReplicationGroupInput) SetSnapshottingClusterId(v string) *ModifyReplicationGroupInput {
14071	s.SnapshottingClusterId = &v
14072	return s
14073}
14074
14075type ModifyReplicationGroupOutput struct {
14076	_ struct{} `type:"structure"`
14077
14078	// Contains all of the attributes of a specific Redis replication group.
14079	ReplicationGroup *ReplicationGroup `type:"structure"`
14080}
14081
14082// String returns the string representation
14083func (s ModifyReplicationGroupOutput) String() string {
14084	return awsutil.Prettify(s)
14085}
14086
14087// GoString returns the string representation
14088func (s ModifyReplicationGroupOutput) GoString() string {
14089	return s.String()
14090}
14091
14092// SetReplicationGroup sets the ReplicationGroup field's value.
14093func (s *ModifyReplicationGroupOutput) SetReplicationGroup(v *ReplicationGroup) *ModifyReplicationGroupOutput {
14094	s.ReplicationGroup = v
14095	return s
14096}
14097
14098// Represents the input for a ModifyReplicationGroupShardConfiguration operation.
14099type ModifyReplicationGroupShardConfigurationInput struct {
14100	_ struct{} `type:"structure"`
14101
14102	// Indicates that the shard reconfiguration process begins immediately. At present,
14103	// the only permitted value for this parameter is true.
14104	//
14105	// Value: true
14106	//
14107	// ApplyImmediately is a required field
14108	ApplyImmediately *bool `type:"boolean" required:"true"`
14109
14110	// The number of node groups (shards) that results from the modification of
14111	// the shard configuration.
14112	//
14113	// NodeGroupCount is a required field
14114	NodeGroupCount *int64 `type:"integer" required:"true"`
14115
14116	// If the value of NodeGroupCount is less than the current number of node groups
14117	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
14118	// NodeGroupsToRemove is a list of NodeGroupIds to remove from the cluster.
14119	//
14120	// ElastiCache for Redis will attempt to remove all node groups listed by NodeGroupsToRemove
14121	// from the cluster.
14122	NodeGroupsToRemove []*string `locationNameList:"NodeGroupToRemove" type:"list"`
14123
14124	// If the value of NodeGroupCount is less than the current number of node groups
14125	// (shards), then either NodeGroupsToRemove or NodeGroupsToRetain is required.
14126	// NodeGroupsToRetain is a list of NodeGroupIds to retain in the cluster.
14127	//
14128	// ElastiCache for Redis will attempt to remove all node groups except those
14129	// listed by NodeGroupsToRetain from the cluster.
14130	NodeGroupsToRetain []*string `locationNameList:"NodeGroupToRetain" type:"list"`
14131
14132	// The name of the Redis (cluster mode enabled) cluster (replication group)
14133	// on which the shards are to be configured.
14134	//
14135	// ReplicationGroupId is a required field
14136	ReplicationGroupId *string `type:"string" required:"true"`
14137
14138	// Specifies the preferred availability zones for each node group in the cluster.
14139	// If the value of NodeGroupCount is greater than the current number of node
14140	// groups (shards), you can use this parameter to specify the preferred availability
14141	// zones of the cluster's shards. If you omit this parameter ElastiCache selects
14142	// availability zones for you.
14143	//
14144	// You can specify this parameter only if the value of NodeGroupCount is greater
14145	// than the current number of node groups (shards).
14146	ReshardingConfiguration []*ReshardingConfiguration `locationNameList:"ReshardingConfiguration" type:"list"`
14147}
14148
14149// String returns the string representation
14150func (s ModifyReplicationGroupShardConfigurationInput) String() string {
14151	return awsutil.Prettify(s)
14152}
14153
14154// GoString returns the string representation
14155func (s ModifyReplicationGroupShardConfigurationInput) GoString() string {
14156	return s.String()
14157}
14158
14159// Validate inspects the fields of the type to determine if they are valid.
14160func (s *ModifyReplicationGroupShardConfigurationInput) Validate() error {
14161	invalidParams := request.ErrInvalidParams{Context: "ModifyReplicationGroupShardConfigurationInput"}
14162	if s.ApplyImmediately == nil {
14163		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
14164	}
14165	if s.NodeGroupCount == nil {
14166		invalidParams.Add(request.NewErrParamRequired("NodeGroupCount"))
14167	}
14168	if s.ReplicationGroupId == nil {
14169		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
14170	}
14171	if s.ReshardingConfiguration != nil {
14172		for i, v := range s.ReshardingConfiguration {
14173			if v == nil {
14174				continue
14175			}
14176			if err := v.Validate(); err != nil {
14177				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReshardingConfiguration", i), err.(request.ErrInvalidParams))
14178			}
14179		}
14180	}
14181
14182	if invalidParams.Len() > 0 {
14183		return invalidParams
14184	}
14185	return nil
14186}
14187
14188// SetApplyImmediately sets the ApplyImmediately field's value.
14189func (s *ModifyReplicationGroupShardConfigurationInput) SetApplyImmediately(v bool) *ModifyReplicationGroupShardConfigurationInput {
14190	s.ApplyImmediately = &v
14191	return s
14192}
14193
14194// SetNodeGroupCount sets the NodeGroupCount field's value.
14195func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupCount(v int64) *ModifyReplicationGroupShardConfigurationInput {
14196	s.NodeGroupCount = &v
14197	return s
14198}
14199
14200// SetNodeGroupsToRemove sets the NodeGroupsToRemove field's value.
14201func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupsToRemove(v []*string) *ModifyReplicationGroupShardConfigurationInput {
14202	s.NodeGroupsToRemove = v
14203	return s
14204}
14205
14206// SetNodeGroupsToRetain sets the NodeGroupsToRetain field's value.
14207func (s *ModifyReplicationGroupShardConfigurationInput) SetNodeGroupsToRetain(v []*string) *ModifyReplicationGroupShardConfigurationInput {
14208	s.NodeGroupsToRetain = v
14209	return s
14210}
14211
14212// SetReplicationGroupId sets the ReplicationGroupId field's value.
14213func (s *ModifyReplicationGroupShardConfigurationInput) SetReplicationGroupId(v string) *ModifyReplicationGroupShardConfigurationInput {
14214	s.ReplicationGroupId = &v
14215	return s
14216}
14217
14218// SetReshardingConfiguration sets the ReshardingConfiguration field's value.
14219func (s *ModifyReplicationGroupShardConfigurationInput) SetReshardingConfiguration(v []*ReshardingConfiguration) *ModifyReplicationGroupShardConfigurationInput {
14220	s.ReshardingConfiguration = v
14221	return s
14222}
14223
14224type ModifyReplicationGroupShardConfigurationOutput struct {
14225	_ struct{} `type:"structure"`
14226
14227	// Contains all of the attributes of a specific Redis replication group.
14228	ReplicationGroup *ReplicationGroup `type:"structure"`
14229}
14230
14231// String returns the string representation
14232func (s ModifyReplicationGroupShardConfigurationOutput) String() string {
14233	return awsutil.Prettify(s)
14234}
14235
14236// GoString returns the string representation
14237func (s ModifyReplicationGroupShardConfigurationOutput) GoString() string {
14238	return s.String()
14239}
14240
14241// SetReplicationGroup sets the ReplicationGroup field's value.
14242func (s *ModifyReplicationGroupShardConfigurationOutput) SetReplicationGroup(v *ReplicationGroup) *ModifyReplicationGroupShardConfigurationOutput {
14243	s.ReplicationGroup = v
14244	return s
14245}
14246
14247// Represents a collection of cache nodes in a replication group. One node in
14248// the node group is the read/write primary node. All the other nodes are read-only
14249// Replica nodes.
14250type NodeGroup struct {
14251	_ struct{} `type:"structure"`
14252
14253	// The identifier for the node group (shard). A Redis (cluster mode disabled)
14254	// replication group contains only 1 node group; therefore, the node group ID
14255	// is 0001. A Redis (cluster mode enabled) replication group contains 1 to 90
14256	// node groups numbered 0001 to 0090. Optionally, the user can provide the id
14257	// for a node group.
14258	NodeGroupId *string `type:"string"`
14259
14260	// A list containing information about individual nodes within the node group
14261	// (shard).
14262	NodeGroupMembers []*NodeGroupMember `locationNameList:"NodeGroupMember" type:"list"`
14263
14264	// The endpoint of the primary node in this node group (shard).
14265	PrimaryEndpoint *Endpoint `type:"structure"`
14266
14267	// The endpoint of the replica nodes in this node group (shard).
14268	ReaderEndpoint *Endpoint `type:"structure"`
14269
14270	// The keyspace for this node group (shard).
14271	Slots *string `type:"string"`
14272
14273	// The current state of this replication group - creating, available, modifying,
14274	// deleting.
14275	Status *string `type:"string"`
14276}
14277
14278// String returns the string representation
14279func (s NodeGroup) String() string {
14280	return awsutil.Prettify(s)
14281}
14282
14283// GoString returns the string representation
14284func (s NodeGroup) GoString() string {
14285	return s.String()
14286}
14287
14288// SetNodeGroupId sets the NodeGroupId field's value.
14289func (s *NodeGroup) SetNodeGroupId(v string) *NodeGroup {
14290	s.NodeGroupId = &v
14291	return s
14292}
14293
14294// SetNodeGroupMembers sets the NodeGroupMembers field's value.
14295func (s *NodeGroup) SetNodeGroupMembers(v []*NodeGroupMember) *NodeGroup {
14296	s.NodeGroupMembers = v
14297	return s
14298}
14299
14300// SetPrimaryEndpoint sets the PrimaryEndpoint field's value.
14301func (s *NodeGroup) SetPrimaryEndpoint(v *Endpoint) *NodeGroup {
14302	s.PrimaryEndpoint = v
14303	return s
14304}
14305
14306// SetReaderEndpoint sets the ReaderEndpoint field's value.
14307func (s *NodeGroup) SetReaderEndpoint(v *Endpoint) *NodeGroup {
14308	s.ReaderEndpoint = v
14309	return s
14310}
14311
14312// SetSlots sets the Slots field's value.
14313func (s *NodeGroup) SetSlots(v string) *NodeGroup {
14314	s.Slots = &v
14315	return s
14316}
14317
14318// SetStatus sets the Status field's value.
14319func (s *NodeGroup) SetStatus(v string) *NodeGroup {
14320	s.Status = &v
14321	return s
14322}
14323
14324// Node group (shard) configuration options. Each node group (shard) configuration
14325// has the following: Slots, PrimaryAvailabilityZone, ReplicaAvailabilityZones,
14326// ReplicaCount.
14327type NodeGroupConfiguration struct {
14328	_ struct{} `type:"structure"`
14329
14330	// Either the ElastiCache for Redis supplied 4-digit id or a user supplied id
14331	// for the node group these configuration values apply to.
14332	NodeGroupId *string `min:"1" type:"string"`
14333
14334	// The Availability Zone where the primary node of this node group (shard) is
14335	// launched.
14336	PrimaryAvailabilityZone *string `type:"string"`
14337
14338	// A list of Availability Zones to be used for the read replicas. The number
14339	// of Availability Zones in this list must match the value of ReplicaCount or
14340	// ReplicasPerNodeGroup if not specified.
14341	ReplicaAvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`
14342
14343	// The number of read replica nodes in this node group (shard).
14344	ReplicaCount *int64 `type:"integer"`
14345
14346	// A string that specifies the keyspace for a particular node group. Keyspaces
14347	// range from 0 to 16,383. The string is in the format startkey-endkey.
14348	//
14349	// Example: "0-3999"
14350	Slots *string `type:"string"`
14351}
14352
14353// String returns the string representation
14354func (s NodeGroupConfiguration) String() string {
14355	return awsutil.Prettify(s)
14356}
14357
14358// GoString returns the string representation
14359func (s NodeGroupConfiguration) GoString() string {
14360	return s.String()
14361}
14362
14363// Validate inspects the fields of the type to determine if they are valid.
14364func (s *NodeGroupConfiguration) Validate() error {
14365	invalidParams := request.ErrInvalidParams{Context: "NodeGroupConfiguration"}
14366	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
14367		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
14368	}
14369
14370	if invalidParams.Len() > 0 {
14371		return invalidParams
14372	}
14373	return nil
14374}
14375
14376// SetNodeGroupId sets the NodeGroupId field's value.
14377func (s *NodeGroupConfiguration) SetNodeGroupId(v string) *NodeGroupConfiguration {
14378	s.NodeGroupId = &v
14379	return s
14380}
14381
14382// SetPrimaryAvailabilityZone sets the PrimaryAvailabilityZone field's value.
14383func (s *NodeGroupConfiguration) SetPrimaryAvailabilityZone(v string) *NodeGroupConfiguration {
14384	s.PrimaryAvailabilityZone = &v
14385	return s
14386}
14387
14388// SetReplicaAvailabilityZones sets the ReplicaAvailabilityZones field's value.
14389func (s *NodeGroupConfiguration) SetReplicaAvailabilityZones(v []*string) *NodeGroupConfiguration {
14390	s.ReplicaAvailabilityZones = v
14391	return s
14392}
14393
14394// SetReplicaCount sets the ReplicaCount field's value.
14395func (s *NodeGroupConfiguration) SetReplicaCount(v int64) *NodeGroupConfiguration {
14396	s.ReplicaCount = &v
14397	return s
14398}
14399
14400// SetSlots sets the Slots field's value.
14401func (s *NodeGroupConfiguration) SetSlots(v string) *NodeGroupConfiguration {
14402	s.Slots = &v
14403	return s
14404}
14405
14406// Represents a single node within a node group (shard).
14407type NodeGroupMember struct {
14408	_ struct{} `type:"structure"`
14409
14410	// The ID of the cluster to which the node belongs.
14411	CacheClusterId *string `type:"string"`
14412
14413	// The ID of the node within its cluster. A node ID is a numeric identifier
14414	// (0001, 0002, etc.).
14415	CacheNodeId *string `type:"string"`
14416
14417	// The role that is currently assigned to the node - primary or replica. This
14418	// member is only applicable for Redis (cluster mode disabled) replication groups.
14419	CurrentRole *string `type:"string"`
14420
14421	// The name of the Availability Zone in which the node is located.
14422	PreferredAvailabilityZone *string `type:"string"`
14423
14424	// The information required for client programs to connect to a node for read
14425	// operations. The read endpoint is only applicable on Redis (cluster mode disabled)
14426	// clusters.
14427	ReadEndpoint *Endpoint `type:"structure"`
14428}
14429
14430// String returns the string representation
14431func (s NodeGroupMember) String() string {
14432	return awsutil.Prettify(s)
14433}
14434
14435// GoString returns the string representation
14436func (s NodeGroupMember) GoString() string {
14437	return s.String()
14438}
14439
14440// SetCacheClusterId sets the CacheClusterId field's value.
14441func (s *NodeGroupMember) SetCacheClusterId(v string) *NodeGroupMember {
14442	s.CacheClusterId = &v
14443	return s
14444}
14445
14446// SetCacheNodeId sets the CacheNodeId field's value.
14447func (s *NodeGroupMember) SetCacheNodeId(v string) *NodeGroupMember {
14448	s.CacheNodeId = &v
14449	return s
14450}
14451
14452// SetCurrentRole sets the CurrentRole field's value.
14453func (s *NodeGroupMember) SetCurrentRole(v string) *NodeGroupMember {
14454	s.CurrentRole = &v
14455	return s
14456}
14457
14458// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
14459func (s *NodeGroupMember) SetPreferredAvailabilityZone(v string) *NodeGroupMember {
14460	s.PreferredAvailabilityZone = &v
14461	return s
14462}
14463
14464// SetReadEndpoint sets the ReadEndpoint field's value.
14465func (s *NodeGroupMember) SetReadEndpoint(v *Endpoint) *NodeGroupMember {
14466	s.ReadEndpoint = v
14467	return s
14468}
14469
14470// The status of the service update on the node group member
14471type NodeGroupMemberUpdateStatus struct {
14472	_ struct{} `type:"structure"`
14473
14474	// The cache cluster ID
14475	CacheClusterId *string `type:"string"`
14476
14477	// The node ID of the cache cluster
14478	CacheNodeId *string `type:"string"`
14479
14480	// The deletion date of the node
14481	NodeDeletionDate *time.Time `type:"timestamp"`
14482
14483	// The end date of the update for a node
14484	NodeUpdateEndDate *time.Time `type:"timestamp"`
14485
14486	// Reflects whether the update was initiated by the customer or automatically
14487	// applied
14488	NodeUpdateInitiatedBy *string `type:"string" enum:"NodeUpdateInitiatedBy"`
14489
14490	// The date when the update is triggered
14491	NodeUpdateInitiatedDate *time.Time `type:"timestamp"`
14492
14493	// The start date of the update for a node
14494	NodeUpdateStartDate *time.Time `type:"timestamp"`
14495
14496	// The update status of the node
14497	NodeUpdateStatus *string `type:"string" enum:"NodeUpdateStatus"`
14498
14499	// The date when the NodeUpdateStatus was last modified
14500	NodeUpdateStatusModifiedDate *time.Time `type:"timestamp"`
14501}
14502
14503// String returns the string representation
14504func (s NodeGroupMemberUpdateStatus) String() string {
14505	return awsutil.Prettify(s)
14506}
14507
14508// GoString returns the string representation
14509func (s NodeGroupMemberUpdateStatus) GoString() string {
14510	return s.String()
14511}
14512
14513// SetCacheClusterId sets the CacheClusterId field's value.
14514func (s *NodeGroupMemberUpdateStatus) SetCacheClusterId(v string) *NodeGroupMemberUpdateStatus {
14515	s.CacheClusterId = &v
14516	return s
14517}
14518
14519// SetCacheNodeId sets the CacheNodeId field's value.
14520func (s *NodeGroupMemberUpdateStatus) SetCacheNodeId(v string) *NodeGroupMemberUpdateStatus {
14521	s.CacheNodeId = &v
14522	return s
14523}
14524
14525// SetNodeDeletionDate sets the NodeDeletionDate field's value.
14526func (s *NodeGroupMemberUpdateStatus) SetNodeDeletionDate(v time.Time) *NodeGroupMemberUpdateStatus {
14527	s.NodeDeletionDate = &v
14528	return s
14529}
14530
14531// SetNodeUpdateEndDate sets the NodeUpdateEndDate field's value.
14532func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateEndDate(v time.Time) *NodeGroupMemberUpdateStatus {
14533	s.NodeUpdateEndDate = &v
14534	return s
14535}
14536
14537// SetNodeUpdateInitiatedBy sets the NodeUpdateInitiatedBy field's value.
14538func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateInitiatedBy(v string) *NodeGroupMemberUpdateStatus {
14539	s.NodeUpdateInitiatedBy = &v
14540	return s
14541}
14542
14543// SetNodeUpdateInitiatedDate sets the NodeUpdateInitiatedDate field's value.
14544func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateInitiatedDate(v time.Time) *NodeGroupMemberUpdateStatus {
14545	s.NodeUpdateInitiatedDate = &v
14546	return s
14547}
14548
14549// SetNodeUpdateStartDate sets the NodeUpdateStartDate field's value.
14550func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStartDate(v time.Time) *NodeGroupMemberUpdateStatus {
14551	s.NodeUpdateStartDate = &v
14552	return s
14553}
14554
14555// SetNodeUpdateStatus sets the NodeUpdateStatus field's value.
14556func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStatus(v string) *NodeGroupMemberUpdateStatus {
14557	s.NodeUpdateStatus = &v
14558	return s
14559}
14560
14561// SetNodeUpdateStatusModifiedDate sets the NodeUpdateStatusModifiedDate field's value.
14562func (s *NodeGroupMemberUpdateStatus) SetNodeUpdateStatusModifiedDate(v time.Time) *NodeGroupMemberUpdateStatus {
14563	s.NodeUpdateStatusModifiedDate = &v
14564	return s
14565}
14566
14567// The status of the service update on the node group
14568type NodeGroupUpdateStatus struct {
14569	_ struct{} `type:"structure"`
14570
14571	// The ID of the node group
14572	NodeGroupId *string `type:"string"`
14573
14574	// The status of the service update on the node group member
14575	NodeGroupMemberUpdateStatus []*NodeGroupMemberUpdateStatus `locationNameList:"NodeGroupMemberUpdateStatus" type:"list"`
14576}
14577
14578// String returns the string representation
14579func (s NodeGroupUpdateStatus) String() string {
14580	return awsutil.Prettify(s)
14581}
14582
14583// GoString returns the string representation
14584func (s NodeGroupUpdateStatus) GoString() string {
14585	return s.String()
14586}
14587
14588// SetNodeGroupId sets the NodeGroupId field's value.
14589func (s *NodeGroupUpdateStatus) SetNodeGroupId(v string) *NodeGroupUpdateStatus {
14590	s.NodeGroupId = &v
14591	return s
14592}
14593
14594// SetNodeGroupMemberUpdateStatus sets the NodeGroupMemberUpdateStatus field's value.
14595func (s *NodeGroupUpdateStatus) SetNodeGroupMemberUpdateStatus(v []*NodeGroupMemberUpdateStatus) *NodeGroupUpdateStatus {
14596	s.NodeGroupMemberUpdateStatus = v
14597	return s
14598}
14599
14600// Represents an individual cache node in a snapshot of a cluster.
14601type NodeSnapshot struct {
14602	_ struct{} `type:"structure"`
14603
14604	// A unique identifier for the source cluster.
14605	CacheClusterId *string `type:"string"`
14606
14607	// The date and time when the cache node was created in the source cluster.
14608	CacheNodeCreateTime *time.Time `type:"timestamp"`
14609
14610	// The cache node identifier for the node in the source cluster.
14611	CacheNodeId *string `type:"string"`
14612
14613	// The size of the cache on the source cache node.
14614	CacheSize *string `type:"string"`
14615
14616	// The configuration for the source node group (shard).
14617	NodeGroupConfiguration *NodeGroupConfiguration `type:"structure"`
14618
14619	// A unique identifier for the source node group (shard).
14620	NodeGroupId *string `type:"string"`
14621
14622	// The date and time when the source node's metadata and cache data set was
14623	// obtained for the snapshot.
14624	SnapshotCreateTime *time.Time `type:"timestamp"`
14625}
14626
14627// String returns the string representation
14628func (s NodeSnapshot) String() string {
14629	return awsutil.Prettify(s)
14630}
14631
14632// GoString returns the string representation
14633func (s NodeSnapshot) GoString() string {
14634	return s.String()
14635}
14636
14637// SetCacheClusterId sets the CacheClusterId field's value.
14638func (s *NodeSnapshot) SetCacheClusterId(v string) *NodeSnapshot {
14639	s.CacheClusterId = &v
14640	return s
14641}
14642
14643// SetCacheNodeCreateTime sets the CacheNodeCreateTime field's value.
14644func (s *NodeSnapshot) SetCacheNodeCreateTime(v time.Time) *NodeSnapshot {
14645	s.CacheNodeCreateTime = &v
14646	return s
14647}
14648
14649// SetCacheNodeId sets the CacheNodeId field's value.
14650func (s *NodeSnapshot) SetCacheNodeId(v string) *NodeSnapshot {
14651	s.CacheNodeId = &v
14652	return s
14653}
14654
14655// SetCacheSize sets the CacheSize field's value.
14656func (s *NodeSnapshot) SetCacheSize(v string) *NodeSnapshot {
14657	s.CacheSize = &v
14658	return s
14659}
14660
14661// SetNodeGroupConfiguration sets the NodeGroupConfiguration field's value.
14662func (s *NodeSnapshot) SetNodeGroupConfiguration(v *NodeGroupConfiguration) *NodeSnapshot {
14663	s.NodeGroupConfiguration = v
14664	return s
14665}
14666
14667// SetNodeGroupId sets the NodeGroupId field's value.
14668func (s *NodeSnapshot) SetNodeGroupId(v string) *NodeSnapshot {
14669	s.NodeGroupId = &v
14670	return s
14671}
14672
14673// SetSnapshotCreateTime sets the SnapshotCreateTime field's value.
14674func (s *NodeSnapshot) SetSnapshotCreateTime(v time.Time) *NodeSnapshot {
14675	s.SnapshotCreateTime = &v
14676	return s
14677}
14678
14679// Describes a notification topic and its status. Notification topics are used
14680// for publishing ElastiCache events to subscribers using Amazon Simple Notification
14681// Service (SNS).
14682type NotificationConfiguration struct {
14683	_ struct{} `type:"structure"`
14684
14685	// The Amazon Resource Name (ARN) that identifies the topic.
14686	TopicArn *string `type:"string"`
14687
14688	// The current state of the topic.
14689	TopicStatus *string `type:"string"`
14690}
14691
14692// String returns the string representation
14693func (s NotificationConfiguration) String() string {
14694	return awsutil.Prettify(s)
14695}
14696
14697// GoString returns the string representation
14698func (s NotificationConfiguration) GoString() string {
14699	return s.String()
14700}
14701
14702// SetTopicArn sets the TopicArn field's value.
14703func (s *NotificationConfiguration) SetTopicArn(v string) *NotificationConfiguration {
14704	s.TopicArn = &v
14705	return s
14706}
14707
14708// SetTopicStatus sets the TopicStatus field's value.
14709func (s *NotificationConfiguration) SetTopicStatus(v string) *NotificationConfiguration {
14710	s.TopicStatus = &v
14711	return s
14712}
14713
14714// Describes an individual setting that controls some aspect of ElastiCache
14715// behavior.
14716type Parameter struct {
14717	_ struct{} `type:"structure"`
14718
14719	// The valid range of values for the parameter.
14720	AllowedValues *string `type:"string"`
14721
14722	// Indicates whether a change to the parameter is applied immediately or requires
14723	// a reboot for the change to be applied. You can force a reboot or wait until
14724	// the next maintenance window's reboot. For more information, see Rebooting
14725	// a Cluster (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Clusters.Rebooting.html).
14726	ChangeType *string `type:"string" enum:"ChangeType"`
14727
14728	// The valid data type for the parameter.
14729	DataType *string `type:"string"`
14730
14731	// A description of the parameter.
14732	Description *string `type:"string"`
14733
14734	// Indicates whether (true) or not (false) the parameter can be modified. Some
14735	// parameters have security or operational implications that prevent them from
14736	// being changed.
14737	IsModifiable *bool `type:"boolean"`
14738
14739	// The earliest cache engine version to which the parameter can apply.
14740	MinimumEngineVersion *string `type:"string"`
14741
14742	// The name of the parameter.
14743	ParameterName *string `type:"string"`
14744
14745	// The value of the parameter.
14746	ParameterValue *string `type:"string"`
14747
14748	// The source of the parameter.
14749	Source *string `type:"string"`
14750}
14751
14752// String returns the string representation
14753func (s Parameter) String() string {
14754	return awsutil.Prettify(s)
14755}
14756
14757// GoString returns the string representation
14758func (s Parameter) GoString() string {
14759	return s.String()
14760}
14761
14762// SetAllowedValues sets the AllowedValues field's value.
14763func (s *Parameter) SetAllowedValues(v string) *Parameter {
14764	s.AllowedValues = &v
14765	return s
14766}
14767
14768// SetChangeType sets the ChangeType field's value.
14769func (s *Parameter) SetChangeType(v string) *Parameter {
14770	s.ChangeType = &v
14771	return s
14772}
14773
14774// SetDataType sets the DataType field's value.
14775func (s *Parameter) SetDataType(v string) *Parameter {
14776	s.DataType = &v
14777	return s
14778}
14779
14780// SetDescription sets the Description field's value.
14781func (s *Parameter) SetDescription(v string) *Parameter {
14782	s.Description = &v
14783	return s
14784}
14785
14786// SetIsModifiable sets the IsModifiable field's value.
14787func (s *Parameter) SetIsModifiable(v bool) *Parameter {
14788	s.IsModifiable = &v
14789	return s
14790}
14791
14792// SetMinimumEngineVersion sets the MinimumEngineVersion field's value.
14793func (s *Parameter) SetMinimumEngineVersion(v string) *Parameter {
14794	s.MinimumEngineVersion = &v
14795	return s
14796}
14797
14798// SetParameterName sets the ParameterName field's value.
14799func (s *Parameter) SetParameterName(v string) *Parameter {
14800	s.ParameterName = &v
14801	return s
14802}
14803
14804// SetParameterValue sets the ParameterValue field's value.
14805func (s *Parameter) SetParameterValue(v string) *Parameter {
14806	s.ParameterValue = &v
14807	return s
14808}
14809
14810// SetSource sets the Source field's value.
14811func (s *Parameter) SetSource(v string) *Parameter {
14812	s.Source = &v
14813	return s
14814}
14815
14816// Describes a name-value pair that is used to update the value of a parameter.
14817type ParameterNameValue struct {
14818	_ struct{} `type:"structure"`
14819
14820	// The name of the parameter.
14821	ParameterName *string `type:"string"`
14822
14823	// The value of the parameter.
14824	ParameterValue *string `type:"string"`
14825}
14826
14827// String returns the string representation
14828func (s ParameterNameValue) String() string {
14829	return awsutil.Prettify(s)
14830}
14831
14832// GoString returns the string representation
14833func (s ParameterNameValue) GoString() string {
14834	return s.String()
14835}
14836
14837// SetParameterName sets the ParameterName field's value.
14838func (s *ParameterNameValue) SetParameterName(v string) *ParameterNameValue {
14839	s.ParameterName = &v
14840	return s
14841}
14842
14843// SetParameterValue sets the ParameterValue field's value.
14844func (s *ParameterNameValue) SetParameterValue(v string) *ParameterNameValue {
14845	s.ParameterValue = &v
14846	return s
14847}
14848
14849// A group of settings that are applied to the cluster in the future, or that
14850// are currently being applied.
14851type PendingModifiedValues struct {
14852	_ struct{} `type:"structure"`
14853
14854	// The auth token status
14855	AuthTokenStatus *string `type:"string" enum:"AuthTokenUpdateStatus"`
14856
14857	// A list of cache node IDs that are being removed (or will be removed) from
14858	// the cluster. A node ID is a 4-digit numeric identifier (0001, 0002, etc.).
14859	CacheNodeIdsToRemove []*string `locationNameList:"CacheNodeId" type:"list"`
14860
14861	// The cache node type that this cluster or replication group is scaled to.
14862	CacheNodeType *string `type:"string"`
14863
14864	// The new cache engine version that the cluster runs.
14865	EngineVersion *string `type:"string"`
14866
14867	// The new number of cache nodes for the cluster.
14868	//
14869	// For clusters running Redis, this value must be 1. For clusters running Memcached,
14870	// this value must be between 1 and 20.
14871	NumCacheNodes *int64 `type:"integer"`
14872}
14873
14874// String returns the string representation
14875func (s PendingModifiedValues) String() string {
14876	return awsutil.Prettify(s)
14877}
14878
14879// GoString returns the string representation
14880func (s PendingModifiedValues) GoString() string {
14881	return s.String()
14882}
14883
14884// SetAuthTokenStatus sets the AuthTokenStatus field's value.
14885func (s *PendingModifiedValues) SetAuthTokenStatus(v string) *PendingModifiedValues {
14886	s.AuthTokenStatus = &v
14887	return s
14888}
14889
14890// SetCacheNodeIdsToRemove sets the CacheNodeIdsToRemove field's value.
14891func (s *PendingModifiedValues) SetCacheNodeIdsToRemove(v []*string) *PendingModifiedValues {
14892	s.CacheNodeIdsToRemove = v
14893	return s
14894}
14895
14896// SetCacheNodeType sets the CacheNodeType field's value.
14897func (s *PendingModifiedValues) SetCacheNodeType(v string) *PendingModifiedValues {
14898	s.CacheNodeType = &v
14899	return s
14900}
14901
14902// SetEngineVersion sets the EngineVersion field's value.
14903func (s *PendingModifiedValues) SetEngineVersion(v string) *PendingModifiedValues {
14904	s.EngineVersion = &v
14905	return s
14906}
14907
14908// SetNumCacheNodes sets the NumCacheNodes field's value.
14909func (s *PendingModifiedValues) SetNumCacheNodes(v int64) *PendingModifiedValues {
14910	s.NumCacheNodes = &v
14911	return s
14912}
14913
14914// Update action that has been processed for the corresponding apply/stop request
14915type ProcessedUpdateAction struct {
14916	_ struct{} `type:"structure"`
14917
14918	// The ID of the cache cluster
14919	CacheClusterId *string `type:"string"`
14920
14921	// The ID of the replication group
14922	ReplicationGroupId *string `type:"string"`
14923
14924	// The unique ID of the service update
14925	ServiceUpdateName *string `type:"string"`
14926
14927	// The status of the update action on the Redis cluster
14928	UpdateActionStatus *string `type:"string" enum:"UpdateActionStatus"`
14929}
14930
14931// String returns the string representation
14932func (s ProcessedUpdateAction) String() string {
14933	return awsutil.Prettify(s)
14934}
14935
14936// GoString returns the string representation
14937func (s ProcessedUpdateAction) GoString() string {
14938	return s.String()
14939}
14940
14941// SetCacheClusterId sets the CacheClusterId field's value.
14942func (s *ProcessedUpdateAction) SetCacheClusterId(v string) *ProcessedUpdateAction {
14943	s.CacheClusterId = &v
14944	return s
14945}
14946
14947// SetReplicationGroupId sets the ReplicationGroupId field's value.
14948func (s *ProcessedUpdateAction) SetReplicationGroupId(v string) *ProcessedUpdateAction {
14949	s.ReplicationGroupId = &v
14950	return s
14951}
14952
14953// SetServiceUpdateName sets the ServiceUpdateName field's value.
14954func (s *ProcessedUpdateAction) SetServiceUpdateName(v string) *ProcessedUpdateAction {
14955	s.ServiceUpdateName = &v
14956	return s
14957}
14958
14959// SetUpdateActionStatus sets the UpdateActionStatus field's value.
14960func (s *ProcessedUpdateAction) SetUpdateActionStatus(v string) *ProcessedUpdateAction {
14961	s.UpdateActionStatus = &v
14962	return s
14963}
14964
14965// Represents the input of a PurchaseReservedCacheNodesOffering operation.
14966type PurchaseReservedCacheNodesOfferingInput struct {
14967	_ struct{} `type:"structure"`
14968
14969	// The number of cache node instances to reserve.
14970	//
14971	// Default: 1
14972	CacheNodeCount *int64 `type:"integer"`
14973
14974	// A customer-specified identifier to track this reservation.
14975	//
14976	// The Reserved Cache Node ID is an unique customer-specified identifier to
14977	// track this reservation. If this parameter is not specified, ElastiCache automatically
14978	// generates an identifier for the reservation.
14979	//
14980	// Example: myreservationID
14981	ReservedCacheNodeId *string `type:"string"`
14982
14983	// The ID of the reserved cache node offering to purchase.
14984	//
14985	// Example: 438012d3-4052-4cc7-b2e3-8d3372e0e706
14986	//
14987	// ReservedCacheNodesOfferingId is a required field
14988	ReservedCacheNodesOfferingId *string `type:"string" required:"true"`
14989}
14990
14991// String returns the string representation
14992func (s PurchaseReservedCacheNodesOfferingInput) String() string {
14993	return awsutil.Prettify(s)
14994}
14995
14996// GoString returns the string representation
14997func (s PurchaseReservedCacheNodesOfferingInput) GoString() string {
14998	return s.String()
14999}
15000
15001// Validate inspects the fields of the type to determine if they are valid.
15002func (s *PurchaseReservedCacheNodesOfferingInput) Validate() error {
15003	invalidParams := request.ErrInvalidParams{Context: "PurchaseReservedCacheNodesOfferingInput"}
15004	if s.ReservedCacheNodesOfferingId == nil {
15005		invalidParams.Add(request.NewErrParamRequired("ReservedCacheNodesOfferingId"))
15006	}
15007
15008	if invalidParams.Len() > 0 {
15009		return invalidParams
15010	}
15011	return nil
15012}
15013
15014// SetCacheNodeCount sets the CacheNodeCount field's value.
15015func (s *PurchaseReservedCacheNodesOfferingInput) SetCacheNodeCount(v int64) *PurchaseReservedCacheNodesOfferingInput {
15016	s.CacheNodeCount = &v
15017	return s
15018}
15019
15020// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
15021func (s *PurchaseReservedCacheNodesOfferingInput) SetReservedCacheNodeId(v string) *PurchaseReservedCacheNodesOfferingInput {
15022	s.ReservedCacheNodeId = &v
15023	return s
15024}
15025
15026// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
15027func (s *PurchaseReservedCacheNodesOfferingInput) SetReservedCacheNodesOfferingId(v string) *PurchaseReservedCacheNodesOfferingInput {
15028	s.ReservedCacheNodesOfferingId = &v
15029	return s
15030}
15031
15032type PurchaseReservedCacheNodesOfferingOutput struct {
15033	_ struct{} `type:"structure"`
15034
15035	// Represents the output of a PurchaseReservedCacheNodesOffering operation.
15036	ReservedCacheNode *ReservedCacheNode `type:"structure"`
15037}
15038
15039// String returns the string representation
15040func (s PurchaseReservedCacheNodesOfferingOutput) String() string {
15041	return awsutil.Prettify(s)
15042}
15043
15044// GoString returns the string representation
15045func (s PurchaseReservedCacheNodesOfferingOutput) GoString() string {
15046	return s.String()
15047}
15048
15049// SetReservedCacheNode sets the ReservedCacheNode field's value.
15050func (s *PurchaseReservedCacheNodesOfferingOutput) SetReservedCacheNode(v *ReservedCacheNode) *PurchaseReservedCacheNodesOfferingOutput {
15051	s.ReservedCacheNode = v
15052	return s
15053}
15054
15055type RebalanceSlotsInGlobalReplicationGroupInput struct {
15056	_ struct{} `type:"structure"`
15057
15058	// If True, redistribution is applied immediately.
15059	//
15060	// ApplyImmediately is a required field
15061	ApplyImmediately *bool `type:"boolean" required:"true"`
15062
15063	// The name of the Global Datastore
15064	//
15065	// GlobalReplicationGroupId is a required field
15066	GlobalReplicationGroupId *string `type:"string" required:"true"`
15067}
15068
15069// String returns the string representation
15070func (s RebalanceSlotsInGlobalReplicationGroupInput) String() string {
15071	return awsutil.Prettify(s)
15072}
15073
15074// GoString returns the string representation
15075func (s RebalanceSlotsInGlobalReplicationGroupInput) GoString() string {
15076	return s.String()
15077}
15078
15079// Validate inspects the fields of the type to determine if they are valid.
15080func (s *RebalanceSlotsInGlobalReplicationGroupInput) Validate() error {
15081	invalidParams := request.ErrInvalidParams{Context: "RebalanceSlotsInGlobalReplicationGroupInput"}
15082	if s.ApplyImmediately == nil {
15083		invalidParams.Add(request.NewErrParamRequired("ApplyImmediately"))
15084	}
15085	if s.GlobalReplicationGroupId == nil {
15086		invalidParams.Add(request.NewErrParamRequired("GlobalReplicationGroupId"))
15087	}
15088
15089	if invalidParams.Len() > 0 {
15090		return invalidParams
15091	}
15092	return nil
15093}
15094
15095// SetApplyImmediately sets the ApplyImmediately field's value.
15096func (s *RebalanceSlotsInGlobalReplicationGroupInput) SetApplyImmediately(v bool) *RebalanceSlotsInGlobalReplicationGroupInput {
15097	s.ApplyImmediately = &v
15098	return s
15099}
15100
15101// SetGlobalReplicationGroupId sets the GlobalReplicationGroupId field's value.
15102func (s *RebalanceSlotsInGlobalReplicationGroupInput) SetGlobalReplicationGroupId(v string) *RebalanceSlotsInGlobalReplicationGroupInput {
15103	s.GlobalReplicationGroupId = &v
15104	return s
15105}
15106
15107type RebalanceSlotsInGlobalReplicationGroupOutput struct {
15108	_ struct{} `type:"structure"`
15109
15110	// Consists of a primary cluster that accepts writes and an associated secondary
15111	// cluster that resides in a different AWS region. The secondary cluster accepts
15112	// only reads. The primary cluster automatically replicates updates to the secondary
15113	// cluster.
15114	//
15115	//    * The GlobalReplicationGroupIdSuffix represents the name of the Global
15116	//    Datastore, which is what you use to associate a secondary cluster.
15117	GlobalReplicationGroup *GlobalReplicationGroup `type:"structure"`
15118}
15119
15120// String returns the string representation
15121func (s RebalanceSlotsInGlobalReplicationGroupOutput) String() string {
15122	return awsutil.Prettify(s)
15123}
15124
15125// GoString returns the string representation
15126func (s RebalanceSlotsInGlobalReplicationGroupOutput) GoString() string {
15127	return s.String()
15128}
15129
15130// SetGlobalReplicationGroup sets the GlobalReplicationGroup field's value.
15131func (s *RebalanceSlotsInGlobalReplicationGroupOutput) SetGlobalReplicationGroup(v *GlobalReplicationGroup) *RebalanceSlotsInGlobalReplicationGroupOutput {
15132	s.GlobalReplicationGroup = v
15133	return s
15134}
15135
15136// Represents the input of a RebootCacheCluster operation.
15137type RebootCacheClusterInput struct {
15138	_ struct{} `type:"structure"`
15139
15140	// The cluster identifier. This parameter is stored as a lowercase string.
15141	//
15142	// CacheClusterId is a required field
15143	CacheClusterId *string `type:"string" required:"true"`
15144
15145	// A list of cache node IDs to reboot. A node ID is a numeric identifier (0001,
15146	// 0002, etc.). To reboot an entire cluster, specify all of the cache node IDs.
15147	//
15148	// CacheNodeIdsToReboot is a required field
15149	CacheNodeIdsToReboot []*string `locationNameList:"CacheNodeId" type:"list" required:"true"`
15150}
15151
15152// String returns the string representation
15153func (s RebootCacheClusterInput) String() string {
15154	return awsutil.Prettify(s)
15155}
15156
15157// GoString returns the string representation
15158func (s RebootCacheClusterInput) GoString() string {
15159	return s.String()
15160}
15161
15162// Validate inspects the fields of the type to determine if they are valid.
15163func (s *RebootCacheClusterInput) Validate() error {
15164	invalidParams := request.ErrInvalidParams{Context: "RebootCacheClusterInput"}
15165	if s.CacheClusterId == nil {
15166		invalidParams.Add(request.NewErrParamRequired("CacheClusterId"))
15167	}
15168	if s.CacheNodeIdsToReboot == nil {
15169		invalidParams.Add(request.NewErrParamRequired("CacheNodeIdsToReboot"))
15170	}
15171
15172	if invalidParams.Len() > 0 {
15173		return invalidParams
15174	}
15175	return nil
15176}
15177
15178// SetCacheClusterId sets the CacheClusterId field's value.
15179func (s *RebootCacheClusterInput) SetCacheClusterId(v string) *RebootCacheClusterInput {
15180	s.CacheClusterId = &v
15181	return s
15182}
15183
15184// SetCacheNodeIdsToReboot sets the CacheNodeIdsToReboot field's value.
15185func (s *RebootCacheClusterInput) SetCacheNodeIdsToReboot(v []*string) *RebootCacheClusterInput {
15186	s.CacheNodeIdsToReboot = v
15187	return s
15188}
15189
15190type RebootCacheClusterOutput struct {
15191	_ struct{} `type:"structure"`
15192
15193	// Contains all of the attributes of a specific cluster.
15194	CacheCluster *CacheCluster `type:"structure"`
15195}
15196
15197// String returns the string representation
15198func (s RebootCacheClusterOutput) String() string {
15199	return awsutil.Prettify(s)
15200}
15201
15202// GoString returns the string representation
15203func (s RebootCacheClusterOutput) GoString() string {
15204	return s.String()
15205}
15206
15207// SetCacheCluster sets the CacheCluster field's value.
15208func (s *RebootCacheClusterOutput) SetCacheCluster(v *CacheCluster) *RebootCacheClusterOutput {
15209	s.CacheCluster = v
15210	return s
15211}
15212
15213// Contains the specific price and frequency of a recurring charges for a reserved
15214// cache node, or for a reserved cache node offering.
15215type RecurringCharge struct {
15216	_ struct{} `type:"structure"`
15217
15218	// The monetary amount of the recurring charge.
15219	RecurringChargeAmount *float64 `type:"double"`
15220
15221	// The frequency of the recurring charge.
15222	RecurringChargeFrequency *string `type:"string"`
15223}
15224
15225// String returns the string representation
15226func (s RecurringCharge) String() string {
15227	return awsutil.Prettify(s)
15228}
15229
15230// GoString returns the string representation
15231func (s RecurringCharge) GoString() string {
15232	return s.String()
15233}
15234
15235// SetRecurringChargeAmount sets the RecurringChargeAmount field's value.
15236func (s *RecurringCharge) SetRecurringChargeAmount(v float64) *RecurringCharge {
15237	s.RecurringChargeAmount = &v
15238	return s
15239}
15240
15241// SetRecurringChargeFrequency sets the RecurringChargeFrequency field's value.
15242func (s *RecurringCharge) SetRecurringChargeFrequency(v string) *RecurringCharge {
15243	s.RecurringChargeFrequency = &v
15244	return s
15245}
15246
15247// A list of the replication groups
15248type RegionalConfiguration struct {
15249	_ struct{} `type:"structure"`
15250
15251	// The name of the secondary cluster
15252	//
15253	// ReplicationGroupId is a required field
15254	ReplicationGroupId *string `type:"string" required:"true"`
15255
15256	// The AWS region where the cluster is stored
15257	//
15258	// ReplicationGroupRegion is a required field
15259	ReplicationGroupRegion *string `type:"string" required:"true"`
15260
15261	// A list of PreferredAvailabilityZones objects that specifies the configuration
15262	// of a node group in the resharded cluster.
15263	//
15264	// ReshardingConfiguration is a required field
15265	ReshardingConfiguration []*ReshardingConfiguration `locationNameList:"ReshardingConfiguration" type:"list" required:"true"`
15266}
15267
15268// String returns the string representation
15269func (s RegionalConfiguration) String() string {
15270	return awsutil.Prettify(s)
15271}
15272
15273// GoString returns the string representation
15274func (s RegionalConfiguration) GoString() string {
15275	return s.String()
15276}
15277
15278// Validate inspects the fields of the type to determine if they are valid.
15279func (s *RegionalConfiguration) Validate() error {
15280	invalidParams := request.ErrInvalidParams{Context: "RegionalConfiguration"}
15281	if s.ReplicationGroupId == nil {
15282		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
15283	}
15284	if s.ReplicationGroupRegion == nil {
15285		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupRegion"))
15286	}
15287	if s.ReshardingConfiguration == nil {
15288		invalidParams.Add(request.NewErrParamRequired("ReshardingConfiguration"))
15289	}
15290	if s.ReshardingConfiguration != nil {
15291		for i, v := range s.ReshardingConfiguration {
15292			if v == nil {
15293				continue
15294			}
15295			if err := v.Validate(); err != nil {
15296				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ReshardingConfiguration", i), err.(request.ErrInvalidParams))
15297			}
15298		}
15299	}
15300
15301	if invalidParams.Len() > 0 {
15302		return invalidParams
15303	}
15304	return nil
15305}
15306
15307// SetReplicationGroupId sets the ReplicationGroupId field's value.
15308func (s *RegionalConfiguration) SetReplicationGroupId(v string) *RegionalConfiguration {
15309	s.ReplicationGroupId = &v
15310	return s
15311}
15312
15313// SetReplicationGroupRegion sets the ReplicationGroupRegion field's value.
15314func (s *RegionalConfiguration) SetReplicationGroupRegion(v string) *RegionalConfiguration {
15315	s.ReplicationGroupRegion = &v
15316	return s
15317}
15318
15319// SetReshardingConfiguration sets the ReshardingConfiguration field's value.
15320func (s *RegionalConfiguration) SetReshardingConfiguration(v []*ReshardingConfiguration) *RegionalConfiguration {
15321	s.ReshardingConfiguration = v
15322	return s
15323}
15324
15325// Represents the input of a RemoveTagsFromResource operation.
15326type RemoveTagsFromResourceInput struct {
15327	_ struct{} `type:"structure"`
15328
15329	// The Amazon Resource Name (ARN) of the resource from which you want the tags
15330	// removed, for example arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster
15331	// or arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot.
15332	//
15333	// For more information about ARNs, see Amazon Resource Names (ARNs) and AWS
15334	// Service Namespaces (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).
15335	//
15336	// ResourceName is a required field
15337	ResourceName *string `type:"string" required:"true"`
15338
15339	// A list of TagKeys identifying the tags you want removed from the named resource.
15340	//
15341	// TagKeys is a required field
15342	TagKeys []*string `type:"list" required:"true"`
15343}
15344
15345// String returns the string representation
15346func (s RemoveTagsFromResourceInput) String() string {
15347	return awsutil.Prettify(s)
15348}
15349
15350// GoString returns the string representation
15351func (s RemoveTagsFromResourceInput) GoString() string {
15352	return s.String()
15353}
15354
15355// Validate inspects the fields of the type to determine if they are valid.
15356func (s *RemoveTagsFromResourceInput) Validate() error {
15357	invalidParams := request.ErrInvalidParams{Context: "RemoveTagsFromResourceInput"}
15358	if s.ResourceName == nil {
15359		invalidParams.Add(request.NewErrParamRequired("ResourceName"))
15360	}
15361	if s.TagKeys == nil {
15362		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
15363	}
15364
15365	if invalidParams.Len() > 0 {
15366		return invalidParams
15367	}
15368	return nil
15369}
15370
15371// SetResourceName sets the ResourceName field's value.
15372func (s *RemoveTagsFromResourceInput) SetResourceName(v string) *RemoveTagsFromResourceInput {
15373	s.ResourceName = &v
15374	return s
15375}
15376
15377// SetTagKeys sets the TagKeys field's value.
15378func (s *RemoveTagsFromResourceInput) SetTagKeys(v []*string) *RemoveTagsFromResourceInput {
15379	s.TagKeys = v
15380	return s
15381}
15382
15383// Contains all of the attributes of a specific Redis replication group.
15384type ReplicationGroup struct {
15385	_ struct{} `type:"structure"`
15386
15387	// The ARN (Amazon Resource Name) of the replication group.
15388	ARN *string `type:"string"`
15389
15390	// A flag that enables encryption at-rest when set to true.
15391	//
15392	// You cannot modify the value of AtRestEncryptionEnabled after the cluster
15393	// is created. To enable encryption at-rest on a cluster you must set AtRestEncryptionEnabled
15394	// to true when you create a cluster.
15395	//
15396	// Required: Only available when creating a replication group in an Amazon VPC
15397	// using redis version 3.2.6, 4.x or later.
15398	//
15399	// Default: false
15400	AtRestEncryptionEnabled *bool `type:"boolean"`
15401
15402	// A flag that enables using an AuthToken (password) when issuing Redis commands.
15403	//
15404	// Default: false
15405	AuthTokenEnabled *bool `type:"boolean"`
15406
15407	// The date the auth token was last modified
15408	AuthTokenLastModifiedDate *time.Time `type:"timestamp"`
15409
15410	// Indicates the status of automatic failover for this Redis replication group.
15411	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
15412
15413	// The name of the compute and memory capacity node type for each node in the
15414	// replication group.
15415	CacheNodeType *string `type:"string"`
15416
15417	// A flag indicating whether or not this replication group is cluster enabled;
15418	// i.e., whether its data can be partitioned across multiple shards (API/CLI:
15419	// node groups).
15420	//
15421	// Valid values: true | false
15422	ClusterEnabled *bool `type:"boolean"`
15423
15424	// The configuration endpoint for this replication group. Use the configuration
15425	// endpoint to connect to this replication group.
15426	ConfigurationEndpoint *Endpoint `type:"structure"`
15427
15428	// The user supplied description of the replication group.
15429	Description *string `type:"string"`
15430
15431	// The name of the Global Datastore and role of this replication group in the
15432	// Global Datastore.
15433	GlobalReplicationGroupInfo *GlobalReplicationGroupInfo `type:"structure"`
15434
15435	// The ID of the KMS key used to encrypt the disk in the cluster.
15436	KmsKeyId *string `type:"string"`
15437
15438	// The names of all the cache clusters that are part of this replication group.
15439	MemberClusters []*string `locationNameList:"ClusterId" type:"list"`
15440
15441	// A flag indicating if you have Multi-AZ enabled to enhance fault tolerance.
15442	// For more information, see Minimizing Downtime: Multi-AZ (http://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/AutoFailover.html)
15443	MultiAZ *string `type:"string" enum:"MultiAZStatus"`
15444
15445	// A list of node groups in this replication group. For Redis (cluster mode
15446	// disabled) replication groups, this is a single-element list. For Redis (cluster
15447	// mode enabled) replication groups, the list contains an entry for each node
15448	// group (shard).
15449	NodeGroups []*NodeGroup `locationNameList:"NodeGroup" type:"list"`
15450
15451	// A group of settings to be applied to the replication group, either immediately
15452	// or during the next maintenance window.
15453	PendingModifiedValues *ReplicationGroupPendingModifiedValues `type:"structure"`
15454
15455	// The identifier for the replication group.
15456	ReplicationGroupId *string `type:"string"`
15457
15458	// The number of days for which ElastiCache retains automatic cluster snapshots
15459	// before deleting them. For example, if you set SnapshotRetentionLimit to 5,
15460	// a snapshot that was taken today is retained for 5 days before being deleted.
15461	//
15462	// If the value of SnapshotRetentionLimit is set to zero (0), backups are turned
15463	// off.
15464	SnapshotRetentionLimit *int64 `type:"integer"`
15465
15466	// The daily time range (in UTC) during which ElastiCache begins taking a daily
15467	// snapshot of your node group (shard).
15468	//
15469	// Example: 05:00-09:00
15470	//
15471	// If you do not specify this parameter, ElastiCache automatically chooses an
15472	// appropriate time range.
15473	//
15474	// This parameter is only valid if the Engine parameter is redis.
15475	SnapshotWindow *string `type:"string"`
15476
15477	// The cluster ID that is used as the daily snapshot source for the replication
15478	// group.
15479	SnapshottingClusterId *string `type:"string"`
15480
15481	// The current state of this replication group - creating, available, modifying,
15482	// deleting, create-failed, snapshotting.
15483	Status *string `type:"string"`
15484
15485	// A flag that enables in-transit encryption when set to true.
15486	//
15487	// You cannot modify the value of TransitEncryptionEnabled after the cluster
15488	// is created. To enable in-transit encryption on a cluster you must set TransitEncryptionEnabled
15489	// to true when you create a cluster.
15490	//
15491	// Required: Only available when creating a replication group in an Amazon VPC
15492	// using redis version 3.2.6, 4.x or later.
15493	//
15494	// Default: false
15495	TransitEncryptionEnabled *bool `type:"boolean"`
15496}
15497
15498// String returns the string representation
15499func (s ReplicationGroup) String() string {
15500	return awsutil.Prettify(s)
15501}
15502
15503// GoString returns the string representation
15504func (s ReplicationGroup) GoString() string {
15505	return s.String()
15506}
15507
15508// SetARN sets the ARN field's value.
15509func (s *ReplicationGroup) SetARN(v string) *ReplicationGroup {
15510	s.ARN = &v
15511	return s
15512}
15513
15514// SetAtRestEncryptionEnabled sets the AtRestEncryptionEnabled field's value.
15515func (s *ReplicationGroup) SetAtRestEncryptionEnabled(v bool) *ReplicationGroup {
15516	s.AtRestEncryptionEnabled = &v
15517	return s
15518}
15519
15520// SetAuthTokenEnabled sets the AuthTokenEnabled field's value.
15521func (s *ReplicationGroup) SetAuthTokenEnabled(v bool) *ReplicationGroup {
15522	s.AuthTokenEnabled = &v
15523	return s
15524}
15525
15526// SetAuthTokenLastModifiedDate sets the AuthTokenLastModifiedDate field's value.
15527func (s *ReplicationGroup) SetAuthTokenLastModifiedDate(v time.Time) *ReplicationGroup {
15528	s.AuthTokenLastModifiedDate = &v
15529	return s
15530}
15531
15532// SetAutomaticFailover sets the AutomaticFailover field's value.
15533func (s *ReplicationGroup) SetAutomaticFailover(v string) *ReplicationGroup {
15534	s.AutomaticFailover = &v
15535	return s
15536}
15537
15538// SetCacheNodeType sets the CacheNodeType field's value.
15539func (s *ReplicationGroup) SetCacheNodeType(v string) *ReplicationGroup {
15540	s.CacheNodeType = &v
15541	return s
15542}
15543
15544// SetClusterEnabled sets the ClusterEnabled field's value.
15545func (s *ReplicationGroup) SetClusterEnabled(v bool) *ReplicationGroup {
15546	s.ClusterEnabled = &v
15547	return s
15548}
15549
15550// SetConfigurationEndpoint sets the ConfigurationEndpoint field's value.
15551func (s *ReplicationGroup) SetConfigurationEndpoint(v *Endpoint) *ReplicationGroup {
15552	s.ConfigurationEndpoint = v
15553	return s
15554}
15555
15556// SetDescription sets the Description field's value.
15557func (s *ReplicationGroup) SetDescription(v string) *ReplicationGroup {
15558	s.Description = &v
15559	return s
15560}
15561
15562// SetGlobalReplicationGroupInfo sets the GlobalReplicationGroupInfo field's value.
15563func (s *ReplicationGroup) SetGlobalReplicationGroupInfo(v *GlobalReplicationGroupInfo) *ReplicationGroup {
15564	s.GlobalReplicationGroupInfo = v
15565	return s
15566}
15567
15568// SetKmsKeyId sets the KmsKeyId field's value.
15569func (s *ReplicationGroup) SetKmsKeyId(v string) *ReplicationGroup {
15570	s.KmsKeyId = &v
15571	return s
15572}
15573
15574// SetMemberClusters sets the MemberClusters field's value.
15575func (s *ReplicationGroup) SetMemberClusters(v []*string) *ReplicationGroup {
15576	s.MemberClusters = v
15577	return s
15578}
15579
15580// SetMultiAZ sets the MultiAZ field's value.
15581func (s *ReplicationGroup) SetMultiAZ(v string) *ReplicationGroup {
15582	s.MultiAZ = &v
15583	return s
15584}
15585
15586// SetNodeGroups sets the NodeGroups field's value.
15587func (s *ReplicationGroup) SetNodeGroups(v []*NodeGroup) *ReplicationGroup {
15588	s.NodeGroups = v
15589	return s
15590}
15591
15592// SetPendingModifiedValues sets the PendingModifiedValues field's value.
15593func (s *ReplicationGroup) SetPendingModifiedValues(v *ReplicationGroupPendingModifiedValues) *ReplicationGroup {
15594	s.PendingModifiedValues = v
15595	return s
15596}
15597
15598// SetReplicationGroupId sets the ReplicationGroupId field's value.
15599func (s *ReplicationGroup) SetReplicationGroupId(v string) *ReplicationGroup {
15600	s.ReplicationGroupId = &v
15601	return s
15602}
15603
15604// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
15605func (s *ReplicationGroup) SetSnapshotRetentionLimit(v int64) *ReplicationGroup {
15606	s.SnapshotRetentionLimit = &v
15607	return s
15608}
15609
15610// SetSnapshotWindow sets the SnapshotWindow field's value.
15611func (s *ReplicationGroup) SetSnapshotWindow(v string) *ReplicationGroup {
15612	s.SnapshotWindow = &v
15613	return s
15614}
15615
15616// SetSnapshottingClusterId sets the SnapshottingClusterId field's value.
15617func (s *ReplicationGroup) SetSnapshottingClusterId(v string) *ReplicationGroup {
15618	s.SnapshottingClusterId = &v
15619	return s
15620}
15621
15622// SetStatus sets the Status field's value.
15623func (s *ReplicationGroup) SetStatus(v string) *ReplicationGroup {
15624	s.Status = &v
15625	return s
15626}
15627
15628// SetTransitEncryptionEnabled sets the TransitEncryptionEnabled field's value.
15629func (s *ReplicationGroup) SetTransitEncryptionEnabled(v bool) *ReplicationGroup {
15630	s.TransitEncryptionEnabled = &v
15631	return s
15632}
15633
15634// The settings to be applied to the Redis replication group, either immediately
15635// or during the next maintenance window.
15636type ReplicationGroupPendingModifiedValues struct {
15637	_ struct{} `type:"structure"`
15638
15639	// The auth token status
15640	AuthTokenStatus *string `type:"string" enum:"AuthTokenUpdateStatus"`
15641
15642	// Indicates the status of automatic failover for this Redis replication group.
15643	AutomaticFailoverStatus *string `type:"string" enum:"PendingAutomaticFailoverStatus"`
15644
15645	// The primary cluster ID that is applied immediately (if --apply-immediately
15646	// was specified), or during the next maintenance window.
15647	PrimaryClusterId *string `type:"string"`
15648
15649	// The status of an online resharding operation.
15650	Resharding *ReshardingStatus `type:"structure"`
15651}
15652
15653// String returns the string representation
15654func (s ReplicationGroupPendingModifiedValues) String() string {
15655	return awsutil.Prettify(s)
15656}
15657
15658// GoString returns the string representation
15659func (s ReplicationGroupPendingModifiedValues) GoString() string {
15660	return s.String()
15661}
15662
15663// SetAuthTokenStatus sets the AuthTokenStatus field's value.
15664func (s *ReplicationGroupPendingModifiedValues) SetAuthTokenStatus(v string) *ReplicationGroupPendingModifiedValues {
15665	s.AuthTokenStatus = &v
15666	return s
15667}
15668
15669// SetAutomaticFailoverStatus sets the AutomaticFailoverStatus field's value.
15670func (s *ReplicationGroupPendingModifiedValues) SetAutomaticFailoverStatus(v string) *ReplicationGroupPendingModifiedValues {
15671	s.AutomaticFailoverStatus = &v
15672	return s
15673}
15674
15675// SetPrimaryClusterId sets the PrimaryClusterId field's value.
15676func (s *ReplicationGroupPendingModifiedValues) SetPrimaryClusterId(v string) *ReplicationGroupPendingModifiedValues {
15677	s.PrimaryClusterId = &v
15678	return s
15679}
15680
15681// SetResharding sets the Resharding field's value.
15682func (s *ReplicationGroupPendingModifiedValues) SetResharding(v *ReshardingStatus) *ReplicationGroupPendingModifiedValues {
15683	s.Resharding = v
15684	return s
15685}
15686
15687// Represents the output of a PurchaseReservedCacheNodesOffering operation.
15688type ReservedCacheNode struct {
15689	_ struct{} `type:"structure"`
15690
15691	// The number of cache nodes that have been reserved.
15692	CacheNodeCount *int64 `type:"integer"`
15693
15694	// The cache node type for the reserved cache nodes.
15695	//
15696	// The following node types are supported by ElastiCache. Generally speaking,
15697	// the current generation types provide more memory and computational power
15698	// at lower cost when compared to their equivalent previous generation counterparts.
15699	//
15700	//    * General purpose: Current generation: M5 node types: cache.m5.large,
15701	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
15702	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
15703	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
15704	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
15705	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
15706	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
15707	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
15708	//
15709	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
15710	//    cache.c1.xlarge
15711	//
15712	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
15713	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
15714	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
15715	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
15716	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
15717	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
15718	//    cache.r3.8xlarge
15719	//
15720	// Additional node type info
15721	//
15722	//    * All current generation instance types are created in Amazon VPC by default.
15723	//
15724	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
15725	//
15726	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
15727	//
15728	//    * Redis configuration variables appendonly and appendfsync are not supported
15729	//    on Redis version 2.8.22 and later.
15730	CacheNodeType *string `type:"string"`
15731
15732	// The duration of the reservation in seconds.
15733	Duration *int64 `type:"integer"`
15734
15735	// The fixed price charged for this reserved cache node.
15736	FixedPrice *float64 `type:"double"`
15737
15738	// The offering type of this reserved cache node.
15739	OfferingType *string `type:"string"`
15740
15741	// The description of the reserved cache node.
15742	ProductDescription *string `type:"string"`
15743
15744	// The recurring price charged to run this reserved cache node.
15745	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`
15746
15747	// The Amazon Resource Name (ARN) of the reserved cache node.
15748	//
15749	// Example: arn:aws:elasticache:us-east-1:123456789012:reserved-instance:ri-2017-03-27-08-33-25-582
15750	ReservationARN *string `type:"string"`
15751
15752	// The unique identifier for the reservation.
15753	ReservedCacheNodeId *string `type:"string"`
15754
15755	// The offering identifier.
15756	ReservedCacheNodesOfferingId *string `type:"string"`
15757
15758	// The time the reservation started.
15759	StartTime *time.Time `type:"timestamp"`
15760
15761	// The state of the reserved cache node.
15762	State *string `type:"string"`
15763
15764	// The hourly price charged for this reserved cache node.
15765	UsagePrice *float64 `type:"double"`
15766}
15767
15768// String returns the string representation
15769func (s ReservedCacheNode) String() string {
15770	return awsutil.Prettify(s)
15771}
15772
15773// GoString returns the string representation
15774func (s ReservedCacheNode) GoString() string {
15775	return s.String()
15776}
15777
15778// SetCacheNodeCount sets the CacheNodeCount field's value.
15779func (s *ReservedCacheNode) SetCacheNodeCount(v int64) *ReservedCacheNode {
15780	s.CacheNodeCount = &v
15781	return s
15782}
15783
15784// SetCacheNodeType sets the CacheNodeType field's value.
15785func (s *ReservedCacheNode) SetCacheNodeType(v string) *ReservedCacheNode {
15786	s.CacheNodeType = &v
15787	return s
15788}
15789
15790// SetDuration sets the Duration field's value.
15791func (s *ReservedCacheNode) SetDuration(v int64) *ReservedCacheNode {
15792	s.Duration = &v
15793	return s
15794}
15795
15796// SetFixedPrice sets the FixedPrice field's value.
15797func (s *ReservedCacheNode) SetFixedPrice(v float64) *ReservedCacheNode {
15798	s.FixedPrice = &v
15799	return s
15800}
15801
15802// SetOfferingType sets the OfferingType field's value.
15803func (s *ReservedCacheNode) SetOfferingType(v string) *ReservedCacheNode {
15804	s.OfferingType = &v
15805	return s
15806}
15807
15808// SetProductDescription sets the ProductDescription field's value.
15809func (s *ReservedCacheNode) SetProductDescription(v string) *ReservedCacheNode {
15810	s.ProductDescription = &v
15811	return s
15812}
15813
15814// SetRecurringCharges sets the RecurringCharges field's value.
15815func (s *ReservedCacheNode) SetRecurringCharges(v []*RecurringCharge) *ReservedCacheNode {
15816	s.RecurringCharges = v
15817	return s
15818}
15819
15820// SetReservationARN sets the ReservationARN field's value.
15821func (s *ReservedCacheNode) SetReservationARN(v string) *ReservedCacheNode {
15822	s.ReservationARN = &v
15823	return s
15824}
15825
15826// SetReservedCacheNodeId sets the ReservedCacheNodeId field's value.
15827func (s *ReservedCacheNode) SetReservedCacheNodeId(v string) *ReservedCacheNode {
15828	s.ReservedCacheNodeId = &v
15829	return s
15830}
15831
15832// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
15833func (s *ReservedCacheNode) SetReservedCacheNodesOfferingId(v string) *ReservedCacheNode {
15834	s.ReservedCacheNodesOfferingId = &v
15835	return s
15836}
15837
15838// SetStartTime sets the StartTime field's value.
15839func (s *ReservedCacheNode) SetStartTime(v time.Time) *ReservedCacheNode {
15840	s.StartTime = &v
15841	return s
15842}
15843
15844// SetState sets the State field's value.
15845func (s *ReservedCacheNode) SetState(v string) *ReservedCacheNode {
15846	s.State = &v
15847	return s
15848}
15849
15850// SetUsagePrice sets the UsagePrice field's value.
15851func (s *ReservedCacheNode) SetUsagePrice(v float64) *ReservedCacheNode {
15852	s.UsagePrice = &v
15853	return s
15854}
15855
15856// Describes all of the attributes of a reserved cache node offering.
15857type ReservedCacheNodesOffering struct {
15858	_ struct{} `type:"structure"`
15859
15860	// The cache node type for the reserved cache node.
15861	//
15862	// The following node types are supported by ElastiCache. Generally speaking,
15863	// the current generation types provide more memory and computational power
15864	// at lower cost when compared to their equivalent previous generation counterparts.
15865	//
15866	//    * General purpose: Current generation: M5 node types: cache.m5.large,
15867	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
15868	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
15869	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
15870	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
15871	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
15872	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
15873	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
15874	//
15875	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
15876	//    cache.c1.xlarge
15877	//
15878	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
15879	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
15880	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
15881	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
15882	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
15883	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
15884	//    cache.r3.8xlarge
15885	//
15886	// Additional node type info
15887	//
15888	//    * All current generation instance types are created in Amazon VPC by default.
15889	//
15890	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
15891	//
15892	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
15893	//
15894	//    * Redis configuration variables appendonly and appendfsync are not supported
15895	//    on Redis version 2.8.22 and later.
15896	CacheNodeType *string `type:"string"`
15897
15898	// The duration of the offering. in seconds.
15899	Duration *int64 `type:"integer"`
15900
15901	// The fixed price charged for this offering.
15902	FixedPrice *float64 `type:"double"`
15903
15904	// The offering type.
15905	OfferingType *string `type:"string"`
15906
15907	// The cache engine used by the offering.
15908	ProductDescription *string `type:"string"`
15909
15910	// The recurring price charged to run this reserved cache node.
15911	RecurringCharges []*RecurringCharge `locationNameList:"RecurringCharge" type:"list"`
15912
15913	// A unique identifier for the reserved cache node offering.
15914	ReservedCacheNodesOfferingId *string `type:"string"`
15915
15916	// The hourly price charged for this offering.
15917	UsagePrice *float64 `type:"double"`
15918}
15919
15920// String returns the string representation
15921func (s ReservedCacheNodesOffering) String() string {
15922	return awsutil.Prettify(s)
15923}
15924
15925// GoString returns the string representation
15926func (s ReservedCacheNodesOffering) GoString() string {
15927	return s.String()
15928}
15929
15930// SetCacheNodeType sets the CacheNodeType field's value.
15931func (s *ReservedCacheNodesOffering) SetCacheNodeType(v string) *ReservedCacheNodesOffering {
15932	s.CacheNodeType = &v
15933	return s
15934}
15935
15936// SetDuration sets the Duration field's value.
15937func (s *ReservedCacheNodesOffering) SetDuration(v int64) *ReservedCacheNodesOffering {
15938	s.Duration = &v
15939	return s
15940}
15941
15942// SetFixedPrice sets the FixedPrice field's value.
15943func (s *ReservedCacheNodesOffering) SetFixedPrice(v float64) *ReservedCacheNodesOffering {
15944	s.FixedPrice = &v
15945	return s
15946}
15947
15948// SetOfferingType sets the OfferingType field's value.
15949func (s *ReservedCacheNodesOffering) SetOfferingType(v string) *ReservedCacheNodesOffering {
15950	s.OfferingType = &v
15951	return s
15952}
15953
15954// SetProductDescription sets the ProductDescription field's value.
15955func (s *ReservedCacheNodesOffering) SetProductDescription(v string) *ReservedCacheNodesOffering {
15956	s.ProductDescription = &v
15957	return s
15958}
15959
15960// SetRecurringCharges sets the RecurringCharges field's value.
15961func (s *ReservedCacheNodesOffering) SetRecurringCharges(v []*RecurringCharge) *ReservedCacheNodesOffering {
15962	s.RecurringCharges = v
15963	return s
15964}
15965
15966// SetReservedCacheNodesOfferingId sets the ReservedCacheNodesOfferingId field's value.
15967func (s *ReservedCacheNodesOffering) SetReservedCacheNodesOfferingId(v string) *ReservedCacheNodesOffering {
15968	s.ReservedCacheNodesOfferingId = &v
15969	return s
15970}
15971
15972// SetUsagePrice sets the UsagePrice field's value.
15973func (s *ReservedCacheNodesOffering) SetUsagePrice(v float64) *ReservedCacheNodesOffering {
15974	s.UsagePrice = &v
15975	return s
15976}
15977
15978// Represents the input of a ResetCacheParameterGroup operation.
15979type ResetCacheParameterGroupInput struct {
15980	_ struct{} `type:"structure"`
15981
15982	// The name of the cache parameter group to reset.
15983	//
15984	// CacheParameterGroupName is a required field
15985	CacheParameterGroupName *string `type:"string" required:"true"`
15986
15987	// An array of parameter names to reset to their default values. If ResetAllParameters
15988	// is true, do not use ParameterNameValues. If ResetAllParameters is false,
15989	// you must specify the name of at least one parameter to reset.
15990	ParameterNameValues []*ParameterNameValue `locationNameList:"ParameterNameValue" type:"list"`
15991
15992	// If true, all parameters in the cache parameter group are reset to their default
15993	// values. If false, only the parameters listed by ParameterNameValues are reset
15994	// to their default values.
15995	//
15996	// Valid values: true | false
15997	ResetAllParameters *bool `type:"boolean"`
15998}
15999
16000// String returns the string representation
16001func (s ResetCacheParameterGroupInput) String() string {
16002	return awsutil.Prettify(s)
16003}
16004
16005// GoString returns the string representation
16006func (s ResetCacheParameterGroupInput) GoString() string {
16007	return s.String()
16008}
16009
16010// Validate inspects the fields of the type to determine if they are valid.
16011func (s *ResetCacheParameterGroupInput) Validate() error {
16012	invalidParams := request.ErrInvalidParams{Context: "ResetCacheParameterGroupInput"}
16013	if s.CacheParameterGroupName == nil {
16014		invalidParams.Add(request.NewErrParamRequired("CacheParameterGroupName"))
16015	}
16016
16017	if invalidParams.Len() > 0 {
16018		return invalidParams
16019	}
16020	return nil
16021}
16022
16023// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
16024func (s *ResetCacheParameterGroupInput) SetCacheParameterGroupName(v string) *ResetCacheParameterGroupInput {
16025	s.CacheParameterGroupName = &v
16026	return s
16027}
16028
16029// SetParameterNameValues sets the ParameterNameValues field's value.
16030func (s *ResetCacheParameterGroupInput) SetParameterNameValues(v []*ParameterNameValue) *ResetCacheParameterGroupInput {
16031	s.ParameterNameValues = v
16032	return s
16033}
16034
16035// SetResetAllParameters sets the ResetAllParameters field's value.
16036func (s *ResetCacheParameterGroupInput) SetResetAllParameters(v bool) *ResetCacheParameterGroupInput {
16037	s.ResetAllParameters = &v
16038	return s
16039}
16040
16041// A list of PreferredAvailabilityZones objects that specifies the configuration
16042// of a node group in the resharded cluster.
16043type ReshardingConfiguration struct {
16044	_ struct{} `type:"structure"`
16045
16046	// Either the ElastiCache for Redis supplied 4-digit id or a user supplied id
16047	// for the node group these configuration values apply to.
16048	NodeGroupId *string `min:"1" type:"string"`
16049
16050	// A list of preferred availability zones for the nodes in this cluster.
16051	PreferredAvailabilityZones []*string `locationNameList:"AvailabilityZone" type:"list"`
16052}
16053
16054// String returns the string representation
16055func (s ReshardingConfiguration) String() string {
16056	return awsutil.Prettify(s)
16057}
16058
16059// GoString returns the string representation
16060func (s ReshardingConfiguration) GoString() string {
16061	return s.String()
16062}
16063
16064// Validate inspects the fields of the type to determine if they are valid.
16065func (s *ReshardingConfiguration) Validate() error {
16066	invalidParams := request.ErrInvalidParams{Context: "ReshardingConfiguration"}
16067	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
16068		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
16069	}
16070
16071	if invalidParams.Len() > 0 {
16072		return invalidParams
16073	}
16074	return nil
16075}
16076
16077// SetNodeGroupId sets the NodeGroupId field's value.
16078func (s *ReshardingConfiguration) SetNodeGroupId(v string) *ReshardingConfiguration {
16079	s.NodeGroupId = &v
16080	return s
16081}
16082
16083// SetPreferredAvailabilityZones sets the PreferredAvailabilityZones field's value.
16084func (s *ReshardingConfiguration) SetPreferredAvailabilityZones(v []*string) *ReshardingConfiguration {
16085	s.PreferredAvailabilityZones = v
16086	return s
16087}
16088
16089// The status of an online resharding operation.
16090type ReshardingStatus struct {
16091	_ struct{} `type:"structure"`
16092
16093	// Represents the progress of an online resharding operation.
16094	SlotMigration *SlotMigration `type:"structure"`
16095}
16096
16097// String returns the string representation
16098func (s ReshardingStatus) String() string {
16099	return awsutil.Prettify(s)
16100}
16101
16102// GoString returns the string representation
16103func (s ReshardingStatus) GoString() string {
16104	return s.String()
16105}
16106
16107// SetSlotMigration sets the SlotMigration field's value.
16108func (s *ReshardingStatus) SetSlotMigration(v *SlotMigration) *ReshardingStatus {
16109	s.SlotMigration = v
16110	return s
16111}
16112
16113// Represents the input of a RevokeCacheSecurityGroupIngress operation.
16114type RevokeCacheSecurityGroupIngressInput struct {
16115	_ struct{} `type:"structure"`
16116
16117	// The name of the cache security group to revoke ingress from.
16118	//
16119	// CacheSecurityGroupName is a required field
16120	CacheSecurityGroupName *string `type:"string" required:"true"`
16121
16122	// The name of the Amazon EC2 security group to revoke access from.
16123	//
16124	// EC2SecurityGroupName is a required field
16125	EC2SecurityGroupName *string `type:"string" required:"true"`
16126
16127	// The AWS account number of the Amazon EC2 security group owner. Note that
16128	// this is not the same thing as an AWS access key ID - you must provide a valid
16129	// AWS account number for this parameter.
16130	//
16131	// EC2SecurityGroupOwnerId is a required field
16132	EC2SecurityGroupOwnerId *string `type:"string" required:"true"`
16133}
16134
16135// String returns the string representation
16136func (s RevokeCacheSecurityGroupIngressInput) String() string {
16137	return awsutil.Prettify(s)
16138}
16139
16140// GoString returns the string representation
16141func (s RevokeCacheSecurityGroupIngressInput) GoString() string {
16142	return s.String()
16143}
16144
16145// Validate inspects the fields of the type to determine if they are valid.
16146func (s *RevokeCacheSecurityGroupIngressInput) Validate() error {
16147	invalidParams := request.ErrInvalidParams{Context: "RevokeCacheSecurityGroupIngressInput"}
16148	if s.CacheSecurityGroupName == nil {
16149		invalidParams.Add(request.NewErrParamRequired("CacheSecurityGroupName"))
16150	}
16151	if s.EC2SecurityGroupName == nil {
16152		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupName"))
16153	}
16154	if s.EC2SecurityGroupOwnerId == nil {
16155		invalidParams.Add(request.NewErrParamRequired("EC2SecurityGroupOwnerId"))
16156	}
16157
16158	if invalidParams.Len() > 0 {
16159		return invalidParams
16160	}
16161	return nil
16162}
16163
16164// SetCacheSecurityGroupName sets the CacheSecurityGroupName field's value.
16165func (s *RevokeCacheSecurityGroupIngressInput) SetCacheSecurityGroupName(v string) *RevokeCacheSecurityGroupIngressInput {
16166	s.CacheSecurityGroupName = &v
16167	return s
16168}
16169
16170// SetEC2SecurityGroupName sets the EC2SecurityGroupName field's value.
16171func (s *RevokeCacheSecurityGroupIngressInput) SetEC2SecurityGroupName(v string) *RevokeCacheSecurityGroupIngressInput {
16172	s.EC2SecurityGroupName = &v
16173	return s
16174}
16175
16176// SetEC2SecurityGroupOwnerId sets the EC2SecurityGroupOwnerId field's value.
16177func (s *RevokeCacheSecurityGroupIngressInput) SetEC2SecurityGroupOwnerId(v string) *RevokeCacheSecurityGroupIngressInput {
16178	s.EC2SecurityGroupOwnerId = &v
16179	return s
16180}
16181
16182type RevokeCacheSecurityGroupIngressOutput struct {
16183	_ struct{} `type:"structure"`
16184
16185	// Represents the output of one of the following operations:
16186	//
16187	//    * AuthorizeCacheSecurityGroupIngress
16188	//
16189	//    * CreateCacheSecurityGroup
16190	//
16191	//    * RevokeCacheSecurityGroupIngress
16192	CacheSecurityGroup *CacheSecurityGroup `type:"structure"`
16193}
16194
16195// String returns the string representation
16196func (s RevokeCacheSecurityGroupIngressOutput) String() string {
16197	return awsutil.Prettify(s)
16198}
16199
16200// GoString returns the string representation
16201func (s RevokeCacheSecurityGroupIngressOutput) GoString() string {
16202	return s.String()
16203}
16204
16205// SetCacheSecurityGroup sets the CacheSecurityGroup field's value.
16206func (s *RevokeCacheSecurityGroupIngressOutput) SetCacheSecurityGroup(v *CacheSecurityGroup) *RevokeCacheSecurityGroupIngressOutput {
16207	s.CacheSecurityGroup = v
16208	return s
16209}
16210
16211// Represents a single cache security group and its status.
16212type SecurityGroupMembership struct {
16213	_ struct{} `type:"structure"`
16214
16215	// The identifier of the cache security group.
16216	SecurityGroupId *string `type:"string"`
16217
16218	// The status of the cache security group membership. The status changes whenever
16219	// a cache security group is modified, or when the cache security groups assigned
16220	// to a cluster are modified.
16221	Status *string `type:"string"`
16222}
16223
16224// String returns the string representation
16225func (s SecurityGroupMembership) String() string {
16226	return awsutil.Prettify(s)
16227}
16228
16229// GoString returns the string representation
16230func (s SecurityGroupMembership) GoString() string {
16231	return s.String()
16232}
16233
16234// SetSecurityGroupId sets the SecurityGroupId field's value.
16235func (s *SecurityGroupMembership) SetSecurityGroupId(v string) *SecurityGroupMembership {
16236	s.SecurityGroupId = &v
16237	return s
16238}
16239
16240// SetStatus sets the Status field's value.
16241func (s *SecurityGroupMembership) SetStatus(v string) *SecurityGroupMembership {
16242	s.Status = &v
16243	return s
16244}
16245
16246// An update that you can apply to your Redis clusters.
16247type ServiceUpdate struct {
16248	_ struct{} `type:"structure"`
16249
16250	// Indicates whether the service update will be automatically applied once the
16251	// recommended apply-by date has expired.
16252	AutoUpdateAfterRecommendedApplyByDate *bool `type:"boolean"`
16253
16254	// The Elasticache engine to which the update applies. Either Redis or Memcached
16255	Engine *string `type:"string"`
16256
16257	// The Elasticache engine version to which the update applies. Either Redis
16258	// or Memcached engine version
16259	EngineVersion *string `type:"string"`
16260
16261	// The estimated length of time the service update will take
16262	EstimatedUpdateTime *string `type:"string"`
16263
16264	// Provides details of the service update
16265	ServiceUpdateDescription *string `type:"string"`
16266
16267	// The date after which the service update is no longer available
16268	ServiceUpdateEndDate *time.Time `type:"timestamp"`
16269
16270	// The unique ID of the service update
16271	ServiceUpdateName *string `type:"string"`
16272
16273	// The recommendend date to apply the service update in order to ensure compliance.
16274	// For information on compliance, see Self-Service Security Updates for Compliance
16275	// (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-compliance.html#elasticache-compliance-self-service).
16276	ServiceUpdateRecommendedApplyByDate *time.Time `type:"timestamp"`
16277
16278	// The date when the service update is initially available
16279	ServiceUpdateReleaseDate *time.Time `type:"timestamp"`
16280
16281	// The severity of the service update
16282	ServiceUpdateSeverity *string `type:"string" enum:"ServiceUpdateSeverity"`
16283
16284	// The status of the service update
16285	ServiceUpdateStatus *string `type:"string" enum:"ServiceUpdateStatus"`
16286
16287	// Reflects the nature of the service update
16288	ServiceUpdateType *string `type:"string" enum:"ServiceUpdateType"`
16289}
16290
16291// String returns the string representation
16292func (s ServiceUpdate) String() string {
16293	return awsutil.Prettify(s)
16294}
16295
16296// GoString returns the string representation
16297func (s ServiceUpdate) GoString() string {
16298	return s.String()
16299}
16300
16301// SetAutoUpdateAfterRecommendedApplyByDate sets the AutoUpdateAfterRecommendedApplyByDate field's value.
16302func (s *ServiceUpdate) SetAutoUpdateAfterRecommendedApplyByDate(v bool) *ServiceUpdate {
16303	s.AutoUpdateAfterRecommendedApplyByDate = &v
16304	return s
16305}
16306
16307// SetEngine sets the Engine field's value.
16308func (s *ServiceUpdate) SetEngine(v string) *ServiceUpdate {
16309	s.Engine = &v
16310	return s
16311}
16312
16313// SetEngineVersion sets the EngineVersion field's value.
16314func (s *ServiceUpdate) SetEngineVersion(v string) *ServiceUpdate {
16315	s.EngineVersion = &v
16316	return s
16317}
16318
16319// SetEstimatedUpdateTime sets the EstimatedUpdateTime field's value.
16320func (s *ServiceUpdate) SetEstimatedUpdateTime(v string) *ServiceUpdate {
16321	s.EstimatedUpdateTime = &v
16322	return s
16323}
16324
16325// SetServiceUpdateDescription sets the ServiceUpdateDescription field's value.
16326func (s *ServiceUpdate) SetServiceUpdateDescription(v string) *ServiceUpdate {
16327	s.ServiceUpdateDescription = &v
16328	return s
16329}
16330
16331// SetServiceUpdateEndDate sets the ServiceUpdateEndDate field's value.
16332func (s *ServiceUpdate) SetServiceUpdateEndDate(v time.Time) *ServiceUpdate {
16333	s.ServiceUpdateEndDate = &v
16334	return s
16335}
16336
16337// SetServiceUpdateName sets the ServiceUpdateName field's value.
16338func (s *ServiceUpdate) SetServiceUpdateName(v string) *ServiceUpdate {
16339	s.ServiceUpdateName = &v
16340	return s
16341}
16342
16343// SetServiceUpdateRecommendedApplyByDate sets the ServiceUpdateRecommendedApplyByDate field's value.
16344func (s *ServiceUpdate) SetServiceUpdateRecommendedApplyByDate(v time.Time) *ServiceUpdate {
16345	s.ServiceUpdateRecommendedApplyByDate = &v
16346	return s
16347}
16348
16349// SetServiceUpdateReleaseDate sets the ServiceUpdateReleaseDate field's value.
16350func (s *ServiceUpdate) SetServiceUpdateReleaseDate(v time.Time) *ServiceUpdate {
16351	s.ServiceUpdateReleaseDate = &v
16352	return s
16353}
16354
16355// SetServiceUpdateSeverity sets the ServiceUpdateSeverity field's value.
16356func (s *ServiceUpdate) SetServiceUpdateSeverity(v string) *ServiceUpdate {
16357	s.ServiceUpdateSeverity = &v
16358	return s
16359}
16360
16361// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
16362func (s *ServiceUpdate) SetServiceUpdateStatus(v string) *ServiceUpdate {
16363	s.ServiceUpdateStatus = &v
16364	return s
16365}
16366
16367// SetServiceUpdateType sets the ServiceUpdateType field's value.
16368func (s *ServiceUpdate) SetServiceUpdateType(v string) *ServiceUpdate {
16369	s.ServiceUpdateType = &v
16370	return s
16371}
16372
16373// Represents the progress of an online resharding operation.
16374type SlotMigration struct {
16375	_ struct{} `type:"structure"`
16376
16377	// The percentage of the slot migration that is complete.
16378	ProgressPercentage *float64 `type:"double"`
16379}
16380
16381// String returns the string representation
16382func (s SlotMigration) String() string {
16383	return awsutil.Prettify(s)
16384}
16385
16386// GoString returns the string representation
16387func (s SlotMigration) GoString() string {
16388	return s.String()
16389}
16390
16391// SetProgressPercentage sets the ProgressPercentage field's value.
16392func (s *SlotMigration) SetProgressPercentage(v float64) *SlotMigration {
16393	s.ProgressPercentage = &v
16394	return s
16395}
16396
16397// Represents a copy of an entire Redis cluster as of the time when the snapshot
16398// was taken.
16399type Snapshot struct {
16400	_ struct{} `type:"structure"`
16401
16402	// The ARN (Amazon Resource Name) of the snapshot.
16403	ARN *string `type:"string"`
16404
16405	// This parameter is currently disabled.
16406	AutoMinorVersionUpgrade *bool `type:"boolean"`
16407
16408	// Indicates the status of automatic failover for the source Redis replication
16409	// group.
16410	AutomaticFailover *string `type:"string" enum:"AutomaticFailoverStatus"`
16411
16412	// The date and time when the source cluster was created.
16413	CacheClusterCreateTime *time.Time `type:"timestamp"`
16414
16415	// The user-supplied identifier of the source cluster.
16416	CacheClusterId *string `type:"string"`
16417
16418	// The name of the compute and memory capacity node type for the source cluster.
16419	//
16420	// The following node types are supported by ElastiCache. Generally speaking,
16421	// the current generation types provide more memory and computational power
16422	// at lower cost when compared to their equivalent previous generation counterparts.
16423	//
16424	//    * General purpose: Current generation: M5 node types: cache.m5.large,
16425	//    cache.m5.xlarge, cache.m5.2xlarge, cache.m5.4xlarge, cache.m5.12xlarge,
16426	//    cache.m5.24xlarge M4 node types: cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge,
16427	//    cache.m4.4xlarge, cache.m4.10xlarge T3 node types: cache.t3.micro, cache.t3.small,
16428	//    cache.t3.medium T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium
16429	//    Previous generation: (not recommended) T1 node types: cache.t1.micro M1
16430	//    node types: cache.m1.small, cache.m1.medium, cache.m1.large, cache.m1.xlarge
16431	//    M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge, cache.m3.2xlarge
16432	//
16433	//    * Compute optimized: Previous generation: (not recommended) C1 node types:
16434	//    cache.c1.xlarge
16435	//
16436	//    * Memory optimized: Current generation: R5 node types: cache.r5.large,
16437	//    cache.r5.xlarge, cache.r5.2xlarge, cache.r5.4xlarge, cache.r5.12xlarge,
16438	//    cache.r5.24xlarge R4 node types: cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge,
16439	//    cache.r4.4xlarge, cache.r4.8xlarge, cache.r4.16xlarge Previous generation:
16440	//    (not recommended) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge
16441	//    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,
16442	//    cache.r3.8xlarge
16443	//
16444	// Additional node type info
16445	//
16446	//    * All current generation instance types are created in Amazon VPC by default.
16447	//
16448	//    * Redis append-only files (AOF) are not supported for T1 or T2 instances.
16449	//
16450	//    * Redis Multi-AZ with automatic failover is not supported on T1 instances.
16451	//
16452	//    * Redis configuration variables appendonly and appendfsync are not supported
16453	//    on Redis version 2.8.22 and later.
16454	CacheNodeType *string `type:"string"`
16455
16456	// The cache parameter group that is associated with the source cluster.
16457	CacheParameterGroupName *string `type:"string"`
16458
16459	// The name of the cache subnet group associated with the source cluster.
16460	CacheSubnetGroupName *string `type:"string"`
16461
16462	// The name of the cache engine (memcached or redis) used by the source cluster.
16463	Engine *string `type:"string"`
16464
16465	// The version of the cache engine version that is used by the source cluster.
16466	EngineVersion *string `type:"string"`
16467
16468	// The ID of the KMS key used to encrypt the snapshot.
16469	KmsKeyId *string `type:"string"`
16470
16471	// A list of the cache nodes in the source cluster.
16472	NodeSnapshots []*NodeSnapshot `locationNameList:"NodeSnapshot" type:"list"`
16473
16474	// The number of cache nodes in the source cluster.
16475	//
16476	// For clusters running Redis, this value must be 1. For clusters running Memcached,
16477	// this value must be between 1 and 20.
16478	NumCacheNodes *int64 `type:"integer"`
16479
16480	// The number of node groups (shards) in this snapshot. When restoring from
16481	// a snapshot, the number of node groups (shards) in the snapshot and in the
16482	// restored replication group must be the same.
16483	NumNodeGroups *int64 `type:"integer"`
16484
16485	// The port number used by each cache nodes in the source cluster.
16486	Port *int64 `type:"integer"`
16487
16488	// The name of the Availability Zone in which the source cluster is located.
16489	PreferredAvailabilityZone *string `type:"string"`
16490
16491	// Specifies the weekly time range during which maintenance on the cluster is
16492	// performed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi
16493	// (24H Clock UTC). The minimum maintenance window is a 60 minute period.
16494	//
16495	// Valid values for ddd are:
16496	//
16497	//    * sun
16498	//
16499	//    * mon
16500	//
16501	//    * tue
16502	//
16503	//    * wed
16504	//
16505	//    * thu
16506	//
16507	//    * fri
16508	//
16509	//    * sat
16510	//
16511	// Example: sun:23:00-mon:01:30
16512	PreferredMaintenanceWindow *string `type:"string"`
16513
16514	// A description of the source replication group.
16515	ReplicationGroupDescription *string `type:"string"`
16516
16517	// The unique identifier of the source replication group.
16518	ReplicationGroupId *string `type:"string"`
16519
16520	// The name of a snapshot. For an automatic snapshot, the name is system-generated.
16521	// For a manual snapshot, this is the user-provided name.
16522	SnapshotName *string `type:"string"`
16523
16524	// For an automatic snapshot, the number of days for which ElastiCache retains
16525	// the snapshot before deleting it.
16526	//
16527	// For manual snapshots, this field reflects the SnapshotRetentionLimit for
16528	// the source cluster when the snapshot was created. This field is otherwise
16529	// ignored: Manual snapshots do not expire, and can only be deleted using the
16530	// DeleteSnapshot operation.
16531	//
16532	// Important If the value of SnapshotRetentionLimit is set to zero (0), backups
16533	// are turned off.
16534	SnapshotRetentionLimit *int64 `type:"integer"`
16535
16536	// Indicates whether the snapshot is from an automatic backup (automated) or
16537	// was created manually (manual).
16538	SnapshotSource *string `type:"string"`
16539
16540	// The status of the snapshot. Valid values: creating | available | restoring
16541	// | copying | deleting.
16542	SnapshotStatus *string `type:"string"`
16543
16544	// The daily time range during which ElastiCache takes daily snapshots of the
16545	// source cluster.
16546	SnapshotWindow *string `type:"string"`
16547
16548	// The Amazon Resource Name (ARN) for the topic used by the source cluster for
16549	// publishing notifications.
16550	TopicArn *string `type:"string"`
16551
16552	// The Amazon Virtual Private Cloud identifier (VPC ID) of the cache subnet
16553	// group for the source cluster.
16554	VpcId *string `type:"string"`
16555}
16556
16557// String returns the string representation
16558func (s Snapshot) String() string {
16559	return awsutil.Prettify(s)
16560}
16561
16562// GoString returns the string representation
16563func (s Snapshot) GoString() string {
16564	return s.String()
16565}
16566
16567// SetARN sets the ARN field's value.
16568func (s *Snapshot) SetARN(v string) *Snapshot {
16569	s.ARN = &v
16570	return s
16571}
16572
16573// SetAutoMinorVersionUpgrade sets the AutoMinorVersionUpgrade field's value.
16574func (s *Snapshot) SetAutoMinorVersionUpgrade(v bool) *Snapshot {
16575	s.AutoMinorVersionUpgrade = &v
16576	return s
16577}
16578
16579// SetAutomaticFailover sets the AutomaticFailover field's value.
16580func (s *Snapshot) SetAutomaticFailover(v string) *Snapshot {
16581	s.AutomaticFailover = &v
16582	return s
16583}
16584
16585// SetCacheClusterCreateTime sets the CacheClusterCreateTime field's value.
16586func (s *Snapshot) SetCacheClusterCreateTime(v time.Time) *Snapshot {
16587	s.CacheClusterCreateTime = &v
16588	return s
16589}
16590
16591// SetCacheClusterId sets the CacheClusterId field's value.
16592func (s *Snapshot) SetCacheClusterId(v string) *Snapshot {
16593	s.CacheClusterId = &v
16594	return s
16595}
16596
16597// SetCacheNodeType sets the CacheNodeType field's value.
16598func (s *Snapshot) SetCacheNodeType(v string) *Snapshot {
16599	s.CacheNodeType = &v
16600	return s
16601}
16602
16603// SetCacheParameterGroupName sets the CacheParameterGroupName field's value.
16604func (s *Snapshot) SetCacheParameterGroupName(v string) *Snapshot {
16605	s.CacheParameterGroupName = &v
16606	return s
16607}
16608
16609// SetCacheSubnetGroupName sets the CacheSubnetGroupName field's value.
16610func (s *Snapshot) SetCacheSubnetGroupName(v string) *Snapshot {
16611	s.CacheSubnetGroupName = &v
16612	return s
16613}
16614
16615// SetEngine sets the Engine field's value.
16616func (s *Snapshot) SetEngine(v string) *Snapshot {
16617	s.Engine = &v
16618	return s
16619}
16620
16621// SetEngineVersion sets the EngineVersion field's value.
16622func (s *Snapshot) SetEngineVersion(v string) *Snapshot {
16623	s.EngineVersion = &v
16624	return s
16625}
16626
16627// SetKmsKeyId sets the KmsKeyId field's value.
16628func (s *Snapshot) SetKmsKeyId(v string) *Snapshot {
16629	s.KmsKeyId = &v
16630	return s
16631}
16632
16633// SetNodeSnapshots sets the NodeSnapshots field's value.
16634func (s *Snapshot) SetNodeSnapshots(v []*NodeSnapshot) *Snapshot {
16635	s.NodeSnapshots = v
16636	return s
16637}
16638
16639// SetNumCacheNodes sets the NumCacheNodes field's value.
16640func (s *Snapshot) SetNumCacheNodes(v int64) *Snapshot {
16641	s.NumCacheNodes = &v
16642	return s
16643}
16644
16645// SetNumNodeGroups sets the NumNodeGroups field's value.
16646func (s *Snapshot) SetNumNodeGroups(v int64) *Snapshot {
16647	s.NumNodeGroups = &v
16648	return s
16649}
16650
16651// SetPort sets the Port field's value.
16652func (s *Snapshot) SetPort(v int64) *Snapshot {
16653	s.Port = &v
16654	return s
16655}
16656
16657// SetPreferredAvailabilityZone sets the PreferredAvailabilityZone field's value.
16658func (s *Snapshot) SetPreferredAvailabilityZone(v string) *Snapshot {
16659	s.PreferredAvailabilityZone = &v
16660	return s
16661}
16662
16663// SetPreferredMaintenanceWindow sets the PreferredMaintenanceWindow field's value.
16664func (s *Snapshot) SetPreferredMaintenanceWindow(v string) *Snapshot {
16665	s.PreferredMaintenanceWindow = &v
16666	return s
16667}
16668
16669// SetReplicationGroupDescription sets the ReplicationGroupDescription field's value.
16670func (s *Snapshot) SetReplicationGroupDescription(v string) *Snapshot {
16671	s.ReplicationGroupDescription = &v
16672	return s
16673}
16674
16675// SetReplicationGroupId sets the ReplicationGroupId field's value.
16676func (s *Snapshot) SetReplicationGroupId(v string) *Snapshot {
16677	s.ReplicationGroupId = &v
16678	return s
16679}
16680
16681// SetSnapshotName sets the SnapshotName field's value.
16682func (s *Snapshot) SetSnapshotName(v string) *Snapshot {
16683	s.SnapshotName = &v
16684	return s
16685}
16686
16687// SetSnapshotRetentionLimit sets the SnapshotRetentionLimit field's value.
16688func (s *Snapshot) SetSnapshotRetentionLimit(v int64) *Snapshot {
16689	s.SnapshotRetentionLimit = &v
16690	return s
16691}
16692
16693// SetSnapshotSource sets the SnapshotSource field's value.
16694func (s *Snapshot) SetSnapshotSource(v string) *Snapshot {
16695	s.SnapshotSource = &v
16696	return s
16697}
16698
16699// SetSnapshotStatus sets the SnapshotStatus field's value.
16700func (s *Snapshot) SetSnapshotStatus(v string) *Snapshot {
16701	s.SnapshotStatus = &v
16702	return s
16703}
16704
16705// SetSnapshotWindow sets the SnapshotWindow field's value.
16706func (s *Snapshot) SetSnapshotWindow(v string) *Snapshot {
16707	s.SnapshotWindow = &v
16708	return s
16709}
16710
16711// SetTopicArn sets the TopicArn field's value.
16712func (s *Snapshot) SetTopicArn(v string) *Snapshot {
16713	s.TopicArn = &v
16714	return s
16715}
16716
16717// SetVpcId sets the VpcId field's value.
16718func (s *Snapshot) SetVpcId(v string) *Snapshot {
16719	s.VpcId = &v
16720	return s
16721}
16722
16723type StartMigrationInput struct {
16724	_ struct{} `type:"structure"`
16725
16726	// List of endpoints from which data should be migrated. For Redis (cluster
16727	// mode disabled), list should have only one element.
16728	//
16729	// CustomerNodeEndpointList is a required field
16730	CustomerNodeEndpointList []*CustomerNodeEndpoint `type:"list" required:"true"`
16731
16732	// The ID of the replication group to which data should be migrated.
16733	//
16734	// ReplicationGroupId is a required field
16735	ReplicationGroupId *string `type:"string" required:"true"`
16736}
16737
16738// String returns the string representation
16739func (s StartMigrationInput) String() string {
16740	return awsutil.Prettify(s)
16741}
16742
16743// GoString returns the string representation
16744func (s StartMigrationInput) GoString() string {
16745	return s.String()
16746}
16747
16748// Validate inspects the fields of the type to determine if they are valid.
16749func (s *StartMigrationInput) Validate() error {
16750	invalidParams := request.ErrInvalidParams{Context: "StartMigrationInput"}
16751	if s.CustomerNodeEndpointList == nil {
16752		invalidParams.Add(request.NewErrParamRequired("CustomerNodeEndpointList"))
16753	}
16754	if s.ReplicationGroupId == nil {
16755		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
16756	}
16757
16758	if invalidParams.Len() > 0 {
16759		return invalidParams
16760	}
16761	return nil
16762}
16763
16764// SetCustomerNodeEndpointList sets the CustomerNodeEndpointList field's value.
16765func (s *StartMigrationInput) SetCustomerNodeEndpointList(v []*CustomerNodeEndpoint) *StartMigrationInput {
16766	s.CustomerNodeEndpointList = v
16767	return s
16768}
16769
16770// SetReplicationGroupId sets the ReplicationGroupId field's value.
16771func (s *StartMigrationInput) SetReplicationGroupId(v string) *StartMigrationInput {
16772	s.ReplicationGroupId = &v
16773	return s
16774}
16775
16776type StartMigrationOutput struct {
16777	_ struct{} `type:"structure"`
16778
16779	// Contains all of the attributes of a specific Redis replication group.
16780	ReplicationGroup *ReplicationGroup `type:"structure"`
16781}
16782
16783// String returns the string representation
16784func (s StartMigrationOutput) String() string {
16785	return awsutil.Prettify(s)
16786}
16787
16788// GoString returns the string representation
16789func (s StartMigrationOutput) GoString() string {
16790	return s.String()
16791}
16792
16793// SetReplicationGroup sets the ReplicationGroup field's value.
16794func (s *StartMigrationOutput) SetReplicationGroup(v *ReplicationGroup) *StartMigrationOutput {
16795	s.ReplicationGroup = v
16796	return s
16797}
16798
16799// Represents the subnet associated with a cluster. This parameter refers to
16800// subnets defined in Amazon Virtual Private Cloud (Amazon VPC) and used with
16801// ElastiCache.
16802type Subnet struct {
16803	_ struct{} `type:"structure"`
16804
16805	// The Availability Zone associated with the subnet.
16806	SubnetAvailabilityZone *AvailabilityZone `type:"structure"`
16807
16808	// The unique identifier for the subnet.
16809	SubnetIdentifier *string `type:"string"`
16810}
16811
16812// String returns the string representation
16813func (s Subnet) String() string {
16814	return awsutil.Prettify(s)
16815}
16816
16817// GoString returns the string representation
16818func (s Subnet) GoString() string {
16819	return s.String()
16820}
16821
16822// SetSubnetAvailabilityZone sets the SubnetAvailabilityZone field's value.
16823func (s *Subnet) SetSubnetAvailabilityZone(v *AvailabilityZone) *Subnet {
16824	s.SubnetAvailabilityZone = v
16825	return s
16826}
16827
16828// SetSubnetIdentifier sets the SubnetIdentifier field's value.
16829func (s *Subnet) SetSubnetIdentifier(v string) *Subnet {
16830	s.SubnetIdentifier = &v
16831	return s
16832}
16833
16834// A cost allocation Tag that can be added to an ElastiCache cluster or replication
16835// group. Tags are composed of a Key/Value pair. A tag with a null Value is
16836// permitted.
16837type Tag struct {
16838	_ struct{} `type:"structure"`
16839
16840	// The key for the tag. May not be null.
16841	Key *string `type:"string"`
16842
16843	// The tag's value. May be null.
16844	Value *string `type:"string"`
16845}
16846
16847// String returns the string representation
16848func (s Tag) String() string {
16849	return awsutil.Prettify(s)
16850}
16851
16852// GoString returns the string representation
16853func (s Tag) GoString() string {
16854	return s.String()
16855}
16856
16857// SetKey sets the Key field's value.
16858func (s *Tag) SetKey(v string) *Tag {
16859	s.Key = &v
16860	return s
16861}
16862
16863// SetValue sets the Value field's value.
16864func (s *Tag) SetValue(v string) *Tag {
16865	s.Value = &v
16866	return s
16867}
16868
16869// Represents the output from the AddTagsToResource, ListTagsForResource, and
16870// RemoveTagsFromResource operations.
16871type TagListMessage struct {
16872	_ struct{} `type:"structure"`
16873
16874	// A list of cost allocation tags as key-value pairs.
16875	TagList []*Tag `locationNameList:"Tag" type:"list"`
16876}
16877
16878// String returns the string representation
16879func (s TagListMessage) String() string {
16880	return awsutil.Prettify(s)
16881}
16882
16883// GoString returns the string representation
16884func (s TagListMessage) GoString() string {
16885	return s.String()
16886}
16887
16888// SetTagList sets the TagList field's value.
16889func (s *TagListMessage) SetTagList(v []*Tag) *TagListMessage {
16890	s.TagList = v
16891	return s
16892}
16893
16894type TestFailoverInput struct {
16895	_ struct{} `type:"structure"`
16896
16897	// The name of the node group (called shard in the console) in this replication
16898	// group on which automatic failover is to be tested. You may test automatic
16899	// failover on up to 5 node groups in any rolling 24-hour period.
16900	//
16901	// NodeGroupId is a required field
16902	NodeGroupId *string `min:"1" type:"string" required:"true"`
16903
16904	// The name of the replication group (console: cluster) whose automatic failover
16905	// is being tested by this operation.
16906	//
16907	// ReplicationGroupId is a required field
16908	ReplicationGroupId *string `type:"string" required:"true"`
16909}
16910
16911// String returns the string representation
16912func (s TestFailoverInput) String() string {
16913	return awsutil.Prettify(s)
16914}
16915
16916// GoString returns the string representation
16917func (s TestFailoverInput) GoString() string {
16918	return s.String()
16919}
16920
16921// Validate inspects the fields of the type to determine if they are valid.
16922func (s *TestFailoverInput) Validate() error {
16923	invalidParams := request.ErrInvalidParams{Context: "TestFailoverInput"}
16924	if s.NodeGroupId == nil {
16925		invalidParams.Add(request.NewErrParamRequired("NodeGroupId"))
16926	}
16927	if s.NodeGroupId != nil && len(*s.NodeGroupId) < 1 {
16928		invalidParams.Add(request.NewErrParamMinLen("NodeGroupId", 1))
16929	}
16930	if s.ReplicationGroupId == nil {
16931		invalidParams.Add(request.NewErrParamRequired("ReplicationGroupId"))
16932	}
16933
16934	if invalidParams.Len() > 0 {
16935		return invalidParams
16936	}
16937	return nil
16938}
16939
16940// SetNodeGroupId sets the NodeGroupId field's value.
16941func (s *TestFailoverInput) SetNodeGroupId(v string) *TestFailoverInput {
16942	s.NodeGroupId = &v
16943	return s
16944}
16945
16946// SetReplicationGroupId sets the ReplicationGroupId field's value.
16947func (s *TestFailoverInput) SetReplicationGroupId(v string) *TestFailoverInput {
16948	s.ReplicationGroupId = &v
16949	return s
16950}
16951
16952type TestFailoverOutput struct {
16953	_ struct{} `type:"structure"`
16954
16955	// Contains all of the attributes of a specific Redis replication group.
16956	ReplicationGroup *ReplicationGroup `type:"structure"`
16957}
16958
16959// String returns the string representation
16960func (s TestFailoverOutput) String() string {
16961	return awsutil.Prettify(s)
16962}
16963
16964// GoString returns the string representation
16965func (s TestFailoverOutput) GoString() string {
16966	return s.String()
16967}
16968
16969// SetReplicationGroup sets the ReplicationGroup field's value.
16970func (s *TestFailoverOutput) SetReplicationGroup(v *ReplicationGroup) *TestFailoverOutput {
16971	s.ReplicationGroup = v
16972	return s
16973}
16974
16975// Filters update actions from the service updates that are in available status
16976// during the time range.
16977type TimeRangeFilter struct {
16978	_ struct{} `type:"structure"`
16979
16980	// The end time of the time range filter
16981	EndTime *time.Time `type:"timestamp"`
16982
16983	// The start time of the time range filter
16984	StartTime *time.Time `type:"timestamp"`
16985}
16986
16987// String returns the string representation
16988func (s TimeRangeFilter) String() string {
16989	return awsutil.Prettify(s)
16990}
16991
16992// GoString returns the string representation
16993func (s TimeRangeFilter) GoString() string {
16994	return s.String()
16995}
16996
16997// SetEndTime sets the EndTime field's value.
16998func (s *TimeRangeFilter) SetEndTime(v time.Time) *TimeRangeFilter {
16999	s.EndTime = &v
17000	return s
17001}
17002
17003// SetStartTime sets the StartTime field's value.
17004func (s *TimeRangeFilter) SetStartTime(v time.Time) *TimeRangeFilter {
17005	s.StartTime = &v
17006	return s
17007}
17008
17009// Update action that has failed to be processed for the corresponding apply/stop
17010// request
17011type UnprocessedUpdateAction struct {
17012	_ struct{} `type:"structure"`
17013
17014	// The ID of the cache cluster
17015	CacheClusterId *string `type:"string"`
17016
17017	// The error message that describes the reason the request was not processed
17018	ErrorMessage *string `type:"string"`
17019
17020	// The error type for requests that are not processed
17021	ErrorType *string `type:"string"`
17022
17023	// The replication group ID
17024	ReplicationGroupId *string `type:"string"`
17025
17026	// The unique ID of the service update
17027	ServiceUpdateName *string `type:"string"`
17028}
17029
17030// String returns the string representation
17031func (s UnprocessedUpdateAction) String() string {
17032	return awsutil.Prettify(s)
17033}
17034
17035// GoString returns the string representation
17036func (s UnprocessedUpdateAction) GoString() string {
17037	return s.String()
17038}
17039
17040// SetCacheClusterId sets the CacheClusterId field's value.
17041func (s *UnprocessedUpdateAction) SetCacheClusterId(v string) *UnprocessedUpdateAction {
17042	s.CacheClusterId = &v
17043	return s
17044}
17045
17046// SetErrorMessage sets the ErrorMessage field's value.
17047func (s *UnprocessedUpdateAction) SetErrorMessage(v string) *UnprocessedUpdateAction {
17048	s.ErrorMessage = &v
17049	return s
17050}
17051
17052// SetErrorType sets the ErrorType field's value.
17053func (s *UnprocessedUpdateAction) SetErrorType(v string) *UnprocessedUpdateAction {
17054	s.ErrorType = &v
17055	return s
17056}
17057
17058// SetReplicationGroupId sets the ReplicationGroupId field's value.
17059func (s *UnprocessedUpdateAction) SetReplicationGroupId(v string) *UnprocessedUpdateAction {
17060	s.ReplicationGroupId = &v
17061	return s
17062}
17063
17064// SetServiceUpdateName sets the ServiceUpdateName field's value.
17065func (s *UnprocessedUpdateAction) SetServiceUpdateName(v string) *UnprocessedUpdateAction {
17066	s.ServiceUpdateName = &v
17067	return s
17068}
17069
17070// The status of the service update for a specific replication group
17071type UpdateAction struct {
17072	_ struct{} `type:"structure"`
17073
17074	// The ID of the cache cluster
17075	CacheClusterId *string `type:"string"`
17076
17077	// The status of the service update on the cache node
17078	CacheNodeUpdateStatus []*CacheNodeUpdateStatus `locationNameList:"CacheNodeUpdateStatus" type:"list"`
17079
17080	// The Elasticache engine to which the update applies. Either Redis or Memcached
17081	Engine *string `type:"string"`
17082
17083	// The estimated length of time for the update to complete
17084	EstimatedUpdateTime *string `type:"string"`
17085
17086	// The status of the service update on the node group
17087	NodeGroupUpdateStatus []*NodeGroupUpdateStatus `locationNameList:"NodeGroupUpdateStatus" type:"list"`
17088
17089	// The progress of the service update on the replication group
17090	NodesUpdated *string `type:"string"`
17091
17092	// The ID of the replication group
17093	ReplicationGroupId *string `type:"string"`
17094
17095	// The unique ID of the service update
17096	ServiceUpdateName *string `type:"string"`
17097
17098	// The recommended date to apply the service update to ensure compliance. For
17099	// information on compliance, see Self-Service Security Updates for Compliance
17100	// (https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/elasticache-compliance.html#elasticache-compliance-self-service).
17101	ServiceUpdateRecommendedApplyByDate *time.Time `type:"timestamp"`
17102
17103	// The date the update is first available
17104	ServiceUpdateReleaseDate *time.Time `type:"timestamp"`
17105
17106	// The severity of the service update
17107	ServiceUpdateSeverity *string `type:"string" enum:"ServiceUpdateSeverity"`
17108
17109	// The status of the service update
17110	ServiceUpdateStatus *string `type:"string" enum:"ServiceUpdateStatus"`
17111
17112	// Reflects the nature of the service update
17113	ServiceUpdateType *string `type:"string" enum:"ServiceUpdateType"`
17114
17115	// If yes, all nodes in the replication group have been updated by the recommended
17116	// apply-by date. If no, at least one node in the replication group have not
17117	// been updated by the recommended apply-by date. If N/A, the replication group
17118	// was created after the recommended apply-by date.
17119	SlaMet *string `type:"string" enum:"SlaMet"`
17120
17121	// The date that the service update is available to a replication group
17122	UpdateActionAvailableDate *time.Time `type:"timestamp"`
17123
17124	// The status of the update action
17125	UpdateActionStatus *string `type:"string" enum:"UpdateActionStatus"`
17126
17127	// The date when the UpdateActionStatus was last modified
17128	UpdateActionStatusModifiedDate *time.Time `type:"timestamp"`
17129}
17130
17131// String returns the string representation
17132func (s UpdateAction) String() string {
17133	return awsutil.Prettify(s)
17134}
17135
17136// GoString returns the string representation
17137func (s UpdateAction) GoString() string {
17138	return s.String()
17139}
17140
17141// SetCacheClusterId sets the CacheClusterId field's value.
17142func (s *UpdateAction) SetCacheClusterId(v string) *UpdateAction {
17143	s.CacheClusterId = &v
17144	return s
17145}
17146
17147// SetCacheNodeUpdateStatus sets the CacheNodeUpdateStatus field's value.
17148func (s *UpdateAction) SetCacheNodeUpdateStatus(v []*CacheNodeUpdateStatus) *UpdateAction {
17149	s.CacheNodeUpdateStatus = v
17150	return s
17151}
17152
17153// SetEngine sets the Engine field's value.
17154func (s *UpdateAction) SetEngine(v string) *UpdateAction {
17155	s.Engine = &v
17156	return s
17157}
17158
17159// SetEstimatedUpdateTime sets the EstimatedUpdateTime field's value.
17160func (s *UpdateAction) SetEstimatedUpdateTime(v string) *UpdateAction {
17161	s.EstimatedUpdateTime = &v
17162	return s
17163}
17164
17165// SetNodeGroupUpdateStatus sets the NodeGroupUpdateStatus field's value.
17166func (s *UpdateAction) SetNodeGroupUpdateStatus(v []*NodeGroupUpdateStatus) *UpdateAction {
17167	s.NodeGroupUpdateStatus = v
17168	return s
17169}
17170
17171// SetNodesUpdated sets the NodesUpdated field's value.
17172func (s *UpdateAction) SetNodesUpdated(v string) *UpdateAction {
17173	s.NodesUpdated = &v
17174	return s
17175}
17176
17177// SetReplicationGroupId sets the ReplicationGroupId field's value.
17178func (s *UpdateAction) SetReplicationGroupId(v string) *UpdateAction {
17179	s.ReplicationGroupId = &v
17180	return s
17181}
17182
17183// SetServiceUpdateName sets the ServiceUpdateName field's value.
17184func (s *UpdateAction) SetServiceUpdateName(v string) *UpdateAction {
17185	s.ServiceUpdateName = &v
17186	return s
17187}
17188
17189// SetServiceUpdateRecommendedApplyByDate sets the ServiceUpdateRecommendedApplyByDate field's value.
17190func (s *UpdateAction) SetServiceUpdateRecommendedApplyByDate(v time.Time) *UpdateAction {
17191	s.ServiceUpdateRecommendedApplyByDate = &v
17192	return s
17193}
17194
17195// SetServiceUpdateReleaseDate sets the ServiceUpdateReleaseDate field's value.
17196func (s *UpdateAction) SetServiceUpdateReleaseDate(v time.Time) *UpdateAction {
17197	s.ServiceUpdateReleaseDate = &v
17198	return s
17199}
17200
17201// SetServiceUpdateSeverity sets the ServiceUpdateSeverity field's value.
17202func (s *UpdateAction) SetServiceUpdateSeverity(v string) *UpdateAction {
17203	s.ServiceUpdateSeverity = &v
17204	return s
17205}
17206
17207// SetServiceUpdateStatus sets the ServiceUpdateStatus field's value.
17208func (s *UpdateAction) SetServiceUpdateStatus(v string) *UpdateAction {
17209	s.ServiceUpdateStatus = &v
17210	return s
17211}
17212
17213// SetServiceUpdateType sets the ServiceUpdateType field's value.
17214func (s *UpdateAction) SetServiceUpdateType(v string) *UpdateAction {
17215	s.ServiceUpdateType = &v
17216	return s
17217}
17218
17219// SetSlaMet sets the SlaMet field's value.
17220func (s *UpdateAction) SetSlaMet(v string) *UpdateAction {
17221	s.SlaMet = &v
17222	return s
17223}
17224
17225// SetUpdateActionAvailableDate sets the UpdateActionAvailableDate field's value.
17226func (s *UpdateAction) SetUpdateActionAvailableDate(v time.Time) *UpdateAction {
17227	s.UpdateActionAvailableDate = &v
17228	return s
17229}
17230
17231// SetUpdateActionStatus sets the UpdateActionStatus field's value.
17232func (s *UpdateAction) SetUpdateActionStatus(v string) *UpdateAction {
17233	s.UpdateActionStatus = &v
17234	return s
17235}
17236
17237// SetUpdateActionStatusModifiedDate sets the UpdateActionStatusModifiedDate field's value.
17238func (s *UpdateAction) SetUpdateActionStatusModifiedDate(v time.Time) *UpdateAction {
17239	s.UpdateActionStatusModifiedDate = &v
17240	return s
17241}
17242
17243const (
17244	// AZModeSingleAz is a AZMode enum value
17245	AZModeSingleAz = "single-az"
17246
17247	// AZModeCrossAz is a AZMode enum value
17248	AZModeCrossAz = "cross-az"
17249)
17250
17251const (
17252	// AuthTokenUpdateStatusSetting is a AuthTokenUpdateStatus enum value
17253	AuthTokenUpdateStatusSetting = "SETTING"
17254
17255	// AuthTokenUpdateStatusRotating is a AuthTokenUpdateStatus enum value
17256	AuthTokenUpdateStatusRotating = "ROTATING"
17257)
17258
17259const (
17260	// AuthTokenUpdateStrategyTypeSet is a AuthTokenUpdateStrategyType enum value
17261	AuthTokenUpdateStrategyTypeSet = "SET"
17262
17263	// AuthTokenUpdateStrategyTypeRotate is a AuthTokenUpdateStrategyType enum value
17264	AuthTokenUpdateStrategyTypeRotate = "ROTATE"
17265)
17266
17267const (
17268	// AutomaticFailoverStatusEnabled is a AutomaticFailoverStatus enum value
17269	AutomaticFailoverStatusEnabled = "enabled"
17270
17271	// AutomaticFailoverStatusDisabled is a AutomaticFailoverStatus enum value
17272	AutomaticFailoverStatusDisabled = "disabled"
17273
17274	// AutomaticFailoverStatusEnabling is a AutomaticFailoverStatus enum value
17275	AutomaticFailoverStatusEnabling = "enabling"
17276
17277	// AutomaticFailoverStatusDisabling is a AutomaticFailoverStatus enum value
17278	AutomaticFailoverStatusDisabling = "disabling"
17279)
17280
17281const (
17282	// ChangeTypeImmediate is a ChangeType enum value
17283	ChangeTypeImmediate = "immediate"
17284
17285	// ChangeTypeRequiresReboot is a ChangeType enum value
17286	ChangeTypeRequiresReboot = "requires-reboot"
17287)
17288
17289const (
17290	// MultiAZStatusEnabled is a MultiAZStatus enum value
17291	MultiAZStatusEnabled = "enabled"
17292
17293	// MultiAZStatusDisabled is a MultiAZStatus enum value
17294	MultiAZStatusDisabled = "disabled"
17295)
17296
17297const (
17298	// NodeUpdateInitiatedBySystem is a NodeUpdateInitiatedBy enum value
17299	NodeUpdateInitiatedBySystem = "system"
17300
17301	// NodeUpdateInitiatedByCustomer is a NodeUpdateInitiatedBy enum value
17302	NodeUpdateInitiatedByCustomer = "customer"
17303)
17304
17305const (
17306	// NodeUpdateStatusNotApplied is a NodeUpdateStatus enum value
17307	NodeUpdateStatusNotApplied = "not-applied"
17308
17309	// NodeUpdateStatusWaitingToStart is a NodeUpdateStatus enum value
17310	NodeUpdateStatusWaitingToStart = "waiting-to-start"
17311
17312	// NodeUpdateStatusInProgress is a NodeUpdateStatus enum value
17313	NodeUpdateStatusInProgress = "in-progress"
17314
17315	// NodeUpdateStatusStopping is a NodeUpdateStatus enum value
17316	NodeUpdateStatusStopping = "stopping"
17317
17318	// NodeUpdateStatusStopped is a NodeUpdateStatus enum value
17319	NodeUpdateStatusStopped = "stopped"
17320
17321	// NodeUpdateStatusComplete is a NodeUpdateStatus enum value
17322	NodeUpdateStatusComplete = "complete"
17323)
17324
17325const (
17326	// PendingAutomaticFailoverStatusEnabled is a PendingAutomaticFailoverStatus enum value
17327	PendingAutomaticFailoverStatusEnabled = "enabled"
17328
17329	// PendingAutomaticFailoverStatusDisabled is a PendingAutomaticFailoverStatus enum value
17330	PendingAutomaticFailoverStatusDisabled = "disabled"
17331)
17332
17333const (
17334	// ServiceUpdateSeverityCritical is a ServiceUpdateSeverity enum value
17335	ServiceUpdateSeverityCritical = "critical"
17336
17337	// ServiceUpdateSeverityImportant is a ServiceUpdateSeverity enum value
17338	ServiceUpdateSeverityImportant = "important"
17339
17340	// ServiceUpdateSeverityMedium is a ServiceUpdateSeverity enum value
17341	ServiceUpdateSeverityMedium = "medium"
17342
17343	// ServiceUpdateSeverityLow is a ServiceUpdateSeverity enum value
17344	ServiceUpdateSeverityLow = "low"
17345)
17346
17347const (
17348	// ServiceUpdateStatusAvailable is a ServiceUpdateStatus enum value
17349	ServiceUpdateStatusAvailable = "available"
17350
17351	// ServiceUpdateStatusCancelled is a ServiceUpdateStatus enum value
17352	ServiceUpdateStatusCancelled = "cancelled"
17353
17354	// ServiceUpdateStatusExpired is a ServiceUpdateStatus enum value
17355	ServiceUpdateStatusExpired = "expired"
17356)
17357
17358const (
17359	// ServiceUpdateTypeSecurityUpdate is a ServiceUpdateType enum value
17360	ServiceUpdateTypeSecurityUpdate = "security-update"
17361)
17362
17363const (
17364	// SlaMetYes is a SlaMet enum value
17365	SlaMetYes = "yes"
17366
17367	// SlaMetNo is a SlaMet enum value
17368	SlaMetNo = "no"
17369
17370	// SlaMetNA is a SlaMet enum value
17371	SlaMetNA = "n/a"
17372)
17373
17374const (
17375	// SourceTypeCacheCluster is a SourceType enum value
17376	SourceTypeCacheCluster = "cache-cluster"
17377
17378	// SourceTypeCacheParameterGroup is a SourceType enum value
17379	SourceTypeCacheParameterGroup = "cache-parameter-group"
17380
17381	// SourceTypeCacheSecurityGroup is a SourceType enum value
17382	SourceTypeCacheSecurityGroup = "cache-security-group"
17383
17384	// SourceTypeCacheSubnetGroup is a SourceType enum value
17385	SourceTypeCacheSubnetGroup = "cache-subnet-group"
17386
17387	// SourceTypeReplicationGroup is a SourceType enum value
17388	SourceTypeReplicationGroup = "replication-group"
17389)
17390
17391const (
17392	// UpdateActionStatusNotApplied is a UpdateActionStatus enum value
17393	UpdateActionStatusNotApplied = "not-applied"
17394
17395	// UpdateActionStatusWaitingToStart is a UpdateActionStatus enum value
17396	UpdateActionStatusWaitingToStart = "waiting-to-start"
17397
17398	// UpdateActionStatusInProgress is a UpdateActionStatus enum value
17399	UpdateActionStatusInProgress = "in-progress"
17400
17401	// UpdateActionStatusStopping is a UpdateActionStatus enum value
17402	UpdateActionStatusStopping = "stopping"
17403
17404	// UpdateActionStatusStopped is a UpdateActionStatus enum value
17405	UpdateActionStatusStopped = "stopped"
17406
17407	// UpdateActionStatusComplete is a UpdateActionStatus enum value
17408	UpdateActionStatusComplete = "complete"
17409
17410	// UpdateActionStatusScheduling is a UpdateActionStatus enum value
17411	UpdateActionStatusScheduling = "scheduling"
17412
17413	// UpdateActionStatusScheduled is a UpdateActionStatus enum value
17414	UpdateActionStatusScheduled = "scheduled"
17415
17416	// UpdateActionStatusNotApplicable is a UpdateActionStatus enum value
17417	UpdateActionStatusNotApplicable = "not-applicable"
17418)
17419